package net.minecraft.world; import java.util.Iterator; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.play.server.S25PacketBlockBreakAnim; import net.minecraft.network.play.server.S28PacketEffect; import net.minecraft.network.play.server.S29PacketSoundEffect; import net.minecraft.server.MinecraftServer; import net.minecraft.util.BlockPos; public class WorldManager implements IWorldAccess { /** Reference to the MinecraftServer object. */ private MinecraftServer mcServer; /** The WorldServer object. */ private WorldServer theWorldServer; private static final String __OBFID = "CL_00001433"; public WorldManager(MinecraftServer p_i1517_1_, WorldServer p_i1517_2_) { this.mcServer = p_i1517_1_; this.theWorldServer = p_i1517_2_; } public void func_180442_a(int p_180442_1_, boolean p_180442_2_, double p_180442_3_, double p_180442_5_, double p_180442_7_, double p_180442_9_, double p_180442_11_, double p_180442_13_, int ... p_180442_15_) {} /** * Called on all IWorldAccesses when an entity is created or loaded. On client worlds, starts downloading any * necessary textures. On server worlds, adds the entity to the entity tracker. */ public void onEntityAdded(Entity entityIn) { this.theWorldServer.getEntityTracker().trackEntity(entityIn); } /** * Called on all IWorldAccesses when an entity is unloaded or destroyed. On client worlds, releases any downloaded * textures. On server worlds, removes the entity from the entity tracker. */ public void onEntityRemoved(Entity entityIn) { this.theWorldServer.getEntityTracker().untrackEntity(entityIn); } /** * Plays the specified sound. Arg: soundName, x, y, z, volume, pitch */ public void playSound(String soundName, double x, double y, double z, float volume, float pitch) { this.mcServer.getConfigurationManager().sendToAllNear(x, y, z, volume > 1.0F ? (double)(16.0F * volume) : 16.0D, this.theWorldServer.provider.getDimensionId(), new S29PacketSoundEffect(soundName, x, y, z, volume, pitch)); } /** * Plays sound to all near players except the player reference given */ public void playSoundToNearExcept(EntityPlayer except, String soundName, double x, double y, double z, float volume, float pitch) { this.mcServer.getConfigurationManager().sendToAllNearExcept(except, x, y, z, volume > 1.0F ? (double)(16.0F * volume) : 16.0D, this.theWorldServer.provider.getDimensionId(), new S29PacketSoundEffect(soundName, x, y, z, volume, pitch)); } /** * On the client, re-renders all blocks in this range, inclusive. On the server, does nothing. Args: min x, min y, * min z, max x, max y, max z */ public void markBlockRangeForRenderUpdate(int x1, int y1, int z1, int x2, int y2, int z2) {} public void markBlockForUpdate(BlockPos pos) { this.theWorldServer.getPlayerManager().func_180244_a(pos); } public void notifyLightSet(BlockPos pos) {} public void func_174961_a(String p_174961_1_, BlockPos p_174961_2_) {} public void func_180439_a(EntityPlayer p_180439_1_, int p_180439_2_, BlockPos p_180439_3_, int p_180439_4_) { this.mcServer.getConfigurationManager().sendToAllNearExcept(p_180439_1_, (double)p_180439_3_.getX(), (double)p_180439_3_.getY(), (double)p_180439_3_.getZ(), 64.0D, this.theWorldServer.provider.getDimensionId(), new S28PacketEffect(p_180439_2_, p_180439_3_, p_180439_4_, false)); } public void func_180440_a(int p_180440_1_, BlockPos p_180440_2_, int p_180440_3_) { this.mcServer.getConfigurationManager().sendPacketToAllPlayers(new S28PacketEffect(p_180440_1_, p_180440_2_, p_180440_3_, true)); } public void sendBlockBreakProgress(int breakerId, BlockPos pos, int progress) { Iterator var4 = this.mcServer.getConfigurationManager().playerEntityList.iterator(); while (var4.hasNext()) { EntityPlayerMP var5 = (EntityPlayerMP)var4.next(); if (var5 != null && var5.worldObj == this.theWorldServer && var5.getEntityId() != breakerId) { double var6 = (double)pos.getX() - var5.posX; double var8 = (double)pos.getY() - var5.posY; double var10 = (double)pos.getZ() - var5.posZ; if (var6 * var6 + var8 * var8 + var10 * var10 < 1024.0D) { var5.playerNetServerHandler.sendPacket(new S25PacketBlockBreakAnim(breakerId, pos, progress)); } } } } }