From 38f1209f117ff3e1b9240d880de27ef2f537e68b Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 14 May 2016 17:20:03 +0200 Subject: [PATCH] Bugfixes --- .../MessageControllerEnergyUpdate.java | 10 +- .../network/MessageDetectorPoweredUpdate.java | 6 +- .../MessageMachineConnectedUpdate.java | 6 +- .../network/MessageSoldererWorkingUpdate.java | 6 +- .../refinedstorage/tile/TileController.java | 112 +++++++++--------- .../refinedstorage/tile/TileDetector.java | 4 +- .../java/refinedstorage/tile/TileMachine.java | 8 +- .../tile/solderer/TileSolderer.java | 6 +- 8 files changed, 83 insertions(+), 75 deletions(-) diff --git a/src/main/java/refinedstorage/network/MessageControllerEnergyUpdate.java b/src/main/java/refinedstorage/network/MessageControllerEnergyUpdate.java index 9a2e08d0f..423c9542d 100755 --- a/src/main/java/refinedstorage/network/MessageControllerEnergyUpdate.java +++ b/src/main/java/refinedstorage/network/MessageControllerEnergyUpdate.java @@ -12,6 +12,8 @@ import refinedstorage.RefinedStorageUtils; import refinedstorage.tile.TileController; public class MessageControllerEnergyUpdate implements IMessage, IMessageHandler { + public static long LAST_RE_RENDER; + private int x; private int y; private int z; @@ -52,9 +54,15 @@ public class MessageControllerEnergyUpdate implements IMessage, IMessageHandler< TileEntity tile = world.getTileEntity(pos); if (tile instanceof TileController) { + int lastEnergy = ((TileController) tile).getEnergyStored(null); + ((TileController) tile).setEnergyStored(message.energy); - RefinedStorageUtils.reRenderBlock(world, pos); + if (lastEnergy != message.energy && System.currentTimeMillis() - LAST_RE_RENDER > 3000) { + RefinedStorageUtils.reRenderBlock(world, pos); + + LAST_RE_RENDER = System.currentTimeMillis(); + } } return null; diff --git a/src/main/java/refinedstorage/network/MessageDetectorPoweredUpdate.java b/src/main/java/refinedstorage/network/MessageDetectorPoweredUpdate.java index 1302184c6..1e8b30d43 100755 --- a/src/main/java/refinedstorage/network/MessageDetectorPoweredUpdate.java +++ b/src/main/java/refinedstorage/network/MessageDetectorPoweredUpdate.java @@ -52,9 +52,13 @@ public class MessageDetectorPoweredUpdate implements IMessage, IMessageHandler newStorages = new ArrayList(); List newPatterns = new ArrayList(); - //if (canRun()) { - newEnergyUsage = 10; + if (canRun()) { + newEnergyUsage = 10; - for (TileMachine machine : machines) { - machine.updateMachine(); + for (TileMachine machine : machines) { + machine.updateMachine(); - if (machine instanceof TileWirelessTransmitter) { - newWirelessGridRange += ((TileWirelessTransmitter) machine).getRange(); - } + if (machine instanceof TileWirelessTransmitter) { + newWirelessGridRange += ((TileWirelessTransmitter) machine).getRange(); + } - if (machine instanceof IStorageProvider) { - ((IStorageProvider) machine).provide(newStorages); - } + if (machine instanceof IStorageProvider) { + ((IStorageProvider) machine).provide(newStorages); + } - if (machine instanceof TileCrafter) { - TileCrafter crafter = (TileCrafter) machine; + if (machine instanceof TileCrafter) { + TileCrafter crafter = (TileCrafter) machine; - for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) { - if (crafter.getStackInSlot(i) != null) { - ItemStack pattern = crafter.getStackInSlot(i); + for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) { + if (crafter.getStackInSlot(i) != null) { + ItemStack pattern = crafter.getStackInSlot(i); - newPatterns.add(new CraftingPattern( - crafter.getPos().getX(), - crafter.getPos().getY(), - crafter.getPos().getZ(), - ItemPattern.isProcessing(pattern), - ItemPattern.getInputs(pattern), - ItemPattern.getOutputs(pattern))); + newPatterns.add(new CraftingPattern( + crafter.getPos().getX(), + crafter.getPos().getY(), + crafter.getPos().getZ(), + ItemPattern.isProcessing(pattern), + ItemPattern.getInputs(pattern), + ItemPattern.getOutputs(pattern))); + } } } + + newEnergyUsage += machine.getEnergyUsage(); } - newEnergyUsage += machine.getEnergyUsage(); - } + Collections.sort(storages, new Comparator() { + @Override + public int compare(IStorage s1, IStorage s2) { + if (s1.getPriority() == s2.getPriority()) { + return 0; + } - Collections.sort(storages, new Comparator() { - @Override - public int compare(IStorage s1, IStorage s2) { - if (s1.getPriority() == s2.getPriority()) { - return 0; + return (s1.getPriority() > s2.getPriority()) ? -1 : 1; } + }); - return (s1.getPriority() > s2.getPriority()) ? -1 : 1; + syncItems(); + + for (ICraftingTask taskToCancel : craftingTasksToCancel) { + taskToCancel.onCancelled(this); } - }); - syncItems(); + craftingTasks.removeAll(craftingTasksToCancel); + craftingTasksToCancel.clear(); - for (ICraftingTask taskToCancel : craftingTasksToCancel) { - taskToCancel.onCancelled(this); - } + craftingTasks.addAll(craftingTasksToAdd); + craftingTasksToAdd.clear(); - craftingTasks.removeAll(craftingTasksToCancel); - craftingTasksToCancel.clear(); + Iterator craftingTaskIterator = craftingTasks.iterator(); - craftingTasks.addAll(craftingTasksToAdd); - craftingTasksToAdd.clear(); + while (craftingTaskIterator.hasNext()) { + ICraftingTask task = craftingTaskIterator.next(); - Iterator craftingTaskIterator = craftingTasks.iterator(); + if (ticks % task.getPattern().getCrafter(worldObj).getSpeed() == 0 && task.update(this)) { + task.onDone(this); - while (craftingTaskIterator.hasNext()) { - ICraftingTask task = craftingTaskIterator.next(); - - if (ticks % task.getPattern().getCrafter(worldObj).getSpeed() == 0 && task.update(this)) { - task.onDone(this); - - craftingTaskIterator.remove(); + craftingTaskIterator.remove(); + } } - } - /*} else { + } else { disconnectAll(); - }*/ + } wirelessGridRange = newWirelessGridRange; energyUsage = newEnergyUsage; @@ -208,14 +206,10 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr break; } - if (lastEnergy != energy.getEnergyStored() || ticks == 1) { + RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageControllerEnergyUpdate(this)); + + if (lastEnergy != energy.getEnergyStored()) { worldObj.updateComparatorOutputLevel(pos, RefinedStorageBlocks.CONTROLLER); - - if (System.currentTimeMillis() - lastEnergyUpdate > 3000L) { - RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageControllerEnergyUpdate(this)); - - lastEnergyUpdate = System.currentTimeMillis(); - } } } } diff --git a/src/main/java/refinedstorage/tile/TileDetector.java b/src/main/java/refinedstorage/tile/TileDetector.java index dab4f731d..1cafdcb93 100755 --- a/src/main/java/refinedstorage/tile/TileDetector.java +++ b/src/main/java/refinedstorage/tile/TileDetector.java @@ -88,9 +88,9 @@ public class TileDetector extends TileMachine implements ICompareConfig { if (powered != lastPowered) { worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.DETECTOR); - - RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageDetectorPoweredUpdate(this)); } + + RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageDetectorPoweredUpdate(this)); } } diff --git a/src/main/java/refinedstorage/tile/TileMachine.java b/src/main/java/refinedstorage/tile/TileMachine.java index c827cbc80..dfc4ba135 100755 --- a/src/main/java/refinedstorage/tile/TileMachine.java +++ b/src/main/java/refinedstorage/tile/TileMachine.java @@ -60,6 +60,8 @@ public abstract class TileMachine extends TileBase implements ISynchronizedConta searchController(worldObj); } + RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageMachineConnectedUpdate(this)); + if (connected && !redstoneMode.isEnabled(worldObj, pos)) { onDisconnected(); } @@ -72,8 +74,6 @@ public abstract class TileMachine extends TileBase implements ISynchronizedConta if (worldObj.getBlockState(pos).getBlock() == block) { worldObj.setBlockState(pos, worldObj.getBlockState(pos).withProperty(BlockMachine.CONNECTED, true)); - - RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageMachineConnectedUpdate(this)); } worldObj.notifyNeighborsOfStateChange(pos, block); @@ -86,12 +86,10 @@ public abstract class TileMachine extends TileBase implements ISynchronizedConta if (worldObj.getBlockState(pos).getBlock() == block) { worldObj.setBlockState(pos, worldObj.getBlockState(pos).withProperty(BlockMachine.CONNECTED, false)); - - RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageMachineConnectedUpdate(this)); } // I have no idea why this is needed - if (controller != null) { + if (this.controller != null) { this.controller.removeMachine(this); this.controller = null; } diff --git a/src/main/java/refinedstorage/tile/solderer/TileSolderer.java b/src/main/java/refinedstorage/tile/solderer/TileSolderer.java index 2017c404d..c16139d22 100755 --- a/src/main/java/refinedstorage/tile/solderer/TileSolderer.java +++ b/src/main/java/refinedstorage/tile/solderer/TileSolderer.java @@ -44,8 +44,6 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven public void updateMachine() { ISoldererRecipe newRecipe = SoldererRegistry.getRecipe(inventory); - boolean lastWorking = working; - if (newRecipe == null) { reset(); } else if (newRecipe != recipe) { @@ -78,9 +76,7 @@ public class TileSolderer extends TileMachine implements IInventory, ISidedInven } } - if (working != lastWorking) { - RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageSoldererWorkingUpdate(this)); - } + RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageSoldererWorkingUpdate(this)); } @Override