diff --git a/dependencies.gradle b/dependencies.gradle index 1ab84a8d..e3fbf70c 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -55,7 +55,7 @@ dependencies { implementation "info.loenwind.autoconfig:AutoConfig:${project.minecraft.version}-1.0.2" implementation "info.loenwind.autosave:AutoSave:${project.minecraft.version}-1.0.11" - //compile "curse.maven:spiceoflife-220811:2571951" + implementation rfg.deobf("curse.maven:spiceoflife-220811:2571951") implementation files("libs/AppleSkin-mc1.12-1.0.9.jar") diff --git a/src/main/java/gregtechfoodoption/gui/widgets/KitchenRecipeWidget.java b/src/main/java/gregtechfoodoption/gui/widgets/KitchenRecipeWidget.java index fa6243ae..3fec4506 100644 --- a/src/main/java/gregtechfoodoption/gui/widgets/KitchenRecipeWidget.java +++ b/src/main/java/gregtechfoodoption/gui/widgets/KitchenRecipeWidget.java @@ -55,11 +55,13 @@ public class KitchenRecipeWidget extends AbstractWidgetGroup implements IRecipeT private Function loadingFunction; private Consumer savingFunction; + private Consumer deletingFunction; private int recipeCount; private int recipeShown; private PhantomRecipeWidget recipeWidget; private ClickButtonWidget leftArrowWidget; private ClickButtonWidget rightArrowWidget; + private ClickButtonWidget deleteButtonWidget; private SimpleTextWidget recipeCountLabel; private SlotWidget finalResultSlot; private ItemStackHandler finalResult = new ItemStackHandler(1) { @@ -85,7 +87,12 @@ public int getSlotLimit(int slot) { private List neededInputs = new ArrayList<>(); private List neededFluidInputs = new ArrayList<>(); - public KitchenRecipeWidget(int x, int y, int width, int height, int recipeCount, Consumer savingFunction, Function loadingFunction, Consumer resultItemConsumer, ItemStack finalResultStack) { + public KitchenRecipeWidget(int x, int y, int width, int height, int recipeCount, + Consumer savingFunction, + Function loadingFunction, + Consumer resultItemConsumer, + Consumer deletingFunction, + ItemStack finalResultStack) { super(new Position(x, y), new Size(width, height)); if (finalResultStack != null) { finalResult.setStackInSlot(0, finalResultStack); @@ -123,7 +130,11 @@ public List> getPhantomTargets(Object ingredie addWidget(rightArrowWidget); recipeCountLabel = new SimpleTextWidget(x + width / 2, y + 120, "", 0x666666, () -> "Recipe: " + (getRecipeShown() + 1) + "/" + getRecipeCount(), true); addWidget(recipeCountLabel); - + deleteButtonWidget = new ClickButtonWidget(x + width - 50, y + 120, 9, 9, "", (data) -> { + deletingFunction.accept(getRecipeShown()); + this.recipeWidget.deserializeNBT(loadingFunction.apply(getRecipeShown())); + }).setButtonTexture(GuiTextures.BUTTON_CLEAR_GRID).setShouldClientCallback(true); + addWidget(deleteButtonWidget); getNeededInputs(); getNeededFluidInputs(); } diff --git a/src/main/java/gregtechfoodoption/item/GTFOKitchenRecipeBehaviour.java b/src/main/java/gregtechfoodoption/item/GTFOKitchenRecipeBehaviour.java index 70b1fa73..6503b238 100644 --- a/src/main/java/gregtechfoodoption/item/GTFOKitchenRecipeBehaviour.java +++ b/src/main/java/gregtechfoodoption/item/GTFOKitchenRecipeBehaviour.java @@ -26,7 +26,9 @@ public ModularUI createUI(PlayerInventoryHolder playerInventoryHolder, EntityPla getRecipeCount(stack), (tag) -> addRecipe(stack, tag), (index) -> getRecipe(stack, index), - (finalResult) -> setFinalResult(stack, finalResult), getFinalResult(stack))); + (finalResult) -> setFinalResult(stack, finalResult), + (index) -> deleteRecipe(stack, index), + getFinalResult(stack))); builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 30, 155); return builder.build(playerInventoryHolder, entityPlayer); } @@ -53,6 +55,24 @@ private static NBTTagCompound getRecipe(ItemStack stack, int index) { return stack.getTagCompound().getCompoundTag("recipe" + index); } + private static void deleteRecipe(ItemStack stack, int location) { + if (!GTFOMetaItem.KITCHEN_RECIPE.isItemEqual(stack)) + return; + NBTTagCompound tag = stack.getTagCompound(); + if (stack.getTagCompound() == null) + return; + int count = tag.getInteger("recipecount"); + if (location >= count) + return; + tag.removeTag("recipe" + location); + for (int i = location; i < count - 1; i++) { + tag.setTag("recipe" + i, tag.getCompoundTag("recipe" + (i + 1))); + } + tag.setInteger("recipecount", count - 1); + + stack.setTagCompound(tag); + } + private static int getRecipeCount(ItemStack stack) { if (!GTFOMetaItem.KITCHEN_RECIPE.isItemEqual(stack)) return 0;