Search in sources :

Example 1 with NetherTeleporter

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;
    }
}
Also used : PortalCoordinatesContainer(net.tslat.aoa3.library.misc.PortalCoordinatesContainer) ITeleporter(net.minecraftforge.common.util.ITeleporter) AoAWorldProvider(net.tslat.aoa3.dimension.AoAWorldProvider) WorldProvider(net.minecraft.world.WorldProvider) AoAWorldProvider(net.tslat.aoa3.dimension.AoAWorldProvider) NetherTeleporter(net.tslat.aoa3.dimension.nether.NetherTeleporter) EntityPlayer(net.minecraft.entity.player.EntityPlayer) WorldServer(net.minecraft.world.WorldServer) PlayerDataManager(net.tslat.aoa3.utils.player.PlayerDataManager)

Aggregations

EntityPlayer (net.minecraft.entity.player.EntityPlayer)1 WorldProvider (net.minecraft.world.WorldProvider)1 WorldServer (net.minecraft.world.WorldServer)1 ITeleporter (net.minecraftforge.common.util.ITeleporter)1 AoAWorldProvider (net.tslat.aoa3.dimension.AoAWorldProvider)1 NetherTeleporter (net.tslat.aoa3.dimension.nether.NetherTeleporter)1 PortalCoordinatesContainer (net.tslat.aoa3.library.misc.PortalCoordinatesContainer)1 PlayerDataManager (net.tslat.aoa3.utils.player.PlayerDataManager)1