From 9bbac5d8a10c67113e196cfea2d339d2f120ecc9 Mon Sep 17 00:00:00 2001 From: BRanulf Date: Wed, 30 Apr 2025 22:41:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=BF=AB=E6=8D=B7=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../ElytraBoostNotPlaceModClient.java | 39 ++++++++++++------- .../elytraboostnotplace/ModConfig.java | 3 +- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8e630da..8375c2c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.21.4 yarn_mappings=1.21.4+build.8 loader_version=0.16.10 # Mod Properties -mod_version=1.14.514.002 +mod_version=1.14.514.003 maven_group=org.example1 archives_base_name=elytraboostmod # Dependencies diff --git a/src/main/java/com/example/elytraboostnotplace/ElytraBoostNotPlaceModClient.java b/src/main/java/com/example/elytraboostnotplace/ElytraBoostNotPlaceModClient.java index 2c83e20..5f82503 100644 --- a/src/main/java/com/example/elytraboostnotplace/ElytraBoostNotPlaceModClient.java +++ b/src/main/java/com/example/elytraboostnotplace/ElytraBoostNotPlaceModClient.java @@ -7,6 +7,7 @@ import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.event.player.UseBlockCallback; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.KeyBinding; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.FireworkRocketItem; import net.minecraft.text.Text; @@ -15,7 +16,7 @@ import net.minecraft.util.Hand; public class ElytraBoostNotPlaceModClient implements ClientModInitializer { private static ModConfig config; - private static boolean lastToggleState = true; + private static boolean keyWasPressed = false; @Override public void onInitializeClient() { @@ -23,25 +24,33 @@ public class ElytraBoostNotPlaceModClient implements ClientModInitializer { AutoConfig.register(ModConfig.class, JanksonConfigSerializer::new); config = AutoConfig.getConfigHolder(ModConfig.class).getConfig(); - // TODO 注册快捷键,待修复 -// KeyBindingHelper.registerKeyBinding(config.toggleKey); + // 注册快捷键 + KeyBinding toggleKeyBinding = KeyBindingHelper.registerKeyBinding(config.toggleKey); // 每tick检查快捷键 ClientTickEvents.END_CLIENT_TICK.register(client -> { - if (config.toggleKey.wasPressed()) { - config.modEnabled = !config.modEnabled; - AutoConfig.getConfigHolder(ModConfig.class).save(); + if (toggleKeyBinding.wasPressed()) { + if (!keyWasPressed) { + keyWasPressed = true; + config.modEnabled = !config.modEnabled; - // 显示通知 - if (client.player != null) { - String status = config.modEnabled ? "§a启用" : "§c禁用"; - client.player.sendMessage( - Text.translatable(config.modEnabled ? - "message.elytraboostnotplace.enabled" : - "message.elytraboostnotplace.disabled"), - true - ); + // 异步保存配置 + new Thread(() -> { + AutoConfig.getConfigHolder(ModConfig.class).save(); + }).start(); + + // 显示通知 + if (client.player != null) { + client.player.sendMessage( + Text.translatable(config.modEnabled ? + "notification.elytraboostnotplace.enabled" : + "notification.elytraboostnotplace.disabled"), + true + ); + } } + } else { + keyWasPressed = false; } }); diff --git a/src/main/java/com/example/elytraboostnotplace/ModConfig.java b/src/main/java/com/example/elytraboostnotplace/ModConfig.java index 36a9c7b..523a364 100644 --- a/src/main/java/com/example/elytraboostnotplace/ModConfig.java +++ b/src/main/java/com/example/elytraboostnotplace/ModConfig.java @@ -16,8 +16,7 @@ public class ModConfig implements ConfigData { public KeyBinding toggleKey = new KeyBinding( "key.elytraboostnotplace.toggle", InputUtil.Type.KEYSYM, - GLFW.GLFW_KEY_UNKNOWN, + GLFW.GLFW_KEY_B, "category.elytraboostnotplace.main" ); } -