From 5460dbf76f7a955b9f68be6a4e842a903e27cf15 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Mon, 20 Jun 2016 00:07:51 +0200 Subject: [PATCH] WIP --- .../StorageNetworkEventHandler.java | 10 ++++++--- .../storagenet/StorageNetworkRegistry.java | 19 +++++++++++++---- .../storagenet/StorageNetworkSavedData.java | 21 ++++++++++++------- .../refinedstorage/block/BlockController.java | 2 +- .../refinedstorage/item/ItemWirelessGrid.java | 2 +- .../network/MessageGridCraftingStart.java | 2 +- .../MessageWirelessGridCraftingStart.java | 2 +- .../MessageWirelessGridHeldItemPush.java | 2 +- .../MessageWirelessGridStoragePull.java | 2 +- .../java/refinedstorage/tile/TileMachine.java | 2 +- .../tile/grid/WirelessGrid.java | 4 ++-- 11 files changed, 44 insertions(+), 24 deletions(-) diff --git a/src/main/java/refinedstorage/api/storagenet/StorageNetworkEventHandler.java b/src/main/java/refinedstorage/api/storagenet/StorageNetworkEventHandler.java index 5854814f5..f6fb2a216 100755 --- a/src/main/java/refinedstorage/api/storagenet/StorageNetworkEventHandler.java +++ b/src/main/java/refinedstorage/api/storagenet/StorageNetworkEventHandler.java @@ -1,15 +1,19 @@ package refinedstorage.api.storagenet; +import net.minecraft.util.math.BlockPos; import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; +import java.util.Map; + public class StorageNetworkEventHandler { @SubscribeEvent public void onWorldTick(TickEvent.WorldTickEvent e) { - // @todo: !!! - if (e.world.provider.getDimension() == 0) { - for (StorageNetwork network : StorageNetworkRegistry.NETWORKS.values()) { + Map networks = StorageNetworkRegistry.get(e.world.provider.getDimension()); + + if (networks != null) { + for (StorageNetwork network : networks.values()) { if (network.getWorld() == null) { network.setWorld(e.world); } diff --git a/src/main/java/refinedstorage/api/storagenet/StorageNetworkRegistry.java b/src/main/java/refinedstorage/api/storagenet/StorageNetworkRegistry.java index 54d4729b4..0849dfaf8 100755 --- a/src/main/java/refinedstorage/api/storagenet/StorageNetworkRegistry.java +++ b/src/main/java/refinedstorage/api/storagenet/StorageNetworkRegistry.java @@ -6,10 +6,21 @@ import java.util.HashMap; import java.util.Map; public class StorageNetworkRegistry { - // @todo: handle multiple dims - public static final Map NETWORKS = new HashMap(); + public static final Map> NETWORKS = new HashMap>(); - public static void addStorageNetwork(StorageNetwork network) { - NETWORKS.put(network.getPos(), network); + public static void add(StorageNetwork network, int dimension) { + if (NETWORKS.get(dimension) == null) { + NETWORKS.put(dimension, new HashMap()); + } + + NETWORKS.get(dimension).put(network.getPos(), network); + } + + public static StorageNetwork get(BlockPos pos, int dimension) { + return get(dimension) == null ? null : get(dimension).get(pos); + } + + public static Map get(int dimension) { + return NETWORKS.get(dimension); } } diff --git a/src/main/java/refinedstorage/api/storagenet/StorageNetworkSavedData.java b/src/main/java/refinedstorage/api/storagenet/StorageNetworkSavedData.java index 0ae388173..ac9666890 100755 --- a/src/main/java/refinedstorage/api/storagenet/StorageNetworkSavedData.java +++ b/src/main/java/refinedstorage/api/storagenet/StorageNetworkSavedData.java @@ -7,6 +7,8 @@ import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; import net.minecraftforge.common.util.Constants; +import java.util.Map; + public class StorageNetworkSavedData extends WorldSavedData { public static final String NBT_STORAGE_NETWORKS = "StorageNetworks"; @@ -26,7 +28,7 @@ public class StorageNetworkSavedData extends WorldSavedData { StorageNetwork network = new StorageNetwork(pos); network.readFromNBT(networkTag.getCompoundTag("Data")); - StorageNetworkRegistry.addStorageNetwork(network); + StorageNetworkRegistry.add(network, networkTag.getInteger("Dim")); } } @@ -34,13 +36,16 @@ public class StorageNetworkSavedData extends WorldSavedData { public NBTTagCompound writeToNBT(NBTTagCompound tag) { NBTTagList networks = new NBTTagList(); - for (StorageNetwork network : StorageNetworkRegistry.NETWORKS.values()) { - NBTTagCompound networkTag = new NBTTagCompound(); - networkTag.setInteger("X", network.getPos().getX()); - networkTag.setInteger("Y", network.getPos().getY()); - networkTag.setInteger("Z", network.getPos().getZ()); - networkTag.setTag("Data", network.writeToNBT(new NBTTagCompound())); - networks.appendTag(networkTag); + for (Map.Entry> entry : StorageNetworkRegistry.NETWORKS.entrySet()) { + for (StorageNetwork network : entry.getValue().values()) { + NBTTagCompound networkTag = new NBTTagCompound(); + networkTag.setInteger("X", network.getPos().getX()); + networkTag.setInteger("Y", network.getPos().getY()); + networkTag.setInteger("Z", network.getPos().getZ()); + networkTag.setInteger("Dim", entry.getKey()); + networkTag.setTag("Data", network.writeToNBT(new NBTTagCompound())); + networks.appendTag(networkTag); + } } tag.setTag(NBT_STORAGE_NETWORKS, networks); diff --git a/src/main/java/refinedstorage/block/BlockController.java b/src/main/java/refinedstorage/block/BlockController.java index 3b11f3264..a0df41f57 100755 --- a/src/main/java/refinedstorage/block/BlockController.java +++ b/src/main/java/refinedstorage/block/BlockController.java @@ -100,7 +100,7 @@ public class BlockController extends BlockBase { network.getEnergy().receiveEnergy(tag.getInteger(StorageNetwork.NBT_ENERGY), false); } - StorageNetworkRegistry.addStorageNetwork(network); + StorageNetworkRegistry.add(network, world.provider.getDimension()); ((TileController) world.getTileEntity(pos)).setNetwork(network); } diff --git a/src/main/java/refinedstorage/item/ItemWirelessGrid.java b/src/main/java/refinedstorage/item/ItemWirelessGrid.java index 0ce8bd30e..dafc0bd2b 100755 --- a/src/main/java/refinedstorage/item/ItemWirelessGrid.java +++ b/src/main/java/refinedstorage/item/ItemWirelessGrid.java @@ -134,7 +134,7 @@ public class ItemWirelessGrid extends ItemEnergyContainer { @Override public ActionResult onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) { if (!world.isRemote && hasValidNBT(stack) && getDimensionId(stack) == player.dimension) { - StorageNetwork network = StorageNetworkRegistry.NETWORKS.get(new BlockPos(getX(stack), getY(stack), getZ(stack))); + StorageNetwork network = StorageNetworkRegistry.get(new BlockPos(getX(stack), getY(stack), getZ(stack)), player.worldObj.provider.getDimension()); if (network != null) { if (network.getWirelessGridHandler().handleOpen(player, hand)) { diff --git a/src/main/java/refinedstorage/network/MessageGridCraftingStart.java b/src/main/java/refinedstorage/network/MessageGridCraftingStart.java index fc4d8a1d4..8c0163a79 100755 --- a/src/main/java/refinedstorage/network/MessageGridCraftingStart.java +++ b/src/main/java/refinedstorage/network/MessageGridCraftingStart.java @@ -45,7 +45,7 @@ public class MessageGridCraftingStart extends MessageHandlerPlayerToServer