use of net.tslat.aoa3.dimension.nether.NetherTeleporter in project Advent-Of-Ascension by Tslat.
the class PortalBlock method onEntityCollision.
@Override
public void onEntityCollision(World world, BlockPos pos, IBlockState state, Entity entity) {
WorldProvider provider;
ITeleporter teleporter;
if (!world.isRemote && !entity.isRiding() && !entity.isBeingRidden()) {
if (!ConfigurationUtil.MainConfig.allowNonPlayerPortalTravel & !(entity instanceof EntityPlayer))
return;
if (entity.timeUntilPortal > 0) {
entity.timeUntilPortal = 30;
return;
}
provider = FMLCommonHandler.instance().getMinecraftServerInstance().getWorld(dimId).provider;
teleporter = provider instanceof AoAWorldProvider ? ((AoAWorldProvider) provider).getTeleporter((WorldServer) world) : dimId == -1 ? new NetherTeleporter((WorldServer) world) : ((WorldServer) world).getDefaultTeleporter();
PortalCoordinatesContainer portalLoc = null;
if (entity instanceof EntityPlayer) {
PlayerDataManager plData = PlayerUtil.getAdventPlayer((EntityPlayerMP) entity);
portalLoc = plData.getPortalReturnLocation(world.provider.getDimension());
((EntityPlayerMP) entity).connection.setPlayerLocation(pos.getX(), pos.getY(), pos.getZ(), entity.rotationYaw, entity.rotationPitch);
} else {
entity.setPositionAndUpdate(pos.getX(), pos.getY(), pos.getZ());
}
if (portalLoc == null) {
if (world.provider.getDimension() == dimId) {
entity = entity.changeDimension(0, teleporter);
} else {
entity = entity.changeDimension(dimId, teleporter);
}
} else if (world.provider.getDimension() != dimId) {
entity = entity.changeDimension(dimId, teleporter);
} else {
entity = entity.changeDimension(portalLoc.fromDim, teleporter);
}
if (entity != null)
entity.timeUntilPortal = 100;
}
}
Aggregations