package joshie.harvest.core.helpers; import joshie.harvest.core.base.tile.TileHarvest; import joshie.harvest.core.network.PacketHandler; import joshie.harvest.core.network.PacketRefresh; import joshie.harvest.core.network.PenguinPacket; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.common.DimensionManager; public class MCServerHelper { public static World getWorld(int dimension) { return DimensionManager.getWorld(dimension); } public static void markForUpdate(World world, BlockPos pos) { markForUpdate(world, pos, world.getBlockState(pos)); } private static void markForUpdate(World world, BlockPos pos, IBlockState state) { markForUpdate(world, pos, state, 2); } private static void markForUpdate(World world, BlockPos pos, IBlockState state, int value) { world.notifyBlockUpdate(pos, state, state, value); } public static void markForUpdate(World world, BlockPos pos, int value) { markForUpdate(world, pos, world.getBlockState(pos), value); } public static void markTileForUpdate(World world, BlockPos pos) { TileEntity tile = world.getTileEntity(pos); if (tile instanceof TileHarvest) { markTileForUpdate((TileHarvest)tile); } } public static void markTileForUpdate(TileHarvest tile) { PacketRefresh packet = new PacketRefresh(tile.getPos(), tile.getUpdateTag()); if (tile.getWorld() instanceof WorldServer) { WorldServer server = (WorldServer)tile.getWorld(); BlockPos pos = tile.getPos(); for (EntityPlayer player : server.playerEntities) { EntityPlayerMP mp = ((EntityPlayerMP) player); if (mp.getDistanceSq(pos) < 64 * 64 && server.getPlayerChunkMap().isPlayerWatchingChunk(mp, pos.getX() >> 4, pos.getZ() >> 4)) { PacketHandler.sendToClient(packet, mp); } } } } public static void sendTileUpdate(TileHarvest tile, PenguinPacket packet) { if (tile.getWorld() instanceof WorldServer) { WorldServer server = (WorldServer)tile.getWorld(); BlockPos pos = tile.getPos(); for (EntityPlayer player : server.playerEntities) { EntityPlayerMP mp = ((EntityPlayerMP) player); if (mp.getDistanceSq(pos) < 64 * 64 && server.getPlayerChunkMap().isPlayerWatchingChunk(mp, pos.getX() >> 4, pos.getZ() >> 4)) { PacketHandler.sendToClient(packet, mp); } } } } }