From 16e23766046834aa873fe99d2c7389a72a4d3481 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 19 Apr 2020 13:06:58 +0200 Subject: [PATCH] Fixes #893 --- CHANGELOG.md | 2 ++ .../abstractItems/AGenerator.java | 16 ++++++++----- .../SlimefunItem/abstractItems/AReactor.java | 23 +++++++++++-------- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32249bfd4..0ba42d562 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,6 +75,7 @@ * Even more performance improvements * Changed Ignition Chamber Recipe * GEO Miner is now 2 seconds faster +* All Generators will now stop consuming fuel if no energy is needed #### Fixes * Fixed error message when clicking empty slots in the Slimefun Guide @@ -93,6 +94,7 @@ * Fixed #1813 * Fixed #1814 * Fixed GEO Scanner being unable to deal with more than 28 different resources +* Fixed #893 ## Release Candidate 10 (28 Mar 2020) diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index 1e2de4a76..28fe8584a 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -142,6 +142,8 @@ public abstract class AGenerator extends AbstractEnergyGenerator { @Override public double generateEnergy(Location l, SlimefunItem sf, Config data) { BlockMenu inv = BlockStorage.getInventory(l); + boolean chargeable = ChargableBlock.isChargable(l); + int charge = chargeable ? ChargableBlock.getCharge(l) : 0; if (isProcessing(l)) { int timeleft = progress.get(l); @@ -149,13 +151,14 @@ public abstract class AGenerator extends AbstractEnergyGenerator { if (timeleft > 0) { ChestMenuUtils.updateProgressbar(inv, 22, timeleft, processing.get(l).getTicks(), getProgressBar()); - if (ChargableBlock.isChargable(l)) { - if (ChargableBlock.getMaxCharge(l) - ChargableBlock.getCharge(l) >= getEnergyProduction()) { + if (chargeable) { + if (ChargableBlock.getMaxCharge(l) - charge >= getEnergyProduction()) { ChargableBlock.addCharge(l, getEnergyProduction()); progress.put(l, timeleft - 1); - return ChargableBlock.getCharge(l); + return charge + getEnergyProduction(); } - return 0; + + return charge; } else { progress.put(l, timeleft - 1); @@ -173,7 +176,7 @@ public abstract class AGenerator extends AbstractEnergyGenerator { progress.remove(l); processing.remove(l); - return 0; + return charge; } } else { @@ -188,7 +191,8 @@ public abstract class AGenerator extends AbstractEnergyGenerator { processing.put(l, fuel); progress.put(l, fuel.getTicks()); } - return 0; + + return charge; } } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index a4a693e87..0612ce42b 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -263,6 +263,7 @@ public abstract class AReactor extends AbstractEnergyGenerator { public double generateEnergy(Location l, SlimefunItem sf, Config data) { BlockMenu menu = BlockStorage.getInventory(l); BlockMenu port = getAccessPort(l); + int charge = ChargableBlock.getCharge(l); if (isProcessing(l)) { extraTick(l); @@ -270,12 +271,8 @@ public abstract class AReactor extends AbstractEnergyGenerator { if (timeleft > 0) { int produced = getEnergyProduction(); - int space = ChargableBlock.getMaxCharge(l) - ChargableBlock.getCharge(l); + int space = ChargableBlock.getMaxCharge(l) - charge; - if (space >= produced) { - ChargableBlock.addCharge(l, getEnergyProduction()); - space -= produced; - } if (space >= produced || !"generator".equals(BlockStorage.getLocationInfo(l, "reactor-mode"))) { progress.put(l, timeleft - 1); @@ -319,10 +316,15 @@ public abstract class AReactor extends AbstractEnergyGenerator { ReactorHologram.update(l, "&b\u2744 &7" + getPercentage(timeleft, processing.get(l).getTicks()) + "%"); } } - - return ChargableBlock.getCharge(l); } - return 0; + + if (space >= produced) { + ChargableBlock.addCharge(l, getEnergyProduction()); + return charge + getEnergyProduction(); + } + else { + return charge; + } } else { menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); @@ -341,7 +343,7 @@ public abstract class AReactor extends AbstractEnergyGenerator { progress.remove(l); processing.remove(l); - return 0; + return charge; } } else { @@ -360,7 +362,8 @@ public abstract class AReactor extends AbstractEnergyGenerator { processing.put(l, fuel); progress.put(l, fuel.getTicks()); } - return 0; + + return charge; } }