Search in sources :

Example 1 with IStartedDimension

use of stevekung.mods.moreplanets.world.IStartedDimension 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)

Aggregations

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