From e4b2ca67d74e8b7671017bea4ed2af57d3e05fbc Mon Sep 17 00:00:00 2001 From: expvintl <16302731+expvintl@users.noreply.github.com> Date: Mon, 2 Sep 2024 02:22:46 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9ci=E5=90=8D=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflows/{ci_build_1.21.yml => ci_build.yml} | 0 .idea/runConfigurations/Minecraft_Server.xml | 2 +- .../mctools/commands/CAutoToolCommand.java | 14 +++++++++----- 3 files changed, 10 insertions(+), 6 deletions(-) rename .github/workflows/{ci_build_1.21.yml => ci_build.yml} (100%) diff --git a/.github/workflows/ci_build_1.21.yml b/.github/workflows/ci_build.yml similarity index 100% rename from .github/workflows/ci_build_1.21.yml rename to .github/workflows/ci_build.yml diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml index aff153d..c1b3bf6 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/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index 97b4bfc..3e6deb4 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -19,6 +19,7 @@ import net.minecraft.block.BambooShootBlock; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; import net.minecraft.component.DataComponentTypes; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; @@ -66,7 +67,7 @@ public class CAutoToolCommand { float bestScore=-1; int slot=-1; for(int i=0;i<9;i++) { - float score=getWeaponScore(event.player,event.target,i); + float score=getWeaponScore(event.player,i); if(score<0) continue; //选出最好分数的工具 if(score>bestScore){ @@ -135,13 +136,16 @@ public class CAutoToolCommand { score+=Utils.GetEnchantLevel(Enchantments.EFFICIENCY,item); //经验修补 score+=Utils.GetEnchantLevel(Enchantments.MENDING,item); - if (item.getItem() instanceof SwordItem item1 && (state.getBlock() instanceof BambooBlock|| state.getBlock() instanceof BambooShootBlock)) - //根据挖掘等级加分 - score += 90 + (item1.getComponents().get(DataComponentTypes.TOOL).getSpeed(state) * 10); + if (item.getItem() instanceof SwordItem item1 && (state.getBlock() instanceof BambooBlock|| state.getBlock() instanceof BambooShootBlock)) { + if((item1.getComponents().get(DataComponentTypes.TOOL)!=null)){ + //根据挖掘等级加分 + score += 90 + (item1.getComponents().get(DataComponentTypes.TOOL).getSpeed(state) * 10); + } + } } return score; } - public float getWeaponScore(PlayerEntity player,Entity target,int slot) { + public float getWeaponScore(PlayerEntity player,int slot) { float damageScore = 0; ItemStack item = player.getInventory().getStack(slot); //剑优先 From 2b9d2b60cf4a1ea0191330f299c2b08581eba84b Mon Sep 17 00:00:00 2001 From: expvintl Date: Tue, 8 Apr 2025 16:26:11 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=B01.21.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci_build.yml | 2 +- .idea/compiler.xml | 2 +- .idea/misc.xml | 3 +- .idea/modules.xml | 6 --- .idea/runConfigurations/Minecraft_Server.xml | 2 +- gradle.properties | 8 ++-- .../mctools/commands/CAutoFishCommand.java | 4 +- .../mctools/commands/CAutoRespawnCommand.java | 4 +- .../mctools/commands/CAutoToolCommand.java | 47 ++++++++++++------- .../mctools/commands/CFastDropCommand.java | 22 ++++----- .../mctools/commands/CFullbirghtCommand.java | 2 +- .../commands/CNoFallPacketCommand.java | 6 +-- .../commands/CQServerPluginsCommand.java | 2 +- .../mctools/commands/CSafeWalkCommand.java | 4 +- .../mctools/mixin/hud/ChatHudMixin.java | 4 -- .../com/expvintl/mctools/texthud/MCInfo.java | 6 ++- .../expvintl/mctools/utils/CommandUtils.java | 2 +- .../com/expvintl/mctools/utils/Utils.java | 8 ++-- 18 files changed, 69 insertions(+), 65 deletions(-) diff --git a/.github/workflows/ci_build.yml b/.github/workflows/ci_build.yml index 5068440..1fe3acb 100644 --- a/.github/workflows/ci_build.yml +++ b/.github/workflows/ci_build.yml @@ -1,4 +1,4 @@ -name: Build1.21 +name: Build on: push diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b589d56..b86273d 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 9d0bbd3..031d9d3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,6 @@ - - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 55c33c0..3b1026f 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,14 +2,8 @@ - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml index c1b3bf6..5870600 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 0168541..ae3a4c1 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 - yarn_mappings=1.21+build.9 - loader_version=0.16.0 + minecraft_version=1.21.5 + yarn_mappings=1.21.5+build.1 + loader_version=0.16.12 #Fabric api - fabric_version=0.100.8+1.21 + fabric_version=0.119.9+1.21.5 # Mod Properties mod_version = 1.0 diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java index e739b8c..bfdbe83 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java @@ -30,9 +30,9 @@ public class CAutoFishCommand { private static int execute(CommandContext context) { Globals.autoFish.set(context.getArgument("开关", Boolean.class)); if(Globals.autoFish.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用自动钓鱼!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用自动钓鱼!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动钓鱼!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动钓鱼!"),false); } return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java index 0254dff..57c7851 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java @@ -28,9 +28,9 @@ public class CAutoRespawnCommand { private static int execute(CommandContext context) { Globals.autoRespawn.set(context.getArgument("开关", Boolean.class)); if(Globals.autoRespawn.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用自动重生!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用自动重生!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动重生!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动重生!"),false); } return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index 3e6deb4..1537e2e 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -26,6 +26,8 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.*; import net.minecraft.text.Text; +import java.awt.*; + import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; @@ -41,9 +43,9 @@ public class CAutoToolCommand { private static int execute(CommandContext context) { Globals.autoTool.set(context.getArgument("开关", Boolean.class)); if(Globals.autoTool.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用智能工具!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用智能工具!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用智能工具!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用智能工具!"),false); } return Command.SINGLE_SUCCESS; } @@ -52,11 +54,12 @@ public class CAutoToolCommand { if(!Globals.autoTool.get()) return; MinecraftClient mc=MinecraftClient.getInstance(); if (mc.world == null||mc.player==null) return; - if (lastSlot!=-1){ - //破坏方块后切换回去 - mc.player.getInventory().selectedSlot=lastSlot; - lastSlot=-1; - } + //TODO: 因bug禁用 +// if (lastSlot!=-1){ +// //破坏方块后切换回去 +// mc.player.getInventory().setSelectedSlot(lastSlot); +// lastSlot=-1; +// } } @Subscribe private void onAttackEntity(PlayerAttackEntityEvent event){ @@ -80,7 +83,7 @@ public class CAutoToolCommand { //低耐久测试 if(!lowDurability(currentItem)) { //切换过去 - event.player.getInventory().selectedSlot = slot; + event.player.getInventory().setSelectedSlot(slot); MinecraftClient mc=MinecraftClient.getInstance(); if(mc.interactionManager!=null) { ((ClientPlayerInteractionManagerAccessor) mc.interactionManager).syncSelectedSlot(); @@ -116,17 +119,27 @@ public class CAutoToolCommand { //确定已经选择好了工具就切换 if(!lowDurability(currentItem)) { //记住上一次的槽方便恢复 - lastSlot=mc.player.getInventory().selectedSlot; + lastSlot=mc.player.getInventory().getSelectedSlot(); //切换过去 - mc.player.getInventory().selectedSlot = slot; + mc.player.getInventory().setSelectedSlot(slot); if(mc.interactionManager!=null) { ((ClientPlayerInteractionManagerAccessor) mc.interactionManager).syncSelectedSlot(); } } } + public boolean isSwordItem(Item item){ + return item==Items.STONE_SWORD||item==Items.DIAMOND_SWORD||item==Items.GOLDEN_SWORD||item==Items.IRON_SWORD||item==Items.NETHERITE_SWORD||item==Items.WOODEN_SWORD; + } + public boolean isToolItem(Item item){ + return item == Items.WOODEN_PICKAXE || item == Items.STONE_PICKAXE || item == Items.IRON_PICKAXE || item == Items.GOLDEN_PICKAXE || item == Items.DIAMOND_PICKAXE || item == Items.NETHERITE_PICKAXE + || item == Items.WOODEN_AXE || item == Items.STONE_AXE || item == Items.IRON_AXE || item == Items.GOLDEN_AXE || item == Items.DIAMOND_AXE || item == Items.NETHERITE_AXE + || item == Items.WOODEN_SHOVEL || item == Items.STONE_SHOVEL || item == Items.IRON_SHOVEL || item == Items.GOLDEN_SHOVEL || item == Items.DIAMOND_SHOVEL || item == Items.NETHERITE_SHOVEL + || item == Items.WOODEN_HOE || item == Items.STONE_HOE || item == Items.IRON_HOE || item == Items.GOLDEN_HOE || item == Items.DIAMOND_HOE || item == Items.NETHERITE_HOE + || item == Items.WOODEN_SWORD || item == Items.STONE_SWORD || item == Items.IRON_SWORD || item == Items.GOLDEN_SWORD || item == Items.DIAMOND_SWORD || item == Items.NETHERITE_SWORD; + } public float getToolsScore(ItemStack item, BlockState state){ float score=0; - if(item.getItem() instanceof ToolItem || item.getItem() instanceof ShearsItem){ + if(isToolItem(item.getItem())||item.getItem() instanceof ShearsItem){ //根据挖掘速度提升评分 score+=item.getMiningSpeedMultiplier(state)*30; //附魔加分 @@ -136,10 +149,10 @@ public class CAutoToolCommand { score+=Utils.GetEnchantLevel(Enchantments.EFFICIENCY,item); //经验修补 score+=Utils.GetEnchantLevel(Enchantments.MENDING,item); - if (item.getItem() instanceof SwordItem item1 && (state.getBlock() instanceof BambooBlock|| state.getBlock() instanceof BambooShootBlock)) { - if((item1.getComponents().get(DataComponentTypes.TOOL)!=null)){ + if (isSwordItem(item.getItem()) && (state.getBlock() instanceof BambooBlock|| state.getBlock() instanceof BambooShootBlock)) { + if((item.getItem().getComponents().get(DataComponentTypes.TOOL)!=null)){ //根据挖掘等级加分 - score += 90 + (item1.getComponents().get(DataComponentTypes.TOOL).getSpeed(state) * 10); + score += 90 + (item.getItem().getComponents().get(DataComponentTypes.TOOL).getSpeed(state) * 10); } } } @@ -149,10 +162,10 @@ public class CAutoToolCommand { float damageScore = 0; ItemStack item = player.getInventory().getStack(slot); //剑优先 - if(item.getItem() instanceof SwordItem) damageScore+=10; + if(isSwordItem(item.getItem())) damageScore+=10; //使用所有工具组 - if (item.getItem() instanceof ToolItem tool) { - damageScore += tool.getMaterial().getAttackDamage(); + if (isToolItem(item.getItem())) { + damageScore += item.getDamage(); //锋利加分 damageScore += Utils.GetEnchantLevel(Enchantments.SHARPNESS, item) * 2; //精修 diff --git a/src/main/java/com/expvintl/mctools/commands/CFastDropCommand.java b/src/main/java/com/expvintl/mctools/commands/CFastDropCommand.java index b7b6d77..149dc38 100644 --- a/src/main/java/com/expvintl/mctools/commands/CFastDropCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CFastDropCommand.java @@ -36,12 +36,12 @@ public class CFastDropCommand { for(Item i:trashItem){ sb.append(i.getName().getString()).append(","); } - context.getSource().getPlayer().sendMessage(Text.literal(sb.toString())); + context.getSource().getPlayer().sendMessage(Text.literal(sb.toString()),false); return Command.SINGLE_SUCCESS; })))); dispatcher.register(literal("cfastdrop").then(literal("clear").executes((context -> { trashItem.clear(); - context.getSource().getPlayer().sendMessage(Text.literal("已清除全部物品!")); + context.getSource().getPlayer().sendMessage(Text.literal("已清除全部物品!"),false); return Command.SINGLE_SUCCESS; })))); dispatcher.register(literal("cfastdrop").then(literal("del").then(argument("物品", ItemStackArgumentType.itemStack(access)).suggests(((context, builder) -> suggestItems(builder))).executes(cmd->{ @@ -49,12 +49,12 @@ public class CFastDropCommand { if (item != Items.AIR) { // 确保找到的物品是有效的 if (trashItem.contains(item)) { trashItem.remove(item); - cmd.getSource().getPlayer().sendMessage(Text.literal("已移除 " + item.getName().getString())); + cmd.getSource().getPlayer().sendMessage(Text.literal("已移除 " + item.getName().getString()),false); }else{ - cmd.getSource().getPlayer().sendMessage(Text.literal("没有找到 " + item.getName().getString())); + cmd.getSource().getPlayer().sendMessage(Text.literal("没有找到 " + item.getName().getString()),false); } }else{ - cmd.getSource().getPlayer().sendMessage(Text.literal("无效物品!")); + cmd.getSource().getPlayer().sendMessage(Text.literal("无效物品!"),false); return 0; } return Command.SINGLE_SUCCESS; @@ -63,13 +63,13 @@ public class CFastDropCommand { Item item=ItemStackArgumentType.getItemStackArgument(cmd,"物品").getItem(); if (item != Items.AIR) { // 确保找到的物品是有效的 if(trashItem.contains(item)){ - cmd.getSource().getPlayer().sendMessage(Text.literal( item.getName().getString() + " 已存在!")); + cmd.getSource().getPlayer().sendMessage(Text.literal( item.getName().getString() + " 已存在!"),false); }else { trashItem.add(item); - cmd.getSource().getPlayer().sendMessage(Text.literal("已添加 " + item.getName().getString() + " 到垃圾物品列表")); + cmd.getSource().getPlayer().sendMessage(Text.literal("已添加 " + item.getName().getString() + " 到垃圾物品列表"),false); } }else{ - cmd.getSource().getPlayer().sendMessage(Text.literal("无效物品!")); + cmd.getSource().getPlayer().sendMessage(Text.literal("无效物品!"),false); return 0; } return Command.SINGLE_SUCCESS; @@ -104,15 +104,15 @@ public class CFastDropCommand { return 0; } PlayerInventory inv=player.getInventory(); - for(int i=0;i context) { ((SimpleOptionAccessor)(Object)context.getSource().getClient().options.getGamma()).forceSetValue(32767.0); - context.getSource().getPlayer().sendMessage(Text.literal("已应用高亮")); + context.getSource().getPlayer().sendMessage(Text.literal("已应用高亮"),false); return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java b/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java index 5db3383..1c0e539 100644 --- a/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java @@ -31,9 +31,9 @@ public class CNoFallPacketCommand { private static int execute(CommandContext context) { Globals.noFallPacket.set(context.getArgument("开关", Boolean.class)); if(Globals.noFallPacket.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用摔落伤害!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用摔落伤害!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用摔落伤害!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用摔落伤害!"),false); } return Command.SINGLE_SUCCESS; } @@ -43,7 +43,7 @@ public class CNoFallPacketCommand { if(!(event.packet instanceof PlayerMoveC2SPacket)) return; //跳过创造 if(Globals.noFallPacket.get()&& !mc.player.getAbilities().creativeMode){ - if(mc.player.isFallFlying()) return; + if(mc.player.fallDistance<=mc.player.getSafeFallDistance()) return; if(mc.player.getVelocity().y> -0.5) return; //直接发送在地面的数据包来免伤 ((PlayerMoveC2SPacketAccessor)event.packet).setOnGround(true); diff --git a/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java b/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java index 7eda4a0..2a9fd15 100644 --- a/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java @@ -52,7 +52,7 @@ public class CQServerPluginsCommand { buf.append('[').append(s.getText()).append(']').append(' '); } if(MinecraftClient.getInstance().player!=null){ - MinecraftClient.getInstance().player.sendMessage(Text.literal(buf.toString())); + MinecraftClient.getInstance().player.sendMessage(Text.literal(buf.toString()),false); } Globals.checkBukkitPlugins.set(false); //取消事件注册 diff --git a/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java b/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java index 12adaed..2a0b098 100644 --- a/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java @@ -22,9 +22,9 @@ public class CSafeWalkCommand { private static int execute(CommandContext context) { Globals.selfWalk.set(context.getArgument("开关", Boolean.class)); if(Globals.selfWalk.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用自动挂边!")); + context.getSource().getPlayer().sendMessage(Text.literal("已启用自动挂边!"),false); }else{ - context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动挂边!")); + context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动挂边!"),false); } return Command.SINGLE_SUCCESS; } diff --git a/src/main/java/com/expvintl/mctools/mixin/hud/ChatHudMixin.java b/src/main/java/com/expvintl/mctools/mixin/hud/ChatHudMixin.java index d3f0f00..5992823 100644 --- a/src/main/java/com/expvintl/mctools/mixin/hud/ChatHudMixin.java +++ b/src/main/java/com/expvintl/mctools/mixin/hud/ChatHudMixin.java @@ -17,11 +17,7 @@ import org.spongepowered.asm.mixin.injection.ModifyVariable; public class ChatHudMixin { @ModifyReceiver(method = "render",at=@At(value = "INVOKE",target = "Lnet/minecraft/client/gui/DrawContext;drawTextWithShadow(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/OrderedText;III)I")) private DrawContext onRenderDrawTextWithShadow(DrawContext context, TextRenderer renderer, OrderedText text, int x, int y, int color, @Local ChatHudLine.Visible line){ - RenderSystem.enableBlend(); - RenderSystem.setShaderColor(1,1,1,((color >> 24) & 0x000000FF)/255f); Utils.DrawHeadIcon(context,line,y); - RenderSystem.setShaderColor(1,1,1,1); - RenderSystem.disableBlend(); return context; } } diff --git a/src/main/java/com/expvintl/mctools/texthud/MCInfo.java b/src/main/java/com/expvintl/mctools/texthud/MCInfo.java index d42e96c..8d85f3c 100644 --- a/src/main/java/com/expvintl/mctools/texthud/MCInfo.java +++ b/src/main/java/com/expvintl/mctools/texthud/MCInfo.java @@ -11,6 +11,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.Colors; import net.minecraft.util.math.Vec3d; +import java.util.Objects; + public class MCInfo { private static String gameDayToRealTimeFormat(long gameDays) { // 游戏 1 小时等于 20 分钟 @@ -69,8 +71,8 @@ public class MCInfo { DrawUtils.AddLeftText(drawContext,String.format("世界时间: %d天 (%s)",mc.world.getTimeOfDay()/24000,gameDayToRealTimeFormat(mc.world.getTimeOfDay()/24000))); DrawUtils.AddLeftText(drawContext,String.format("当前区块: [%d,%d]",mc.player.getChunkPos().x,mc.player.getChunkPos().z)); DrawUtils.AddLeftText(drawContext,String.format("本地难度:%.2f",mc.world.getLocalDifficulty(mc.player.getBlockPos()).getLocalDifficulty())); - ItemStack currentItem=p.getInventory().getMainHandStack(); - if(currentItem!=null&¤tItem.isDamageable()){ + ItemStack currentItem=p.getMainHandStack(); + if(Objects.nonNull(currentItem)&¤tItem.isDamageable()){ DrawUtils.AddLeftText(drawContext,String.format("耐久度:%d/%d",currentItem.getMaxDamage()-currentItem.getDamage(),currentItem.getMaxDamage())); } } diff --git a/src/main/java/com/expvintl/mctools/utils/CommandUtils.java b/src/main/java/com/expvintl/mctools/utils/CommandUtils.java index 5586ead..7848892 100644 --- a/src/main/java/com/expvintl/mctools/utils/CommandUtils.java +++ b/src/main/java/com/expvintl/mctools/utils/CommandUtils.java @@ -9,7 +9,7 @@ import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.lit public class CommandUtils { public static void CreateStatusCommand(String cmd, Setting toggle, CommandDispatcher dispatcher){ dispatcher.register(literal(cmd).executes((context -> { - context.getSource().getPlayer().sendMessage(Text.literal("当前启用状态: "+toggle.get())); + context.getSource().getPlayer().sendMessage(Text.literal("当前启用状态: "+toggle.get()),false); return Command.SINGLE_SUCCESS; }))); } diff --git a/src/main/java/com/expvintl/mctools/utils/Utils.java b/src/main/java/com/expvintl/mctools/utils/Utils.java index 3895071..d33f2ab 100644 --- a/src/main/java/com/expvintl/mctools/utils/Utils.java +++ b/src/main/java/com/expvintl/mctools/utils/Utils.java @@ -11,6 +11,7 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.hud.ChatHudLine; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.render.RenderLayer; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.Enchantments; import net.minecraft.item.ItemStack; @@ -30,6 +31,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.Timer; +import java.util.function.Function; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -220,7 +222,7 @@ public class Utils { for (int z = (int) -pos.z; z < (pos.z + radius); z++) { BlockState b = mc.world.getBlockState(new BlockPos(x, hight, z)); if (b.getBlock().asItem().getName().getString().equals(itemName)) { - mc.player.sendMessage(Text.literal(String.format("找到方块:%d,%d,%d", x, hight, z))); + mc.player.sendMessage(Text.literal(String.format("找到方块:%d,%d,%d", x, hight, z)),false); } } } @@ -244,9 +246,7 @@ public class Utils { if (entry == null) return; Identifier skin = entry.getSkinTextures().texture(); - - draw.drawTexture(skin, 0, y, 8, 8, 8, 8, 8, 8, 64, 64); - draw.drawTexture(skin, 0, y, 8, 8, 40, 8, 8, 8, 64, 64); + draw.drawTexture(RenderLayer::getGuiTextured, skin,0, y, 8, 8, 8, 8, 8, 8, 64, 64); draw.getMatrices().translate(10, 0, 0); } public static GameProfile getChatSender(String text){ From 987edc2250a0094c75fe80f1cc5d95929f2d0584 Mon Sep 17 00:00:00 2001 From: expvintl Date: Wed, 9 Apr 2025 01:14:45 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=B7=BB=E5=8A=A0C=E9=94=AE=E6=94=BE?= =?UTF-8?q?=E5=A4=A7=EF=BC=8C=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=8A=A8=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/expvintl/mctools/MCToolsClient.java | 2 + .../mctools/commands/CAutoToolCommand.java | 81 +++++++++++-------- .../mixin/client/GameRendererMixin.java | 19 +++++ .../expvintl/mctools/modules/CameraZoom.java | 20 +++++ src/main/resources/mctools.mixins.json | 1 + 5 files changed, 90 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/expvintl/mctools/mixin/client/GameRendererMixin.java create mode 100644 src/main/java/com/expvintl/mctools/modules/CameraZoom.java diff --git a/src/main/java/com/expvintl/mctools/MCToolsClient.java b/src/main/java/com/expvintl/mctools/MCToolsClient.java index bc646f7..e4ac53a 100644 --- a/src/main/java/com/expvintl/mctools/MCToolsClient.java +++ b/src/main/java/com/expvintl/mctools/MCToolsClient.java @@ -2,6 +2,7 @@ package com.expvintl.mctools; import com.expvintl.mctools.commands.*; import com.expvintl.mctools.modules.BetterTooltip; +import com.expvintl.mctools.modules.CameraZoom; import com.expvintl.mctools.modules.PlayerListTextLatency; import com.expvintl.mctools.texthud.MCInfo; import com.expvintl.mctools.texthud.PotionInfo; @@ -34,6 +35,7 @@ public class MCToolsClient implements ClientModInitializer { public void InitModules(){ BetterTooltip.INSTANCE.init(); PlayerListTextLatency.INSTANCE.init(); + CameraZoom.INSTANCE.init(); } private static void registerCommands(CommandDispatcher dispatcher, CommandRegistryAccess registryAccess) { diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index 1537e2e..288dcd2 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -19,21 +19,24 @@ import net.minecraft.block.BambooShootBlock; import net.minecraft.block.BlockState; 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.Entity; -import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.entity.attribute.EntityAttributeModifier; +import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.item.*; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.text.Text; -import java.awt.*; +import java.util.function.BiConsumer; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; public class CAutoToolCommand { private static final CAutoToolCommand INSTANCE=new CAutoToolCommand(); - private int lastSlot=-1; public static void register(CommandDispatcher dispatcher){ MCEventBus.INSTANCE.register(INSTANCE); CommandUtils.CreateStatusCommand("cautotool",Globals.autoTool,dispatcher); @@ -49,17 +52,12 @@ public class CAutoToolCommand { } return Command.SINGLE_SUCCESS; } + @Subscribe private void onBreakBlock(PlayerBreakBlockEvent event){ if(!Globals.autoTool.get()) return; MinecraftClient mc=MinecraftClient.getInstance(); if (mc.world == null||mc.player==null) return; - //TODO: 因bug禁用 -// if (lastSlot!=-1){ -// //破坏方块后切换回去 -// mc.player.getInventory().setSelectedSlot(lastSlot); -// lastSlot=-1; -// } } @Subscribe private void onAttackEntity(PlayerAttackEntityEvent event){ @@ -70,8 +68,10 @@ public class CAutoToolCommand { float bestScore=-1; int slot=-1; for(int i=0;i<9;i++) { - float score=getWeaponScore(event.player,i); - if(score<0) continue; + ItemStack item = event.player.getInventory().getStack(i); + if(!isSwordItem(item.getItem())&&!isToolItem(item.getItem())) continue; + float score=getWeaponScore(item); + if(score<=0) continue; //选出最好分数的工具 if(score>bestScore){ bestScore=score; @@ -81,7 +81,7 @@ public class CAutoToolCommand { if(slot==-1) return; ItemStack currentItem = event.player.getInventory().getStack(slot); //低耐久测试 - if(!lowDurability(currentItem)) { + if(!isLowDurability(currentItem)) { //切换过去 event.player.getInventory().setSelectedSlot(slot); MinecraftClient mc=MinecraftClient.getInstance(); @@ -90,6 +90,7 @@ public class CAutoToolCommand { } } } + //方块挖掘 @Subscribe private void onAttackBlock(PlayerAttackBlockEvent event){ if(!Globals.autoTool.get()) return; @@ -117,9 +118,7 @@ public class CAutoToolCommand { if(slot==-1) return; ItemStack currentItem = mc.player.getInventory().getStack(slot); //确定已经选择好了工具就切换 - if(!lowDurability(currentItem)) { - //记住上一次的槽方便恢复 - lastSlot=mc.player.getInventory().getSelectedSlot(); + if(!isLowDurability(currentItem)) { //切换过去 mc.player.getInventory().setSelectedSlot(slot); if(mc.interactionManager!=null) { @@ -158,27 +157,43 @@ public class CAutoToolCommand { } return score; } - public float getWeaponScore(PlayerEntity player,int slot) { + public float getWeaponScore(ItemStack item) { float damageScore = 0; - ItemStack item = player.getInventory().getStack(slot); //剑优先 - if(isSwordItem(item.getItem())) damageScore+=10; - //使用所有工具组 - if (isToolItem(item.getItem())) { - damageScore += item.getDamage(); - //锋利加分 - damageScore += Utils.GetEnchantLevel(Enchantments.SHARPNESS, item) * 2; - //精修 - damageScore+=Utils.GetEnchantLevel(Enchantments.MENDING,item); - //火焰附加 - damageScore+=Utils.GetEnchantLevel(Enchantments.FIRE_ASPECT,item)*3; - //击退 - damageScore+=Utils.GetEnchantLevel(Enchantments.KNOCKBACK,item)*2; - } + 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(); + } + }; + comp.applyModifiers(EquipmentSlot.MAINHAND,baseDamage); + damageScore+=damageHolder[0]; + //锋利加分 + damageScore += Utils.GetEnchantLevel(Enchantments.SHARPNESS, item) * 2; + //精修 + damageScore += Utils.GetEnchantLevel(Enchantments.MENDING, item); + //火焰附加 + damageScore += Utils.GetEnchantLevel(Enchantments.FIRE_ASPECT, item) * 3; + //击退 + damageScore += Utils.GetEnchantLevel(Enchantments.KNOCKBACK, item) * 2; return damageScore; } //停用低耐久度 - private boolean lowDurability(ItemStack itemStack) { - return (itemStack.getMaxDamage() - itemStack.getDamage()) < (itemStack.getMaxDamage() * 10 / 100); + private boolean isLowDurability(ItemStack itemStack) { + Item item = itemStack.getItem(); + boolean isWooden = item == Items.WOODEN_SWORD || item == Items.WOODEN_PICKAXE || + item == Items.WOODEN_AXE || item == Items.WOODEN_SHOVEL || + item == Items.WOODEN_HOE; + boolean isStone = item == Items.STONE_SWORD || item == Items.STONE_PICKAXE || + item == Items.STONE_AXE || item == Items.STONE_SHOVEL || + item == Items.STONE_HOE; + boolean isIron = item == Items.IRON_SWORD || item == Items.IRON_PICKAXE || + item == Items.IRON_AXE || item == Items.IRON_SHOVEL || + item == Items.IRON_HOE; + return !(isWooden||isStone||isIron) //忽略木/石/铁工具 + &&(itemStack.getMaxDamage() - itemStack.getDamage()) < (itemStack.getMaxDamage() * 10 / 100); } } diff --git a/src/main/java/com/expvintl/mctools/mixin/client/GameRendererMixin.java b/src/main/java/com/expvintl/mctools/mixin/client/GameRendererMixin.java new file mode 100644 index 0000000..fa2a18d --- /dev/null +++ b/src/main/java/com/expvintl/mctools/mixin/client/GameRendererMixin.java @@ -0,0 +1,19 @@ +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; + } +} diff --git a/src/main/java/com/expvintl/mctools/modules/CameraZoom.java b/src/main/java/com/expvintl/mctools/modules/CameraZoom.java new file mode 100644 index 0000000..60756f9 --- /dev/null +++ b/src/main/java/com/expvintl/mctools/modules/CameraZoom.java @@ -0,0 +1,20 @@ +package com.expvintl.mctools.modules; + +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.util.InputUtil; +import org.lwjgl.glfw.GLFW; + +public class CameraZoom { + public static CameraZoom INSTANCE=new CameraZoom(); + public boolean isZoom=false; + public void init(){ + KeyBinding zoom= KeyBindingHelper.registerKeyBinding(new KeyBinding("镜头放大", InputUtil.Type.KEYSYM, GLFW.GLFW_KEY_C,"MyTools")); + ClientTickEvents.END_CLIENT_TICK.register(client -> { + isZoom=zoom.isPressed(); + }); + } + +} diff --git a/src/main/resources/mctools.mixins.json b/src/main/resources/mctools.mixins.json index e0a2256..64d6a6b 100644 --- a/src/main/resources/mctools.mixins.json +++ b/src/main/resources/mctools.mixins.json @@ -14,6 +14,7 @@ "client": [ "MinecraftClientMixin", "SoundSystemMixin", + "client.GameRendererMixin", "interfaces.ClientPlayerInteractionManagerAccessor", "interfaces.MinecraftClientAccessor", "interfaces.SimpleOptionAccessor", From f68046edaee3a5f49d828a9e5154b63fd82e979d Mon Sep 17 00:00:00 2001 From: expvintl Date: Thu, 10 Apr 2025 17:22:53 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=AF=B9=E4=BA=A1=E7=81=B5=E5=92=8C?= =?UTF-8?q?=E8=8A=82=E8=82=A2=E6=B7=BB=E5=8A=A0=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mctools/commands/CAutoToolCommand.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index 288dcd2..5b4f564 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -20,14 +20,15 @@ import net.minecraft.block.BlockState; 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.EquipmentSlot; +import net.minecraft.entity.*; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.mob.HostileEntity; import net.minecraft.item.*; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.registry.tag.EntityTypeTags; import net.minecraft.text.Text; import java.util.function.BiConsumer; @@ -70,7 +71,7 @@ public class CAutoToolCommand { for(int i=0;i<9;i++) { ItemStack item = event.player.getInventory().getStack(i); if(!isSwordItem(item.getItem())&&!isToolItem(item.getItem())) continue; - float score=getWeaponScore(item); + float score=getWeaponScore(event.target, item); if(score<=0) continue; //选出最好分数的工具 if(score>bestScore){ @@ -157,10 +158,11 @@ public class CAutoToolCommand { } return score; } - public float getWeaponScore(ItemStack item) { + public float getWeaponScore(Entity ent, ItemStack item) { float damageScore = 0; //剑优先 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)->{ @@ -171,14 +173,23 @@ public class CAutoToolCommand { }; 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; + } + //亡灵杀手(这伤害通常更高) + if(ent.getType().isIn(EntityTypeTags.UNDEAD)){ + damageScore+=Utils.GetEnchantLevel(Enchantments.SMITE,item)*3;// 3倍 + } //锋利加分 damageScore += Utils.GetEnchantLevel(Enchantments.SHARPNESS, item) * 2; //精修 damageScore += Utils.GetEnchantLevel(Enchantments.MENDING, item); //火焰附加 - damageScore += Utils.GetEnchantLevel(Enchantments.FIRE_ASPECT, item) * 3; + damageScore += Utils.GetEnchantLevel(Enchantments.FIRE_ASPECT, item); //击退 - damageScore += Utils.GetEnchantLevel(Enchantments.KNOCKBACK, item) * 2; + damageScore += Utils.GetEnchantLevel(Enchantments.KNOCKBACK, item); return damageScore; } //停用低耐久度 From 57d5c7ebe9fb480da5b5873e4e3cde24afb83921 Mon Sep 17 00:00:00 2001 From: expvintl Date: Sat, 12 Apr 2025 22:18:24 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=E9=A2=9C=E8=89=B2=E9=97=AE=E9=A2=98=EF=BC=8C?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=9F=A5=E6=89=BE=E6=96=B9=E5=9D=97(?= =?UTF-8?q?=E5=A4=AA=E4=BD=8E=E6=95=88=E4=BA=86)=EF=BC=8C=E5=AF=B9?= =?UTF-8?q?=E6=97=B6=E8=BF=90=E9=99=84=E9=AD=94=E6=B7=BB=E5=8A=A0=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/expvintl/mctools/MCToolsClient.java | 1 - .../mctools/commands/CAutoToolCommand.java | 67 +++++++++++++++++-- .../mctools/commands/CFindBlockCommand.java | 34 ---------- .../modules/PlayerListTextLatency.java | 4 +- .../com/expvintl/mctools/texthud/MCInfo.java | 2 +- .../com/expvintl/mctools/utils/Utils.java | 5 +- 6 files changed, 65 insertions(+), 48 deletions(-) delete mode 100644 src/main/java/com/expvintl/mctools/commands/CFindBlockCommand.java diff --git a/src/main/java/com/expvintl/mctools/MCToolsClient.java b/src/main/java/com/expvintl/mctools/MCToolsClient.java index e4ac53a..e590a43 100644 --- a/src/main/java/com/expvintl/mctools/MCToolsClient.java +++ b/src/main/java/com/expvintl/mctools/MCToolsClient.java @@ -47,7 +47,6 @@ public class MCToolsClient implements ClientModInitializer { CAutoToolCommand.register(dispatcher); CQServerPluginsCommand.register(dispatcher); CNoFallPacketCommand.register(dispatcher); - CFindBlockCommand.register(dispatcher); CFastDropCommand.register(dispatcher,registryAccess); } } diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index 5b4f564..baab943 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -14,9 +14,7 @@ import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.BoolArgumentType; import com.mojang.brigadier.context.CommandContext; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; -import net.minecraft.block.BambooBlock; -import net.minecraft.block.BambooShootBlock; -import net.minecraft.block.BlockState; +import net.minecraft.block.*; import net.minecraft.client.MinecraftClient; import net.minecraft.component.DataComponentTypes; import net.minecraft.component.type.AttributeModifiersComponent; @@ -109,7 +107,7 @@ public class CAutoToolCommand { for(int i=0;i<9;i++){ ItemStack item = mc.player.getInventory().getStack(i); float score= getToolsScore(item,state); - if(score<0) continue; + if(score<=0) continue; //选出最好分数的工具 if(score>bestScore){ bestScore=score; @@ -137,11 +135,61 @@ public class CAutoToolCommand { || item == Items.WOODEN_HOE || item == Items.STONE_HOE || item == Items.IRON_HOE || item == Items.GOLDEN_HOE || item == Items.DIAMOND_HOE || item == Items.NETHERITE_HOE || item == Items.WOODEN_SWORD || item == Items.STONE_SWORD || item == Items.IRON_SWORD || item == Items.GOLDEN_SWORD || item == Items.DIAMOND_SWORD || item == Items.NETHERITE_SWORD; } + public boolean isOreBlock(Item item) { + return item == Items.COAL_ORE || // 煤矿石 + item == Items.DEEPSLATE_COAL_ORE || // 深层煤矿石 + item == Items.IRON_ORE || // 铁矿石 + item == Items.DEEPSLATE_IRON_ORE || // 深层铁矿石 + item == Items.COPPER_ORE || // 铜矿石 + item == Items.DEEPSLATE_COPPER_ORE || // 深层铜矿石 + item == Items.GOLD_ORE || // 金矿石 + item == Items.DEEPSLATE_GOLD_ORE || // 深层金矿石 + item == Items.REDSTONE_ORE || // 红石矿石 + item == Items.DEEPSLATE_REDSTONE_ORE ||// 深层红石矿石 + item == Items.EMERALD_ORE || // 绿宝石矿石 + item == Items.DEEPSLATE_EMERALD_ORE ||// 深层绿宝石矿石 + item == Items.LAPIS_ORE || // 青金石矿石 + item == Items.DEEPSLATE_LAPIS_ORE || // 深层青金石矿石 + item == Items.DIAMOND_ORE || // 钻石矿石 + item == Items.DEEPSLATE_DIAMOND_ORE ||// 深层钻石矿石 + item == Items.NETHER_GOLD_ORE || // 下界金矿石 + item == Items.NETHER_QUARTZ_ORE; // 下界石英矿石 + } + private boolean isBlockFortune(Block block) { + if (block == Blocks.COAL_ORE || block == Blocks.DEEPSLATE_COAL_ORE || + block == Blocks.COPPER_ORE || block == Blocks.DEEPSLATE_COPPER_ORE || + block == Blocks.IRON_ORE || block == Blocks.DEEPSLATE_IRON_ORE || + block == Blocks.GOLD_ORE || block == Blocks.DEEPSLATE_GOLD_ORE || + block == Blocks.REDSTONE_ORE || block == Blocks.DEEPSLATE_REDSTONE_ORE || + block == Blocks.LAPIS_ORE || block == Blocks.DEEPSLATE_LAPIS_ORE || + block == Blocks.DIAMOND_ORE || block == Blocks.DEEPSLATE_DIAMOND_ORE || + block == Blocks.EMERALD_ORE || block == Blocks.DEEPSLATE_EMERALD_ORE || + block == Blocks.NETHER_QUARTZ_ORE || block == Blocks.NETHER_GOLD_ORE || + block == Blocks.AMETHYST_CLUSTER) { // 紫水晶簇也受时运影响 + return true; + } + + if (block == Blocks.WHEAT || // 小麦 + block == Blocks.CARROTS || // 胡萝卜 + block == Blocks.POTATOES || // 马铃薯 + block == Blocks.BEETROOTS || // 甜菜根 + block == Blocks.NETHER_WART) { // 下界疣 + return true; + } + + if (block == Blocks.GLOWSTONE || // 荧石 + block == Blocks.MELON || // 西瓜 + block == Blocks.GRAVEL || // 沙砾 (影响燧石掉落概率) + block == Blocks.SEA_LANTERN){ // 海晶灯 + return true; + } + return false; + } public float getToolsScore(ItemStack item, BlockState state){ float score=0; if(isToolItem(item.getItem())||item.getItem() instanceof ShearsItem){ //根据挖掘速度提升评分 - score+=item.getMiningSpeedMultiplier(state)*30; + score+=item.getMiningSpeedMultiplier(state)*2; //附魔加分 //耐久 score+= Utils.GetEnchantLevel(Enchantments.UNBREAKING, item); @@ -149,10 +197,15 @@ public class CAutoToolCommand { score+=Utils.GetEnchantLevel(Enchantments.EFFICIENCY,item); //经验修补 score+=Utils.GetEnchantLevel(Enchantments.MENDING,item); + + if(isBlockFortune(state.getBlock())){ + score+=Utils.GetEnchantLevel(Enchantments.FORTUNE,item);//时运 + } + if (isSwordItem(item.getItem()) && (state.getBlock() instanceof BambooBlock|| state.getBlock() instanceof BambooShootBlock)) { if((item.getItem().getComponents().get(DataComponentTypes.TOOL)!=null)){ //根据挖掘等级加分 - score += 90 + (item.getItem().getComponents().get(DataComponentTypes.TOOL).getSpeed(state) * 10); + score += 90 + (item.getItem().getComponents().get(DataComponentTypes.TOOL).getSpeed(state)); } } } @@ -171,7 +224,7 @@ public class CAutoToolCommand { damageHolder [0]= (float)modify.value(); } }; - comp.applyModifiers(EquipmentSlot.MAINHAND,baseDamage); + comp.applyModifiers(EquipmentSlot.MAINHAND,baseDamage);//计算主手时的伤害 damageScore+=damageHolder[0]; //节肢杀手 EntityType id=ent.getType(); diff --git a/src/main/java/com/expvintl/mctools/commands/CFindBlockCommand.java b/src/main/java/com/expvintl/mctools/commands/CFindBlockCommand.java deleted file mode 100644 index a95955c..0000000 --- a/src/main/java/com/expvintl/mctools/commands/CFindBlockCommand.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.expvintl.mctools.commands; - -import com.expvintl.mctools.events.MCEventBus; -import com.expvintl.mctools.events.client.RenderWorldEvent; -import com.expvintl.mctools.utils.Utils; -import com.google.common.eventbus.Subscribe; -import com.mojang.brigadier.Command; -import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.arguments.StringArgumentType; -import com.mojang.brigadier.context.CommandContext; -import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; -import net.minecraft.client.MinecraftClient; - -import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; -import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; - -public class CFindBlockCommand { - private static final MinecraftClient mc=MinecraftClient.getInstance(); - private static final CFindBlockCommand INSTANCE=new CFindBlockCommand(); - - public static void register(CommandDispatcher dispatcher){ - MCEventBus.INSTANCE.register(INSTANCE); - dispatcher.register(literal("cfindblock").then(argument("方块名字", StringArgumentType.string()).executes(CFindBlockCommand::execute))); - } - private static int execute(CommandContext context) { - String blockName=context.getArgument("方块名字", String.class); - Utils.findBlock(mc.player,blockName,10); - return Command.SINGLE_SUCCESS; - } - @Subscribe - private void onRenderWorld(RenderWorldEvent event){ - - } -} diff --git a/src/main/java/com/expvintl/mctools/modules/PlayerListTextLatency.java b/src/main/java/com/expvintl/mctools/modules/PlayerListTextLatency.java index d7ee39d..8bc041a 100644 --- a/src/main/java/com/expvintl/mctools/modules/PlayerListTextLatency.java +++ b/src/main/java/com/expvintl/mctools/modules/PlayerListTextLatency.java @@ -14,9 +14,9 @@ public class PlayerListTextLatency { private int calcLatencyColor(int latency){ if(latency>=0&&latency<=60){ //0-60 return 0x00FF00; //绿色 - }else if(latency>60&&latency<=120){ //60-120 + }else if(latency>60&&latency<=100){ //60-100 return 0xFFFF00; //黄色 - }else if(latency>120&&latency<=200){//120-200 + }else if(latency>100&&latency<=200){//100-200 return 0xFFA500; //橙色 }else if(latency>200){ //>200 return 0xFF0000; //红色 diff --git a/src/main/java/com/expvintl/mctools/texthud/MCInfo.java b/src/main/java/com/expvintl/mctools/texthud/MCInfo.java index 8d85f3c..aebe964 100644 --- a/src/main/java/com/expvintl/mctools/texthud/MCInfo.java +++ b/src/main/java/com/expvintl/mctools/texthud/MCInfo.java @@ -69,7 +69,7 @@ public class MCInfo { DrawUtils.AddLeftText(drawContext,String.format("X:%.2f Y:%.2f Z:%.2f",playerPos.x,playerPos.y,playerPos.z)); } DrawUtils.AddLeftText(drawContext,String.format("世界时间: %d天 (%s)",mc.world.getTimeOfDay()/24000,gameDayToRealTimeFormat(mc.world.getTimeOfDay()/24000))); - DrawUtils.AddLeftText(drawContext,String.format("当前区块: [%d,%d]",mc.player.getChunkPos().x,mc.player.getChunkPos().z)); + DrawUtils.AddLeftText(drawContext,String.format("当前区块: %d,%d 方块:[%d,%d]",mc.player.getChunkPos().x,mc.player.getChunkPos().z,mc.player.getBlockX()&0xf,mc.player.getBlockZ()&0xf)); DrawUtils.AddLeftText(drawContext,String.format("本地难度:%.2f",mc.world.getLocalDifficulty(mc.player.getBlockPos()).getLocalDifficulty())); ItemStack currentItem=p.getMainHandStack(); if(Objects.nonNull(currentItem)&¤tItem.isDamageable()){ diff --git a/src/main/java/com/expvintl/mctools/utils/Utils.java b/src/main/java/com/expvintl/mctools/utils/Utils.java index d33f2ab..67adb04 100644 --- a/src/main/java/com/expvintl/mctools/utils/Utils.java +++ b/src/main/java/com/expvintl/mctools/utils/Utils.java @@ -8,6 +8,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.PlayerSkinDrawer; import net.minecraft.client.gui.hud.ChatHudLine; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.PlayerListEntry; @@ -244,9 +245,7 @@ public class Utils { if(sender==null) return; PlayerListEntry entry = mc.getNetworkHandler().getPlayerListEntry(sender.getId()); if (entry == null) return; - - Identifier skin = entry.getSkinTextures().texture(); - draw.drawTexture(RenderLayer::getGuiTextured, skin,0, y, 8, 8, 8, 8, 8, 8, 64, 64); + PlayerSkinDrawer.draw(draw,entry.getSkinTextures(),0,y,8); draw.getMatrices().translate(10, 0, 0); } public static GameProfile getChatSender(String text){ From d8c271b246bb9342c523bbfc99e563631f4bbc10 Mon Sep 17 00:00:00 2001 From: expvintl Date: Fri, 16 May 2025 17:24:20 +0800 Subject: [PATCH 6/7] =?UTF-8?q?1.20.1=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/runConfigurations/Minecraft_Server.xml | 2 +- gradle.properties | 6 +- .../mctools/commands/CAutoToolCommand.java | 55 +++++++++---------- .../mctools/commands/CFullbirghtCommand.java | 8 +-- .../mixin/client/GameRendererMixin.java | 8 +-- .../com/expvintl/mctools/texthud/MCInfo.java | 4 +- .../expvintl/mctools/texthud/PotionInfo.java | 4 +- .../com/expvintl/mctools/utils/Utils.java | 16 +----- src/main/resources/fabric.mod.json | 2 +- src/main/resources/mctools.mixins.json | 2 +- 10 files changed, 45 insertions(+), 62 deletions(-) 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", From 470e79e3bdd868061eb54d5efbcbcbeb21cdfe76 Mon Sep 17 00:00:00 2001 From: expvintl Date: Mon, 19 May 2025 03:58:35 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E8=B7=9F=E8=BF=9B=E6=96=B0=E7=89=881.20.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/runConfigurations/Minecraft_Server.xml | 2 +- build.gradle | 2 +- readme.md | 23 ++++++++- .../expvintl/mctools/FeaturesSettings.java | 14 ++++++ .../java/com/expvintl/mctools/Globals.java | 13 ----- .../mctools/commands/CAutoFishCommand.java | 10 ++-- .../mctools/commands/CAutoRespawnCommand.java | 10 ++-- .../mctools/commands/CAutoToolCommand.java | 47 ++++++++++--------- .../commands/CNoFallPacketCommand.java | 10 ++-- .../commands/CQServerPluginsCommand.java | 10 ++-- .../mctools/commands/CSafeWalkCommand.java | 8 ++-- .../mixin/player/PlayerEntityMixin.java | 4 +- .../mctools/settingtype/BooleanSetting.java | 13 +++++ .../expvintl/mctools/texthud/PotionInfo.java | 1 - .../com/expvintl/mctools/types/Setting.java | 11 ----- .../expvintl/mctools/utils/CommandUtils.java | 7 +-- 16 files changed, 106 insertions(+), 79 deletions(-) create mode 100644 src/main/java/com/expvintl/mctools/FeaturesSettings.java delete mode 100644 src/main/java/com/expvintl/mctools/Globals.java create mode 100644 src/main/java/com/expvintl/mctools/settingtype/BooleanSetting.java delete mode 100644 src/main/java/com/expvintl/mctools/types/Setting.java diff --git a/.idea/runConfigurations/Minecraft_Server.xml b/.idea/runConfigurations/Minecraft_Server.xml index 9ec732e..27bc6a0 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/build.gradle b/build.gradle index e103273..46a9212 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { id 'maven-publish' } -version = project.mod_version +version = project.findProperty("minecraft_version")?.toString()?:"1.0" group = project.maven_group repositories { mavenCentral() diff --git a/readme.md b/readme.md index e0ab337..970e11e 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,22 @@ -## 一个MC工具组 +
-> 仍在开发 \ No newline at end of file +# Minecraft 工具集(Fabric) + +
+ +## 支持功能 +此mod的所有功能为**c开头** +1. 自动工具(挖掘、砍伐、亡灵、锋利、伤害等评级)(/cautotool) +2. 自动钓鱼 (/cautofish) +3. 自动武器(与工具为合并功能) +4. 伽马高亮(/fullbirght) +5. C键放大 +6. 基本信息HUD +7. 药水状态HUD +8. 聊天栏头像补丁 +9. 强制Tab列表显示头像补丁 +10. 查询Bukkit系服务器插件(/cqserverplugins) +11. 自动重生(/cautorespawn) +12. 自动挂边(/csafewalk) +13. 无衰落伤害(/cnofallpacket) +14. 快速丢弃(WIP)(/cfastdrop) \ No newline at end of file diff --git a/src/main/java/com/expvintl/mctools/FeaturesSettings.java b/src/main/java/com/expvintl/mctools/FeaturesSettings.java new file mode 100644 index 0000000..5b50a9f --- /dev/null +++ b/src/main/java/com/expvintl/mctools/FeaturesSettings.java @@ -0,0 +1,14 @@ +package com.expvintl.mctools; + +import com.expvintl.mctools.settingtype.BooleanSetting; + +public class FeaturesSettings { + public final static FeaturesSettings INSTANCE=new FeaturesSettings(); + public final BooleanSetting autoRespawn = new BooleanSetting(); + public final BooleanSetting safeWalk = new BooleanSetting(); + public final BooleanSetting checkBukkitPlugins = new BooleanSetting(); + public final BooleanSetting autoTool = new BooleanSetting(); + public final BooleanSetting autoToolIncludePlayer = new BooleanSetting(); + public final BooleanSetting autoFish = new BooleanSetting(); + public final BooleanSetting noFallPacket = new BooleanSetting(); +} diff --git a/src/main/java/com/expvintl/mctools/Globals.java b/src/main/java/com/expvintl/mctools/Globals.java deleted file mode 100644 index 37bc5db..0000000 --- a/src/main/java/com/expvintl/mctools/Globals.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.expvintl.mctools; - -import com.expvintl.mctools.types.Setting; - -public class Globals { - public static Setting autoRespawn=new Setting(); - public static Setting selfWalk=new Setting(); - public static Setting checkBukkitPlugins=new Setting(); - public static Setting autoTool=new Setting(); - public static Setting autoFish=new Setting(); - public static Setting noFallPacket=new Setting(); - public static int TPS=0; -} diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java index bfdbe83..84971f0 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java @@ -1,6 +1,6 @@ package com.expvintl.mctools.commands; -import com.expvintl.mctools.Globals; +import com.expvintl.mctools.FeaturesSettings; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.client.sounds.PlaySoundEvent; import com.expvintl.mctools.utils.CommandUtils; @@ -22,14 +22,14 @@ public class CAutoFishCommand { private static final CAutoFishCommand INSTANCE=new CAutoFishCommand(); public static void register(CommandDispatcher dispatcher){ MCEventBus.INSTANCE.register(INSTANCE); - CommandUtils.CreateStatusCommand("cautofish",Globals.autoFish,dispatcher); + CommandUtils.CreateStatusCommand("cautofish", FeaturesSettings.INSTANCE.autoFish, dispatcher); dispatcher.register(literal("cautofish").then(argument("开关", BoolArgumentType.bool()).executes(CAutoFishCommand::execute))); } private static int execute(CommandContext context) { - Globals.autoFish.set(context.getArgument("开关", Boolean.class)); - if(Globals.autoFish.get()){ + FeaturesSettings.INSTANCE.autoFish.setValue(context.getArgument("开关", Boolean.class)); + if(FeaturesSettings.INSTANCE.autoFish.getValue()){ context.getSource().getPlayer().sendMessage(Text.literal("已启用自动钓鱼!"),false); }else{ context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动钓鱼!"),false); @@ -38,7 +38,7 @@ public class CAutoFishCommand { } @Subscribe private void onPlaySound(PlaySoundEvent event){ - if(Globals.autoFish.get()) { + if(FeaturesSettings.INSTANCE.autoFish.getValue()) { //自动钓鱼 if (event.soundInstance.getId().getPath().equals("entity.fishing_bobber.splash")) { //收杆 diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java index 57c7851..533d27b 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java @@ -1,6 +1,6 @@ package com.expvintl.mctools.commands; -import com.expvintl.mctools.Globals; +import com.expvintl.mctools.FeaturesSettings; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.client.OpenScreenEvent; import com.expvintl.mctools.utils.CommandUtils; @@ -21,13 +21,13 @@ public class CAutoRespawnCommand { private static final CAutoRespawnCommand INSTANCE=new CAutoRespawnCommand(); public static void register(CommandDispatcher dispatcher){ MCEventBus.INSTANCE.register(INSTANCE); - CommandUtils.CreateStatusCommand("cautorespawn",Globals.autoRespawn,dispatcher); + CommandUtils.CreateStatusCommand("cautorespawn", FeaturesSettings.INSTANCE.autoRespawn, dispatcher); dispatcher.register(literal("cautorespawn").then(argument("开关", BoolArgumentType.bool()).executes(CAutoRespawnCommand::execute))); } private static int execute(CommandContext context) { - Globals.autoRespawn.set(context.getArgument("开关", Boolean.class)); - if(Globals.autoRespawn.get()){ + FeaturesSettings.INSTANCE.autoRespawn.setValue(context.getArgument("开关", Boolean.class)); + if(FeaturesSettings.INSTANCE.autoRespawn.getValue()){ context.getSource().getPlayer().sendMessage(Text.literal("已启用自动重生!"),false); }else{ context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动重生!"),false); @@ -36,7 +36,7 @@ public class CAutoRespawnCommand { } @Subscribe private void onOpenScreen(OpenScreenEvent event){ - if(Globals.autoRespawn.get()) { + if(FeaturesSettings.INSTANCE.autoRespawn.getValue()) { //自动重生 if (event.screen instanceof DeathScreen) { if (MinecraftClient.getInstance().player != null) { diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index 6c310c8..b62e5ed 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -1,13 +1,12 @@ package com.expvintl.mctools.commands; -import com.expvintl.mctools.Globals; +import com.expvintl.mctools.FeaturesSettings; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.player.PlayerAttackBlockEvent; import com.expvintl.mctools.events.player.PlayerAttackEntityEvent; 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; @@ -23,14 +22,10 @@ import net.minecraft.entity.*; import net.minecraft.entity.attribute.EntityAttribute; import net.minecraft.entity.attribute.EntityAttributeModifier; import net.minecraft.entity.attribute.EntityAttributes; -import net.minecraft.entity.mob.HostileEntity; import net.minecraft.item.*; -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; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; @@ -39,32 +34,42 @@ public class CAutoToolCommand { private static final CAutoToolCommand INSTANCE=new CAutoToolCommand(); public static void register(CommandDispatcher dispatcher){ MCEventBus.INSTANCE.register(INSTANCE); - CommandUtils.CreateStatusCommand("cautotool",Globals.autoTool,dispatcher); - dispatcher.register(literal("cautotool").then(argument("开关", BoolArgumentType.bool()).executes(CAutoToolCommand::execute))); + CommandUtils.CreateStatusCommand("cautotool", FeaturesSettings.INSTANCE.autoTool, dispatcher); + dispatcher.register( + literal("cautotool") + .then(argument("开关", BoolArgumentType.bool()) + .executes(CAutoToolCommand::execute) + .then(argument("包含玩家",BoolArgumentType.bool()) + .executes(CAutoToolCommand::execute)))); } private static int execute(CommandContext context) { - Globals.autoTool.set(context.getArgument("开关", Boolean.class)); - if(Globals.autoTool.get()){ - context.getSource().getPlayer().sendMessage(Text.literal("已启用智能工具!"),false); + FeaturesSettings.INSTANCE.autoTool.setValue(context.getArgument("开关", Boolean.class)); + try{ + FeaturesSettings.INSTANCE.autoToolIncludePlayer.setValue(context.getArgument("包含玩家", Boolean.class)); + }catch (IllegalArgumentException ignored){ + } + if(FeaturesSettings.INSTANCE.autoTool.getValue()){ + context.getSource().getPlayer().sendMessage(Text.literal("已启用智能工具! 对玩家使用智能武器:"+FeaturesSettings.INSTANCE.autoToolIncludePlayer.getValue()),false); }else{ context.getSource().getPlayer().sendMessage(Text.literal("已禁用智能工具!"),false); } return Command.SINGLE_SUCCESS; } - @Subscribe - private void onBreakBlock(PlayerBreakBlockEvent event){ - if(!Globals.autoTool.get()) return; - MinecraftClient mc=MinecraftClient.getInstance(); - if (mc.world == null||mc.player==null) return; - } + // @Subscribe +// private void onBreakBlock(PlayerBreakBlockEvent event){ +// if(!Globals.autoTool.get()) return; +// MinecraftClient mc=MinecraftClient.getInstance(); +// if (mc.world == null||mc.player==null) return; +// } + @Subscribe private void onAttackEntity(PlayerAttackEntityEvent event){ - if(!Globals.autoTool.get()) return; + if(!FeaturesSettings.INSTANCE.autoTool.getValue()) return; if(event.target.hasCustomName()) return; - //不对玩家使用 - if(event.target.isPlayer()) return; + //对玩家使用 + if(FeaturesSettings.INSTANCE.autoToolIncludePlayer.getValue()&&event.target.isPlayer()) return; float bestScore=-1; int slot=-1; for(int i=0;i<9;i++) { @@ -93,7 +98,7 @@ public class CAutoToolCommand { //方块挖掘 @Subscribe private void onAttackBlock(PlayerAttackBlockEvent event){ - if(!Globals.autoTool.get()) return; + if(!FeaturesSettings.INSTANCE.autoTool.getValue()) return; //自动工具 MinecraftClient mc=MinecraftClient.getInstance(); if (mc.world == null||mc.player==null) return; diff --git a/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java b/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java index 1c0e539..c8eca35 100644 --- a/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CNoFallPacketCommand.java @@ -1,6 +1,6 @@ package com.expvintl.mctools.commands; -import com.expvintl.mctools.Globals; +import com.expvintl.mctools.FeaturesSettings; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.network.PacketSendEvent; import com.expvintl.mctools.mixin.interfaces.PlayerMoveC2SPacketAccessor; @@ -23,14 +23,14 @@ public class CNoFallPacketCommand { private static final MinecraftClient mc=MinecraftClient.getInstance(); public static void register(CommandDispatcher dispatcher){ MCEventBus.INSTANCE.register(INSTANCE); - CommandUtils.CreateStatusCommand("cnofallpacket",Globals.noFallPacket,dispatcher); + CommandUtils.CreateStatusCommand("cnofallpacket", FeaturesSettings.INSTANCE.noFallPacket, dispatcher); dispatcher.register(literal("cnofallpacket").then(argument("开关", BoolArgumentType.bool()).executes(CNoFallPacketCommand::execute))); } private static int execute(CommandContext context) { - Globals.noFallPacket.set(context.getArgument("开关", Boolean.class)); - if(Globals.noFallPacket.get()){ + FeaturesSettings.INSTANCE.noFallPacket.setValue(context.getArgument("开关", Boolean.class)); + if(FeaturesSettings.INSTANCE.noFallPacket.getValue()){ context.getSource().getPlayer().sendMessage(Text.literal("已启用摔落伤害!"),false); }else{ context.getSource().getPlayer().sendMessage(Text.literal("已禁用摔落伤害!"),false); @@ -42,7 +42,7 @@ public class CNoFallPacketCommand { //跳过非移动的数据包 if(!(event.packet instanceof PlayerMoveC2SPacket)) return; //跳过创造 - if(Globals.noFallPacket.get()&& !mc.player.getAbilities().creativeMode){ + if(FeaturesSettings.INSTANCE.noFallPacket.getValue()&& !mc.player.getAbilities().creativeMode){ if(mc.player.fallDistance<=mc.player.getSafeFallDistance()) return; if(mc.player.getVelocity().y> -0.5) return; //直接发送在地面的数据包来免伤 diff --git a/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java b/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java index 2a9fd15..b9bef85 100644 --- a/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java @@ -1,6 +1,6 @@ package com.expvintl.mctools.commands; -import com.expvintl.mctools.Globals; +import com.expvintl.mctools.FeaturesSettings; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.network.PacketReceiveEvent; import com.expvintl.mctools.utils.Utils; @@ -29,13 +29,13 @@ public class CQServerPluginsCommand { private static int execute(CommandContext context) { //注册数据包接受事件 MCEventBus.INSTANCE.register(INSTANCE); - Globals.checkBukkitPlugins.set(true); + FeaturesSettings.INSTANCE.checkBukkitPlugins.setValue(true); context.getSource().getPlayer().networkHandler.sendPacket(new RequestCommandCompletionsC2SPacket(new Random().nextInt(200),"bukkit:ver ")); //1秒后关闭避免识别其他命令提示 Utils.timer.schedule(new TimerTask() { @Override public void run() { - Globals.checkBukkitPlugins.set(false); + FeaturesSettings.INSTANCE.checkBukkitPlugins.setValue(false); MCEventBus.INSTANCE.unregister(INSTANCE); } },1000); @@ -44,7 +44,7 @@ public class CQServerPluginsCommand { @Subscribe public void onReceivePacket(PacketReceiveEvent p){ //探测bukkit服务器插件 - if (!MinecraftClient.getInstance().isIntegratedServerRunning()&& Globals.checkBukkitPlugins.get()) { + if (!MinecraftClient.getInstance().isIntegratedServerRunning()&& FeaturesSettings.INSTANCE.checkBukkitPlugins.getValue()) { if (p.packet instanceof CommandSuggestionsS2CPacket sg) { StringBuilder buf=new StringBuilder(); buf.append(String.format("找到%d个插件:",sg.getSuggestions().getList().size())).append('\n'); @@ -54,7 +54,7 @@ public class CQServerPluginsCommand { if(MinecraftClient.getInstance().player!=null){ MinecraftClient.getInstance().player.sendMessage(Text.literal(buf.toString()),false); } - Globals.checkBukkitPlugins.set(false); + FeaturesSettings.INSTANCE.checkBukkitPlugins.setValue(false); //取消事件注册 MCEventBus.INSTANCE.unregister(INSTANCE); } diff --git a/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java b/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java index 2a0b098..9ea8959 100644 --- a/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CSafeWalkCommand.java @@ -1,6 +1,6 @@ package com.expvintl.mctools.commands; -import com.expvintl.mctools.Globals; +import com.expvintl.mctools.FeaturesSettings; import com.expvintl.mctools.utils.CommandUtils; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; @@ -14,14 +14,14 @@ import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.lit public class CSafeWalkCommand { public static void register(CommandDispatcher dispatcher){ - CommandUtils.CreateStatusCommand("cselfwalk",Globals.selfWalk,dispatcher); + CommandUtils.CreateStatusCommand("cselfwalk", FeaturesSettings.INSTANCE.safeWalk, dispatcher); dispatcher.register(literal("cselfwalk").then(argument("开关", BoolArgumentType.bool()).executes(CSafeWalkCommand::execute))); } private static int execute(CommandContext context) { - Globals.selfWalk.set(context.getArgument("开关", Boolean.class)); - if(Globals.selfWalk.get()){ + FeaturesSettings.INSTANCE.safeWalk.setValue(context.getArgument("开关", Boolean.class)); + if(FeaturesSettings.INSTANCE.safeWalk.getValue()){ context.getSource().getPlayer().sendMessage(Text.literal("已启用自动挂边!"),false); }else{ context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动挂边!"),false); diff --git a/src/main/java/com/expvintl/mctools/mixin/player/PlayerEntityMixin.java b/src/main/java/com/expvintl/mctools/mixin/player/PlayerEntityMixin.java index 8aba7fc..d8252d5 100644 --- a/src/main/java/com/expvintl/mctools/mixin/player/PlayerEntityMixin.java +++ b/src/main/java/com/expvintl/mctools/mixin/player/PlayerEntityMixin.java @@ -1,6 +1,6 @@ package com.expvintl.mctools.mixin.player; -import com.expvintl.mctools.Globals; +import com.expvintl.mctools.FeaturesSettings; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.player.PlayerEntity; import org.spongepowered.asm.mixin.Mixin; @@ -15,7 +15,7 @@ public class PlayerEntityMixin { if(MinecraftClient.getInstance().world!=null&&MinecraftClient.getInstance().player!=null) { if (!MinecraftClient.getInstance().world.isClient) return; //挂住边缘 - if (Globals.selfWalk.get() && !MinecraftClient.getInstance().player.isSneaking()) cir.setReturnValue(true); + if (FeaturesSettings.INSTANCE.safeWalk.getValue() && !MinecraftClient.getInstance().player.isSneaking()) cir.setReturnValue(true); } } } diff --git a/src/main/java/com/expvintl/mctools/settingtype/BooleanSetting.java b/src/main/java/com/expvintl/mctools/settingtype/BooleanSetting.java new file mode 100644 index 0000000..07a4931 --- /dev/null +++ b/src/main/java/com/expvintl/mctools/settingtype/BooleanSetting.java @@ -0,0 +1,13 @@ +package com.expvintl.mctools.settingtype; + +public class BooleanSetting { + private boolean value; + + public void setValue(boolean value) { + this.value = value; + } + + public boolean getValue() { + return value; + } +} diff --git a/src/main/java/com/expvintl/mctools/texthud/PotionInfo.java b/src/main/java/com/expvintl/mctools/texthud/PotionInfo.java index da57efc..af3f7ca 100644 --- a/src/main/java/com/expvintl/mctools/texthud/PotionInfo.java +++ b/src/main/java/com/expvintl/mctools/texthud/PotionInfo.java @@ -6,7 +6,6 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderTickCounter; import net.minecraft.client.resource.language.I18n; import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.util.Colors; import java.util.Collection; diff --git a/src/main/java/com/expvintl/mctools/types/Setting.java b/src/main/java/com/expvintl/mctools/types/Setting.java deleted file mode 100644 index 01f16b3..0000000 --- a/src/main/java/com/expvintl/mctools/types/Setting.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.expvintl.mctools.types; - -public class Setting { - public boolean value=false; - public boolean get(){ - return this.value; - } - public void set(boolean value){ - this.value=value; - } -} \ No newline at end of file diff --git a/src/main/java/com/expvintl/mctools/utils/CommandUtils.java b/src/main/java/com/expvintl/mctools/utils/CommandUtils.java index 7848892..ec214e5 100644 --- a/src/main/java/com/expvintl/mctools/utils/CommandUtils.java +++ b/src/main/java/com/expvintl/mctools/utils/CommandUtils.java @@ -1,15 +1,16 @@ package com.expvintl.mctools.utils; -import com.expvintl.mctools.types.Setting; +import com.expvintl.mctools.FeaturesSettings; +import com.expvintl.mctools.settingtype.BooleanSetting; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.text.Text; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; public class CommandUtils { - public static void CreateStatusCommand(String cmd, Setting toggle, CommandDispatcher dispatcher){ + public static void CreateStatusCommand(String cmd, BooleanSetting setting, CommandDispatcher dispatcher){ dispatcher.register(literal(cmd).executes((context -> { - context.getSource().getPlayer().sendMessage(Text.literal("当前启用状态: "+toggle.get()),false); + context.getSource().getPlayer().sendMessage(Text.literal("当前启用状态: "+setting.getValue()),false); return Command.SINGLE_SUCCESS; }))); }