package buildcraft.robotics; import java.util.HashMap; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import buildcraft.api.robots.DockingStation; import buildcraft.api.robots.IRobotRegistryProvider; public class RobotRegistryProvider implements IRobotRegistryProvider { private static HashMap<Integer, RobotRegistry> registries = new HashMap<Integer, RobotRegistry>(); @Override public synchronized RobotRegistry getRegistry(World world) { if (!registries.containsKey(world.provider.dimensionId) || registries.get(world.provider.dimensionId).world != world) { RobotRegistry newRegistry = (RobotRegistry) world.perWorldStorage.loadData(RobotRegistry.class, "robotRegistry"); if (newRegistry == null) { newRegistry = new RobotRegistry("robotRegistry"); world.perWorldStorage.setData("robotRegistry", newRegistry); } newRegistry.world = world; for (DockingStation d : newRegistry.stations.values()) { d.world = world; } MinecraftForge.EVENT_BUS.register(newRegistry); registries.put(world.provider.dimensionId, newRegistry); return newRegistry; } return registries.get(world.provider.dimensionId); } }