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));
}
}
Aggregations