Search in sources :

Example 1 with SPacketEntityEffect

use of net.minecraft.network.play.server.SPacketEntityEffect in project MorePlanets by SteveKunG.

the class TeleportUtil method teleportEntity.

@Deprecated
private static EntityPlayerMP teleportEntity(World worldNew, EntityPlayerMP player, int x, int y, int z, int dimID, boolean nether) {
    BlockPos blockpos = player.getBedLocation(dimID);
    boolean flag = player.isSpawnForced(dimID);
    boolean dimChange = player.world != worldNew;
    player.world.updateEntityWithOptionalForce(player, false);
    int oldDimID = GCCoreUtil.getDimensionID(player.world);
    ChunkPos pair = worldNew.getChunkFromChunkCoords(x, z).getPos();
    y = (int) (y + 1.5F);
    if (dimChange) {
        World worldOld = player.world;
        try {
            ((WorldServer) worldOld).getPlayerChunkMap().removePlayer(player);
        } catch (Exception e) {
            e.printStackTrace();
        }
        player.closeScreen();
        player.dimension = dimID;
        player.connection.sendPacket(new SPacketRespawn(dimID, player.world.getDifficulty(), player.world.getWorldInfo().getTerrainType(), player.interactionManager.getGameType()));
        worldOld.playerEntities.remove(player);
        worldOld.updateAllPlayersSleepingFlag();
        int i = player.chunkCoordX;
        int j = player.chunkCoordZ;
        if (player.addedToChunk && worldOld.isBlockLoaded(new BlockPos(i << 4, 63, j << 4), true)) {
            Chunk chunkOld = worldOld.getChunkFromChunkCoords(player.chunkCoordX, player.chunkCoordZ);
            chunkOld.removeEntity(player);
            chunkOld.setModified(true);
        }
        worldOld.loadedEntityList.remove(player);
        worldOld.onEntityRemoved(player);
        worldNew.spawnEntity(player);
        player.setWorld(worldNew);
        ((WorldServer) worldNew).getChunkProvider().loadChunk(pair.x, pair.z);
        worldNew.updateEntityWithOptionalForce(player, false);
        if (!nether) {
            player.setLocationAndAngles(x + 0.5F, y + 0.5F, z + 0.5F, player.rotationYaw, player.rotationPitch);
            player.mcServer.getPlayerList().preparePlayer(player, (WorldServer) worldNew);
            player.connection.setPlayerLocation(x + 0.5F, y + 0.5F, z + 0.5F, player.rotationYaw, player.rotationPitch);
        } else {
            if (blockpos != null) {
                BlockPos blockpos1 = EntityPlayer.getBedSpawnLocation(player.mcServer.getWorld(player.dimension), blockpos, flag);
                if (blockpos1 != null) {
                    player.setLocationAndAngles(blockpos1.getX() + 0.5F, blockpos1.getY() + 0.1F, blockpos1.getZ() + 0.5F, 0.0F, 0.0F);
                    player.setSpawnPoint(blockpos, flag);
                }
            }
        }
        player.interactionManager.setWorld((WorldServer) worldNew);
        player.mcServer.getPlayerList().updateTimeAndWeatherForPlayer(player, (WorldServer) worldNew);
        player.mcServer.getPlayerList().syncPlayerInventory(player);
        player.setSneaking(false);
        for (Object o : player.getActivePotionEffects()) {
            PotionEffect potion = (PotionEffect) o;
            player.connection.sendPacket(new SPacketEntityEffect(player.getEntityId(), potion));
        }
        player.connection.sendPacket(new SPacketSetExperience(player.experience, player.experienceTotal, player.experienceLevel));
    } else {
        player.closeScreen();
        player.setSneaking(false);
        worldNew.updateEntityWithOptionalForce(player, false);
        player.connection.setPlayerLocation(x + 0.5F, y + 0.5F, z + 0.5F, player.rotationYaw, player.rotationPitch);
        player.setLocationAndAngles(x + 0.5F, y + 0.5F, z + 0.5F, player.rotationYaw, player.rotationPitch);
        worldNew.updateEntityWithOptionalForce(player, false);
    }
    FMLCommonHandler.instance().firePlayerChangedDimensionEvent(player, oldDimID, dimID);
    return player;
}
Also used : SPacketSetExperience(net.minecraft.network.play.server.SPacketSetExperience) PotionEffect(net.minecraft.potion.PotionEffect) BlockPos(net.minecraft.util.math.BlockPos) ChunkPos(net.minecraft.util.math.ChunkPos) SPacketRespawn(net.minecraft.network.play.server.SPacketRespawn) SPacketEntityEffect(net.minecraft.network.play.server.SPacketEntityEffect) World(net.minecraft.world.World) Chunk(net.minecraft.world.chunk.Chunk)

Example 2 with SPacketEntityEffect

use of net.minecraft.network.play.server.SPacketEntityEffect in project MorePlanets by SteveKunG.

the class TeleportUtil method startNewDimension.

@Deprecated
public static void startNewDimension(EntityPlayerMP player) {
    WorldServer worldOld = (WorldServer) player.world;
    WorldServer worldNew = WorldDimensionHelper.getStartWorld(worldOld);
    BlockPos blockpos = worldNew.getTopSolidOrLiquidBlock(worldNew.getSpawnPoint());
    boolean dimChange = player.world != worldNew;
    player.world.updateEntityWithOptionalForce(player, false);
    int oldDimID = GCCoreUtil.getDimensionID(player.world);
    ChunkPos pair = worldNew.getChunkFromChunkCoords(blockpos.getX(), blockpos.getZ()).getPos();
    if (dimChange) {
        try {
            worldOld.getPlayerChunkMap().removePlayer(player);
        } catch (Exception e) {
            e.printStackTrace();
        }
        player.closeScreen();
        player.dimension = GCCoreUtil.getDimensionID(worldNew);
        player.connection.sendPacket(new SPacketRespawn(GCCoreUtil.getDimensionID(worldNew), player.world.getDifficulty(), player.world.getWorldInfo().getTerrainType(), player.interactionManager.getGameType()));
        worldOld.playerEntities.remove(player);
        worldOld.updateAllPlayersSleepingFlag();
        if (player.addedToChunk && worldOld.getChunkProvider().chunkExists(player.chunkCoordX, player.chunkCoordZ)) {
            Chunk chunkOld = worldOld.getChunkFromChunkCoords(player.chunkCoordX, player.chunkCoordZ);
            chunkOld.removeEntity(player);
            chunkOld.setModified(true);
        }
        worldOld.loadedEntityList.remove(player);
        worldOld.onEntityRemoved(player);
        worldNew.spawnEntity(player);
        player.setWorld(worldNew);
        MorePlanetsCore.PROXY.resetFloatingTick(player);
        if (!(worldNew.provider instanceof IGalacticraftWorldProvider)) {
            MPLog.error("{} is not space world!", ConfigManagerMP.startedPlanet);
            throw new RuntimeException(ConfigManagerMP.startedPlanet + " is not space world!");
        }
        if (worldNew.provider instanceof IStartedDimension) {
            IStartedDimension dimension = (IStartedDimension) worldNew.provider;
            MPLog.debug("Setting up player gear");
            dimension.setup(player);
        } else {
            GCPlayerStats stats = GCPlayerStats.get(player);
            MPLog.debug("Setting up player gear for Non-IStartedDimension world");
            // Knows how to build T2 rocket
            SchematicRegistry.unlockNewPage(player, new ItemStack(GCItems.schematic, 1, 1));
            // Knows how to build T3 rocket
            SchematicRegistry.unlockNewPage(player, new ItemStack(MarsItems.schematic, 1, 0));
            stats.getExtendedInventory().setInventorySlotContents(0, new ItemStack(GCItems.oxMask, 1, 0));
            stats.getExtendedInventory().setInventorySlotContents(1, new ItemStack(GCItems.oxygenGear, 1, 0));
            stats.getExtendedInventory().setInventorySlotContents(2, new ItemStack(GCItems.oxTankHeavy, 1, 0));
            stats.getExtendedInventory().setInventorySlotContents(3, new ItemStack(GCItems.oxTankHeavy, 1, 0));
            stats.getExtendedInventory().setInventorySlotContents(5, new ItemStack(GCItems.basicItem, 1, 19));
            stats.getExtendedInventory().setInventorySlotContents(6, new ItemStack(AsteroidsItems.thermalPadding, 1, 0));
            stats.getExtendedInventory().setInventorySlotContents(7, new ItemStack(AsteroidsItems.thermalPadding, 1, 1));
            stats.getExtendedInventory().setInventorySlotContents(8, new ItemStack(AsteroidsItems.thermalPadding, 1, 2));
            stats.getExtendedInventory().setInventorySlotContents(9, new ItemStack(AsteroidsItems.thermalPadding, 1, 3));
            player.inventory.addItemStackToInventory(new ItemStack(AsteroidsItems.canisterLOX));
            player.inventory.addItemStackToInventory(new ItemStack(AsteroidsItems.canisterLOX));
            player.inventory.addItemStackToInventory(new ItemStack(AsteroidsItems.canisterLOX));
        }
        worldNew.getChunkProvider().loadChunk(pair.x, pair.z);
        worldNew.updateEntityWithOptionalForce(player, false);
        player.setLocationAndAngles(blockpos.getX(), blockpos.getY() + 16.0D, blockpos.getZ(), player.rotationYaw, player.rotationPitch);
        player.addPotionEffect(new PotionEffect(MobEffects.RESISTANCE, 15 * 20, 5));
        player.mcServer.getPlayerList().preparePlayer(player, worldNew);
        player.connection.setPlayerLocation(blockpos.getX(), blockpos.getY() + 16.0D, blockpos.getZ(), player.rotationYaw, player.rotationPitch);
        player.interactionManager.setWorld(worldNew);
        player.mcServer.getPlayerList().updateTimeAndWeatherForPlayer(player, worldNew);
        player.mcServer.getPlayerList().syncPlayerInventory(player);
        for (Object o : player.getActivePotionEffects()) {
            PotionEffect potion = (PotionEffect) o;
            player.connection.sendPacket(new SPacketEntityEffect(player.getEntityId(), potion));
        }
        player.connection.sendPacket(new SPacketSetExperience(player.experience, player.experienceTotal, player.experienceLevel));
    } else {
        player.closeScreen();
        worldNew.updateEntityWithOptionalForce(player, false);
        player.connection.setPlayerLocation(blockpos.getX(), blockpos.getY() + 16.0D, blockpos.getZ(), player.rotationYaw, player.rotationPitch);
        player.setLocationAndAngles(blockpos.getX(), blockpos.getY() + 16.0D, blockpos.getZ(), player.rotationYaw, player.rotationPitch);
        player.addPotionEffect(new PotionEffect(MobEffects.RESISTANCE, 15 * 20, 5));
        worldNew.updateEntityWithOptionalForce(player, false);
    }
    FMLCommonHandler.instance().firePlayerChangedDimensionEvent(player, oldDimID, GCCoreUtil.getDimensionID(worldNew));
    if (player.onGround && player.getBedLocation(GCCoreUtil.getDimensionID(player.world)) == null) {
        int i = 30000000;
        int j = Math.min(i, Math.max(-i, MathHelper.floor(player.posX + 0.5D)));
        int k = Math.min(256, Math.max(0, MathHelper.floor(player.posY + 1.5D)));
        int l = Math.min(i, Math.max(-i, MathHelper.floor(player.posZ + 0.5D)));
        BlockPos coords = new BlockPos(j, k, l);
        player.setSpawnChunk(coords, true, GCCoreUtil.getDimensionID(player.world));
    }
}
Also used : IGalacticraftWorldProvider(micdoodle8.mods.galacticraft.api.world.IGalacticraftWorldProvider) PotionEffect(net.minecraft.potion.PotionEffect) GCPlayerStats(micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStats) WorldServer(net.minecraft.world.WorldServer) Chunk(net.minecraft.world.chunk.Chunk) IStartedDimension(stevekung.mods.moreplanets.world.IStartedDimension) SPacketSetExperience(net.minecraft.network.play.server.SPacketSetExperience) BlockPos(net.minecraft.util.math.BlockPos) ChunkPos(net.minecraft.util.math.ChunkPos) SPacketRespawn(net.minecraft.network.play.server.SPacketRespawn) SPacketEntityEffect(net.minecraft.network.play.server.SPacketEntityEffect) ItemStack(net.minecraft.item.ItemStack)

Example 3 with SPacketEntityEffect

use of net.minecraft.network.play.server.SPacketEntityEffect in project MorePlanets by SteveKunG.

the class TeleportUtil method teleportPlayerInternational.

private static EntityPlayer teleportPlayerInternational(EntityPlayerMP player, MinecraftServer server, int sourceDim, int targetDim, double xCoord, double yCoord, double zCoord, float yaw, float pitch) {
    WorldServer sourceWorld = server.getWorld(sourceDim);
    WorldServer targetWorld = server.getWorld(targetDim);
    PlayerList playerList = server.getPlayerList();
    player.dimension = targetDim;
    player.connection.sendPacket(new SPacketRespawn(player.dimension, targetWorld.getDifficulty(), targetWorld.getWorldInfo().getTerrainType(), player.interactionManager.getGameType()));
    playerList.updatePermissionLevel(player);
    sourceWorld.removeEntityDangerously(player);
    player.isDead = false;
    // world transfer
    player.setLocationAndAngles(xCoord, yCoord, zCoord, yaw, pitch);
    player.connection.setPlayerLocation(xCoord, yCoord, zCoord, yaw, pitch);
    targetWorld.spawnEntity(player);
    targetWorld.updateEntityWithOptionalForce(player, false);
    player.setWorld(targetWorld);
    playerList.preparePlayer(player, sourceWorld);
    player.connection.setPlayerLocation(xCoord, yCoord, zCoord, yaw, pitch);
    player.interactionManager.setWorld(targetWorld);
    player.connection.sendPacket(new SPacketPlayerAbilities(player.capabilities));
    playerList.updateTimeAndWeatherForPlayer(player, targetWorld);
    playerList.syncPlayerInventory(player);
    for (PotionEffect potion : player.getActivePotionEffects()) {
        player.connection.sendPacket(new SPacketEntityEffect(player.getEntityId(), potion));
    }
    player.connection.sendPacket(new SPacketSetExperience(player.experience, player.experienceTotal, player.experienceLevel));
    FMLCommonHandler.instance().firePlayerChangedDimensionEvent(player, sourceDim, targetDim);
    player.setLocationAndAngles(xCoord, yCoord, zCoord, yaw, pitch);
    return player;
}
Also used : SPacketSetExperience(net.minecraft.network.play.server.SPacketSetExperience) SPacketPlayerAbilities(net.minecraft.network.play.server.SPacketPlayerAbilities) PlayerList(net.minecraft.server.management.PlayerList) PotionEffect(net.minecraft.potion.PotionEffect) WorldServer(net.minecraft.world.WorldServer) SPacketRespawn(net.minecraft.network.play.server.SPacketRespawn) SPacketEntityEffect(net.minecraft.network.play.server.SPacketEntityEffect)

Aggregations

SPacketEntityEffect (net.minecraft.network.play.server.SPacketEntityEffect)3 SPacketRespawn (net.minecraft.network.play.server.SPacketRespawn)3 SPacketSetExperience (net.minecraft.network.play.server.SPacketSetExperience)3 PotionEffect (net.minecraft.potion.PotionEffect)3 BlockPos (net.minecraft.util.math.BlockPos)2 ChunkPos (net.minecraft.util.math.ChunkPos)2 WorldServer (net.minecraft.world.WorldServer)2 Chunk (net.minecraft.world.chunk.Chunk)2 IGalacticraftWorldProvider (micdoodle8.mods.galacticraft.api.world.IGalacticraftWorldProvider)1 GCPlayerStats (micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStats)1 ItemStack (net.minecraft.item.ItemStack)1 SPacketPlayerAbilities (net.minecraft.network.play.server.SPacketPlayerAbilities)1 PlayerList (net.minecraft.server.management.PlayerList)1 World (net.minecraft.world.World)1 IStartedDimension (stevekung.mods.moreplanets.world.IStartedDimension)1