package advancedsystemsmanager.naming; import advancedsystemsmanager.AdvancedSystemsManager; import advancedsystemsmanager.network.ASMPacket; import advancedsystemsmanager.network.PacketHandler; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; public class NameRegistry { private static final SaveNameData nameData = new SaveNameData(); static { AdvancedSystemsManager.worldSave.save(nameData); } public static String getSavedName(World world, int x, int y, int z) { return getSavedName(world.provider.dimensionId, x, y, z); } public static String getSavedName(int dim, int x, int y, int z) { return nameData.getSavedName(dim, x, y, z); } public static void saveName(World world, int x, int y, int z, String name) { BlockCoord coord = new BlockCoord(x, y, z, name); ASMPacket packet = getSavePacket(world.provider.dimensionId, coord); if (world.isRemote) { packet.sendServerPacket(); } else { nameData.put(coord, world.provider.dimensionId); packet.sendToAll(); } } private static ASMPacket getSavePacket(int dim, BlockCoord coord) { ASMPacket packet = PacketHandler.getNamePacket(); packet.writeByte(SaveNameData.ADD); packet.writeByte(dim); coord.writeData(packet); return packet; } public static boolean removeName(World world, int x, int y, int z) { if (!nameData.contains(world.provider.dimensionId, x, y, z)) return false; ASMPacket packet = getRemovePacket(world.provider.dimensionId, x, y, z); if (world.isRemote) { packet.sendServerPacket(); } else { nameData.remove(world.provider.dimensionId, x, y, z); packet.sendToAll(); } return true; } private static ASMPacket getRemovePacket(int dim, int x, int y, int z) { ASMPacket packet = PacketHandler.getNamePacket(); packet.writeByte(SaveNameData.REMOVE); packet.writeByte(dim); packet.writeInt(x); packet.writeByte(y); packet.writeInt(z); return packet; } public static void syncNameData(EntityPlayerMP player) { ASMPacket packet = PacketHandler.getNamePacket(); nameData.writeData(packet); packet.sendPlayerPacket(player); } public static void clear() { nameData.clear(); } public static void updateClient(ASMPacket packet) { nameData.readData(packet); } public static void updateServer(ASMPacket packet) { updateClient(packet); packet.sendToAll(); } }