From 9d1fe7a2452477fb04311accbe84b933c834d1e3 Mon Sep 17 00:00:00 2001 From: yuuki1293 Date: Wed, 24 Dec 2025 07:51:29 +0900 Subject: [PATCH 1/3] fix: Splitted Energetic Clay can be duplicated using a PAN --- gradle.properties | 8 ++-- settings.gradle.kts | 2 +- .../nao7016/ClayiumAdditions/CAModMain.java | 4 +- .../mixins/EarlyMixinsLoader.java | 48 +++++++++++++++++++ .../ClayiumAdditions/mixins/Mixins.java | 24 ++++++++++ .../mixins/early/MixinTilePANCore.java | 32 +++++++++++++ .../mixins.clayiumadditions.early.json | 8 ++++ .../resources/mixins.clayiumadditions.json | 7 +++ 8 files changed, 127 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/mixins/EarlyMixinsLoader.java create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java create mode 100644 src/main/resources/mixins.clayiumadditions.early.json create mode 100644 src/main/resources/mixins.clayiumadditions.json diff --git a/gradle.properties b/gradle.properties index 218397c..05c9991 100644 --- a/gradle.properties +++ b/gradle.properties @@ -74,7 +74,7 @@ apiPackage = accessTransformersFile = # Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! -usesMixins = false +usesMixins = true # Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main. # This can speed up compile times thanks to not running the mixin annotation processor on all input sources. @@ -82,18 +82,18 @@ usesMixins = false separateMixinSourceSet = # Adds some debug arguments like verbose output and class export. -usesMixinDebug = false +usesMixinDebug = true # 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! -mixinsPackage = +mixinsPackage = mixins # Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! # This parameter is for legacy compatibility only # Example value: (coreModClass = asm.FMLPlugin) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.asm.FMLPlugin -coreModClass = +coreModClass = mixins.EarlyMixinsLoader # If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class # that is annotated with @Mod) you want this to be true. When in doubt: leave it on false! diff --git a/settings.gradle.kts b/settings.gradle.kts index 4294dba..cdf5e41 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -21,5 +21,5 @@ pluginManagement { } plugins { - id("com.gtnewhorizons.gtnhsettingsconvention") version("1.0.38") + id("com.gtnewhorizons.gtnhsettingsconvention") version("1.0.48") } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/CAModMain.java b/src/main/java/com/nao7016/ClayiumAdditions/CAModMain.java index 75119c3..e8e820c 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/CAModMain.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/CAModMain.java @@ -35,7 +35,9 @@ public class CAModMain { + ",);" // buildVersion + "required-after:clayium@[0.4.6.36.hotfix2,);" // clayium + "after:etfuturum@[2.6.2,);" // Et Futurum Requiem - + "after:bogosorter@[1.2.51-GTNH,)"; + + "after:bogosorter@[1.2.51-GTNH,);" + + "required-after:gtnhmixins@[2.0.1,);" + + "required-after:unimixins@[0.0.20,);"; @SidedProxy( clientSide = "com.nao7016.ClayiumAdditions.client.ClientProxy", serverSide = "com.nao7016.ClayiumAdditions.common.CommonProxy") diff --git a/src/main/java/com/nao7016/ClayiumAdditions/mixins/EarlyMixinsLoader.java b/src/main/java/com/nao7016/ClayiumAdditions/mixins/EarlyMixinsLoader.java new file mode 100644 index 0000000..dca4260 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/mixins/EarlyMixinsLoader.java @@ -0,0 +1,48 @@ +package com.nao7016.ClayiumAdditions.mixins; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import com.gtnewhorizon.gtnhmixins.IEarlyMixinLoader; +import com.gtnewhorizon.gtnhmixins.builders.IMixins; +import com.nao7016.ClayiumAdditions.CAModMain; + +import cpw.mods.fml.relauncher.IFMLLoadingPlugin; + +@IFMLLoadingPlugin.MCVersion("1.7.10") +public class EarlyMixinsLoader implements IFMLLoadingPlugin, IEarlyMixinLoader { + + @Override + public String[] getASMTransformerClass() { + return null; + } + + @Override + public String getModContainerClass() { + return null; + } + + @Override + public String getSetupClass() { + return null; + } + + @Override + public void injectData(Map data) {} + + @Override + public String getAccessTransformerClass() { + return null; + } + + @Override + public String getMixinConfig() { + return "mixins." + CAModMain.MODID + ".early.json"; + } + + @Override + public List getMixins(Set loadedCoreMods) { + return IMixins.getEarlyMixins(Mixins.class, loadedCoreMods); + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java b/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java new file mode 100644 index 0000000..63efede --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java @@ -0,0 +1,24 @@ +package com.nao7016.ClayiumAdditions.mixins; + +import javax.annotation.Nonnull; + +import com.gtnewhorizon.gtnhmixins.builders.IMixins; +import com.gtnewhorizon.gtnhmixins.builders.MixinBuilder; + +public enum Mixins implements IMixins { + + CLAYIUM(new MixinBuilder().setPhase(Phase.EARLY) + .addClientMixins("MixinTilePANCore")); + + private final MixinBuilder builder; + + Mixins(MixinBuilder builder) { + this.builder = builder; + } + + @Nonnull + @Override + public MixinBuilder getBuilder() { + return builder; + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java b/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java new file mode 100644 index 0000000..6b612b7 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java @@ -0,0 +1,32 @@ +package com.nao7016.ClayiumAdditions.mixins.early; + +import static mods.clayium.util.crafting.CRecipes.i; + +import java.util.Set; + +import net.minecraft.item.ItemStack; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +import com.nao7016.ClayiumAdditions.common.CAItems; + +import mods.clayium.block.tile.TilePANCore; + +@Mixin(value = TilePANCore.class, remap = false) +public class MixinTilePANCore { + + @ModifyVariable(method = "refreshItemSet", at = @At("STORE"), name = "prohibiteds", require = 1) + private Set addProhibited(Set prohibiteds) { + double d0 = 10000F; + + for (int tier = 4; tier <= 12; tier++) { + ItemStack energyClay = i(CAItems.clayEnergy, 1, tier); + prohibiteds.add(new TilePANCore.ItemStackWithEnergy(energyClay, d0, d0)); + d0 *= 10.0F; + } + + return prohibiteds; + } +} diff --git a/src/main/resources/mixins.clayiumadditions.early.json b/src/main/resources/mixins.clayiumadditions.early.json new file mode 100644 index 0000000..5ee1734 --- /dev/null +++ b/src/main/resources/mixins.clayiumadditions.early.json @@ -0,0 +1,8 @@ +{ + "required": true, + "minVersion": "0.8.5-GTNH", + "package": "com.nao7016.ClayiumAdditions.mixins.early", + "refmap": "mixins.clayiumadditions.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" +} diff --git a/src/main/resources/mixins.clayiumadditions.json b/src/main/resources/mixins.clayiumadditions.json new file mode 100644 index 0000000..92d7ef1 --- /dev/null +++ b/src/main/resources/mixins.clayiumadditions.json @@ -0,0 +1,7 @@ +{ + "required": true, + "minVersion": "0.8.5-GTNH", + "refmap": "mixins.clayiumadditions.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" +} From 26d69150f921833bdb5d33c7b9098b6b1245dc5b Mon Sep 17 00:00:00 2001 From: yuuki1293 Date: Thu, 25 Dec 2025 14:57:00 +0900 Subject: [PATCH 2/3] move to common side --- src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java b/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java index 63efede..b550e4b 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java @@ -8,7 +8,7 @@ public enum Mixins implements IMixins { CLAYIUM(new MixinBuilder().setPhase(Phase.EARLY) - .addClientMixins("MixinTilePANCore")); + .addCommonMixins("MixinTilePANCore")); private final MixinBuilder builder; From da9d6e97cc3cca7eeabff45860a481ea271e9198 Mon Sep 17 00:00:00 2001 From: yuuki1293 Date: Thu, 25 Dec 2025 15:04:41 +0900 Subject: [PATCH 3/3] Costs are automatically calculated --- .../ClayiumAdditions/mixins/early/MixinTilePANCore.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java b/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java index 6b612b7..2cb06c1 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java @@ -19,12 +19,10 @@ public class MixinTilePANCore { @ModifyVariable(method = "refreshItemSet", at = @At("STORE"), name = "prohibiteds", require = 1) private Set addProhibited(Set prohibiteds) { - double d0 = 10000F; for (int tier = 4; tier <= 12; tier++) { ItemStack energyClay = i(CAItems.clayEnergy, 1, tier); - prohibiteds.add(new TilePANCore.ItemStackWithEnergy(energyClay, d0, d0)); - d0 *= 10.0F; + prohibiteds.add(new TilePANCore.ItemStackWithEnergy(energyClay, 0, 0)); } return prohibiteds;