From 285ef0cb08be64e93b8f43e3fb5ef040f5c69350 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 16 May 2024 16:04:20 -0700 Subject: [PATCH 1/7] allow crafting recipes without pedestal items --- .../com/blakebr0/extendedcrafting/tile/TileCraftingCore.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java b/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java index 2714e129..ad5e9d02 100644 --- a/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java +++ b/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java @@ -166,6 +166,8 @@ public CombinationRecipe getRecipe(List locations) { if (!recipes.isEmpty()) { for (CombinationRecipe recipe : recipes) { + if (recipe.getPedestalIngredients().isEmpty()) + return recipe; List pedestals = this.getPedestalsWithStuff(recipe, locations); if (!pedestals.isEmpty()) return recipe; From 106052385d63ff2edbd965371e3301acd367e360 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 16 May 2024 16:06:07 -0700 Subject: [PATCH 2/7] progress needs to be a long --- .../extendedcrafting/client/gui/GuiCraftingCore.java | 4 ++-- .../blakebr0/extendedcrafting/tile/TileCraftingCore.java | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/blakebr0/extendedcrafting/client/gui/GuiCraftingCore.java b/src/main/java/com/blakebr0/extendedcrafting/client/gui/GuiCraftingCore.java index 177abc26..35d8014c 100644 --- a/src/main/java/com/blakebr0/extendedcrafting/client/gui/GuiCraftingCore.java +++ b/src/main/java/com/blakebr0/extendedcrafting/client/gui/GuiCraftingCore.java @@ -35,10 +35,10 @@ private int getEnergyBarScaled(int pixels) { } private int getProgressBarScaled(int pixels) { - int i = this.tile.getProgress(); + long i = this.tile.getProgress(); CombinationRecipe recipe = this.tile.getRecipe(); long j = recipe == null ? 0 : recipe.getCost(); - return (int) (j != 0 && i != 0 ? (long) i * pixels / j : 0); + return (int) (j != 0 && i != 0 ? i * pixels / j : 0); } @Override diff --git a/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java b/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java index ad5e9d02..3a6bc3e2 100644 --- a/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java +++ b/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java @@ -39,7 +39,7 @@ public class TileCraftingCore extends TileEntity implements ITickable, IGTEnergy private final ItemStackHandler inventory = new StackHandler(); private final EnergyStorageCustom energy = new EnergyStorageCustom(ModConfig.confCraftingCoreRFCapacity); - private int progress; + private long progress; private int oldEnergy; private int pedestalCount; @@ -177,7 +177,7 @@ public CombinationRecipe getRecipe(List locations) { return null; } - public int getProgress() { + public long getProgress() { return this.progress; } @@ -198,7 +198,8 @@ public int getPedestalCount() { public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); this.inventory.deserializeNBT(tag); - this.progress = tag.getInteger("Progress"); + this.progress = tag.getLong("Progress"); + if (progress == 0L && tag.hasKey("Progress", 3)) this.progress = tag.getInteger("Progress"); this.energy.setEnergy(tag.getInteger("Energy")); } @@ -206,7 +207,7 @@ public void readFromNBT(NBTTagCompound tag) { public NBTTagCompound writeToNBT(NBTTagCompound tag) { tag = super.writeToNBT(tag); tag.merge(this.inventory.serializeNBT()); - tag.setInteger("Progress", this.progress); + tag.setLong("Progress", this.progress); tag.setInteger("Energy", this.energy.getEnergyStored()); return tag; From 9323955666f7a5905d9eeb2d042355ee0baf0b41 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 16 May 2024 16:12:08 -0700 Subject: [PATCH 3/7] add center item to combination tooltip --- .../combinationcrafting/CombinationCraftingWrapper.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java b/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java index 7f60c9db..77a37386 100644 --- a/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java +++ b/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java @@ -47,6 +47,13 @@ public List getTooltipStrings(int mouseX, int mouseY) { ArrayList tooltip = new ArrayList<>(); tooltip.add(Utils.localize("tooltip.ec.items_required")); Object2IntLinkedOpenHashMap tooltipCount = new Object2IntLinkedOpenHashMap<>(); + + ItemStack[] coreStacks = recipe.getInputIngredient().getMatchingStacks(); + if(coreStacks.length != 0) { + String line = coreStacks[timer.getValue() % coreStacks.length].getDisplayName(); + tooltipCount.put(line, tooltipCount.getInt(line) + 1); + } + for (Ingredient ing : recipe.getPedestalIngredients()) { ItemStack[] stacks = ing.getMatchingStacks(); if(stacks.length == 0) continue; From 69ca1da5167da307a3bce88b13475e719d94ee46 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 16 May 2024 16:24:05 -0700 Subject: [PATCH 4/7] clamp period to a minimum of 1 --- .../jei/combinationcrafting/CombinationCraftingWrapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java b/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java index 77a37386..3d322e9e 100644 --- a/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java +++ b/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java @@ -28,11 +28,11 @@ public class CombinationCraftingWrapper implements IRecipeWrapper { public CombinationCraftingWrapper(IJeiHelpers helpers, CombinationRecipe recipe) { this.helpers = helpers; this.recipe = recipe; - int period = recipe.getPedestalIngredients() + int period = Math.max(1, recipe.getPedestalIngredients() .stream() .map(Ingredient::getMatchingStacks) .map(a -> a.length) - .reduce(1, (a, b) -> a * b); + .reduce(1, (a, b) -> a * b)); timer = helpers.getGuiHelper() .createTickTimer(period * 20, period, false); } From 41d665ce0c814fcb754382de93ea39c6c76f2ab8 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Thu, 16 May 2024 16:31:47 -0700 Subject: [PATCH 5/7] remove unneeded progress nbt migration code --- .../com/blakebr0/extendedcrafting/tile/TileCraftingCore.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java b/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java index 3a6bc3e2..426d57a4 100644 --- a/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java +++ b/src/main/java/com/blakebr0/extendedcrafting/tile/TileCraftingCore.java @@ -199,7 +199,6 @@ public void readFromNBT(NBTTagCompound tag) { super.readFromNBT(tag); this.inventory.deserializeNBT(tag); this.progress = tag.getLong("Progress"); - if (progress == 0L && tag.hasKey("Progress", 3)) this.progress = tag.getInteger("Progress"); this.energy.setEnergy(tag.getInteger("Energy")); } From 08da7c0944601fa252fffe7878f529b371318984 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:07:53 -0700 Subject: [PATCH 6/7] consider main input and clamp inside stream --- .../combinationcrafting/CombinationCraftingWrapper.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java b/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java index 3d322e9e..ffa43c58 100644 --- a/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java +++ b/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java @@ -17,6 +17,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.stream.Stream; @MethodsReturnNonnullByDefault public class CombinationCraftingWrapper implements IRecipeWrapper { @@ -28,11 +29,11 @@ public class CombinationCraftingWrapper implements IRecipeWrapper { public CombinationCraftingWrapper(IJeiHelpers helpers, CombinationRecipe recipe) { this.helpers = helpers; this.recipe = recipe; - int period = Math.max(1, recipe.getPedestalIngredients() - .stream() + int period = Stream.concat(Stream.of(recipe.getInputIngredient()), recipe.getPedestalIngredients().stream()) .map(Ingredient::getMatchingStacks) - .map(a -> a.length) - .reduce(1, (a, b) -> a * b)); + .mapToInt(a -> a.length) + .map(a -> Math.max(1, a)) + .reduce(1, (a, b) -> a * b); timer = helpers.getGuiHelper() .createTickTimer(period * 20, period, false); } From 1ad4874210f7b84c9c09a3a8d87e8d3a0b6b3ac4 Mon Sep 17 00:00:00 2001 From: Waiting Idly <25394029+WaitingIdly@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:05:34 -0700 Subject: [PATCH 7/7] convert to for-loop instead of stream --- .../CombinationCraftingWrapper.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java b/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java index ffa43c58..7439aff4 100644 --- a/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java +++ b/src/main/java/com/blakebr0/extendedcrafting/compat/jei/combinationcrafting/CombinationCraftingWrapper.java @@ -17,7 +17,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import java.util.stream.Stream; @MethodsReturnNonnullByDefault public class CombinationCraftingWrapper implements IRecipeWrapper { @@ -29,11 +28,14 @@ public class CombinationCraftingWrapper implements IRecipeWrapper { public CombinationCraftingWrapper(IJeiHelpers helpers, CombinationRecipe recipe) { this.helpers = helpers; this.recipe = recipe; - int period = Stream.concat(Stream.of(recipe.getInputIngredient()), recipe.getPedestalIngredients().stream()) - .map(Ingredient::getMatchingStacks) - .mapToInt(a -> a.length) - .map(a -> Math.max(1, a)) - .reduce(1, (a, b) -> a * b); + + int period = Math.max(1, recipe.getInputIngredient().getMatchingStacks().length); + for (Ingredient ingredient : recipe.getPedestalIngredients()) { + int length = ingredient.getMatchingStacks().length; + if (length > 0) { + period *= length; + } + } timer = helpers.getGuiHelper() .createTickTimer(period * 20, period, false); }