From f0be81f1bc141e9aa02018a5e28781fa64d2d0e7 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 2 Jul 2016 19:29:17 +0200 Subject: [PATCH] 2: Move crafter patterns away + 3: Move wireless grid range out --- .../api/network/INetworkMaster.java | 5 ++ .../api/network/IWirelessGridHandler.java | 7 --- .../apiimpl/network/WirelessGridHandler.java | 19 ++++---- .../java/refinedstorage/tile/TileCrafter.java | 11 ++++- .../tile/controller/TileController.java | 47 ++++++++++--------- 5 files changed, 52 insertions(+), 37 deletions(-) diff --git a/src/main/java/refinedstorage/api/network/INetworkMaster.java b/src/main/java/refinedstorage/api/network/INetworkMaster.java index f7c6bbbac..a06e1f306 100755 --- a/src/main/java/refinedstorage/api/network/INetworkMaster.java +++ b/src/main/java/refinedstorage/api/network/INetworkMaster.java @@ -109,6 +109,11 @@ public interface INetworkMaster { */ List getPatterns(); + /** + * Rebuilds the pattern list. + */ + void rebuildPatterns(); + /** * Returns crafting patterns from an item stack. * diff --git a/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java b/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java index c59d5ceca..462c264f1 100755 --- a/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java +++ b/src/main/java/refinedstorage/api/network/IWirelessGridHandler.java @@ -30,13 +30,6 @@ public interface IWirelessGridHandler { */ void onClose(EntityPlayer player); - /** - * Sets the range of the wireless grid handler. - * - * @param range The range - */ - void setRange(int range); - /** * @return The range wireless grids in this network can reach */ diff --git a/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java b/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java index 8051d193e..9651ecd0c 100755 --- a/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java +++ b/src/main/java/refinedstorage/apiimpl/network/WirelessGridHandler.java @@ -9,9 +9,11 @@ import refinedstorage.RefinedStorageGui; import refinedstorage.RefinedStorageItems; import refinedstorage.RefinedStorageUtils; import refinedstorage.api.network.INetworkMaster; +import refinedstorage.api.network.INetworkSlave; import refinedstorage.api.network.IWirelessGridHandler; import refinedstorage.api.network.WirelessGridConsumer; import refinedstorage.item.ItemWirelessGrid; +import refinedstorage.tile.TileWirelessTransmitter; import java.util.ArrayList; import java.util.Iterator; @@ -20,8 +22,6 @@ import java.util.List; public class WirelessGridHandler implements IWirelessGridHandler { private INetworkMaster network; - private int range; - private List consumers = new ArrayList(); private List consumersToRemove = new ArrayList(); @@ -49,7 +49,7 @@ public class WirelessGridHandler implements IWirelessGridHandler { public boolean onOpen(EntityPlayer player, EnumHand hand) { int distance = (int) Math.sqrt(Math.pow(network.getPosition().getX() - player.posX, 2) + Math.pow(network.getPosition().getY() - player.posY, 2) + Math.pow(network.getPosition().getZ() - player.posZ, 2)); - if (distance > range) { + if (distance > getRange()) { return false; } @@ -75,12 +75,15 @@ public class WirelessGridHandler implements IWirelessGridHandler { @Override public int getRange() { - return range; - } + int range = 0; - @Override - public void setRange(int range) { - this.range = range; + for (INetworkSlave slave : network.getSlaves()) { + if (slave instanceof TileWirelessTransmitter) { + range += ((TileWirelessTransmitter) slave).getRange(); + } + } + + return range; } @Override diff --git a/src/main/java/refinedstorage/tile/TileCrafter.java b/src/main/java/refinedstorage/tile/TileCrafter.java index 3a3a4c99c..45847deb7 100755 --- a/src/main/java/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/TileCrafter.java @@ -27,7 +27,16 @@ public class TileCrafter extends TileSlave implements ICraftingPatternContainer public boolean valid(ItemStack stack) { return stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack); } - }); + }) { + @Override + protected void onContentsChanged(int slot) { + super.onContentsChanged(slot); + + if (network != null) { + network.rebuildPatterns(); + } + } + }; private BasicItemHandler upgrades = new BasicItemHandler(4, this, new BasicItemValidator(RefinedStorageItems.UPGRADE, ItemUpgrade.TYPE_SPEED)); diff --git a/src/main/java/refinedstorage/tile/controller/TileController.java b/src/main/java/refinedstorage/tile/controller/TileController.java index 02b83b64e..e55668b05 100755 --- a/src/main/java/refinedstorage/tile/controller/TileController.java +++ b/src/main/java/refinedstorage/tile/controller/TileController.java @@ -43,7 +43,6 @@ import refinedstorage.network.MessageGridItems; import refinedstorage.tile.ISynchronizedContainer; import refinedstorage.tile.TileBase; import refinedstorage.tile.TileCrafter; -import refinedstorage.tile.TileWirelessTransmitter; import refinedstorage.tile.config.IRedstoneModeConfig; import refinedstorage.tile.config.RedstoneMode; @@ -344,12 +343,36 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR return patterns.get(highestPattern); } + public void rebuildPatterns() { + patterns.clear(); + + for (INetworkSlave slave : slaves) { + if (slave instanceof TileCrafter && slave.canUpdate()) { + TileCrafter crafter = (TileCrafter) slave; + + for (int i = 0; i < crafter.getPatterns().getSlots(); ++i) { + ItemStack pattern = crafter.getPatterns().getStackInSlot(i); + + if (pattern != null && ItemPattern.isValid(pattern)) { + patterns.add(new CraftingPattern( + crafter.getPos().getX(), + crafter.getPos().getY(), + crafter.getPos().getZ(), + ItemPattern.isProcessing(pattern), + ItemPattern.getInputs(pattern), + ItemPattern.getOutputs(pattern), + ItemPattern.getByproducts(pattern) + )); + } + } + } + } + } + private void updateSlaves() { this.storages.clear(); this.patterns.clear(); - int range = 0; - for (INetworkSlave slave : slaves) { if (!slave.canUpdate()) { continue; @@ -358,26 +381,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR if (slave instanceof IStorageProvider) { ((IStorageProvider) slave).addStorages(storages); } - - if (slave instanceof TileWirelessTransmitter) { - range += ((TileWirelessTransmitter) slave).getRange(); - } - - if (slave instanceof TileCrafter) { - TileCrafter crafter = (TileCrafter) slave; - - for (int i = 0; i < crafter.getPatterns().getSlots(); ++i) { - ItemStack pattern = crafter.getPatterns().getStackInSlot(i); - - if (pattern != null && ItemPattern.isValid(pattern)) { - patterns.add(new CraftingPattern(crafter.getPos().getX(), crafter.getPos().getY(), crafter.getPos().getZ(), ItemPattern.isProcessing(pattern), ItemPattern.getInputs(pattern), ItemPattern.getOutputs(pattern), ItemPattern.getByproducts(pattern))); - } - } - } } - wirelessGridHandler.setRange(range); - Collections.sort(storages, new Comparator() { @Override public int compare(IStorage left, IStorage right) {