diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml index 5870600..9ec732e 100644 --- a/.idea/runConfigurations/Minecraft_Server.xml +++ b/.idea/runConfigurations/Minecraft_Server.xml @@ -12,5 +12,5 @@ - + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index ae3a4c1..174c29c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,12 +3,12 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties # check these on https://modmuss50.me/fabric.html - minecraft_version=1.21.5 - yarn_mappings=1.21.5+build.1 + minecraft_version=1.20.1 + yarn_mappings=1.20.1+build.10 loader_version=0.16.12 #Fabric api - fabric_version=0.119.9+1.21.5 + fabric_version=0.92.5+1.20.1 # Mod Properties mod_version = 1.0 diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index baab943..6c310c8 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -8,6 +8,7 @@ import com.expvintl.mctools.events.player.PlayerBreakBlockEvent; import com.expvintl.mctools.mixin.interfaces.ClientPlayerInteractionManagerAccessor; import com.expvintl.mctools.utils.CommandUtils; import com.expvintl.mctools.utils.Utils; +import com.google.common.collect.Multimap; import com.google.common.eventbus.Subscribe; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; @@ -16,8 +17,7 @@ import com.mojang.brigadier.context.CommandContext; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.block.*; import net.minecraft.client.MinecraftClient; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.AttributeModifiersComponent; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.*; import net.minecraft.entity.attribute.EntityAttribute; @@ -29,6 +29,7 @@ import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.EntityTypeTags; import net.minecraft.text.Text; +import java.util.Collection; import java.util.function.BiConsumer; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; @@ -82,7 +83,7 @@ public class CAutoToolCommand { //低耐久测试 if(!isLowDurability(currentItem)) { //切换过去 - event.player.getInventory().setSelectedSlot(slot); + event.player.getInventory().selectedSlot=slot; MinecraftClient mc=MinecraftClient.getInstance(); if(mc.interactionManager!=null) { ((ClientPlayerInteractionManagerAccessor) mc.interactionManager).syncSelectedSlot(); @@ -119,7 +120,7 @@ public class CAutoToolCommand { //确定已经选择好了工具就切换 if(!isLowDurability(currentItem)) { //切换过去 - mc.player.getInventory().setSelectedSlot(slot); + mc.player.getInventory().selectedSlot=slot; if(mc.interactionManager!=null) { ((ClientPlayerInteractionManagerAccessor) mc.interactionManager).syncSelectedSlot(); } @@ -192,20 +193,20 @@ public class CAutoToolCommand { score+=item.getMiningSpeedMultiplier(state)*2; //附魔加分 //耐久 - score+= Utils.GetEnchantLevel(Enchantments.UNBREAKING, item); + score+= EnchantmentHelper.getLevel(Enchantments.UNBREAKING, item); //效率 - score+=Utils.GetEnchantLevel(Enchantments.EFFICIENCY,item); + score+=EnchantmentHelper.getLevel(Enchantments.EFFICIENCY,item); //经验修补 - score+=Utils.GetEnchantLevel(Enchantments.MENDING,item); + score+=EnchantmentHelper.getLevel(Enchantments.MENDING,item); if(isBlockFortune(state.getBlock())){ - score+=Utils.GetEnchantLevel(Enchantments.FORTUNE,item);//时运 + score+=EnchantmentHelper.getLevel(Enchantments.FORTUNE,item);//时运 } - if (isSwordItem(item.getItem()) && (state.getBlock() instanceof BambooBlock|| state.getBlock() instanceof BambooShootBlock)) { - if((item.getItem().getComponents().get(DataComponentTypes.TOOL)!=null)){ + if (isSwordItem(item.getItem()) && (state.getBlock() instanceof BambooBlock)) { + if(item.getItem() instanceof ToolItem tool){ //根据挖掘等级加分 - score += 90 + (item.getItem().getComponents().get(DataComponentTypes.TOOL).getSpeed(state)); + score += 90 + tool.getMaterial().getMiningSpeedMultiplier(); } } } @@ -216,33 +217,31 @@ public class CAutoToolCommand { //剑优先 if (isSwordItem(item.getItem())) damageScore += 100; //计算物品的基础伤害属性(较为复杂) - AttributeModifiersComponent comp=item.getOrDefault(DataComponentTypes.ATTRIBUTE_MODIFIERS, AttributeModifiersComponent.DEFAULT); - final float[] damageHolder = {0.0f}; - BiConsumer, EntityAttributeModifier> baseDamage=(attentry, modify)->{ - if(attentry.matches(EntityAttributes.ATTACK_DAMAGE)){ - //计算基础伤害 - damageHolder [0]= (float)modify.value(); + Multimap modifiers = item.getAttributeModifiers(EquipmentSlot.MAINHAND); + Collection damageModifiers = modifiers.get(EntityAttributes.GENERIC_ATTACK_DAMAGE); + for (EntityAttributeModifier modifier : damageModifiers) { + if (modifier.getOperation() == EntityAttributeModifier.Operation.ADDITION) { + damageScore+=(float) modifier.getValue(); + break; } - }; - comp.applyModifiers(EquipmentSlot.MAINHAND,baseDamage);//计算主手时的伤害 - damageScore+=damageHolder[0]; + } //节肢杀手 EntityType id=ent.getType(); if(id==EntityType.SPIDER||id==EntityType.CAVE_SPIDER||id==EntityType.SILVERFISH||id==EntityType.ENDERMITE||id==EntityType.BEE) { - damageScore += Utils.GetEnchantLevel(Enchantments.BANE_OF_ARTHROPODS, item) * 3; + damageScore += EnchantmentHelper.getLevel(Enchantments.BANE_OF_ARTHROPODS, item) * 3; } //亡灵杀手(这伤害通常更高) - if(ent.getType().isIn(EntityTypeTags.UNDEAD)){ - damageScore+=Utils.GetEnchantLevel(Enchantments.SMITE,item)*3;// 3倍 + if(((LivingEntity)ent).getGroup()==EntityGroup.UNDEAD){ + damageScore+=EnchantmentHelper.getLevel(Enchantments.SMITE,item)*3;// 3倍 } //锋利加分 - damageScore += Utils.GetEnchantLevel(Enchantments.SHARPNESS, item) * 2; + damageScore += EnchantmentHelper.getLevel(Enchantments.SHARPNESS, item) * 2; //精修 - damageScore += Utils.GetEnchantLevel(Enchantments.MENDING, item); + damageScore += EnchantmentHelper.getLevel(Enchantments.MENDING, item); //火焰附加 - damageScore += Utils.GetEnchantLevel(Enchantments.FIRE_ASPECT, item); + damageScore += EnchantmentHelper.getLevel(Enchantments.FIRE_ASPECT, item); //击退 - damageScore += Utils.GetEnchantLevel(Enchantments.KNOCKBACK, item); + damageScore += EnchantmentHelper.getLevel(Enchantments.KNOCKBACK, item); return damageScore; } //停用低耐久度 @@ -258,6 +257,6 @@ public class CAutoToolCommand { item == Items.IRON_AXE || item == Items.IRON_SHOVEL || item == Items.IRON_HOE; return !(isWooden||isStone||isIron) //忽略木/石/铁工具 - &&(itemStack.getMaxDamage() - itemStack.getDamage()) < (itemStack.getMaxDamage() * 10 / 100); + &&(itemStack.getMaxDamage() - itemStack.getDamage()) < (itemStack.getMaxDamage() * 2 / 100); } } diff --git a/src/main/java/com/expvintl/mctools/commands/CFullbirghtCommand.java b/src/main/java/com/expvintl/mctools/commands/CFullbirghtCommand.java index fafcc80..3f70ad5 100644 --- a/src/main/java/com/expvintl/mctools/commands/CFullbirghtCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CFullbirghtCommand.java @@ -9,14 +9,14 @@ import net.minecraft.text.Text; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; -public class CFullbirghtCommand{ - public static void register(CommandDispatcher dispatcher){ +public class CFullbirghtCommand { + public static void register(CommandDispatcher dispatcher) { dispatcher.register(literal("cfullbirght").executes(CFullbirghtCommand::execute)); } private static int execute(CommandContext context) { - ((SimpleOptionAccessor)(Object)context.getSource().getClient().options.getGamma()).forceSetValue(32767.0); - context.getSource().getPlayer().sendMessage(Text.literal("已应用高亮"),false); + ((SimpleOptionAccessor) (Object) context.getSource().getClient().options.getGamma()).forceSetValue(32767.0); + context.getSource().getPlayer().sendMessage(Text.literal("已应用高亮"), false); return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/mixin/client/GameRendererMixin.java b/src/main/java/com/expvintl/mctools/mixin/client/GameRendererMixin.java index fa2a18d..cc9b05d 100644 --- a/src/main/java/com/expvintl/mctools/mixin/client/GameRendererMixin.java +++ b/src/main/java/com/expvintl/mctools/mixin/client/GameRendererMixin.java @@ -1,19 +1,15 @@ package com.expvintl.mctools.mixin.client; import com.expvintl.mctools.modules.CameraZoom; -import com.expvintl.mctools.utils.Utils; import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GameRenderer; -import net.minecraft.util.math.MathHelper; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyVariable; @Mixin(GameRenderer.class) public class GameRendererMixin { @ModifyReturnValue(method = "getFov",at=@At("RETURN")) - private float getFov(float origin){ - return CameraZoom.INSTANCE.isZoom?20.f:origin; + private double getFov(double original){ + return CameraZoom.INSTANCE.isZoom?20.f:original; } } diff --git a/src/main/java/com/expvintl/mctools/texthud/MCInfo.java b/src/main/java/com/expvintl/mctools/texthud/MCInfo.java index aebe964..8aea33a 100644 --- a/src/main/java/com/expvintl/mctools/texthud/MCInfo.java +++ b/src/main/java/com/expvintl/mctools/texthud/MCInfo.java @@ -44,10 +44,10 @@ public class MCInfo { return timeString.toString(); } - public static void drawHUD(DrawContext drawContext, RenderTickCounter v) { + public static void drawHUD(DrawContext drawContext, float v) { MinecraftClient mc=MinecraftClient.getInstance(); //跳过调试 - if(mc.getDebugHud().shouldShowDebugHud()||mc.options.hudHidden) return; + if(mc.options.debugEnabled||mc.options.hudHidden) return; if(mc.world!=null&&mc.player!=null) { DrawUtils.leftTextY =1; int selfPing=0; diff --git a/src/main/java/com/expvintl/mctools/texthud/PotionInfo.java b/src/main/java/com/expvintl/mctools/texthud/PotionInfo.java index 295ba93..da57efc 100644 --- a/src/main/java/com/expvintl/mctools/texthud/PotionInfo.java +++ b/src/main/java/com/expvintl/mctools/texthud/PotionInfo.java @@ -11,10 +11,10 @@ import net.minecraft.util.Colors; import java.util.Collection; public class PotionInfo { - public static void drawHUD(DrawContext drawContext, RenderTickCounter v) { + public static void drawHUD(DrawContext drawContext, float v) { MinecraftClient mc=MinecraftClient.getInstance(); //跳过调试 - if(mc.getDebugHud().shouldShowDebugHud()||mc.options.hudHidden) return; + if(mc.options.debugEnabled||mc.options.hudHidden) return; if(mc.world!=null&&mc.player!=null) { DrawUtils.rightBottomY=1; diff --git a/src/main/java/com/expvintl/mctools/utils/Utils.java b/src/main/java/com/expvintl/mctools/utils/Utils.java index 67adb04..a036979 100644 --- a/src/main/java/com/expvintl/mctools/utils/Utils.java +++ b/src/main/java/com/expvintl/mctools/utils/Utils.java @@ -44,7 +44,7 @@ public class Utils { public static String getCurrentDimensionName() { if (mc.world != null) { - String dismenName = mc.world.getDimensionEntry().getIdAsString(); + String dismenName = mc.world.getDimensionKey().getValue().toString(); switch (dismenName) { case "minecraft:overworld": return "主世界"; @@ -199,18 +199,6 @@ public class Utils { return "未知"; } - public static int GetEnchantLevel(RegistryKey enchantName, ItemStack item){ - //跳过附魔书 - if(item.getItem()== Items.ENCHANTED_BOOK) return 0; - Set>> enchants=item.getEnchantments().getEnchantmentEntries(); - for(Object2IntMap.Entry> entry:enchants){ - //返回找到的附魔等级 - if(entry.getKey().matchesKey(enchantName)) { - return entry.getIntValue(); - } - } - return 0; - } public static void rightClick() { ((MinecraftClientAccessor) mc).doItemUse(); } @@ -245,7 +233,7 @@ public class Utils { if(sender==null) return; PlayerListEntry entry = mc.getNetworkHandler().getPlayerListEntry(sender.getId()); if (entry == null) return; - PlayerSkinDrawer.draw(draw,entry.getSkinTextures(),0,y,8); + PlayerSkinDrawer.draw(draw,entry.getSkinTexture(),0,y,8); draw.getMatrices().translate(10, 0, 0); } public static GameProfile getChatSender(String text){ diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 57a2132..0958473 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -21,6 +21,6 @@ "depends": { "fabricloader": ">=0.8.0", "fabric": "*", - "minecraft": "~1.21" + "minecraft": "~1.20.1" } } diff --git a/src/main/resources/mctools.mixins.json b/src/main/resources/mctools.mixins.json index 64d6a6b..1b8ddd6 100644 --- a/src/main/resources/mctools.mixins.json +++ b/src/main/resources/mctools.mixins.json @@ -2,7 +2,7 @@ "required": true, "minVersion": "0.8", "package": "com.expvintl.mctools.mixin", - "compatibilityLevel": "JAVA_21", + "compatibilityLevel": "JAVA_17", "mixins": [ "hud.ChatHudMixin", "hud.PlayerListHudMixin",