From dda1ae8ab14f309b37a3d7e5d634f41670fd2c73 Mon Sep 17 00:00:00 2001 From: Marcel Sondaar Date: Sun, 3 Aug 2025 13:19:53 +0200 Subject: [PATCH 01/13] fix: Make mana fountains actually consume the mana instead of just checking they have enough --- .../tileentity/SimpleAutomationTileEntity.java | 4 +++- .../tileentity/TileAdvancedAlchemyPool.java | 6 ++++-- .../addons/tileentity/TileAdvancedAlfPortal.java | 5 +++++ .../tileentity/TileAdvancedConjurationPool.java | 7 ++++--- .../tileentity/TileAdvancedCraftingPool.java | 7 ++++--- .../addons/tileentity/TileAdvancedManaPool.java | 15 ++++++++++++--- 6 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/SimpleAutomationTileEntity.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/SimpleAutomationTileEntity.java index beb8b3c..66c32ad 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/SimpleAutomationTileEntity.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/SimpleAutomationTileEntity.java @@ -1,6 +1,5 @@ package net.fuzzycraft.botanichorizons.addons.tileentity; -import cpw.mods.fml.common.FMLLog; import net.fuzzycraft.botanichorizons.util.InventoryHelper; import net.fuzzycraft.botanichorizons.util.multiblock.MultiblockHelper; import net.minecraft.entity.item.EntityItem; @@ -42,6 +41,8 @@ public SimpleAutomationTileEntity(MultiblockHelper structure) { // Business logic + abstract void consumeNonItemResources(R recipe, int parallel); + // process recipes public void handleCrafts() { int parallel = 64; @@ -88,6 +89,7 @@ public void handleCrafts() { // perform recipe in batch ItemStack output = output_instance.copy(); output.stackSize = output.stackSize * parallel; + consumeNonItemResources(recipe, parallel); // commit to inventory inventoryHandler.setInventorySlotContents(INPUT_SIZE + OUTPUT_SIZE - 1, output); diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlchemyPool.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlchemyPool.java index eb4750b..d15e809 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlchemyPool.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlchemyPool.java @@ -17,8 +17,10 @@ public class TileAdvancedAlchemyPool extends TileAdvancedManaPool { + public static final int MANA_CAPACITY = 50000; + public TileAdvancedAlchemyPool() { - super(Multiblocks.poolAlchemy); + super(Multiblocks.poolAlchemy, MANA_CAPACITY); } @Override @@ -42,6 +44,6 @@ public ItemStack getWrenchDrop(EntityPlayer entityPlayer) { public void renderHUD(Minecraft mc, ScaledResolution res) { ChargeState state = ChargeState.genState(isOnline, storedMana, ACTIVATE_MANA); String tooltip = state.getLocalisedHudString(BHBlocks.autoPoolAlchemy); - HUDHandler.drawSimpleManaHUD(state.color, storedMana, MANA_CAPACITY, tooltip, res); + HUDHandler.drawSimpleManaHUD(state.color, storedMana, manaCapacity, tooltip, res); } } diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlfPortal.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlfPortal.java index 79a8b3a..98fedf7 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlfPortal.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlfPortal.java @@ -113,6 +113,11 @@ public RecipeElvenTrade findMatchingRecipe(@Nonnull ItemStack stack) { return null; } + @Override + void consumeNonItemResources(RecipeElvenTrade recipe, int parallel) { + storedMana = storedMana - parallel * RECIPE_MANA; + } + // Botania has an annoying habit of specifying multiple ingredients as ["oreDict", "oreDict", "oreDict"] // Reduce these cases into a simple number // diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedConjurationPool.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedConjurationPool.java index 7ac2533..559c199 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedConjurationPool.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedConjurationPool.java @@ -10,7 +10,6 @@ import net.minecraft.client.gui.ScaledResolution; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.recipe.RecipeManaInfusion; @@ -18,8 +17,10 @@ public class TileAdvancedConjurationPool extends TileAdvancedManaPool { + public static final int MANA_CAPACITY = 1000000; + public TileAdvancedConjurationPool() { - super(Multiblocks.poolConjuration); + super(Multiblocks.poolConjuration, MANA_CAPACITY); } @Override @@ -43,6 +44,6 @@ public ItemStack getWrenchDrop(EntityPlayer entityPlayer) { public void renderHUD(Minecraft mc, ScaledResolution res) { ChargeState state = ChargeState.genState(isOnline, storedMana, ACTIVATE_MANA); String tooltip = state.getLocalisedHudString(BHBlocks.autoPoolConjuration); - HUDHandler.drawSimpleManaHUD(state.color, storedMana, MANA_CAPACITY, tooltip, res); + HUDHandler.drawSimpleManaHUD(state.color, storedMana, manaCapacity, tooltip, res); } } diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedCraftingPool.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedCraftingPool.java index dc7d0df..13a8a89 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedCraftingPool.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedCraftingPool.java @@ -1,6 +1,5 @@ package net.fuzzycraft.botanichorizons.addons.tileentity; -import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.fuzzycraft.botanichorizons.addons.BHBlocks; @@ -18,8 +17,10 @@ public class TileAdvancedCraftingPool extends TileAdvancedManaPool { + public static final int MANA_CAPACITY = 50000; + public TileAdvancedCraftingPool() { - super(Multiblocks.poolInfusion); + super(Multiblocks.poolInfusion, MANA_CAPACITY); } @Override @@ -45,6 +46,6 @@ public ItemStack getWrenchDrop(EntityPlayer entityPlayer) { public void renderHUD(Minecraft mc, ScaledResolution res) { ChargeState state = ChargeState.genState(isOnline, storedMana, ACTIVATE_MANA); String tooltip = state.getLocalisedHudString(BHBlocks.autoPoolInfusion); - HUDHandler.drawSimpleManaHUD(state.color, storedMana, MANA_CAPACITY, tooltip, res); + HUDHandler.drawSimpleManaHUD(state.color, storedMana, manaCapacity, tooltip, res); } } diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java index 77aa0d3..a210d9f 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java @@ -1,5 +1,6 @@ package net.fuzzycraft.botanichorizons.addons.tileentity; +import cpw.mods.fml.common.FMLLog; import net.fuzzycraft.botanichorizons.util.Facing2D; import net.fuzzycraft.botanichorizons.util.multiblock.MultiblockHelper; import net.minecraft.entity.player.EntityPlayer; @@ -13,7 +14,7 @@ public abstract class TileAdvancedManaPool extends SimpleAutomationTileEntity { // Balance - public static final int MANA_CAPACITY = 50000; + public final int manaCapacity; public static final int CYCLE_TICKS = 20; // time between checks public static final int MAX_PARALLELS = 64; public static final int ACTIVATE_MANA = 1000; @@ -22,8 +23,9 @@ public abstract class TileAdvancedManaPool extends SimpleAutomationTileEntity Date: Sun, 3 Aug 2025 13:25:45 +0200 Subject: [PATCH 02/13] chore: Remove debugging statements --- .../botanichorizons/addons/tileentity/TileAdvancedManaPool.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java index a210d9f..e71549a 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java @@ -1,6 +1,5 @@ package net.fuzzycraft.botanichorizons.addons.tileentity; -import cpw.mods.fml.common.FMLLog; import net.fuzzycraft.botanichorizons.util.Facing2D; import net.fuzzycraft.botanichorizons.util.multiblock.MultiblockHelper; import net.minecraft.entity.player.EntityPlayer; @@ -69,7 +68,6 @@ public int getAvailableParallels(@NotNull RecipeManaInfusion recipe) { void consumeNonItemResources(RecipeManaInfusion recipe, int parallel) { int currentMana = storedMana; storedMana = storedMana - parallel * recipe.getManaToConsume(); - FMLLog.info("Mana: %d - %d * %d = %d", currentMana, parallel, recipe.getManaToConsume(), storedMana); } @Override From 5e60295b8012d78bfe56f792729f824f5ca44cdd Mon Sep 17 00:00:00 2001 From: combusterf Date: Mon, 4 Aug 2025 21:54:32 +0200 Subject: [PATCH 03/13] Apply suggestions from code review Co-authored-by: koolkrafter5 --- .../addons/tileentity/TileAdvancedAlfPortal.java | 2 +- .../addons/tileentity/TileAdvancedManaPool.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlfPortal.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlfPortal.java index 98fedf7..a13554e 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlfPortal.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedAlfPortal.java @@ -115,7 +115,7 @@ public RecipeElvenTrade findMatchingRecipe(@Nonnull ItemStack stack) { @Override void consumeNonItemResources(RecipeElvenTrade recipe, int parallel) { - storedMana = storedMana - parallel * RECIPE_MANA; + storedMana -= parallel * RECIPE_MANA; } // Botania has an annoying habit of specifying multiple ingredients as ["oreDict", "oreDict", "oreDict"] diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java index e71549a..39eb31c 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java @@ -66,8 +66,7 @@ public int getAvailableParallels(@NotNull RecipeManaInfusion recipe) { @Override void consumeNonItemResources(RecipeManaInfusion recipe, int parallel) { - int currentMana = storedMana; - storedMana = storedMana - parallel * recipe.getManaToConsume(); + storedMana -= parallel * recipe.getManaToConsume(); } @Override From f69ad0cf30a39ba25b29130bdbd4964d6be7b7aa Mon Sep 17 00:00:00 2001 From: Marcel Sondaar Date: Tue, 5 Aug 2025 20:42:10 +0200 Subject: [PATCH 04/13] feature: Use the central mana pool as an external mana storage --- .../tileentity/TileAdvancedManaPool.java | 49 ++++++++++++++++++- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java index 39eb31c..ab1640d 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/addons/tileentity/TileAdvancedManaPool.java @@ -1,11 +1,15 @@ package net.fuzzycraft.botanichorizons.addons.tileentity; +import cpw.mods.fml.common.FMLLog; import net.fuzzycraft.botanichorizons.util.Facing2D; import net.fuzzycraft.botanichorizons.util.multiblock.MultiblockHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import vazkii.botania.api.recipe.RecipeManaInfusion; +import vazkii.botania.common.block.tile.mana.TilePool; import static net.fuzzycraft.botanichorizons.util.Constants.MC_BLOCK_SEND_TO_CLIENT; import static net.fuzzycraft.botanichorizons.util.Constants.MC_BLOCK_UPDATE; @@ -54,10 +58,17 @@ protected void updateEntityCrafting() { @Override public int getAvailableParallels(@NotNull RecipeManaInfusion recipe) { int parallel = MAX_PARALLELS; - int recipeManaCost = recipe.getManaToConsume(); + + if (parallel * recipeManaCost < storedMana) { + return parallel; + } + + int externalMana = getExternalMana(); + int totalReservoir = storedMana + externalMana; + if (recipeManaCost > 0) { - int manaParallel = storedMana / recipeManaCost; + int manaParallel = totalReservoir / recipeManaCost; parallel = Math.min(parallel, manaParallel); } @@ -67,8 +78,42 @@ public int getAvailableParallels(@NotNull RecipeManaInfusion recipe) { @Override void consumeNonItemResources(RecipeManaInfusion recipe, int parallel) { storedMana -= parallel * recipe.getManaToConsume(); + + if (storedMana < 0) { + int deficit = -storedMana; + TilePool pool = getExternalPool(); + if (pool != null && pool.getCurrentMana() >= deficit) { + pool.recieveMana(-deficit); + storedMana = 0; + } else { + FMLLog.bigWarning("Exploit: External mana is no longer available"); + isOnline = false; + worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, facing.index << 1, MC_BLOCK_UPDATE + MC_BLOCK_SEND_TO_CLIENT); + } + } } + @Nullable + private TilePool getExternalPool() { + int poolX = xCoord - 4 * facing.dx; + int poolZ = zCoord - 4 * facing.dz; + int poolY = yCoord + 1; + TileEntity rawPoolTE = worldObj.getTileEntity(poolX, poolY, poolZ); + if (rawPoolTE instanceof TilePool pool) { + return pool; + } else { + FMLLog.warning("Not a pool at %d %d %d", poolX, poolY, poolZ); + return null; + } + } + + private int getExternalMana() { + TilePool pool = getExternalPool(); + return (pool != null) ? pool.getCurrentMana() : 0; + } + + // IInventory + @Override public int getRecipeInputStackSize(@NotNull RecipeManaInfusion recipe) { return 1; From c488d002ca3bf8539e8b3c03a0f0fcc27bb7092f Mon Sep 17 00:00:00 2001 From: Marcel Sondaar Date: Tue, 30 Sep 2025 09:58:12 +0200 Subject: [PATCH 05/13] change: New assets to differentiate BH wrenches from GT wrenches --- contrib/wrench.xcf | Bin 4500 -> 5998 bytes .../textures/items/elvenDisassemblyWrench.png | Bin 728 -> 741 bytes .../textures/items/elvenWrench.png | Bin 655 -> 693 bytes .../textures/items/manasteelSuperWrench.png | Bin 724 -> 739 bytes .../textures/items/manasteelWrench.png | Bin 657 -> 694 bytes .../items/terrasteelDisassemblyWrench.png | Bin 715 -> 720 bytes .../textures/items/terrasteelWrench.png | Bin 652 -> 686 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/contrib/wrench.xcf b/contrib/wrench.xcf index 7129862d491ed49a5562e0734dc5966276c4b362..44c9386f447d757c3d7175a7d06dc25292cb6cfe 100644 GIT binary patch literal 5998 zcmeHLO=ufO6rNpawem`;V#hW*l(K13a25KljxSRyU=O7}$7zIQDR{-MyO?G2| zKLDvBTu0nX9|Grn_WcE;mc|{J9GkNpr$8Emv|ycd}S7FOiI_Z%j0r z8_TZUs4bV5&RP?NV!pOqtJ@PEnyeQuoID-;@T)AsBY+9&&sY0k>fZu(3#?c-R@$L6;_9-`1;SQmVp zyzb-F10N56YP zX<5!*c8X<^j+R+-4(Gbmb6pZMzU$J>^%-(qTA!bR>zTv4-tM{H7Ms57?YldhOdOjr98?E9%s9pF-{O;g6m8J2yP6}rYF<5#*kmIiIH7aq;+nx`#k&M ze41NqFFSuSjrWo+AeP6>^;U1zTVlbV_14dK7HHO6clZKky-;9-`Bk7u$M#*>vmm9NqG`IFij#^?`%N(V)pb9PwKZ>0S(iIL3bp(LogdQ_2y$ zw*cP(SV$aGejF>gYHrax5*;>>^irO7Lp^99BQgj+w$uhIlPL(KMTstl)Pc9&kisC4 z*MWZt38eAnYJVoahZ|1;qO;luuK_=gClWfzC?oN7KkC^ zONBKSw2q~syI3k0OUr;J8OdsW2eg-LGhh7n8R+AXY?Sn}ee8oi0~kF1l3ccrAdw*P zM(Qg`0n1q?{^L1;qyibmU^LL0@L)a~p2`U->bSm67mqT5T!=(M(h3 z$RTy$)2~Zm6m>{vpg4QLyEyJeaE99@ig!9F%)7kX<-CJ~Am^TGcb|8nI0tHcw@W6_ z(V@@iPzgu4-iZM3@=o`58`>DV2a@yKZQjOB@J2VZiI4hR7aaaQ4$8L28MqA&h;GA2 zgzph!fiSQ^{6FER8{rJoy-%qGa1wy@zz!A@CNr^%SpX9|pb4IIx`IvE83OM~cpo4# z;k6b0gn`=pY*D?SG@aMEB~Ep>|Ba zG&<)5eePrLI#2{-w?cFf ujr}O)PnL#3E%c+o$_UB@pZa|K3Dds+L64}!qki6jQd_3D#PsvpIQt8L2;n3E delta 731 zcmah{O=uHA6yBNLWPh`pC5a6=$cmy6Xo=EbyGSio2*r5OAUzbMmPksq6cN8u#e?1|;>CkyZGCSif!_S!?YHy3Z{~di^K+nic=Ze$ zem-`9jX#z`$bSV##{{dZg0;_rjYER1Wx=rzf_vZi1~4O$VYs#nay+zl^3-U zAy#UIk(LST^4Y$i^Lx84x}EKpb=p#|W-r06+z&_ep>Wim;&5dbgJpOmL-{NW5;;MU z5Wu1*VJo7i0{>3I;SE*VY50YN(=a9GRR61v_62L-H%nsQ+Ge9f`$|=bB6zSI&BLgD z6JF~%xU9xmF-)OWC`AN^tGC+^)dXYBu&+Jq^|d$fLz{pvZW<=_2VCC@b^Q$p~wE!^Eg`jV`_s9qdnd&=VJLpr-Xxag(mYHp2^x+u8ahldwn9(V5mu3lC&t0M+zx^1QsaUqjk6+*A*#xQt{V1HIpEMra-lkgp1_Xx1{ zF3Pg}&;2=i)tsdO0f9KC7^Y3UK|H-_8;tjfd8H_+#OK80CS8#Dk?FF>Z;T5rb1aiL z)2Vr4o>(ZfvE0T=(bR~ih$E_|Q$CmRSY^D$SSweR<~`X9!#RCrndvl#kia6AAVPqQ zDoQBBMwC{a6n_gT+K>DA2VK8NE}2{lN54hX`2A&Mblw2uDlgsCU z_cQvYEYN=o^sITkHTQA)0Hmp_VT}th}{d=a_-wzTAa^_61HG2R6 z00v@9M??Sx0A~P%mhP^T00009a7bBm001r{001r{0eGc9b^rhX2XskIMF;5#9tSWj z-=E$zlj;E|f4xaWK~y-)V_={K=o4xE-zU=g9~U1PFk#aiEaZ=&Fj&Z+0h=LAl)9D$ zmju)m|6%N#KW<}H$A~KokiBv9$8Cly->xwfy{Tp-$^e)lYt+OU7#J8BLT ztWgtZ2oCmO;N>-9X#9O1XBglO#9g~yF`PMb0B<1TQ#2st)=P#HC)ybP{5i%@&uWO% z0O|)KvgWn#HZmYbBQ`^Drh~QbHX zP@U|eQXFd)iclfc3avVrT>1q~8j=(jN5Qq=;KyRs!Nplu2UkH5`~YzmoD^N8#Q!CQ z7O@^2_v78Y$K5+XXjGVH^~3>9x6O1iA!c){V&E117)A&|#D8RF8FP}9Lf7$i46N%%@Fm2)u;@GBbaNZ{lvy!Y5pA%1-bV1@rt}7nDaW1+n@XWB8 zNzW69iN#_ED;>;ArbawN98oo$@`bF&D(5ZETBXKX_v9}O<@J?iuG1Vt5{p=Z1Q7~q zD5C-!QCf9UEPteFKhecM>iQ*eDdZ}Hkz)Z>Xpmh$_#gc4)+$U-c}bxJ(EH*zALBq^ z7iiWU=lj@knkRt&8MxBh{%Ql5{Up8K)*?s1;5Kk^-PV*n;Bp5Tc`{^Eb|pVep-=$c z&*+AdY5j5Z#u}MThR5;6HV4wxqE5GUgUinS`aq*D>6E@9yT-q24^|-Vduo=QcscTtq zNg&&($ED5i^7kvO>KJi_fgYDOgTMVF1_lNOhFNP;bZy3xt_Ko4f`BQi;!f8PB_RkDQFOE%OkobOrVd+Ct(gTr!fq~)j z>jVY{1_p*p3|AS*@&W?`1J2N=S~?hb14znLGywnsT0*+)Sxv|Q0000dwn9(V5mu3lC&t0M+zx^1QsaUqjk6+*A*#xQt{V1HIpEMra-lkgp1_Xx1{ zF3Pg}&;2=i)tsdO0f9KC7^Y3UK|H-_8;tjfd8H_+#OK80CS8#Dk?FF>Z;T5rb1aiL z)2Vr4o>(ZfvE0T=(bR~ih$E_|Q$CmRSY^D$SSweR<~`X9!#RCrndvl#kia6AAVPqQ zDoQBBMwC{a6n_gT+K>DA2VK8NE}2{lN54hX`2A&Mblw2uDlgsCU z_cQvYEYN=o^sITkHTQA)0Hmp_VT}th}{d=a_-wzTAa^_61HG2R6 z00v@9M??Sx0A~P%mhP^T00009a7bBm001r{001r{0eGc9b^rhX2XskIMF;5#9tSQf z;=M%Plj;E|0gaOr0#-{TDhzNrooazdu>lkZA|pP{Yu{~TK#oRihTu#GYu{}|R{URw pON%yPfZ+nDtr+o6azY{&005z%P5(h{v#9_8002ovPDHLkV1lGj=yCu6 delta 513 zcmV+c0{;EA1&;-gB!7cxLqkwWLqi~Na&Km7Y-IodD3N`UJxIeq9K~N#rCKTuRuFN> zP@U|eQXFd)iclfc3avVrT>1q~8j=(jN5Qq=;KyRs!Nplu2UkH5`~YzmoD^N8#Q!CQ z7O@^2_v78Y$K5+XXjGVH^~3>9x6O1iA!c){V&E117)A&|#D8RF8FP}9Lf7$i46N%%@Fm2)u;@GBbaNZ{lvy!Y5pA%1-bV1@rt}7nDaW1+n@XWB8 zNzW69iN#_ED;>;ArbawN98oo$@`bF&D(5ZETBXKX_v9}O<@J?iuG1Vt5{p=Z1Q7~q zD5C-!QCf9UEPteFKhecM>iQ*eDdZ}Hkz)Z>Xpmh$_#gc4)+$U-c}bxJ(EH*zALBq^ z7iiWU=lj@knkRt&8MxBh{%Ql5{Up8K)*?s1;5Kk^-PV*n;Bp5Tc`{^Eb|pVep-=$c z&*+AdY5j5YMXp*&fB!7fyLqkwWLqi~Na&Km7Y-IodD3N`UJxIeq9K~N#r79H%Gl(c= zs7`iK5y7Qap$HX1tdwn9(V5mu3lC&t0M+zx^1QsaUqjk6+*A*#xQt{V1HIpEMra-lkgp1_Xx1{ zF3Pg}&;2=i)tsdO0f9KC7^Y3UK|H-_8;tjfd8H_+#OK80CS8#Dk?FF>Z;T5rb1aiL z)2Vr4o>(ZfvE0T=(bR~ih$E_|Q$CmRSY^D$SSweR<~`X9!#RCrndvl#kia6AAVPqQ zDoQBBMwC{a6n_gT+K>DA2VK8NE}2{lN54hX`2A&Mblw2uDlgsCU z_cQvYEYN=o^sITkHTQA)0Hmp_VT}th}{d=a_-wzTAa^_61HG2R6 z00v@9M??Sx0A~P%mhP^T00009a7bBm001r{001r{0eGc9b^rhX2XskIMF;5#9tSTo z=*sQMlj;E|f4fOUK~y-)V_={KP>!wtuN+(d9~U1PFk#ayW#NONP|CuG0h=LAl)9D$ zmju)m|6%OU&+cGV$A~KokiGHw*&T+@k8UvBUEIh>lnbB=|BK(1g&3gx7^`NyVIY22 zmLWLUgMpXVh~dqqt2n~|Zy@g4^@`!lnFDwO5vKt!QI#JvoH)_O@aNAl1`$7PoCZ)F zh>Z9&KRdC70XZ768G1=IzQB!7cxLqkwWLqi~Na&Km7Y-IodD3N`UJxIeq9K~N#rCKTuRuFN> zP@U|eQXFd)iclfc3avVrT>1q~8j=(jN5Qq=;KyRs!Nplu2UkH5`~YzmoD^N8#Q!CQ z7O@^2_v78Y$K5+XXjGVH^~3>9x6O1iA!c){V&E117)A&|#D8RF8FP}9Lf7$i46N%%@Fm2)u;@GBbaNZ{lvy!Y5pA%1-bV1@rt}7nDaW1+n@XWB8 zNzW69iN#_ED;>;ArbawN98oo$@`bF&D(5ZETBXKX_v9}O<@J?iuG1Vt5{p=Z1Q7~q zD5C-!QCf9UEPteFKhecM>iQ*eDdZ}Hkz)Z>Xpmh$_#gc4)+$U-c}bxJ(EH*zALBq^ z7iiWU=lj@knkRt&8MxBh{%Ql5{Up8K)*?s1;5Kk^-PV*n;Bp5Tc`{^Eb|pVep-=$c z&*+AdY5j5Z#tw}^dR5;6HV4wvstX=iruy)mdTzq7}giSNQf)<8Ceg!QCY=$sV>RJ|D z63904D`+wN{O}s9I!0V!z^|ai@ar^0(|=V4h94hZGn{V@V<}duRsg~SM3`B0000dwn9(V5mu3lC&t0M+zx^1QsaUqjk6+*A*#xQt{V1HIpEMra-lkgp1_Xx1{ zF3Pg}&;2=i)tsdO0f9KC7^Y3UK|H-_8;tjfd8H_+#OK80CS8#Dk?FF>Z;T5rb1aiL z)2Vr4o>(ZfvE0T=(bR~ih$E_|Q$CmRSY^D$SSweR<~`X9!#RCrndvl#kia6AAVPqQ zDoQBBMwC{a6n_gT+K>DA2VK8NE}2{lN54hX`2A&Mblw2uDlgsCU z_cQvYEYN=o^sITkHTQA)0Hmp_VT}th}{d=a_-wzTAa^_61HG2R6 z00v@9M??Sx0A~P%mhP^T00009a7bBm001r{001r{0eGc9b^rhX2XskIMF;5#9tSQH z%D?!wtuN+(d9~U1PFk#ayW#NONP|CuGlQjY&UNGEU z+{j3j7w#@@WPEmF3&H>#nu!VnTu!H2AX01q#ev9(PctkaVbO@q5S;1Y*@-R4ivRP< qY0xGNSg@r5SPDdmPCRLWA^-qonoMj1QE-g_0000 zP@U|eQXFd)iclfc3avVrT>1q~8j=(jN5Qq=;KyRs!Nplu2UkH5`~YzmoD^N8#Q!CQ z7O@^2_v78Y$K5+XXjGVH^~3>9x6O1iA!c){V&E117)A&|#D8RF8FP}9Lf7$i46N%%@Fm2)u;@GBbaNZ{lvy!Y5pA%1-bV1@rt}7nDaW1+n@XWB8 zNzW69iN#_ED;>;ArbawN98oo$@`bF&D(5ZETBXKX_v9}O<@J?iuG1Vt5{p=Z1Q7~q zD5C-!QCf9UEPteFKhecM>iQ*eDdZ}Hkz)Z>Xpmh$_#gc4)+$U-c}bxJ(EH*zALBq^ z7iiWU=lj@knkRt&8MxBh{%Ql5{Up8K)*?s1;5Kk^-PV*n;Bp5Tc`{^Eb|pVep-=$c z&*+AdY5j5YuYDq*vR5;6HV4ww1j&1m_9NX|87atigVbd&S;fdwn9(V5mu3lC&t0M+zx^1QsaUqjk6+*A*#xQt{V1HIpEMra-lkgp1_Xx1{ zF3Pg}&;2=i)tsdO0f9KC7^Y3UK|H-_8;tjfd8H_+#OK80CS8#Dk?FF>Z;T5rb1aiL z)2Vr4o>(ZfvE0T=(bR~ih$E_|Q$CmRSY^D$SSweR<~`X9!#RCrndvl#kia6AAVPqQ zDoQBBMwC{a6n_gT+K>DA2VK8NE}2{lN54hX`2A&Mblw2uDlgsCU z_cQvYEYN=o^sITkHTQA)0Hmp_VT}th}{d=a_-wzTAa^_61HG2R6 z00v@9M??Sx0A~P%mhP^T00009a7bBm001r{001r{0eGc9b^rhX2XskIMF;5#9tSWE zefY0Nlj;E|f2c`BK~y-)V_={KP|jocubjv59~U1PFk#ay<%FqF$_XMz&;U{a3oZ$$ zEB?dSpC4jZ$A~KokiGHwAp^tby9^9>Ct<3`>H?_3|KexnKnyTR!KxW=7>J*l!w?+o z!NALF#PDWe2+lCT8;HAhy<#|X<^cI=fuBF*KR~r}^1FM3mw(1ZO&U uwhu+|e_mxW0+Fng2ulO#;<& zP@U|eQXFd)iclfc3avVrT>1q~8j=(jN5Qq=;KyRs!Nplu2UkH5`~YzmoD^N8#Q!CQ z7O@^2_v78Y$K5+XXjGVH^~3>9x6O1iA!c){V&E117)A&|#D8RF8FP}9Lf7$i46N%%@Fm2)u;@GBbaNZ{lvy!Y5pA%1-bV1@rt}7nDaW1+n@XWB8 zNzW69iN#_ED;>;ArbawN98oo$@`bF&D(5ZETBXKX_v9}O<@J?iuG1Vt5{p=Z1Q7~q zD5C-!QCf9UEPteFKhecM>iQ*eDdZ}Hkz)Z>Xpmh$_#gc4)+$U-c}bxJ(EH*zALBq^ z7iiWU=lj@knkRt&8MxBh{%Ql5{Up8K)*?s1;5Kk^-PV*n;Bp5Tc`{^Eb|pVep-=$c z&*+AdY5j5Z#q)9|UR5;6HV4wvsoWk(ma0>t4fw9($nfIWBnF8(?;(n}+@VjkbTIG+kd&!t0ss@II05~9-|7GW002ovPDHLkV1jExB@h4r diff --git a/src/main/resources/assets/botanichorizons/textures/items/terrasteelWrench.png b/src/main/resources/assets/botanichorizons/textures/items/terrasteelWrench.png index 694fa2179e5b2f6ed90805523236fd6f7bd2f1f5..b4502c4169781fa6cc1b8257dc99a9297ef50901 100644 GIT binary patch delta 547 zcmV+;0^I$K1+E2dwn9(V5mu3lC&t0M+zx^1QsaUqjk6+*A*#xQt{V1HIpEMra-lkgp1_Xx1{ zF3Pg}&;2=i)tsdO0f9KC7^Y3UK|H-_8;tjfd8H_+#OK80CS8#Dk?FF>Z;T5rb1aiL z)2Vr4o>(ZfvE0T=(bR~ih$E_|Q$CmRSY^D$SSweR<~`X9!#RCrndvl#kia6AAVPqQ zDoQBBMwC{a6n_gT+K>DA2VK8NE}2{lN54hX`2A&Mblw2uDlgsCU z_cQvYEYN=o^sITkHTQA)0Hmp_VT}th}{d=a_-wzTAa^_61HG2R6 z00v@9M??Sx0A~P%mhP^T00009a7bBm001r{001r{0eGc9b^rhX2XskIMF;5#9tSQU zb#I+klj;E|0fv(k0#iq#!T^`ksTPP78$fX&GUC$=3rJWrVlxD1I(W7ZMe%=LWg3M6 l3$`=>OMxiSi6<>k1OP)EHrsoyey0Ec002ovPDHLkV1i zP@U|eQXFd)iclfc3avVrT>1q~8j=(jN5Qq=;KyRs!Nplu2UkH5`~YzmoD^N8#Q!CQ z7O@^2_v78Y$K5+XXjGVH^~3>9x6O1iA!c){V&E117)A&|#D8RF8FP}9Lf7$i46N%%@Fm2)u;@GBbaNZ{lvy!Y5pA%1-bV1@rt}7nDaW1+n@XWB8 zNzW69iN#_ED;>;ArbawN98oo$@`bF&D(5ZETBXKX_v9}O<@J?iuG1Vt5{p=Z1Q7~q zD5C-!QCf9UEPteFKhecM>iQ*eDdZ}Hkz)Z>Xpmh$_#gc4)+$U-c}bxJ(EH*zALBq^ z7iiWU=lj@knkRt&8MxBh{%Ql5{Up8K)*?s1;5Kk^-PV*n;Bp5Tc`{^Eb|pVep-=$c z&*+AdY56y4>j5YMWs?*FQzoi}!4NP2SLhF;Fd!*Y(F6bhMCKp`CWo&H00000NkvXXu0mjf Dls((J From 68b29ed4d8b5da82b386f4de54ee6d579f295e67 Mon Sep 17 00:00:00 2001 From: Marcel Sondaar Date: Sat, 1 Nov 2025 09:50:26 +0100 Subject: [PATCH 06/13] fix: Oredict EFR plants and add apothecary support --- .../fuzzycraft/botanichorizons/mod/ForgeMod.java | 2 +- .../botanichorizons/patches/ApothecaryPatches.java | 7 +++++++ .../botanichorizons/patches/OredictPatches.java | 13 +++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/mod/ForgeMod.java b/src/main/java/net/fuzzycraft/botanichorizons/mod/ForgeMod.java index 597f706..89d51b7 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/mod/ForgeMod.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/mod/ForgeMod.java @@ -33,7 +33,7 @@ public class ForgeMod { public static final String MOD_NAME = MOD_ID; public static final String VERSION = "GRADLETOKEN_VERSION"; - public static final String DEPENDENCIES = "required-after:Baubles;required-after:Thaumcraft;required-after:Botania;required-after:gregtech;after:witchery;after:BiomesOPlenty;after:dreamcraft;required-after:TConstruct;required-after:Avaritia;after:chisel;after:StructureLib"; + public static final String DEPENDENCIES = "required-after:Baubles;required-after:Thaumcraft;required-after:Botania;required-after:gregtech;after:witchery;after:BiomesOPlenty;after:dreamcraft;required-after:TConstruct;required-after:Avaritia;after:chisel;after:StructureLib;after:etfuturum"; //public static final String DEPENDENCIES = "required-after:Botania"; // developer mode @Mod.Instance(MOD_ID) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/patches/ApothecaryPatches.java b/src/main/java/net/fuzzycraft/botanichorizons/patches/ApothecaryPatches.java index a51ee0b..791abed 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/patches/ApothecaryPatches.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/patches/ApothecaryPatches.java @@ -31,6 +31,13 @@ public static void applyPatches() { whitelistBlockIfExists("BiomesOPlenty:ivy"); whitelistBlockIfExists("BiomesOPlenty:flowerVine"); whitelistBlockIfExists("Natura:Thornvines"); + whitelistBlockIfExists("etfuturum:lily_of_the_valley"); + whitelistBlockIfExists("etfuturum:cornflower"); + whitelistBlockIfExists("etfuturum:wither_rose"); + whitelistBlockIfExists("etfuturum:rose"); + whitelistBlockIfExists("etfuturum:pink_petals"); + whitelistBlockIfExists("etfuturum:cave_vine"); + whitelistBlockIfExists("etfuturum:cave_vine_plant"); CustomBotaniaAPI.extraFlowerComponents.put(Item.getItemFromBlock(Blocks.red_flower), alwaysAllowHandler); CustomBotaniaAPI.extraFlowerComponents.put(Item.getItemFromBlock(Blocks.yellow_flower), alwaysAllowHandler); CustomBotaniaAPI.extraFlowerComponents.put(Item.getItemFromBlock(Blocks.vine), alwaysAllowHandler); diff --git a/src/main/java/net/fuzzycraft/botanichorizons/patches/OredictPatches.java b/src/main/java/net/fuzzycraft/botanichorizons/patches/OredictPatches.java index 845da5e..a186a70 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/patches/OredictPatches.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/patches/OredictPatches.java @@ -45,6 +45,19 @@ private static void applyCrossModPatches() { oredictThirdPartyBlocks("BiomesOPlenty:mushrooms", "listInedibleMushroom", "listInedibleMushroom", "listInedibleMushroom", "listInedibleMushroom", "listInedibleMushroom", "listInedibleMushroom"); + oredictThirdPartyBlocks("etfuturum:lily_of_the_valley", "flowerWhite"); + oredictThirdPartyBlocks("etfuturum:lily_of_the_valley", "flowerLilyValley"); + oredictThirdPartyBlocks("etfuturum:cornflower", "flowerBlue"); + oredictThirdPartyBlocks("etfuturum:cornflower", "flowerCorn"); + oredictThirdPartyBlocks("etfuturum:wither_rose", "flowerBlack"); + oredictThirdPartyBlocks("etfuturum:wither_rose", "flowerRoseWither"); + oredictThirdPartyBlocks("etfuturum:rose", "flowerRed"); + oredictThirdPartyBlocks("etfuturum:rose", "flowerRose"); + oredictThirdPartyBlocks("etfuturum:pink_petals", "flowerPink"); + oredictThirdPartyBlocks("etfuturum:pink_petals", "flowerPinkPetals"); + + oredictThirdPartyBlocks("etfuturum:cave_vine", "cropVine"); + oredictThirdPartyBlocks("etfuturum:cave_vine_plant", "cropVine"); oredictThirdPartyItem("witchery:ingredient", 14, "itemMutandis"); } From 4a1f5418ff2b6fc99b09be3066fb811fb3b0db30 Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Sat, 1 Nov 2025 10:07:23 +0100 Subject: [PATCH 07/13] update --- dependencies.gradle | 16 ++++++++-------- gradle.properties | 10 +++++++++- gradle/wrapper/gradle-wrapper.jar | Bin 43705 -> 43764 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 4 ++-- gradlew.bat | 4 ++-- settings.gradle | 2 +- 7 files changed, 23 insertions(+), 15 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 2726a8c..a09c853 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,18 +1,18 @@ // Add your dependencies here dependencies { - api('com.github.GTNewHorizons:Botania:1.12.22-GTNH:dev') - api('com.github.GTNewHorizons:GT5-Unofficial:5.09.51.429:dev') + api('com.github.GTNewHorizons:Botania:1.13.3-GTNH:dev') + api('com.github.GTNewHorizons:GT5-Unofficial:5.09.52.91:dev') api('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') - api("com.github.GTNewHorizons:StructureLib:1.4.18:dev") - api("com.github.GTNewHorizons:Avaritia:1.72:dev") + api("com.github.GTNewHorizons:StructureLib:1.4.24:dev") + api("com.github.GTNewHorizons:Avaritia:1.77:dev") - compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.7.77-GTNH:dev') - compileOnly("com.github.GTNewHorizons:Chisel:2.16.11-GTNH:dev") {transitive = false} + compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.8.26-GTNH:dev') + compileOnly("com.github.GTNewHorizons:Chisel:2.17.3-GTNH:dev") {transitive = false} - runtimeOnly('com.github.GTNewHorizons:Baubles-Expanded:2.1.13-GTNH:dev') + runtimeOnly('com.github.GTNewHorizons:Baubles-Expanded:2.2.2-GTNH:dev') - devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.7.77-GTNH:dev') + devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.26-GTNH:dev') } repositories { diff --git a/gradle.properties b/gradle.properties index 8170ff1..f22f2eb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -96,7 +96,9 @@ usesMixinDebug = false # Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. mixinPlugin = -# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail! +# Specify the package that contains all of your Mixins. The package must exist or +# the build will fail. If you have a package property defined in your mixins..json, +# it must match with this or the build will fail. mixinsPackage = # Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! @@ -172,6 +174,12 @@ curseForgeRelations = # projects. New projects should not use this parameter. customArchiveBaseName = BotanicHorizons +# Optional parameter to customize the default working directory used by the runClient* tasks. Relative to the project directory. +# runClientWorkingDirectory = run/client + +# Optional parameter to customize the default working directory used by the runServer* tasks. Relative to the project directory. +# runServerWorkingDirectory = run/server + # Optional parameter to have the build automatically fail if an illegal version is used. # This can be useful if you e.g. only want to allow versions in the form of '1.1.xxx'. # The check is ONLY performed if the version is a git tag. diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 9bbc975c742b298b441bfb90dbc124400a3751b9..1b33c55baabb587c669f562ae36f953de2481846 100644 GIT binary patch delta 642 zcmdmamFde>rVZJA^}0Q$xegf!xPEW^+5YDM%iT2bEgct9o+jH~+sJas#HZ=szO|** z=Pj=X_vx?W&DSwKck|WWn~hffsvnQ+42*W$b7b0$SCcOoZ`{W{^$^pk;4>8-A*-)$ z?n(Po`1$6Jn_u?t-L+tsPyZ2#X}8T6OS8pAU;kdgd+_Hw4z4TW0p9E!T+=f7-c&O% zFic^X{7^$?^Ho04eona9n#mGMxKhA=~8B%JN`M zMhm5wc-2v)$``sY$!Q`9xiU@DhI73ZxiGEKg>yIPs)NmWwMdF-ngLXpZSqV5ez36n zVkxF2rjrjWR+_xr6e6@_u@s~2uv{9vi*1pj2)BjFD+-%@&pRVP1f{O1glxTOp2-62Ph;v z`N1+vCd)9ea)af*Ol1*JCfnp$%Uu}%OuoN7g2}3C@`L5FlP#(sA=|h@iixuZC?qp^ z=L$=v$ZoI}|87Wh=&h7udff{aieKr*l+zDp?pf)_bbRvUf>kn;HCDMXNlgbbo!QRK I1x7am0No)LiU0rr delta 584 zcmexzm1*ZyrVZJAexH5Moc8h7)w{^+t*dqJ%=yhh23L$9JpFV=_k`zJ-?Q4DI*eSe z+ES)HSrVnWLtJ&)lO%hRkV9zl5qqWRt0e;bb zPPo`)y?HTAyZI&u&X<|2$FDHCf4;!v8}p=?Tm`^F0`u(|1ttf~&t$qP3KUSD>@TJQ zRwJ}Pim6NzEc8KA6)e;S6gs8=7IIL8sQL*MYEuRYO;Uj<%3UbMbV&^&!Zvx+LKmjT z8Zch6rYP7Tw?$Hn(UTJwWiS=$f{lB(C=e*%usDV})0AQIK~sat=ND@+Gg*Pyij!rR z*fa02W|%BsV++>4W{DKDGSIUEHd2$P+8ct!RF+CHDowUuTEZOZ%rJSQv*qOXOSPDN zT|sP-$p*_3ncsWB*qoD7JQcyZ9xan%cJP6Tb4-?AZpr*F6v98hoNaPJm@HV`yya5N z))6pqFXn@}P(3T0nEzM8*c_9KtE9o|_pFd&K35GBXP^9Kg(b6GH-z8S4GDzIl~T+b zdLd#meKKHu$5u))8cu$=GKINkGDPOUD)!0$C(BH(U!}!-e;Q0ok8Sc?V1zRO04>ts AA^-pY diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37f853b..d4081da 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index faf9300..23d15a9 100755 --- a/gradlew +++ b/gradlew @@ -114,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9d21a21..db3a6ac 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,11 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/settings.gradle b/settings.gradle index 1b22f8d..becf041 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,5 +17,5 @@ pluginManagement { } plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.41' + id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.48' } From def61ff2763c1c7a1af8d508db510b13544bcbe1 Mon Sep 17 00:00:00 2001 From: chochem <40274384+chochem@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:44:26 +0000 Subject: [PATCH 08/13] fix conflict --- .../net/fuzzycraft/botanichorizons/patches/GregtechPatches.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java index 73da33f..b33fc91 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java @@ -345,7 +345,7 @@ private static void addAssemblerArmour(ItemStack helmet, ItemStack chest, ItemSt addAssemblerCrafting(leggings, 7, new ItemStack(ingredient.getItem(), 7, ingredient.getItemDamage())); } if (boots != null) { - addAssemblerCrafting(boots, 4, new ItemStack(ingredient.getItem(), 4, ingredient.getItemDamage())); + addAssemblerCrafting(boots, 6, new ItemStack(ingredient.getItem(), 4, ingredient.getItemDamage())); } } From dbd29e2d39ba1bba332f743fd8df01b015f5904d Mon Sep 17 00:00:00 2001 From: chochem <40274384+chochem@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:44:59 +0000 Subject: [PATCH 09/13] update deps --- dependencies.gradle | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index a09c853..61156ad 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,18 +1,18 @@ // Add your dependencies here dependencies { - api('com.github.GTNewHorizons:Botania:1.13.3-GTNH:dev') - api('com.github.GTNewHorizons:GT5-Unofficial:5.09.52.91:dev') + api('com.github.GTNewHorizons:Botania:1.13.6-GTNH:dev') + api('com.github.GTNewHorizons:GT5-Unofficial:5.09.52.126:dev') api('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') api("com.github.GTNewHorizons:StructureLib:1.4.24:dev") - api("com.github.GTNewHorizons:Avaritia:1.77:dev") + api("com.github.GTNewHorizons:Avaritia:1.78:dev") - compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.8.26-GTNH:dev') - compileOnly("com.github.GTNewHorizons:Chisel:2.17.3-GTNH:dev") {transitive = false} + compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.8.40-GTNH:dev') + compileOnly("com.github.GTNewHorizons:Chisel:2.17.5-GTNH:dev") {transitive = false} runtimeOnly('com.github.GTNewHorizons:Baubles-Expanded:2.2.2-GTNH:dev') - devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.26-GTNH:dev') + devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.40-GTNH:dev') } repositories { From 4ec09a3068d748f117de031fd1a753cdf65ccf67 Mon Sep 17 00:00:00 2001 From: chochem <40274384+chochem@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:47:54 +0000 Subject: [PATCH 10/13] simplify with new circuit builder method --- .../botanichorizons/patches/GregtechPatches.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java index b33fc91..852c492 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java @@ -315,19 +315,13 @@ private static void compressAndExtract(ItemStack uncompressed, ItemStack compres addIC2CompressorRecipe(compressed, uncompressed); } - private static void addAssemblerCrafting(ItemStack output, int circuit, ItemStack... inputs) { + private static void addAssemblerCrafting(ItemStack output, int circuitNumber, ItemStack... inputs) { - Object[] realInputs; - if (circuit > 0) { - realInputs = new ItemStack[inputs.length + 1]; - System.arraycopy(inputs, 0, realInputs, 0, inputs.length); - realInputs[inputs.length] = GTUtility.getIntegratedCircuit(circuit); - } else { - realInputs = inputs; + GTRecipeBuilder recipeBuilder = GTValues.RA.stdBuilder(); + if (circuitNumber > 0) { + recipeBuilder.circuit(circuitNumber); } - - GTValues.RA.stdBuilder() - .itemInputs(realInputs) + recipeBuilder.itemInputs(inputs) .itemOutputs(output) .duration(5 * SECONDS) .eut(16) From 212fb5747c3cb924a33a43f467d98f7e4058bbd7 Mon Sep 17 00:00:00 2001 From: chochem <40274384+chochem@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:50:08 +0000 Subject: [PATCH 11/13] switch recipes to circuit() --- .../botanichorizons/patches/GregtechPatches.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java index 852c492..17f36e1 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java @@ -148,7 +148,8 @@ public static void applyPatches() { // Reeds compress to plantballs by default GTValues.RA.stdBuilder() - .itemInputs(new ItemStack(Items.reeds, 8), GTUtility.getIntegratedCircuit(16)) + .itemInputs(new ItemStack(Items.reeds, 8)) + .circuit(16) .itemOutputs(new ItemStack(ModBlocks.reedBlock)) .duration(4*SECONDS) .eut(24) @@ -157,8 +158,8 @@ public static void applyPatches() { // Livingwood and Crystal Bows GTValues.RA.stdBuilder() .itemInputs(new ItemStack(ModItems.manaResource, 3, Constants.MANARESOURCE_META_TWIG_WOOD), - new ItemStack(ModItems.manaResource, 3, Constants.MANARESOURCE_META_STRING), - GTUtility.getIntegratedCircuit(1)) + new ItemStack(ModItems.manaResource, 3, Constants.MANARESOURCE_META_STRING)) + .circuit(1) .itemOutputs(new ItemStack(ModItems.livingwoodBow)) .duration(4*SECONDS) .eut(24) @@ -184,7 +185,8 @@ public static void applyPatches() { 'S', LibOreDict.MANAWEAVE_CLOTH ); GTValues.RA.stdBuilder() - .itemInputs(fabric, new ItemStack(choice, 2, i % 16), GTUtility.getIntegratedCircuit(2)) + .itemInputs(fabric, new ItemStack(choice, 2, i % 16)) + .circuit(2) .itemOutputs(output) .duration(6*SECONDS) .eut(80) From a421302ab68b95e3716eb290d229a10892f7012e Mon Sep 17 00:00:00 2001 From: chochem <40274384+chochem@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:53:05 +0000 Subject: [PATCH 12/13] use circuit() in addSlabRecipe --- .../patches/GregtechPatches.java | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java index 17f36e1..3ee48c2 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java @@ -346,25 +346,22 @@ private static void addAssemblerArmour(ItemStack helmet, ItemStack chest, ItemSt } @Nullable - private static IRecipe addSlabRecipe(ItemStack output, ItemStack input, int circuit, int volt, int ticks) { + private static IRecipe addSlabRecipe(ItemStack output, ItemStack input, int circuitNumber, int volt, int ticks) { + GTRecipeBuilder recipeBuilder = GTValues.RA.stdBuilder(); ItemStack[] inputs; - if (circuit == 0) { - inputs = new ItemStack[]{input}; - } else { - ItemStack circuitStack = GTUtility.getIntegratedCircuit(circuit); - inputs = new ItemStack[]{input, circuitStack}; + if (circuitNumber > 0) { + recipeBuilder.circuit(circuitNumber); } - GTValues.RA.stdBuilder() - .itemInputs(inputs) - .itemOutputs(output) - .duration(ticks) - .eut(volt) - .addTo(cutterRecipes); + recipeBuilder.itemInputs(input) + .itemOutputs(output) + .duration(ticks) + .eut(volt) + .addTo(cutterRecipes); if (volt < 32 && (output.stackSize % 2) == 0) { ItemStack half_output = new ItemStack(output.getItem(), output.stackSize / 2, output.getItemDamage()); - String r1 = (circuit <= 1) ? "sR" : "s "; - String r2 = (circuit <= 1) ? " " : "R "; + String r1 = (circuitNumber <= 1) ? "sR" : "s "; + String r2 = (circuitNumber <= 1) ? " " : "R "; GTModHandler.addCraftingRecipe( half_output, new Object[]{ From 52a3e6ba5f4a6255bd8c5ed04cb3f27c23499c47 Mon Sep 17 00:00:00 2001 From: chochem <40274384+chochem@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:54:39 +0000 Subject: [PATCH 13/13] import not needed --- .../net/fuzzycraft/botanichorizons/patches/GregtechPatches.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java index 3ee48c2..0f483e3 100644 --- a/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java +++ b/src/main/java/net/fuzzycraft/botanichorizons/patches/GregtechPatches.java @@ -10,7 +10,6 @@ import gregtech.api.util.GTModHandler; import gregtech.api.util.GTOreDictUnificator; import gregtech.api.util.GTRecipeBuilder; -import gregtech.api.util.GTUtility; import net.fuzzycraft.botanichorizons.addons.BHBlocks; import net.fuzzycraft.botanichorizons.util.Constants; import net.fuzzycraft.botanichorizons.util.OreDict;