From 9e74f7ff60e5b39f118b8a4912f29dc0a3d09b28 Mon Sep 17 00:00:00 2001 From: JFronny Date: Sat, 21 Aug 2021 21:05:26 +0200 Subject: [PATCH] Lessen limits on enchantments --- .../io/gitlab/jfronny/yescheat/YesCheat.java | 2 +- .../jfronny/yescheat/YesCheatPlugin.java | 80 ------------------- .../mixin/DedicatedServerWatchdogMixin.java | 1 - .../mixin/EnchantmentHelperMixin.java | 14 ++++ .../mixin/InfinityEnchantmentMixin.java | 17 ++++ src/main/resources/YesCheat.mixins.json | 3 +- 6 files changed, 34 insertions(+), 83 deletions(-) delete mode 100644 src/main/java/io/gitlab/jfronny/yescheat/YesCheatPlugin.java create mode 100644 src/main/java/io/gitlab/jfronny/yescheat/mixin/EnchantmentHelperMixin.java create mode 100644 src/main/java/io/gitlab/jfronny/yescheat/mixin/InfinityEnchantmentMixin.java diff --git a/src/main/java/io/gitlab/jfronny/yescheat/YesCheat.java b/src/main/java/io/gitlab/jfronny/yescheat/YesCheat.java index 9e4af65..edf166f 100644 --- a/src/main/java/io/gitlab/jfronny/yescheat/YesCheat.java +++ b/src/main/java/io/gitlab/jfronny/yescheat/YesCheat.java @@ -8,6 +8,6 @@ public class YesCheat implements ModInitializer { public static final Logger LOGGER = LogManager.getLogger("yescheat"); @Override public void onInitialize() { - System.out.println("YesCheat initialized, anticheat yeeted"); + LOGGER.info("YesCheat initialized, anticheat yeeted"); } } diff --git a/src/main/java/io/gitlab/jfronny/yescheat/YesCheatPlugin.java b/src/main/java/io/gitlab/jfronny/yescheat/YesCheatPlugin.java deleted file mode 100644 index bec5cd7..0000000 --- a/src/main/java/io/gitlab/jfronny/yescheat/YesCheatPlugin.java +++ /dev/null @@ -1,80 +0,0 @@ -package io.gitlab.jfronny.yescheat; - -import net.fabricmc.loader.api.FabricLoader; -import org.objectweb.asm.tree.ClassNode; -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.List; -import java.util.Properties; -import java.util.Set; - -public class YesCheatPlugin implements IMixinConfigPlugin { - private Properties config; - FabricLoader loader = FabricLoader.getInstance(); - private final File path = loader.getConfigDir().resolve("yescheat.properties").toFile(); - @Override - public void onLoad(String s) { - config = new Properties(); - try (FileInputStream fs = new FileInputStream(path)) { - config.load(fs); - } catch (IOException e) { - System.err.println("[YesCheat] Could not read config, using defaults"); - e.printStackTrace(); - } - } - - private void save() { - try (FileOutputStream fs = new FileOutputStream(path)) { - config.store(fs, "YesCheat config, you can toggle individual mixins here"); - } catch (IOException e) { - System.err.println("[YesCheat] Could not save config, using defaults"); - e.printStackTrace(); - } - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - String mixinPath = "io.gitlab.jfronny.yescheat.mixin"; - if (!mixinClassName.startsWith(mixinPath)) { - System.err.println("[YesCheat] found foreign mixin " + mixinClassName + "for" + targetClassName + ", disabling"); - return false; - } - String mixin = mixinClassName.substring(mixinPath.length() + 1, mixinClassName.length() - 5); - if (!config.containsKey(mixin)) { - System.err.println("[YesCheat] Could not load value for " + mixinClassName + ", using default"); - config.put(mixin, true); - save(); - } - return Boolean.parseBoolean((String) config.get(mixin)); - } - - @Override - public void acceptTargets(Set set, Set set1) { - - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) { - - } - - @Override - public void postApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) { - - } -} diff --git a/src/main/java/io/gitlab/jfronny/yescheat/mixin/DedicatedServerWatchdogMixin.java b/src/main/java/io/gitlab/jfronny/yescheat/mixin/DedicatedServerWatchdogMixin.java index 7fbde33..deb363d 100644 --- a/src/main/java/io/gitlab/jfronny/yescheat/mixin/DedicatedServerWatchdogMixin.java +++ b/src/main/java/io/gitlab/jfronny/yescheat/mixin/DedicatedServerWatchdogMixin.java @@ -17,5 +17,4 @@ public class DedicatedServerWatchdogMixin { */ @Overwrite private void shutdown() {} - } diff --git a/src/main/java/io/gitlab/jfronny/yescheat/mixin/EnchantmentHelperMixin.java b/src/main/java/io/gitlab/jfronny/yescheat/mixin/EnchantmentHelperMixin.java new file mode 100644 index 0000000..dd72a86 --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/yescheat/mixin/EnchantmentHelperMixin.java @@ -0,0 +1,14 @@ +package io.gitlab.jfronny.yescheat.mixin; + +import net.minecraft.enchantment.EnchantmentHelper; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(EnchantmentHelper.class) +public class EnchantmentHelperMixin { + @ModifyArg(method = "getLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(III)I"), index = 2) + private static int injectMaxEnchantmentLevel(int val, int min, int max) { + return val; + } +} diff --git a/src/main/java/io/gitlab/jfronny/yescheat/mixin/InfinityEnchantmentMixin.java b/src/main/java/io/gitlab/jfronny/yescheat/mixin/InfinityEnchantmentMixin.java new file mode 100644 index 0000000..499ac23 --- /dev/null +++ b/src/main/java/io/gitlab/jfronny/yescheat/mixin/InfinityEnchantmentMixin.java @@ -0,0 +1,17 @@ +package io.gitlab.jfronny.yescheat.mixin; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.InfinityEnchantment; +import net.minecraft.enchantment.MendingEnchantment; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(InfinityEnchantment.class) +public class InfinityEnchantmentMixin { + @Inject(method = "canAccept", at = @At("HEAD"), cancellable = true) + private void differs(Enchantment other, CallbackInfoReturnable cir) { + if(other instanceof MendingEnchantment) cir.setReturnValue(true); + } +} diff --git a/src/main/resources/YesCheat.mixins.json b/src/main/resources/YesCheat.mixins.json index f6a7887..5dd7dc9 100644 --- a/src/main/resources/YesCheat.mixins.json +++ b/src/main/resources/YesCheat.mixins.json @@ -2,14 +2,15 @@ "required": true, "minVersion": "0.8", "package": "io.gitlab.jfronny.yescheat.mixin", - "plugin": "io.gitlab.jfronny.yescheat.YesCheatPlugin", "compatibilityLevel": "JAVA_16", "mixins": [ "ChestBlockMixin", "DedicatedServerWatchdogMixin", + "EnchantmentHelperMixin", "EulaReaderMixin", "Generic3x3ContainerScreenHandlerMixin", "GenericContainerScreenHandlerMixin", + "InfinityEnchantmentMixin", "ServerPlayNetworkHandlerMixin" ], "injectors": {