From 184fdb4c34a8026ea949a35f33f62367794356f6 Mon Sep 17 00:00:00 2001 From: JFronny Date: Thu, 25 Apr 2024 21:47:03 +0200 Subject: [PATCH] chore: update to 1.20.5 --- build.gradle.kts | 23 ++++++---- .../io/gitlab/jfronny/yescheat/Plugin.java | 2 +- .../io/gitlab/jfronny/yescheat/YesCheat.java | 1 - .../yescheat/mixin/DistantBreaking.java | 28 +++++++----- .../jfronny/yescheat/mixin/UncapEnchants.java | 43 +++++++++++++++++-- src/main/resources/YesCheat.mixins.json | 2 +- .../tags/items/villager_temptations.json | 2 +- 7 files changed, 75 insertions(+), 26 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 288f0cd..c0e357f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,15 +1,16 @@ plugins { - id("jfmod") version "1.5-SNAPSHOT" + id("jfmod") version "1.6-SNAPSHOT" } allprojects { group = "io.gitlab.jfronny" } base.archivesName = "yescheat" jfMod { - minecraftVersion = "1.20.4" + minecraftVersion = "1.20.5" yarn("build.1") - loaderVersion = "0.15.0" - libJfVersion = "3.14.1" + loaderVersion = "0.15.10" + libJfVersion = "3.15.5" + fabricApiVersion = "0.97.6+1.20.5" modrinth { projectId = "yescheat" @@ -18,11 +19,15 @@ jfMod { } dependencies { - modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v2:${jfMod.libJfVersion.get()}") - modImplementation("net.fabricmc.fabric-api:fabric-api:0.91.1+${jfMod.minecraftVersion.get()}") + modImplementation("io.gitlab.jfronny.libjf:libjf-config-core-v2") + modImplementation("net.fabricmc.fabric-api:fabric-api") // Dev env - modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny:${jfMod.libJfVersion.get()}") - modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil:${jfMod.libJfVersion.get()}") - modLocalRuntime("com.terraformersmc:modmenu:9.0.0-pre.1") + modLocalRuntime("io.gitlab.jfronny.libjf:libjf-config-ui-tiny") + modLocalRuntime("io.gitlab.jfronny.libjf:libjf-devutil") + modLocalRuntime("com.terraformersmc:modmenu:10.0.0-beta.1") + // for modmenu + modLocalRuntime("net.fabricmc.fabric-api:fabric-resource-loader-v0") + modLocalRuntime("net.fabricmc.fabric-api:fabric-screen-api-v1") + modLocalRuntime("net.fabricmc.fabric-api:fabric-key-binding-api-v1") } \ No newline at end of file diff --git a/src/main/java/io/gitlab/jfronny/yescheat/Plugin.java b/src/main/java/io/gitlab/jfronny/yescheat/Plugin.java index 21631bd..2059a2b 100644 --- a/src/main/java/io/gitlab/jfronny/yescheat/Plugin.java +++ b/src/main/java/io/gitlab/jfronny/yescheat/Plugin.java @@ -26,7 +26,7 @@ public class Plugin implements IMixinConfigPlugin { if (mixinClassName.startsWith("Debug")) return true; return switch (mixinClassName) { case "UnblockChests" -> Cfg.unblockChests; - case "UncapEnchants" -> Cfg.uncapEnchants; + case "UncapEnchants", "UncapEnchants$Builder" -> Cfg.uncapEnchants; case "IgnoreEula" -> true; case "DistantContainers3x3", "DistantContainerXx9" -> Cfg.distantContainers; case "UnlockMendingInfinity" -> Cfg.unlockMending; diff --git a/src/main/java/io/gitlab/jfronny/yescheat/YesCheat.java b/src/main/java/io/gitlab/jfronny/yescheat/YesCheat.java index 84a22ef..59ba378 100644 --- a/src/main/java/io/gitlab/jfronny/yescheat/YesCheat.java +++ b/src/main/java/io/gitlab/jfronny/yescheat/YesCheat.java @@ -16,7 +16,6 @@ public class YesCheat implements ModInitializer { @Override public void onInitialize() { - System.out.println("Ae"); if (Cfg.villagersFollowEmeralds) { villagersFollowEmeraldsInit(); Registry.register(Registries.SENSOR_TYPE, TEMPTATIONS_ID, VILLAGER_TEMPTATIONS); diff --git a/src/main/java/io/gitlab/jfronny/yescheat/mixin/DistantBreaking.java b/src/main/java/io/gitlab/jfronny/yescheat/mixin/DistantBreaking.java index a5cad01..15732ab 100644 --- a/src/main/java/io/gitlab/jfronny/yescheat/mixin/DistantBreaking.java +++ b/src/main/java/io/gitlab/jfronny/yescheat/mixin/DistantBreaking.java @@ -1,18 +1,26 @@ package io.gitlab.jfronny.yescheat.mixin; -import net.minecraft.server.network.ServerPlayNetworkHandler; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.math.BlockPos; import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ServerPlayNetworkHandler.class) +@Mixin(PlayerEntity.class) public class DistantBreaking { - @Mutable - @Shadow @Final public static double MAX_BREAK_SQUARED_DISTANCE; + /** + * @author JFronny + * @reason Allow breaking blocks from any distance + */ + @Overwrite + public boolean canInteractWithBlockAt(BlockPos pos, double additionalRange) { + return true; + } - @Inject(method = "", at = @At("TAIL")) - private static void yescheat$postInit(CallbackInfo ci) { - MAX_BREAK_SQUARED_DISTANCE = Double.MAX_VALUE; + /** + * @author JFronny + * @reason Allow interacting with entities from any distance + */ + @Overwrite + public double getEntityInteractionRange() { + return Double.MAX_VALUE; } } diff --git a/src/main/java/io/gitlab/jfronny/yescheat/mixin/UncapEnchants.java b/src/main/java/io/gitlab/jfronny/yescheat/mixin/UncapEnchants.java index 8101eab..8094fc1 100644 --- a/src/main/java/io/gitlab/jfronny/yescheat/mixin/UncapEnchants.java +++ b/src/main/java/io/gitlab/jfronny/yescheat/mixin/UncapEnchants.java @@ -1,14 +1,51 @@ package io.gitlab.jfronny.yescheat.mixin; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import net.minecraft.component.type.ItemEnchantmentsComponent; +import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; -import org.spongepowered.asm.mixin.Mixin; +import net.minecraft.registry.entry.RegistryEntry; +import org.spongepowered.asm.mixin.*; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(EnchantmentHelper.class) +@Mixin(ItemEnchantmentsComponent.class) public class UncapEnchants { - @ModifyArg(method = "getLevelFromNbt", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(III)I"), index = 2) + @Final @Mutable @Shadow public static int MAX_ENCHANTMENT_LEVEL; + @ModifyArg(method = "", at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/Codec;intRange(II)Lcom/mojang/serialization/Codec;", remap = false), index = 1) private static int injectMaxEnchantmentLevel(int x) { return Integer.MAX_VALUE; } + + @Inject(method = "", at = @At("TAIL")) + private static void ae(CallbackInfo ci) { + MAX_ENCHANTMENT_LEVEL = Integer.MAX_VALUE; + } + + @Redirect(method = "", at = @At(value = "INVOKE", target = "Lit/unimi/dsi/fastutil/objects/Object2IntOpenHashMap;object2IntEntrySet()Lit/unimi/dsi/fastutil/objects/Object2IntMap$FastEntrySet;", remap = false)) + private Object2IntMap.FastEntrySet> object2IntEntrySet(Object2IntOpenHashMap> object2IntOpenHashMap) { + for (Object2IntMap.Entry> entry : object2IntOpenHashMap.object2IntEntrySet()) { + int i = entry.getIntValue(); + if (i >= 0) continue; + throw new IllegalArgumentException("Enchantment " + entry.getKey() + " has invalid level " + i); + } + return new Object2IntOpenHashMap>().object2IntEntrySet(); + } + + @Mixin(ItemEnchantmentsComponent.Builder.class) + public static class Builder { + @Redirect(method = "set(Lnet/minecraft/enchantment/Enchantment;I)V", at = @At(value = "INVOKE", target = "Ljava/lang/Math;min(II)I", remap = false)) + private int min(int a, int b) { + return a; + } + + @Redirect(method = "add(Lnet/minecraft/enchantment/Enchantment;I)V", at = @At(value = "INVOKE", target = "Ljava/lang/Math;min(II)I", remap = false)) + private int min2(int a, int b) { + return a; + } + } } diff --git a/src/main/resources/YesCheat.mixins.json b/src/main/resources/YesCheat.mixins.json index 173ece2..d18d02f 100644 --- a/src/main/resources/YesCheat.mixins.json +++ b/src/main/resources/YesCheat.mixins.json @@ -2,7 +2,6 @@ "required": true, "minVersion": "0.8", "package": "io.gitlab.jfronny.yescheat.mixin", - "compatibilityLevel": "JAVA_16", "plugin": "io.gitlab.jfronny.yescheat.Plugin", "mixins": [ "DistantBreaking", @@ -12,6 +11,7 @@ "RemoveRubberbanding", "UnblockChests", "UncapEnchants", + "UncapEnchants$Builder", "UnlockMendingInfinity", "VillagersFollowEmeralds1", "VillagersFollowEmeralds2" diff --git a/src/main/resources/data/yescheat/tags/items/villager_temptations.json b/src/main/resources/data/yescheat/tags/items/villager_temptations.json index 109a750..de65514 100644 --- a/src/main/resources/data/yescheat/tags/items/villager_temptations.json +++ b/src/main/resources/data/yescheat/tags/items/villager_temptations.json @@ -3,6 +3,6 @@ "minecraft:emerald_block", "minecraft:emerald_ore", "minecraft:deepslate_emerald_ore", - "#c:emeralds" + "#c:gems/emerald" ] } \ No newline at end of file