diff --git a/.gitgnone b/.gitgnone new file mode 100644 index 0000000..c795b05 --- /dev/null +++ b/.gitgnone @@ -0,0 +1 @@ +build \ No newline at end of file diff --git a/.gradle/8.1.1/checksums/checksums.lock b/.gradle/8.1.1/checksums/checksums.lock index 127b655..8e9317a 100644 Binary files a/.gradle/8.1.1/checksums/checksums.lock and b/.gradle/8.1.1/checksums/checksums.lock differ diff --git a/.gradle/8.1.1/executionHistory/executionHistory.bin b/.gradle/8.1.1/executionHistory/executionHistory.bin index 99758c9..5f785a1 100644 Binary files a/.gradle/8.1.1/executionHistory/executionHistory.bin and b/.gradle/8.1.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.1.1/executionHistory/executionHistory.lock b/.gradle/8.1.1/executionHistory/executionHistory.lock index 6eaa2b4..424ba2d 100644 Binary files a/.gradle/8.1.1/executionHistory/executionHistory.lock and b/.gradle/8.1.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.1.1/fileHashes/fileHashes.bin b/.gradle/8.1.1/fileHashes/fileHashes.bin index 007e3a2..d97c226 100644 Binary files a/.gradle/8.1.1/fileHashes/fileHashes.bin and b/.gradle/8.1.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.1.1/fileHashes/fileHashes.lock b/.gradle/8.1.1/fileHashes/fileHashes.lock index a3ca077..79845bf 100644 Binary files a/.gradle/8.1.1/fileHashes/fileHashes.lock and b/.gradle/8.1.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.1.1/fileHashes/resourceHashesCache.bin b/.gradle/8.1.1/fileHashes/resourceHashesCache.bin index b66b6d4..bf7d87c 100644 Binary files a/.gradle/8.1.1/fileHashes/resourceHashesCache.bin and b/.gradle/8.1.1/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 650c158..107d911 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index e577f7a..8691ded 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/build/classes/java/main/MCTools-refmap.json b/build/classes/java/main/MCTools-refmap.json index 40e1da1..de6a259 100644 --- a/build/classes/java/main/MCTools-refmap.json +++ b/build/classes/java/main/MCTools-refmap.json @@ -1,7 +1,17 @@ { "mappings": { "com/expvintl/mctools/mixin/MinecraftClientMixin": { - "setScreen": "Lnet/minecraft/class_310;method_1507(Lnet/minecraft/class_437;)V" + "setScreen": "Lnet/minecraft/class_310;method_1507(Lnet/minecraft/class_437;)V", + "tick": "Lnet/minecraft/class_310;method_1574()V" + }, + "com/expvintl/mctools/mixin/SoundSystemMixin": { + "play(Lnet/minecraft/client/sound/SoundInstance;)V": "Lnet/minecraft/class_1140;method_4854(Lnet/minecraft/class_1113;)V" + }, + "com/expvintl/mctools/mixin/interfaces/ClientPlayerInteractionManagerAccessor": { + "syncSelectedSlot": "method_2911()V" + }, + "com/expvintl/mctools/mixin/interfaces/MinecraftClientAccessor": { + "doItemUse": "method_1583()V" }, "com/expvintl/mctools/mixin/interfaces/SimpleOptionAccessor": { "value": "field_37868:Ljava/lang/Object;" @@ -20,7 +30,17 @@ "data": { "named:intermediary": { "com/expvintl/mctools/mixin/MinecraftClientMixin": { - "setScreen": "Lnet/minecraft/class_310;method_1507(Lnet/minecraft/class_437;)V" + "setScreen": "Lnet/minecraft/class_310;method_1507(Lnet/minecraft/class_437;)V", + "tick": "Lnet/minecraft/class_310;method_1574()V" + }, + "com/expvintl/mctools/mixin/SoundSystemMixin": { + "play(Lnet/minecraft/client/sound/SoundInstance;)V": "Lnet/minecraft/class_1140;method_4854(Lnet/minecraft/class_1113;)V" + }, + "com/expvintl/mctools/mixin/interfaces/ClientPlayerInteractionManagerAccessor": { + "syncSelectedSlot": "method_2911()V" + }, + "com/expvintl/mctools/mixin/interfaces/MinecraftClientAccessor": { + "doItemUse": "method_1583()V" }, "com/expvintl/mctools/mixin/interfaces/SimpleOptionAccessor": { "value": "field_37868:Ljava/lang/Object;" diff --git a/build/classes/java/main/com/expvintl/mctools/FeaturesBool.class b/build/classes/java/main/com/expvintl/mctools/FeaturesBool.class index fa1a55e..f78ace9 100644 Binary files a/build/classes/java/main/com/expvintl/mctools/FeaturesBool.class and b/build/classes/java/main/com/expvintl/mctools/FeaturesBool.class differ diff --git a/build/classes/java/main/com/expvintl/mctools/MCToolsClient.class b/build/classes/java/main/com/expvintl/mctools/MCToolsClient.class index 681c27c..b36231a 100644 Binary files a/build/classes/java/main/com/expvintl/mctools/MCToolsClient.class and b/build/classes/java/main/com/expvintl/mctools/MCToolsClient.class differ diff --git a/build/classes/java/main/com/expvintl/mctools/commands/CAutoRespawnCommand.class b/build/classes/java/main/com/expvintl/mctools/commands/CAutoRespawnCommand.class index b561cea..1af7a16 100644 Binary files a/build/classes/java/main/com/expvintl/mctools/commands/CAutoRespawnCommand.class and b/build/classes/java/main/com/expvintl/mctools/commands/CAutoRespawnCommand.class differ diff --git a/build/classes/java/main/com/expvintl/mctools/commands/CQServerPluginsCommand$1.class b/build/classes/java/main/com/expvintl/mctools/commands/CQServerPluginsCommand$1.class index 5c2c61c..6722325 100644 Binary files a/build/classes/java/main/com/expvintl/mctools/commands/CQServerPluginsCommand$1.class and b/build/classes/java/main/com/expvintl/mctools/commands/CQServerPluginsCommand$1.class differ diff --git a/build/classes/java/main/com/expvintl/mctools/commands/CQServerPluginsCommand.class b/build/classes/java/main/com/expvintl/mctools/commands/CQServerPluginsCommand.class index 14c1b8f..544e42b 100644 Binary files a/build/classes/java/main/com/expvintl/mctools/commands/CQServerPluginsCommand.class and b/build/classes/java/main/com/expvintl/mctools/commands/CQServerPluginsCommand.class differ diff --git a/build/classes/java/main/com/expvintl/mctools/mixin/MinecraftClientMixin.class b/build/classes/java/main/com/expvintl/mctools/mixin/MinecraftClientMixin.class index 22b67bf..5aae6bb 100644 Binary files a/build/classes/java/main/com/expvintl/mctools/mixin/MinecraftClientMixin.class and b/build/classes/java/main/com/expvintl/mctools/mixin/MinecraftClientMixin.class differ diff --git a/build/classes/java/main/com/expvintl/mctools/mixin/interfaces/IClientPlayerInteractionManager.class b/build/classes/java/main/com/expvintl/mctools/mixin/interfaces/IClientPlayerInteractionManager.class deleted file mode 100644 index 044e41b..0000000 Binary files a/build/classes/java/main/com/expvintl/mctools/mixin/interfaces/IClientPlayerInteractionManager.class and /dev/null differ diff --git a/build/classes/java/main/com/expvintl/mctools/mixin/player/ClientPlayerInteractionManagerMixin.class b/build/classes/java/main/com/expvintl/mctools/mixin/player/ClientPlayerInteractionManagerMixin.class index 696345e..445a7e6 100644 Binary files a/build/classes/java/main/com/expvintl/mctools/mixin/player/ClientPlayerInteractionManagerMixin.class and b/build/classes/java/main/com/expvintl/mctools/mixin/player/ClientPlayerInteractionManagerMixin.class differ diff --git a/build/classes/java/main/com/expvintl/mctools/utils/Utils.class b/build/classes/java/main/com/expvintl/mctools/utils/Utils.class index 7c08a58..bddd52f 100644 Binary files a/build/classes/java/main/com/expvintl/mctools/utils/Utils.class and b/build/classes/java/main/com/expvintl/mctools/utils/Utils.class differ diff --git a/build/devlibs/MCTools-1.0-dev.jar b/build/devlibs/MCTools-1.0-dev.jar index 458a9db..548c822 100644 Binary files a/build/devlibs/MCTools-1.0-dev.jar and b/build/devlibs/MCTools-1.0-dev.jar differ diff --git a/build/devlibs/MCTools-1.0-sources.jar b/build/devlibs/MCTools-1.0-sources.jar index 96fab83..c6d5a29 100644 Binary files a/build/devlibs/MCTools-1.0-sources.jar and b/build/devlibs/MCTools-1.0-sources.jar differ diff --git a/build/libs/MCTools-1.0-sources.jar b/build/libs/MCTools-1.0-sources.jar index ee90187..2713959 100644 Binary files a/build/libs/MCTools-1.0-sources.jar and b/build/libs/MCTools-1.0-sources.jar differ diff --git a/build/libs/MCTools-1.0.jar b/build/libs/MCTools-1.0.jar index 04deeed..c5c2735 100644 Binary files a/build/libs/MCTools-1.0.jar and b/build/libs/MCTools-1.0.jar differ diff --git a/build/resources/main/mctools.mixins.json b/build/resources/main/mctools.mixins.json index 1d2cce1..ecb1114 100644 --- a/build/resources/main/mctools.mixins.json +++ b/build/resources/main/mctools.mixins.json @@ -9,6 +9,9 @@ ], "client": [ "MinecraftClientMixin", + "SoundSystemMixin", + "interfaces.ClientPlayerInteractionManagerAccessor", + "interfaces.MinecraftClientAccessor", "interfaces.SimpleOptionAccessor", "player.ClientPlayerInteractionManagerMixin" ], diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 5556513..68411b5 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/main/java/com/expvintl/mctools/FeaturesBool.java b/src/main/java/com/expvintl/mctools/FeaturesBool.java index c6846bf..80a4c44 100644 --- a/src/main/java/com/expvintl/mctools/FeaturesBool.java +++ b/src/main/java/com/expvintl/mctools/FeaturesBool.java @@ -5,4 +5,5 @@ public class FeaturesBool { public static boolean selfWalk=false; public static boolean checkBukkitPlugins=false; public static boolean autoTool=false; + public static boolean autoFish=false; } diff --git a/src/main/java/com/expvintl/mctools/MCToolsClient.java b/src/main/java/com/expvintl/mctools/MCToolsClient.java index 2fe5e7f..f221268 100644 --- a/src/main/java/com/expvintl/mctools/MCToolsClient.java +++ b/src/main/java/com/expvintl/mctools/MCToolsClient.java @@ -10,16 +10,12 @@ import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.network.ServerInfo; import net.minecraft.command.CommandRegistryAccess; -import net.minecraft.server.MinecraftServer; +import net.minecraft.item.ItemStack; import net.minecraft.util.Colors; import net.minecraft.util.math.Vec3d; -import java.util.Objects; - public class MCToolsClient implements ClientModInitializer { private static int infoY=1; @@ -57,7 +53,12 @@ public class MCToolsClient implements ClientModInitializer { }else{ AddText(drawContext,String.format("X:%.2f Y:%.2f Z:%.2f",playerPos.x,playerPos.y,playerPos.z)); } + AddText(drawContext,String.format("世界时间: %d天 (%d 小时)",mc.world.getTimeOfDay()/24000,((mc.world.getTimeOfDay()/24000)*20)/60)); AddText(drawContext,String.format("当前区块: [%d,%d]",mc.player.getChunkPos().x,mc.player.getChunkPos().z)); + ItemStack currentItem=p.getInventory().getMainHandStack(); + if(currentItem!=null&¤tItem.isDamageable()){ + AddText(drawContext,String.format("耐久度:%d/%d",currentItem.getMaxDamage()-currentItem.getDamage(),currentItem.getMaxDamage())); + } } } private static void AddText(DrawContext drawContext,String text){ @@ -70,6 +71,7 @@ public class MCToolsClient implements ClientModInitializer { CFullbirghtCommand.register(dispatcher); CAutoRespawnCommand.register(dispatcher); CSafeWalkCommand.register(dispatcher); + CAutoFishCommand.register(dispatcher); CAutoToolCommand.register(dispatcher); CQServerPluginsCommand.register(dispatcher); } diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java new file mode 100644 index 0000000..13b1d62 --- /dev/null +++ b/src/main/java/com/expvintl/mctools/commands/CAutoFishCommand.java @@ -0,0 +1,53 @@ +package com.expvintl.mctools.commands; + +import com.expvintl.mctools.FeaturesBool; +import com.expvintl.mctools.events.MCEventBus; +import com.expvintl.mctools.events.client.sounds.PlaySoundEvent; +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.BoolArgumentType; +import com.mojang.brigadier.context.CommandContext; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; +import net.minecraft.text.Text; + +import java.util.TimerTask; + +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; + +public class CAutoFishCommand { + private static final CAutoFishCommand INSTANCE=new CAutoFishCommand(); + public static void register(CommandDispatcher dispatcher){ + MCEventBus.INSTANCE.register(INSTANCE); + dispatcher.register(literal("cautofish").then(argument("开关", BoolArgumentType.bool()).executes(CAutoFishCommand::execute))); + } + + private static int execute(CommandContext context) { + FeaturesBool.autoFish=context.getArgument("开关", Boolean.class); + if(FeaturesBool.autoFish){ + context.getSource().getPlayer().sendMessage(Text.literal("已启用自动钓鱼!")); + }else{ + context.getSource().getPlayer().sendMessage(Text.literal("已禁用自动钓鱼!")); + } + return Command.SINGLE_SUCCESS; + } + @Subscribe + private void onPlaySound(PlaySoundEvent event){ + if(FeaturesBool.autoFish) { + //自动钓鱼 + if (event.soundInstance.getId().getPath().equals("entity.fishing_bobber.splash")) { + //收杆 + Utils.rightClick(); + Utils.timer.schedule(new TimerTask() { + @Override + public void run() { + Utils.rightClick(); + } + },300); + + } + } + } +} diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java index 42ad82c..a8228a6 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoRespawnCommand.java @@ -3,7 +3,6 @@ package com.expvintl.mctools.commands; import com.expvintl.mctools.FeaturesBool; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.client.OpenScreenEvent; -import com.expvintl.mctools.mixin.interfaces.SimpleOptionAccessor; import com.google.common.eventbus.Subscribe; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; diff --git a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java index 00e54ec..d4943f1 100644 --- a/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CAutoToolCommand.java @@ -4,6 +4,7 @@ import com.expvintl.mctools.FeaturesBool; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.player.PlayerAttackBlockEvent; import com.expvintl.mctools.events.player.PlayerBreakBlockEvent; +import com.expvintl.mctools.mixin.interfaces.ClientPlayerInteractionManagerAccessor; import com.google.common.eventbus.Subscribe; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; @@ -14,6 +15,8 @@ import net.minecraft.block.BambooBlock; import net.minecraft.block.BambooSaplingBlock; import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; import net.minecraft.item.ItemStack; import net.minecraft.item.ShearsItem; import net.minecraft.item.SwordItem; @@ -76,14 +79,14 @@ public class CAutoToolCommand { } } //确定已经选择好了工具就切换 - if((slot!=-1&&bestScore>getScore(currentItem,state))||shouldStopUsing(currentItem)||!isTools(currentItem)) { + if((slot!=-1&&bestScore>getScore(currentItem,state)&&!lowDurability(currentItem))||!isTools(currentItem)) { //记住上一次的槽方便恢复 lastSlot=mc.player.getInventory().selectedSlot; //切换过去 mc.player.getInventory().selectedSlot = slot; - } - if(isTools(currentItem)&&shouldStopUsing(currentItem)) { - mc.options.attackKey.setPressed(false); + if(mc.interactionManager!=null) { + ((ClientPlayerInteractionManagerAccessor) mc.interactionManager).syncSelectedSlot(); + } } } public double getScore(ItemStack item, BlockState state){ @@ -92,6 +95,13 @@ public class CAutoToolCommand { if(item.getItem() instanceof ToolItem || item.getItem() instanceof ShearsItem){ //根据挖掘速度提升评分 score+=item.getMiningSpeedMultiplier(state)*10; + //附魔加分 + //耐久 + score+= EnchantmentHelper.getLevel(Enchantments.UNBREAKING,item)*10; + //效率 + score+=EnchantmentHelper.getLevel(Enchantments.EFFICIENCY,item)*5; + //经验修补(此项最优先) + score+=EnchantmentHelper.getLevel(Enchantments.MENDING,item)*20; if (item.getItem() instanceof SwordItem item1 && (state.getBlock() instanceof BambooBlock || state.getBlock() instanceof BambooSaplingBlock)) //根据挖掘等级加分 score += 90 + (item1.getMaterial().getMiningLevel() * 10); @@ -99,8 +109,8 @@ public class CAutoToolCommand { return score; } //停用低耐久度 - private boolean shouldStopUsing(ItemStack itemStack) { - return (itemStack.getMaxDamage() - itemStack.getDamage()) < (itemStack.getMaxDamage() * 6 / 100); + private boolean lowDurability(ItemStack itemStack) { + return (itemStack.getMaxDamage() - itemStack.getDamage()) < (itemStack.getMaxDamage() * 10 / 100); } public boolean isTools(ItemStack item){ return item.getItem() instanceof ToolItem || item.getItem() instanceof ShearsItem; diff --git a/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java b/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java index 307d87a..96d7762 100644 --- a/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java +++ b/src/main/java/com/expvintl/mctools/commands/CQServerPluginsCommand.java @@ -3,6 +3,7 @@ package com.expvintl.mctools.commands; import com.expvintl.mctools.FeaturesBool; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.network.PacketEvent; +import com.expvintl.mctools.utils.Utils; import com.google.common.eventbus.Subscribe; import com.mojang.brigadier.Command; import com.mojang.brigadier.CommandDispatcher; @@ -13,9 +14,10 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.network.packet.c2s.play.RequestCommandCompletionsC2SPacket; import net.minecraft.network.packet.s2c.play.CommandSuggestionsS2CPacket; import net.minecraft.text.Text; + import java.util.Random; -import java.util.Timer; import java.util.TimerTask; + import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; public class CQServerPluginsCommand { @@ -30,7 +32,7 @@ public class CQServerPluginsCommand { FeaturesBool.checkBukkitPlugins=true; context.getSource().getPlayer().networkHandler.sendPacket(new RequestCommandCompletionsC2SPacket(new Random().nextInt(200),"bukkit:ver ")); //1秒后关闭避免识别其他命令提示 - new Timer().schedule(new TimerTask() { + Utils.timer.schedule(new TimerTask() { @Override public void run() { FeaturesBool.checkBukkitPlugins=false; diff --git a/src/main/java/com/expvintl/mctools/events/client/PreTickEvent.java b/src/main/java/com/expvintl/mctools/events/client/PreTickEvent.java new file mode 100644 index 0000000..e524295 --- /dev/null +++ b/src/main/java/com/expvintl/mctools/events/client/PreTickEvent.java @@ -0,0 +1,8 @@ +package com.expvintl.mctools.events.client; + +public class PreTickEvent { + private static final PreTickEvent INSTANCE=new PreTickEvent(); + public static PreTickEvent get(){ + return INSTANCE; + } +} diff --git a/src/main/java/com/expvintl/mctools/events/client/sounds/PlaySoundEvent.java b/src/main/java/com/expvintl/mctools/events/client/sounds/PlaySoundEvent.java new file mode 100644 index 0000000..6884458 --- /dev/null +++ b/src/main/java/com/expvintl/mctools/events/client/sounds/PlaySoundEvent.java @@ -0,0 +1,12 @@ +package com.expvintl.mctools.events.client.sounds; + +import net.minecraft.client.sound.SoundInstance; + +public class PlaySoundEvent { + private static final PlaySoundEvent INSTANCE=new PlaySoundEvent(); + public SoundInstance soundInstance; + public static PlaySoundEvent get(SoundInstance instance){ + INSTANCE.soundInstance=instance; + return INSTANCE; + } +} diff --git a/src/main/java/com/expvintl/mctools/events/player/PlayerAttackBlockEvent.java b/src/main/java/com/expvintl/mctools/events/player/PlayerAttackBlockEvent.java index eb815c1..b2d1e86 100644 --- a/src/main/java/com/expvintl/mctools/events/player/PlayerAttackBlockEvent.java +++ b/src/main/java/com/expvintl/mctools/events/player/PlayerAttackBlockEvent.java @@ -1,6 +1,5 @@ package com.expvintl.mctools.events.player; -import net.minecraft.network.packet.Packet; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; diff --git a/src/main/java/com/expvintl/mctools/events/player/PlayerBreakBlockEvent.java b/src/main/java/com/expvintl/mctools/events/player/PlayerBreakBlockEvent.java index e0e643a..29a975f 100644 --- a/src/main/java/com/expvintl/mctools/events/player/PlayerBreakBlockEvent.java +++ b/src/main/java/com/expvintl/mctools/events/player/PlayerBreakBlockEvent.java @@ -1,7 +1,6 @@ package com.expvintl.mctools.events.player; import net.minecraft.util.math.BlockPos; -import org.lwjgl.system.windows.INPUT; public class PlayerBreakBlockEvent { private static final PlayerBreakBlockEvent INSTANCE=new PlayerBreakBlockEvent(); diff --git a/src/main/java/com/expvintl/mctools/mixin/MinecraftClientMixin.java b/src/main/java/com/expvintl/mctools/mixin/MinecraftClientMixin.java index 48fa090..f0efa6f 100644 --- a/src/main/java/com/expvintl/mctools/mixin/MinecraftClientMixin.java +++ b/src/main/java/com/expvintl/mctools/mixin/MinecraftClientMixin.java @@ -1,10 +1,9 @@ package com.expvintl.mctools.mixin; -import com.expvintl.mctools.FeaturesBool; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.client.OpenScreenEvent; +import com.expvintl.mctools.events.client.PreTickEvent; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.DeathScreen; import net.minecraft.client.gui.screen.Screen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -18,4 +17,9 @@ public class MinecraftClientMixin { private void onSetScreen(Screen screen, CallbackInfo info){ MCEventBus.INSTANCE.post(OpenScreenEvent.get(screen)); } + @Inject(method = "tick",at=@At("HEAD")) + private void onPreTick(CallbackInfo ci){ + MCEventBus.INSTANCE.register(PreTickEvent.get()); + } + } diff --git a/src/main/java/com/expvintl/mctools/mixin/SoundSystemMixin.java b/src/main/java/com/expvintl/mctools/mixin/SoundSystemMixin.java new file mode 100644 index 0000000..3b9477c --- /dev/null +++ b/src/main/java/com/expvintl/mctools/mixin/SoundSystemMixin.java @@ -0,0 +1,18 @@ +package com.expvintl.mctools.mixin; + +import com.expvintl.mctools.events.MCEventBus; +import com.expvintl.mctools.events.client.sounds.PlaySoundEvent; +import net.minecraft.client.sound.SoundInstance; +import net.minecraft.client.sound.SoundSystem; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(SoundSystem.class) +public class SoundSystemMixin { + @Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)V",at=@At("HEAD")) + private void onPlaySound(SoundInstance instance, CallbackInfo ci){ + MCEventBus.INSTANCE.post(PlaySoundEvent.get(instance)); + } +} diff --git a/src/main/java/com/expvintl/mctools/mixin/interfaces/ClientPlayerInteractionManagerAccessor.java b/src/main/java/com/expvintl/mctools/mixin/interfaces/ClientPlayerInteractionManagerAccessor.java new file mode 100644 index 0000000..90da03a --- /dev/null +++ b/src/main/java/com/expvintl/mctools/mixin/interfaces/ClientPlayerInteractionManagerAccessor.java @@ -0,0 +1,11 @@ +package com.expvintl.mctools.mixin.interfaces; + +import net.minecraft.client.network.ClientPlayerInteractionManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(ClientPlayerInteractionManager.class) +public interface ClientPlayerInteractionManagerAccessor { + @Invoker("syncSelectedSlot") + void syncSelectedSlot(); +} diff --git a/src/main/java/com/expvintl/mctools/mixin/interfaces/IClientPlayerInteractionManager.java b/src/main/java/com/expvintl/mctools/mixin/interfaces/IClientPlayerInteractionManager.java deleted file mode 100644 index 7a74f90..0000000 --- a/src/main/java/com/expvintl/mctools/mixin/interfaces/IClientPlayerInteractionManager.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.expvintl.mctools.mixin.interfaces; - -public interface IClientPlayerInteractionManager { - void syncSelected(); -} diff --git a/src/main/java/com/expvintl/mctools/mixin/interfaces/MinecraftClientAccessor.java b/src/main/java/com/expvintl/mctools/mixin/interfaces/MinecraftClientAccessor.java new file mode 100644 index 0000000..098637a --- /dev/null +++ b/src/main/java/com/expvintl/mctools/mixin/interfaces/MinecraftClientAccessor.java @@ -0,0 +1,11 @@ +package com.expvintl.mctools.mixin.interfaces; + +import net.minecraft.client.MinecraftClient; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(MinecraftClient.class) +public interface MinecraftClientAccessor { + @Invoker("doItemUse") + void doItemUse(); +} diff --git a/src/main/java/com/expvintl/mctools/mixin/player/ClientPlayerInteractionManagerMixin.java b/src/main/java/com/expvintl/mctools/mixin/player/ClientPlayerInteractionManagerMixin.java index 1626e32..64d7594 100644 --- a/src/main/java/com/expvintl/mctools/mixin/player/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/com/expvintl/mctools/mixin/player/ClientPlayerInteractionManagerMixin.java @@ -1,27 +1,14 @@ package com.expvintl.mctools.mixin.player; -import com.expvintl.mctools.FeaturesBool; import com.expvintl.mctools.events.MCEventBus; import com.expvintl.mctools.events.player.PlayerAttackBlockEvent; import com.expvintl.mctools.events.player.PlayerBreakBlockEvent; -import com.expvintl.mctools.mixin.interfaces.IClientPlayerInteractionManager; -import net.minecraft.block.BambooBlock; -import net.minecraft.block.BambooSaplingBlock; -import net.minecraft.block.BlockState; -import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerInteractionManager; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ShearsItem; -import net.minecraft.item.SwordItem; -import net.minecraft.item.ToolItem; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ClientPlayerInteractionManager.class) diff --git a/src/main/java/com/expvintl/mctools/utils/Utils.java b/src/main/java/com/expvintl/mctools/utils/Utils.java index 025b2ac..82c3b06 100644 --- a/src/main/java/com/expvintl/mctools/utils/Utils.java +++ b/src/main/java/com/expvintl/mctools/utils/Utils.java @@ -1,14 +1,17 @@ package com.expvintl.mctools.utils; +import com.expvintl.mctools.mixin.interfaces.MinecraftClientAccessor; import net.minecraft.client.MinecraftClient; import net.minecraft.registry.RegistryKey; import net.minecraft.world.biome.Biome; import java.util.Objects; import java.util.Optional; +import java.util.Timer; public class Utils { private static final MinecraftClient mc=MinecraftClient.getInstance(); + public static final Timer timer=new Timer(); public static String getCurrentDimensionName(){ if(mc.world!=null){ String dismenName=mc.world.getDimensionKey().getValue().toString(); @@ -99,4 +102,7 @@ public class Utils { } return "未知"; } + public static void rightClick(){ + ((MinecraftClientAccessor)mc).doItemUse(); + } } diff --git a/src/main/resources/mctools.mixins.json b/src/main/resources/mctools.mixins.json index 1d2cce1..ecb1114 100644 --- a/src/main/resources/mctools.mixins.json +++ b/src/main/resources/mctools.mixins.json @@ -9,6 +9,9 @@ ], "client": [ "MinecraftClientMixin", + "SoundSystemMixin", + "interfaces.ClientPlayerInteractionManagerAccessor", + "interfaces.MinecraftClientAccessor", "interfaces.SimpleOptionAccessor", "player.ClientPlayerInteractionManagerMixin" ],