From 8c953753e30498b145ed7c9029959002d86bb2ec Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sat, 29 Jul 2017 21:33:34 +0200 Subject: [PATCH] Added config option to modify the Solderer speed per Speed Upgrade, defaulting to 22.5% faster per upgrade, making it 90% faster on a fully upgraded Solderer --- CHANGELOG.md | 2 +- .../raoulvdberge/refinedstorage/RSConfig.java | 2 ++ .../network/node/NetworkNodeSolderer.java | 22 +++++++++---------- .../refinedstorage/tile/TileSolderer.java | 7 +----- 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c712b5d1..aa25dacb2 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ - Fixed bug where pattern create button wasn't visible when grid tabs were selected (raoulvdberge) - Fixed performance issue with Controllers turning off and on and Interfaces (raoulvdberge) - Fixed Interfaces exposing network inventory don't hide storages that are disconnected (raoulvdberge) -- A Solderer with Speed Upgrades is now 2 times faster (raoulvdberge) +- Added config option to modify the Solderer speed per Speed Upgrade, defaulting to 22.5% faster per upgrade, making it 90% faster on a fully upgraded Solderer (raoulvdberge) ### 1.5.13 - Fixed Wireless Fluid Grid not using up energy (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java b/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java index 689ae6047..f8d1de6bf 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/RSConfig.java @@ -96,6 +96,7 @@ public final class RSConfig { //region Upgrades public int rangeUpgradeUsage; public int speedUpgradeUsage; + public float soldererSpeedIncreasePerSpeedUpgrade; public int craftingUpgradeUsage; public int stackUpgradeUsage; public int interdimensionalUpgradeUsage; @@ -217,6 +218,7 @@ public final class RSConfig { //region Upgrades rangeUpgradeUsage = config.getInt("range", UPGRADES, 8, 0, Integer.MAX_VALUE, "The additional energy used per Range Upgrade"); speedUpgradeUsage = config.getInt("speed", UPGRADES, 2, 0, Integer.MAX_VALUE, "The additional energy used per Speed Upgrade"); + soldererSpeedIncreasePerSpeedUpgrade = config.getFloat("soldererSpeedIncreasePerSpeedUpgrade", UPGRADES, 22.5F, 0F, 25F, "The speed increase percentage in the Solderer per Speed Upgrade"); craftingUpgradeUsage = config.getInt("crafting", UPGRADES, 5, 0, Integer.MAX_VALUE, "The additional energy used per Crafting Upgrade"); stackUpgradeUsage = config.getInt("stack", UPGRADES, 12, 0, Integer.MAX_VALUE, "The additional energy used per Stack Upgrade"); interdimensionalUpgradeUsage = config.getInt("interdimensional", UPGRADES, 1000, 0, Integer.MAX_VALUE, "The additional energy used by the Interdimensional Upgrade"); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSolderer.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSolderer.java index d848c4f01..1c2615b8e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSolderer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeSolderer.java @@ -98,15 +98,9 @@ public class NetworkNodeSolderer extends NetworkNode { markDirty(); } else if ((result.getStackInSlot(0).isEmpty() || API.instance().getComparer().isEqualNoQuantity(recipe.getResult(), result.getStackInSlot(0))) && result.getStackInSlot(0).getCount() + recipe.getResult().getCount() <= result.getStackInSlot(0).getMaxStackSize()) { - int increase = 1 + (upgrades.getUpgradeCount(ItemUpgrade.TYPE_SPEED) * 2); + progress++; - if (progress + increase > recipe.getDuration()) { - progress = recipe.getDuration(); - } else { - progress += increase; - } - - if (progress >= recipe.getDuration()) { + if (progress >= getDuration()) { ItemStack resultSlot = result.getStackInSlot(0); if (resultSlot.isEmpty()) { @@ -204,10 +198,6 @@ public class NetworkNodeSolderer extends NetworkNode { return upgrades; } - public ISoldererRecipe getRecipe() { - return recipe; - } - public boolean isWorking() { return working; } @@ -216,6 +206,14 @@ public class NetworkNodeSolderer extends NetworkNode { return progress; } + public int getDuration() { + if (recipe == null) { + return 0; + } + + return (int) ((float) recipe.getDuration() - ((float) recipe.getDuration() / 100F * ((float) upgrades.getUpgradeCount(ItemUpgrade.TYPE_SPEED) * RS.INSTANCE.config.soldererSpeedIncreasePerSpeedUpgrade))); + } + @Override public IItemHandler getDrops() { return new CombinedInvWrapper(ingredients, result, upgrades); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSolderer.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSolderer.java index 76f99667a..e5876958e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSolderer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileSolderer.java @@ -1,6 +1,5 @@ package com.raoulvdberge.refinedstorage.tile; -import com.raoulvdberge.refinedstorage.api.solderer.ISoldererRecipe; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeSolderer; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.nbt.NBTTagCompound; @@ -15,11 +14,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; public class TileSolderer extends TileNode { - public static final TileDataParameter DURATION = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> { - ISoldererRecipe recipe = t.getNode().getRecipe(); - - return recipe == null ? 0 : recipe.getDuration(); - }); + public static final TileDataParameter DURATION = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getDuration()); public static final TileDataParameter PROGRESS = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getProgress()); public static final TileDataParameter WORKING = new TileDataParameter<>(DataSerializers.BOOLEAN, false, t -> t.getNode().isWorking());