diff --git a/src/main/java/org/ultramine/server/MultiWorld.java b/src/main/java/org/ultramine/server/MultiWorld.java index cd054c4..eee1288 100644 --- a/src/main/java/org/ultramine/server/MultiWorld.java +++ b/src/main/java/org/ultramine/server/MultiWorld.java @@ -26,7 +26,9 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gnu.trove.TCollections; +import gnu.trove.map.TIntIntMap; import gnu.trove.map.TIntObjectMap; +import gnu.trove.map.hash.TIntIntHashMap; import gnu.trove.map.hash.TIntObjectHashMap; import gnu.trove.set.TIntSet; import gnu.trove.set.hash.TIntHashSet; @@ -52,6 +54,7 @@ { private static final Logger log = LogManager.getLogger(); private final MinecraftServer server; + private final TIntIntMap provTranslt = new TIntIntHashMap(); private final TIntObjectMap dimToNameMap = new TIntObjectHashMap(); private final TIntObjectMap dimToWorldMap = new TIntObjectHashMap(); private final Map nameToWorldMap = new HashMap(); @@ -64,11 +67,16 @@ this.server = server; } + public void registerProviderTranslation(int src, int dst) + { + provTranslt.put(src, dst); + } + private void sendDimensionToAll(int dim, int pid) { FMLEmbeddedChannel channel = NetworkRegistry.INSTANCE.getChannel("FORGE", Side.SERVER); channel.attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL); - channel.writeAndFlush(new ForgeMessage.DimensionRegisterMessage(dim, pid == -10 ? 0 : pid)); + channel.writeAndFlush(new ForgeMessage.DimensionRegisterMessage(dim, provTranslt.containsKey(pid) ? provTranslt.get(pid) : pid)); } @SubscribeEvent @@ -80,7 +88,7 @@ for (int dim : DimensionManager.getStaticDimensionIDs()) { int pid = DimensionManager.getProviderType(dim); - channel.writeAndFlush(new ForgeMessage.DimensionRegisterMessage(dim, pid == -10 ? 0 : pid)); + channel.writeAndFlush(new ForgeMessage.DimensionRegisterMessage(dim, provTranslt.containsKey(pid) ? provTranslt.get(pid) : pid)); } } @@ -99,6 +107,7 @@ public void handleServerWorldsInit() { DimensionManager.registerProviderType(-10, org.ultramine.server.wempty.WorldProviderEmpty.class, false); + registerProviderTranslation(-10, 0); DimensionManager.unregisterDimension(-1); DimensionManager.unregisterDimension(0); DimensionManager.unregisterDimension(1);