diff --git a/changelog b/changelog index 3e4a0766f..8d99f96de 100644 --- a/changelog +++ b/changelog @@ -21,11 +21,14 @@ * Microwaves are no longer electric furnace copies, instead their recipes are restricted to things considered food * Electric furnaces now cause minor pollution (does not connect to smoke stacks!) * Increased the arc furnace's liquid buffer to 128 blocks (from 24) -* The arc furnace can now accept up to *16* items per slot (effective amount is lower depending on the output in order to prevent >64 stacks) - * Due to technical limitations, clicking into a slot once will only place a single item, however after the item is present, the slot's capacity extends to 16 - * This is especially apparent when clicking items into slots by hand, and still noticeable when shift clicking by how the items spred out +* The arc furnace can now accepts more items depending on the speed upgrade, extending all the way to 16 with speed 3 (effective cap might be lower to prevent outputs from exceeding 64 items) + * Due to technical limitations, clicking into a slot once will only place a single item, however after the item is present, the slot's capacity extends to the upgraded size + * This is especially apparent when clicking items into slots by hand, and still noticeable when shift clicking by how the items spread out * This does not affect automation at all, items will stack up nicely without spreading out unnecessarily * Reduced arc furnace pollution from 15 to 10 soot per cycle +* The way soot spreads has been changed + * The spreading threshold has been decreased from 15 to 10 + * Every update, soot will decrease by regardless of whether it can spread or not (instead of only if it cannot spread) ## Fixed * Fixed dupe regarding conveyor grabbers diff --git a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java index b4904425f..5627d1109 100644 --- a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java +++ b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java @@ -207,13 +207,12 @@ public class PollutionHandler { int P = PollutionType.POISON.ordinal(); /* CALCULATION */ - if(data.pollution[S] > 15) { + if(data.pollution[S] > 10) { pollutionForNeightbors[S] = (float) (data.pollution[S] * 0.05F); data.pollution[S] *= 0.8F; - } else { - data.pollution[S] *= 0.99F; } + data.pollution[S] *= 0.99F; data.pollution[H] *= 0.9995F; if(data.pollution[P] > 10) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java index 07f7b931b..942f3cfcb 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java @@ -96,14 +96,15 @@ public class ContainerMachineArcFurnaceLarge extends Container { if(furnace.liquidMode) return true; ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, furnace.liquidMode); if(recipe != null && recipe.solidOutput != null) { - return recipe.solidOutput.stackSize * stack.stackSize <= recipe.solidOutput.getMaxStackSize() && stack.stackSize <= TileEntityMachineArcFurnaceLarge.MAX_INPUT_STACK_SIZE; + return recipe.solidOutput.stackSize * stack.stackSize <= recipe.solidOutput.getMaxStackSize() && stack.stackSize <= furnace.getMaxInputSize(); } return false; } @Override public int getSlotStackLimit() { - return this.getHasStack() ? TileEntityMachineArcFurnaceLarge.MAX_INPUT_STACK_SIZE : 1; + TileEntityMachineArcFurnaceLarge furnace = (TileEntityMachineArcFurnaceLarge) this.inventory; + return this.getHasStack() ? furnace.getMaxInputSize() : 1; } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index f9b66932d..4417371b0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -56,6 +56,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public boolean isProgressing; public boolean hasMaterial; public int delay; + public int upgrade; public float lid; public float prevLid; @@ -71,7 +72,9 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl public static final byte ELECTRODE_USED = 2; public static final byte ELECTRODE_DEPLETED = 3; - public static final int MAX_INPUT_STACK_SIZE = 16; + public int getMaxInputSize() { + return upgrade == 0 ? 1 : upgrade == 1 ? 4 : upgrade == 2 ? 8 : 16; + } public static final int maxLiquid = MaterialShapes.BLOCK.q(128); public List liquids = new ArrayList(); @@ -97,6 +100,9 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl @Override public void updateEntity() { + UpgradeManager.eval(slots, 4, 4); + this.upgrade = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + if(!worldObj.isRemote) { this.power = Library.chargeTEFromItems(slots, 3, power, maxPower); @@ -109,8 +115,6 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl boolean ingredients = this.hasIngredients(); boolean electrodes = this.hasElectrodes(); - UpgradeManager.eval(slots, 4, 4); - int upgrade = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); int consumption = (int) (1_000 * Math.pow(5, upgrade)); if(ingredients && electrodes && delay <= 0 && this.liquids.isEmpty()) { @@ -345,7 +349,7 @@ public class TileEntityMachineArcFurnaceLarge extends TileEntityMachineBase impl if(recipe.solidOutput == null) return false; int sta = slots[slot] != null ? slots[slot].stackSize : 0; sta += stack.stackSize; - return sta * recipe.solidOutput.stackSize <= recipe.solidOutput.getMaxStackSize() && sta <= MAX_INPUT_STACK_SIZE; + return sta * recipe.solidOutput.stackSize <= recipe.solidOutput.getMaxStackSize() && sta <= getMaxInputSize(); } } return false;