From 2d902bbf3c4ec1b57f12d9ce348a42937f5894a6 Mon Sep 17 00:00:00 2001 From: Motschen Date: Thu, 27 Oct 2022 20:25:26 +0200 Subject: [PATCH 1/9] Port to 22w43a --- build.gradle | 18 +++++++++--------- gradle.properties | 10 +++++----- .../client/controller/InputHandlers.java | 7 ++++--- .../gui/MidnightControlsSettingsScreen.java | 6 +++--- .../client/gui/RingScreen.java | 4 ++-- .../client/mixin/ClientPlayerEntityMixin.java | 4 ++-- .../mixin/ControlsOptionsScreenMixin.java | 4 ++-- .../client/mixin/WorldRendererMixin.java | 2 +- 8 files changed, 28 insertions(+), 27 deletions(-) diff --git a/build.gradle b/build.gradle index a347986..b7e2e1a 100644 --- a/build.gradle +++ b/build.gradle @@ -102,7 +102,7 @@ dependencies { } include 'org.aperlambda:lambdajcommon:1.8.1' - modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}" + modCompileOnlyApi "com.terraformersmc:modmenu:${project.modmenu_version}" // Compatibility mods @@ -110,15 +110,15 @@ dependencies { // modImplementation("maven.modrinth:ok-zoomer:${project.ok_zoomer_version}") // modImplementation "io.github.ennuil:LibZoomer:${project.libzoomer_version}" - modImplementation "io.github.cottonmc:LibGui:${project.libgui_version}" - modImplementation "org.quiltmc:quilt-json5:1.0.0" + modCompileOnlyApi "io.github.cottonmc:LibGui:${project.libgui_version}" + modCompileOnlyApi "org.quiltmc:quilt-json5:1.0.0" modCompileOnly "maven.modrinth:sodium:${project.sodium_version}" - modImplementation("maven.modrinth:emi:${project.emi_version}") - modImplementation "maven.modrinth:emotecraft:${project.emotecraft_version}" - modImplementation "io.github.kosmx:bendy-lib:${project.bendylib_version}" - modImplementation "dev.isxander:yet-another-config-lib:${project.yacl_version}" - modImplementation "maven.modrinth:inventory-tabs-updated:${project.inventorytabs_version}" - modImplementation "maven.modrinth:bedrockify:${project.bedrockify_version}" + modCompileOnlyApi "maven.modrinth:emi:${project.emi_version}" + modCompileOnlyApi "maven.modrinth:emotecraft:${project.emotecraft_version}" + modCompileOnlyApi "io.github.kosmx:bendy-lib:${project.bendylib_version}" + modCompileOnlyApi "dev.isxander:yet-another-config-lib:${project.yacl_version}" + modCompileOnlyApi "maven.modrinth:inventory-tabs-updated:${project.inventorytabs_version}" + modCompileOnlyApi "maven.modrinth:bedrockify:${project.bedrockify_version}" // Required for Inventory Tabs modApi("me.shedaniel.cloth:cloth-config-fabric:${project.clothconfig_version}") { exclude(group: "net.fabricmc.fabric-api") diff --git a/gradle.properties b/gradle.properties index c8a6c03..03b40f4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,9 +3,9 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.19.2 -yarn_mappings=1.19.2+build.9 -loader_version=0.14.9 +minecraft_version=22w43a +yarn_mappings=22w43a+build.4 +loader_version=0.14.10 # Mod Properties mod_version = 1.7.1 @@ -15,10 +15,10 @@ modrinth_id=bXX9h73M # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.60.0+1.19.2 +fabric_version=0.65.1+1.19.3 sodium_version=mc1.19.2-0.4.4 spruceui_version=4.0.0+1.19 -midnightlib_version=0.6.1 +midnightlib_version=0.6.2 modmenu_version=4.0.6 emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric bendylib_version=2.0.+ diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java index b8522b3..8394c14 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java @@ -34,6 +34,7 @@ import net.minecraft.client.gui.widget.PressableWidget; import net.minecraft.client.input.Input; import net.minecraft.client.util.ScreenshotRecorder; import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemGroups; import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.SlotActionType; import net.minecraft.util.math.MathHelper; @@ -88,10 +89,10 @@ public class InputHandlers { int currentTab = CreativeInventoryScreenAccessor.getSelectedTab(); int nextTab = currentTab + (next ? 1 : -1); if (nextTab < 0) - nextTab = ItemGroup.GROUPS.length - 1; - else if (nextTab >= ItemGroup.GROUPS.length) + nextTab = ItemGroups.GROUPS.length - 1; + else if (nextTab >= ItemGroups.GROUPS.length) nextTab = 0; - inventory.midnightcontrols$setSelectedTab(ItemGroup.GROUPS[nextTab]); + inventory.midnightcontrols$setSelectedTab(ItemGroups.GROUPS[nextTab]); return true; } else if (client.currentScreen instanceof InventoryScreen || client.currentScreen instanceof CraftingScreen || client.currentScreen instanceof AbstractFurnaceScreen) { RecipeBookWidget recipeBook; diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java index 2497bc8..9b1f826 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java @@ -38,7 +38,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Util; -import net.minecraft.util.math.Matrix4f; +import org.joml.Matrix4f; import org.lwjgl.glfw.GLFW; import java.awt.*; @@ -290,8 +290,8 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { this.buildTabs(); this.addDrawableChild(this.resetOption.createWidget(Position.of(this.width / 2 - 155, this.height - 29), 150)); - this.addDrawableChild(new ButtonWidget(this.width / 2 - 155 + 160, this.height - 29, 150, 20, SpruceTexts.GUI_DONE, - btn -> this.client.setScreen(this.parent))); + this.addDrawableChild(ButtonWidget.method_46430(SpruceTexts.GUI_DONE, btn -> this.client.setScreen(this.parent)) + .method_46434(this.width / 2 - 155 + 160, this.height - 29, 150, 20).method_46431()); } public void buildTabs() { diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java index 6ca31ed..0c79651 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java @@ -37,8 +37,8 @@ public class RingScreen extends Screen { protected void init() { super.init(); if (mod.ring.getMaxPages() > 1) { - this.addDrawableChild(new ButtonWidget(5, 5, 20, 20, Text.of("◀"), button -> this.mod.ring.cyclePage(false))); - this.addDrawableChild(new ButtonWidget(width - 25, 5, 20, 20, Text.of("▶"), button -> this.mod.ring.cyclePage(true))); + this.addDrawableChild(ButtonWidget.method_46430(Text.of("◀"), button -> this.mod.ring.cyclePage(false)).method_46434(5, 5, 20, 20).method_46431()); + this.addDrawableChild(ButtonWidget.method_46430(Text.of("▶"), button -> this.mod.ring.cyclePage(true)).method_46434(width - 25, 5, 20, 20).method_46431()); } } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ClientPlayerEntityMixin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ClientPlayerEntityMixin.java index c9b8d06..c96140a 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ClientPlayerEntityMixin.java @@ -38,8 +38,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity { private boolean midnightcontrols$driftingPrevented = false; - public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile, @Nullable PlayerPublicKey publicKey) { - super(world, profile, publicKey); + public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile) { + super(world, profile); } @Shadow diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ControlsOptionsScreenMixin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ControlsOptionsScreenMixin.java index 1a8daa5..9d29580 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ControlsOptionsScreenMixin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ControlsOptionsScreenMixin.java @@ -48,9 +48,9 @@ public abstract class ControlsOptionsScreenMixin extends GameOptionsScreen { int i = this.width / 2 - 155; int j = i + 160; int k = this.height / 6 - 12 + 48; - this.addDrawableChild(new ButtonWidget(j, k, 150, 20, Text.translatable("midnightcontrols.menu.title.controller").append("..."), (button) -> { + this.addDrawableChild(ButtonWidget.method_46430(Text.translatable("midnightcontrols.menu.title.controller").append("..."), (button) -> { this.client.setScreen(new MidnightControlsSettingsScreen(this, false)); - })); + }).method_46434(j, k, 150, 20).method_46431()); } } } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/WorldRendererMixin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/WorldRendererMixin.java index 41faa81..48b3b89 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/WorldRendererMixin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/WorldRendererMixin.java @@ -22,8 +22,8 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemUsageContext; import net.minecraft.util.Hand; import net.minecraft.util.hit.HitResult; -import net.minecraft.util.math.Matrix4f; import net.minecraft.util.shape.VoxelShape; +import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; From 1f675622f0680b7990ba2f1ec25387975bc83900 Mon Sep 17 00:00:00 2001 From: Motschen Date: Thu, 27 Oct 2022 20:51:17 +0200 Subject: [PATCH 2/9] Use MidnightLib 22w43a version from Modrinth --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 03b40f4..871f9bc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ modrinth_id=bXX9h73M fabric_version=0.65.1+1.19.3 sodium_version=mc1.19.2-0.4.4 spruceui_version=4.0.0+1.19 -midnightlib_version=0.6.2 +midnightlib_version=0.6.1+22w43a modmenu_version=4.0.6 emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric bendylib_version=2.0.+ From aa75a58a4ddbd59093502e7018cbecaeae3d75a3 Mon Sep 17 00:00:00 2001 From: eric122804 <85391394+eric122804@users.noreply.github.com> Date: Wed, 7 Dec 2022 20:30:51 +0800 Subject: [PATCH 3/9] Create zh_tw --- .../assets/midnightcontrols/lang/zh_tw | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 src/main/resources/assets/midnightcontrols/lang/zh_tw diff --git a/src/main/resources/assets/midnightcontrols/lang/zh_tw b/src/main/resources/assets/midnightcontrols/lang/zh_tw new file mode 100644 index 0000000..2c32ff0 --- /dev/null +++ b/src/main/resources/assets/midnightcontrols/lang/zh_tw @@ -0,0 +1,152 @@ +{ + "key.midnightcontrols.look_down": "視角下移", + "key.midnightcontrols.look_left": "視角左移", + "key.midnightcontrols.look_right": "視角右移", + "key.midnightcontrols.look_up": "視角上移", + "key.midnightcontrols.ring": "顯示額外按鍵菜單", + "midnightcontrols.action.attack": "攻擊", + "midnightcontrols.action.back": "向後移動", + "midnightcontrols.action.chat": "打開聊天室", + "midnightcontrols.action.drop_item": "丟棄所選物品", + "midnightcontrols.action.exit": "退出", + "midnightcontrols.action.forward": "向前移動", + "midnightcontrols.action.hit": "挖掘", + "midnightcontrols.action.hotbar_left": "向左循環選擇快捷欄", + "midnightcontrols.action.hotbar_right": "向右循環選擇快捷欄", + "midnightcontrols.action.inventory": "物品欄", + "midnightcontrols.action.jump": "跳躍", + "midnightcontrols.action.left": "向左移動", + "midnightcontrols.action.pause_game": "暫停遊戲", + "midnightcontrols.action.pick_block": "選取方塊", + "midnightcontrols.action.pickup": "拿取一個/拿取一半", + "midnightcontrols.action.pickup_all": "拿取一组/拿取全部", + "midnightcontrols.action.place": "放置方塊", + "midnightcontrols.action.player_list": "玩家列表", + "midnightcontrols.action.quick_move": "快速移動物品", + "midnightcontrols.action.right": "向右移動", + "midnightcontrols.action.screenshot": "截圖", + "midnightcontrols.action.sneak": "潛行", + "midnightcontrols.action.sprint": "疾走", + "midnightcontrols.action.swap_hands": "與副手交換", + "midnightcontrols.action.toggle_perspective": "切換視角", + "midnightcontrols.action.toggle_smooth_camera": "切換電影視角", + "midnightcontrols.action.use": "使用物品/放置方塊", + "midnightcontrols.action.zoom": "視野縮放", + "midnightcontrols.action.zoom_in": "縮放時將視野推近", + "midnightcontrols.action.zoom_out": "縮放時將視野拉遠", + "midnightcontrols.action.zoom_reset": "縮放時重置縮放距離", + "midnightcontrols.button.a": "A", + "midnightcontrols.button.b": "B", + "midnightcontrols.button.x": "X", + "midnightcontrols.button.y": "Y", + "midnightcontrols.button.left_bumper": "LB 鍵", + "midnightcontrols.button.right_bumper": "RB 鍵", + "midnightcontrols.button.back": "選擇鍵", + "midnightcontrols.button.start": "開始鍵", + "midnightcontrols.button.guide": "功能鍵", + "midnightcontrols.button.left_thumb": "左搖桿(按壓)", + "midnightcontrols.button.right_thumb": "右搖桿(按壓)", + "midnightcontrols.button.dpad_up": "十字鍵上", + "midnightcontrols.button.dpad_right": "十字鍵右", + "midnightcontrols.button.dpad_down": "十字鍵下", + "midnightcontrols.button.dpad_left": "十字鍵左", + "midnightcontrols.axis.left_x+": "左搖桿右(X軸正向)", + "midnightcontrols.axis.left_y+": "左搖桿上(Y軸正向)", + "midnightcontrols.axis.right_x+": "右搖桿右(X軸正向)", + "midnightcontrols.axis.right_y+": "右搖桿上(Y軸正向)", + "midnightcontrols.axis.left_trigger": "左板機鍵", + "midnightcontrols.axis.right_trigger": "右板機鍵", + "midnightcontrols.axis.left_x-": "左搖桿左(X軸負向)", + "midnightcontrols.axis.left_y-": "左搖桿下(Y軸負向)", + "midnightcontrols.axis.right_x-": "右搖桿左(X軸負向)", + "midnightcontrols.axis.right_y-": "右搖桿下(Y軸負向)", + "midnightcontrols.button.unknown": "未知(%d)", + "midnightcontrols.controller.connected": "手把 %d 已連接。", + "midnightcontrols.controller.disconnected": "手把 %d 已斷開。", + "midnightcontrols.controller.mappings.1": "請使用 %s 配置手把對應", + "midnightcontrols.controller.mappings.3": "並將對應文件放入此位置:`%s.minecraft/config/gamecontrollerdb.txt%s`。", + "midnightcontrols.controller.mappings.error": "發生錯誤,無法讀取對應文件。", + "midnightcontrols.controller.mappings.error.write": "發生錯誤,無法保存對應文件。", + "midnightcontrols.controller.mappings.updated": "對應已更新!", + "midnightcontrols.controller_type.default": "重設", + "midnightcontrols.controller_type.dualshock": "DualShock", + "midnightcontrols.controller_type.switch": "Switch", + "midnightcontrols.controller_type.xbox": "Xbox", + "midnightcontrols.controller_type.steam": "Steam", + "midnightcontrols.controller_type.ouya": "OUYA", + "midnightcontrols.controls_mode.default": "鍵鼠", + "midnightcontrols.controls_mode.controller": "手把", + "midnightcontrols.controls_mode.touchscreen": "觸摸屏", + "midnightcontrols.hud_side.left": "左側", + "midnightcontrols.hud_side.right": "右側", + "midnightcontrols.menu.analog_movement": "識別搖桿輸入的精確值", + "midnightcontrols.menu.auto_switch_mode": "自動切換模式", + "midnightcontrols.menu.controller": "手把", + "midnightcontrols.menu.controller2": "額外手把", + "midnightcontrols.menu.controller_type": "手把類型", + "midnightcontrols.menu.controls_mode": "模式", + "midnightcontrols.menu.fast_block_placing": "方塊快速放置", + "midnightcontrols.menu.fly_drifting": "水平方向飛行慣性", + "midnightcontrols.menu.fly_drifting_vertical": "垂直方向飛行慣性", + "midnightcontrols.menu.hud_enable": "啟用HUD", + "midnightcontrols.menu.hud_side": "HUD位置", + "midnightcontrols.menu.invert_right_x_axis": "反轉右搖桿X軸", + "midnightcontrols.menu.invert_right_y_axis": "反轉右搖桿Y軸", + "midnightcontrols.menu.keyboard_controls": "鍵盤控制...", + "midnightcontrols.menu.left_dead_zone": "左搖桿死區", + "midnightcontrols.menu.mappings.open_input_str": "編輯對應文件", + "midnightcontrols.menu.max_left_x_value": "左搖桿X軸最大值識別範圍", + "midnightcontrols.menu.max_left_y_value": "左搖桿Y軸最大值識別範圍", + "midnightcontrols.menu.max_right_x_value": "右搖桿X軸最大值識別範圍", + "midnightcontrols.menu.max_right_y_value": "右搖桿Y軸最大值識別範圍", + "midnightcontrols.menu.mouse_speed": "鼠標移動速度", + "midnightcontrols.menu.reacharound.horizontal": "水平方向方塊放置輔助", + "midnightcontrols.menu.reacharound.vertical": "垂直方向方塊放置輔助", + "midnightcontrols.menu.reload_controller_mappings": "重新加载手把對應", + "midnightcontrols.menu.right_dead_zone": "右搖桿死區", + "midnightcontrols.menu.rotation_speed": "鏡頭旋轉速度 (X)", + "midnightcontrols.menu.y_axis_rotation_speed": "鏡頭旋轉速度 (Y)", + "midnightcontrols.menu.separator.controller": "手把", + "midnightcontrols.menu.separator.general": "通用", + "midnightcontrols.menu.title": "midnightcontrols — 設置", + "midnightcontrols.menu.title.controller": "手把選項", + "midnightcontrols.menu.title.controller_controls": "手把控制", + "midnightcontrols.menu.title.gameplay": "遊戲内容選項", + "midnightcontrols.menu.title.general": "通用選項", + "midnightcontrols.menu.title.hud": "HUD選項", + "midnightcontrols.menu.title.mappings.string": "編輯對應文件", + "midnightcontrols.menu.title.visual": "界面選項", + "midnightcontrols.menu.unfocused_input": "非活動狀態輸入", + "midnightcontrols.menu.virtual_mouse": "虛擬鼠標", + "midnightcontrols.menu.virtual_mouse.skin": "虛擬鼠標指针樣式", + "midnightcontrols.narrator.unbound": "取消绑定 %s", + "midnightcontrols.not_bound": "未绑定", + "midnightcontrols.tooltip.analog_movement": "若遊戲機制允許,則可根據推動搖桿的力度與幅度決定移動的速度。", + "midnightcontrols.tooltip.auto_switch_mode": "如果已有手把連接,則自動切換為手把操作模式。", + "midnightcontrols.tooltip.controller2": "使用額外的手把,比如將一左一右的兩個 Joy-Con 合為一个功能完全的手把。", + "midnightcontrols.tooltip.controller_type": "選擇手把類型,以顯示對應的按鍵圖標。", + "midnightcontrols.tooltip.controls_mode": "操作模式", + "midnightcontrols.tooltip.fast_block_placing": "在創造模式中處於飛行狀態時,可以根據你飛行的速度快速放置方塊。\n§c在部分伺服器可能会被認定為作弊。", + "midnightcontrols.tooltip.fly_drifting": "處於飛行狀態時,啟用原版的水平方向飛行慣性(緩停滑行)。", + "midnightcontrols.tooltip.fly_drifting_vertical": "處於飛行狀態時,啟用原版的垂直方向飛行慣性(緩停滑行)。", + "midnightcontrols.tooltip.hud_enable": "顯示手把按鍵操作提示。", + "midnightcontrols.tooltip.hud_side": "HUD的位置位於畫面的哪一側。", + "midnightcontrols.tooltip.left_dead_zone": "左搖桿配置的死區。\n死區決定搖桿要偏離中心位置多遠才能讓搖桿的輸入有效。", + "midnightcontrols.tooltip.max_left_x_value": "更改左搖桿X軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致在識別搖桿輸入的精確認值的情况下,左右移動較為緩慢等问题,本项可能会有所帮助。", + "midnightcontrols.tooltip.max_left_y_value": "更改左搖桿Y軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致在識別搖桿輸入的精確認值的情况下,前后移動較為緩慢等问题,本项可能会有所帮助。", + "midnightcontrols.tooltip.max_right_x_value": "更改右搖桿X軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致鏡頭左右旋轉較為緩慢等問题,本項可能會有所幫助。", + "midnightcontrols.tooltip.max_right_y_value": "更改右搖桿Y軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致鏡頭上下旋轉較為緩慢等問题,本項可能會有所幫助。", + "midnightcontrols.tooltip.mouse_speed": "手把模擬的鼠標的移動速度。", + "midnightcontrols.tooltip.reacharound.horizontal": "啟用水平方向方塊放置輔助,可在腳下方塊的前方放置方塊。\n§c在部分伺服器可能會被認定為作弊。", + "midnightcontrols.tooltip.reacharound.vertical": "啟用垂直方向方塊放置輔助,可在腳下方塊的下方放置方塊。\n§c在部分伺服器可能會被認定為作弊。", + "midnightcontrols.tooltip.reload_controller_mappings": "重新加載手把的對應文件。", + "midnightcontrols.tooltip.right_dead_zone": "右搖桿配置的死區。\n死區決定搖桿要偏離中心位置多遠才能讓搖桿的輸入有效。", + "midnightcontrols.tooltip.rotation_speed": "手把操作模式下的鏡頭旋轉速度。(X)", + "midnightcontrols.tooltip.y_axis_rotation_speed": "手把操作模式下的鏡頭旋轉速度。(Y)", + "midnightcontrols.tooltip.unfocused_input": "即使遊戲窗口處於非活動狀態,也允許手把進行按鍵輸入。", + "midnightcontrols.tooltip.virtual_mouse": "啟用虛擬鼠標,在分屏的情况下很有用。", + "midnightcontrols.virtual_mouse.skin.default_light": "預設樣式(白色)", + "midnightcontrols.virtual_mouse.skin.default_dark": "預設樣式(黑色)", + "midnightcontrols.virtual_mouse.skin.second_light": "額外樣式(白色)", + "midnightcontrols.virtual_mouse.skin.second_dark": "額外樣式(黑色)" +} From 308b41094f58be875c4372e87eb732ec6fdd4fa9 Mon Sep 17 00:00:00 2001 From: Motschen Date: Fri, 9 Dec 2022 20:02:59 +0100 Subject: [PATCH 4/9] MidnightControls 1.7.2 - Port to 1.19.3, various new options - Update to 1.19.3 (Tabbing through creative tabs behaves the same as before, that was hard) - Add an option to move the chat input field to the top of the screen for better input on devices using an on-screen keyboard - Add an option to make the left joystick behave like a mouse in every screen - Add a button to more easily access the Advanced Config --- build.gradle | 6 +- gradle.properties | 18 ++--- .../client/MidnightControlsConfig.java | 4 +- .../client/MidnightInput.java | 2 +- .../client/compat/EMICompat.java | 8 +-- .../client/controller/InputHandlers.java | 49 +++++++++++--- .../gui/MidnightControlsSettingsScreen.java | 22 ++++-- .../client/gui/RingScreen.java | 5 +- .../client/mixin/ChatScreenMixin.java | 35 ++++++++++ .../mixin/ControlsOptionsScreenMixin.java | 23 +------ .../CreativeInventoryScreenAccessor.java | 5 +- .../assets/midnightcontrols/lang/en_us.json | 4 ++ .../lang/{zh_tw => zh_tw.json} | 64 +++++++++--------- .../resources/midnightcontrols.mixins.json | 1 + .../textures/gui/controller_buttons.png | Bin 4553 -> 4981 bytes .../resourcepacks/bedrock/pack.mcmeta | 2 +- .../resourcepacks/legacy/pack.mcmeta | 2 +- 17 files changed, 157 insertions(+), 93 deletions(-) create mode 100644 src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ChatScreenMixin.java rename src/main/resources/assets/midnightcontrols/lang/{zh_tw => zh_tw.json} (83%) diff --git a/build.gradle b/build.gradle index b7e2e1a..343bec3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.12-SNAPSHOT' + id 'fabric-loom' version '1.0-SNAPSHOT' id 'java-library' id 'maven-publish' id 'com.github.johnrengelman.shadow' version '7.0.0' @@ -32,7 +32,7 @@ boolean isMCVersionNonRelease() { } String getMCVersionString() { - if (isMCVersionNonRelease()) { + if (isMCVersionNonRelease() || project.minecraft_version == "1.19.3") { return project.minecraft_version } def version = project.minecraft_version.split('\\.') @@ -113,7 +113,7 @@ dependencies { modCompileOnlyApi "io.github.cottonmc:LibGui:${project.libgui_version}" modCompileOnlyApi "org.quiltmc:quilt-json5:1.0.0" modCompileOnly "maven.modrinth:sodium:${project.sodium_version}" - modCompileOnlyApi "maven.modrinth:emi:${project.emi_version}" + modImplementation "maven.modrinth:emi:${project.emi_version}" modCompileOnlyApi "maven.modrinth:emotecraft:${project.emotecraft_version}" modCompileOnlyApi "io.github.kosmx:bendy-lib:${project.bendylib_version}" modCompileOnlyApi "dev.isxander:yet-another-config-lib:${project.yacl_version}" diff --git a/gradle.properties b/gradle.properties index 871f9bc..c928629 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,26 +3,26 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=22w43a -yarn_mappings=22w43a+build.4 -loader_version=0.14.10 +minecraft_version=1.19.3 +yarn_mappings=1.19.3+build.2 +loader_version=0.14.11 # Mod Properties -mod_version = 1.7.1 +mod_version = 1.7.2 maven_group = eu.midnightdust archives_base_name = midnightcontrols modrinth_id=bXX9h73M # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.65.1+1.19.3 +fabric_version=0.68.1+1.19.3 sodium_version=mc1.19.2-0.4.4 -spruceui_version=4.0.0+1.19 -midnightlib_version=0.6.1+22w43a -modmenu_version=4.0.6 +spruceui_version=4.1.0+1.19.3 +midnightlib_version=1.1.0-fabric +modmenu_version=5.0.1 emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric bendylib_version=2.0.+ -emi_version=0.4.0+1.19 +emi_version=0.5.0+1.19.3 libgui_version=6.0.0+1.19 inventorytabs_version=inventorytabs-0.9.beta-1.19.x clothconfig_version=7.0.72 diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java index 7f09b3c..d8a88e6 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java @@ -41,6 +41,7 @@ public class MidnightControlsConfig extends MidnightConfig { // HUD @Entry(name = "midnightcontrols.menu.hud_enable") public static boolean hudEnable = true; @Entry(name = "midnightcontrols.menu.hud_side") public static HudSide hudSide = HudSide.LEFT; + @Entry(name = "midnightcontrols.menu.move_chat") public static boolean moveChat = false; // Gameplay @Entry(name = "midnightcontrols.menu.analog_movement") public static boolean analogMovement = true; @Entry(name = "midnightcontrols.menu.double_tap_to_sprint") public static boolean doubleTapToSprint = true; @@ -61,6 +62,7 @@ public class MidnightControlsConfig extends MidnightConfig { @Entry(name = "midnightcontrols.menu.rotation_speed") public static double rotationSpeed = 40.0; //used for x-axis, name kept for compatability @Entry(name = "midnightcontrols.menu.y_axis_rotation_speed") public static double yAxisRotationSpeed = rotationSpeed; @Entry(name = "midnightcontrols.menu.mouse_speed") public static double mouseSpeed = 25.0; + @Entry(name = "midnightcontrols.menu.joystick_as_mouse") public static boolean joystickAsMouse = false; @Entry(name = "midnightcontrols.menu.unfocused_input") public static boolean unfocusedInput = false; @Entry(name = "midnightcontrols.menu.virtual_mouse") public static boolean virtualMouse = false; @Entry(name = "midnightcontrols.menu.virtual_mouse.skin") public static VirtualMouseSkin virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT; @@ -350,7 +352,7 @@ public class MidnightControlsConfig extends MidnightConfig { else if (controller.contains("xbox") || controller.contains("afterglow")) return ControllerType.XBOX; else if (controller.contains("steam deck")) return ControllerType.STEAM_DECK; else if (controller.contains("steam")) return ControllerType.STEAM_CONTROLLER; - else if (controller.contains("dualsense")) return ControllerType.DUALSENSE; + else if (controller.contains("dualsense") || controller.contains("ps5")) return ControllerType.DUALSENSE; else if (controller.contains("dualshock") || controller.contains("ps4") || controller.contains("sony")) return ControllerType.DUALSHOCK; else if (controller.contains("switch") || controller.contains("joy-con") || controller.contains("wii") || controller.contains("nintendo")) return ControllerType.SWITCH; else if (controller.contains("ouya")) return ControllerType.OUYA; diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java index 30c98c2..97a6905 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java @@ -858,7 +858,7 @@ public class MidnightInput { } public static boolean isScreenInteractive(@NotNull Screen screen) { - return !(screen instanceof HandledScreen || MidnightControlsConfig.mouseScreens.stream().anyMatch(a -> screen.getClass().toString().contains(a)) + return !(screen instanceof HandledScreen || MidnightControlsConfig.joystickAsMouse || MidnightControlsConfig.mouseScreens.stream().anyMatch(a -> screen.getClass().toString().contains(a)) || (screen instanceof SpruceScreen && ((SpruceScreen) screen).requiresCursor()) || MidnightControlsCompat.requireMouseOnScreen(screen)); } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/compat/EMICompat.java b/src/main/java/eu/midnightdust/midnightcontrols/client/compat/EMICompat.java index 7e02be8..7809fab 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/compat/EMICompat.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/compat/EMICompat.java @@ -1,6 +1,6 @@ package eu.midnightdust.midnightcontrols.client.compat; -import dev.emi.emi.EmiConfig; +import dev.emi.emi.config.EmiConfig; import dev.emi.emi.screen.EmiScreen; import dev.emi.emi.screen.EmiScreenManager; import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; @@ -14,9 +14,9 @@ import org.lwjgl.glfw.GLFW; public class EMICompat implements CompatHandler { public static boolean handleTabs(boolean direction) { - if (isEMIEnabled() && MidnightControlsClient.get().input.actionGuiCooldown == 0 && EmiScreenManager.searchLeft != null && EmiScreenManager.searchRight != null) { - if (direction) EmiScreenManager.searchRight.onPress(); - else EmiScreenManager.searchLeft.onPress(); + if (isEMIEnabled() && MidnightControlsClient.get().input.actionGuiCooldown == 0 && EmiScreenManager.getSearchPanel() != null && EmiScreenManager.getSearchPanel().pageLeft != null && EmiScreenManager.getSearchPanel().pageRight != null) { + if (direction) EmiScreenManager.getSearchPanel().pageRight.onPress(); + else EmiScreenManager.getSearchPanel().pageLeft.onPress(); MidnightControlsClient.get().input.actionGuiCooldown = 5; return true; } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java index 8394c14..7488f47 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java @@ -22,16 +22,17 @@ import eu.midnightdust.midnightcontrols.client.mixin.CreativeInventoryScreenAcce import eu.midnightdust.midnightcontrols.client.mixin.RecipeBookWidgetAccessor; import eu.midnightdust.midnightcontrols.client.util.HandledScreenAccessor; import eu.midnightdust.midnightcontrols.client.util.MouseAccessor; +import net.fabricmc.fabric.impl.client.itemgroup.CreativeGuiExtensions; +import net.fabricmc.fabric.impl.client.itemgroup.FabricCreativeGuiComponents; +import net.fabricmc.fabric.impl.itemgroup.FabricItemGroup; +import net.fabricmc.fabric.impl.itemgroup.ItemGroupHelper; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.hud.SpectatorHud; -import net.minecraft.client.gui.hud.spectator.SpectatorMenu; import net.minecraft.client.gui.screen.TitleScreen; import net.minecraft.client.gui.screen.advancement.AdvancementsScreen; import net.minecraft.client.gui.screen.ingame.*; import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; import net.minecraft.client.gui.widget.PressableWidget; -import net.minecraft.client.input.Input; import net.minecraft.client.util.ScreenshotRecorder; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroups; @@ -43,9 +44,9 @@ import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; import java.util.Comparator; +import java.util.List; import java.util.Optional; import java.util.function.Predicate; -import java.util.stream.Collectors; import static org.lwjgl.glfw.GLFW.*; import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_2; @@ -57,9 +58,17 @@ import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_2; * @version 1.7.0 * @since 1.1.0 */ +@SuppressWarnings("UnstableApiUsage") public class InputHandlers { private InputHandlers() { } + private static List getVisibleGroups(CreativeInventoryScreen screen) { + return ItemGroupHelper.sortedGroups.stream() + .filter(itemGroup -> { + if (FabricCreativeGuiComponents.COMMON_GROUPS.contains(itemGroup)) return true; + return ((CreativeGuiExtensions)screen).fabric_currentPage() == ((FabricItemGroup)itemGroup).getPage() && itemGroup.shouldDisplay() && (!itemGroup.equals(ItemGroups.OPERATOR) || ItemGroups.operatorEnabled); + }).toList(); + } public static PressAction handleHotbar(boolean next) { return (client, button, value, action) -> { @@ -86,13 +95,31 @@ public class InputHandlers { } else if (client.currentScreen instanceof RingScreen) { MidnightControlsClient.get().ring.cyclePage(next); } else if (client.currentScreen instanceof CreativeInventoryScreenAccessor inventory) { - int currentTab = CreativeInventoryScreenAccessor.getSelectedTab(); - int nextTab = currentTab + (next ? 1 : -1); - if (nextTab < 0) - nextTab = ItemGroups.GROUPS.length - 1; - else if (nextTab >= ItemGroups.GROUPS.length) - nextTab = 0; - inventory.midnightcontrols$setSelectedTab(ItemGroups.GROUPS[nextTab]); + ItemGroup currentTab = CreativeInventoryScreenAccessor.getSelectedTab(); + int currentColumn = currentTab.getColumn(); + ItemGroup.Row currentRow = currentTab.getRow(); + ItemGroup newTab = null; + List visibleTabs = getVisibleGroups((CreativeInventoryScreen) client.currentScreen); + for (ItemGroup tab : visibleTabs) { + if (tab.getRow().equals(currentRow) && ((newTab == null && ((next && tab.getColumn() > currentColumn) || + (!next && tab.getColumn() < currentColumn))) || (newTab != null && ((next && tab.getColumn() > currentColumn && tab.getColumn() < newTab.getColumn()) || + (!next && tab.getColumn() < currentColumn && tab.getColumn() > newTab.getColumn()))))) + newTab = tab; + } + if (newTab == null) + for (ItemGroup tab : visibleTabs) { + if ((tab.getRow().compareTo(currentRow)) != 0 && ((next && newTab == null || next && newTab.getColumn() > tab.getColumn()) || (!next && newTab == null) || (!next && newTab.getColumn() < tab.getColumn()))) + newTab = tab; + } + if (newTab == null) { + for (ItemGroup tab : visibleTabs) { + if ((next && tab.getRow() == ItemGroup.Row.TOP && tab.getColumn() == 0) || + !next && tab.getRow() == ItemGroup.Row.BOTTOM && (newTab == null || tab.getColumn() > newTab.getColumn())) + newTab = tab; + } + } + if (newTab == null || newTab.equals(currentTab)) newTab = ItemGroups.getDefaultTab(); + inventory.midnightcontrols$setSelectedTab(newTab); return true; } else if (client.currentScreen instanceof InventoryScreen || client.currentScreen instanceof CraftingScreen || client.currentScreen instanceof AbstractFurnaceScreen) { RecipeBookWidget recipeBook; diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java index 9b1f826..d926cdc 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java @@ -57,8 +57,10 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { private final SpruceOption rotationSpeedOption; private final SpruceOption yAxisRotationSpeedOption; private final SpruceOption mouseSpeedOption; + private final SpruceOption joystickAsMouseOption; private final SpruceOption virtualMouseOption; private final SpruceOption resetOption; + private final SpruceOption advancedConfigOption; // Gameplay options private final SpruceOption analogMovementOption; private final SpruceOption doubleTapToSprintOption; @@ -75,6 +77,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { private final SpruceOption virtualMouseSkinOption; private final SpruceOption hudEnableOption; private final SpruceOption hudSideOption; + private final SpruceOption moveChatOption; // Controller options private final SpruceOption controllerOption = new SpruceCyclingOption("midnightcontrols.menu.controller", @@ -184,12 +187,16 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { this.mouseSpeedOption = new SpruceDoubleOption("midnightcontrols.menu.mouse_speed", 0.0, 150.0, .5f, () -> MidnightControlsConfig.mouseSpeed, value -> MidnightControlsConfig.mouseSpeed = value, option -> option.getDisplayText(Text.literal(String.valueOf(option.get()))), - Text.translatable("midnightcontrols.tooltip.mouse_speed")); + Text.translatable("midnightcontrols.tooltip.joystick_as_mouse")); + this.joystickAsMouseOption = new SpruceToggleBooleanOption("midnightcontrols.menu.joystick_as_mouse", + () -> MidnightControlsConfig.joystickAsMouse, value -> MidnightControlsConfig.joystickAsMouse = value, + Text.translatable("midnightcontrols.tooltip.joystick_as_mouse")); this.resetOption = SpruceSimpleActionOption.reset(btn -> { MidnightControlsConfig.reset(); var client = MinecraftClient.getInstance(); this.init(client, client.getWindow().getScaledWidth(), client.getWindow().getScaledHeight()); }); + this.advancedConfigOption = SpruceSimpleActionOption.of("midnightcontrols.midnightconfig.title", button -> client.setScreen(MidnightControlsConfig.getScreen(this, "midnightcontrols"))); // Gameplay options this.analogMovementOption = new SpruceToggleBooleanOption("midnightcontrols.menu.analog_movement", () -> MidnightControlsConfig.analogMovement, value -> MidnightControlsConfig.analogMovement = value, @@ -232,6 +239,8 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { amount -> MidnightControlsConfig.hudSide = MidnightControlsConfig.hudSide.next(), option -> option.getDisplayText(MidnightControlsConfig.hudSide.getTranslatedText()), Text.translatable("midnightcontrols.tooltip.hud_side")); + this.moveChatOption = new SpruceToggleBooleanOption("midnightcontrols.menu.move_chat", () -> MidnightControlsConfig.moveChat, + value -> MidnightControlsConfig.moveChat = value, Text.translatable("midnightcontrols.tooltip.move_chat")); // Controller options this.toggleControllerProfileOption = new SpruceToggleBooleanOption("midnightcontrols.menu.separate_controller_profile", () -> MidnightControlsConfig.controllerBindingProfiles.containsKey(MidnightControlsConfig.getController().getGuid()), value -> { if (value) { @@ -290,8 +299,8 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { this.buildTabs(); this.addDrawableChild(this.resetOption.createWidget(Position.of(this.width / 2 - 155, this.height - 29), 150)); - this.addDrawableChild(ButtonWidget.method_46430(SpruceTexts.GUI_DONE, btn -> this.client.setScreen(this.parent)) - .method_46434(this.width / 2 - 155 + 160, this.height - 29, 150, 20).method_46431()); + this.addDrawableChild(ButtonWidget.builder(SpruceTexts.GUI_DONE, btn -> this.client.setScreen(this.parent)) + .dimensions(this.width / 2 - 155 + 160, this.height - 29, 150, 20).build()); } public void buildTabs() { @@ -329,6 +338,8 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { list.addSingleOptionEntry(this.yAxisRotationSpeedOption); list.addSingleOptionEntry(this.mouseSpeedOption); list.addSingleOptionEntry(this.virtualMouseOption); + list.addSingleOptionEntry(this.joystickAsMouseOption); + list.addSingleOptionEntry(this.advancedConfigOption); return list; } @@ -356,6 +367,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { list.addSingleOptionEntry(new SpruceSeparatorOption("midnightcontrols.menu.title.hud", true, null)); list.addSingleOptionEntry(this.hudEnableOption); list.addSingleOptionEntry(this.hudSideOption); + list.addSingleOptionEntry(this.moveChatOption); return list; } @@ -437,13 +449,13 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { RenderSystem.enableBlend(); RenderSystem.disableTexture(); RenderSystem.defaultBlendFunc(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); + RenderSystem.setShader(GameRenderer::getPositionColorProgram); bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR); bufferBuilder.vertex(matrix, (float)x1, (float)y2, 0.0F).color(r, g, b, t).next(); bufferBuilder.vertex(matrix, (float)x2, (float)y2, 0.0F).color(r, g, b, t).next(); bufferBuilder.vertex(matrix, (float)x2, (float)y1, 0.0F).color(r, g, b, t).next(); bufferBuilder.vertex(matrix, (float)x1, (float)y1, 0.0F).color(r, g, b, t).next(); - BufferRenderer.drawWithShader(bufferBuilder.end()); + BufferRenderer.drawWithGlobalProgram(bufferBuilder.end()); RenderSystem.enableTexture(); RenderSystem.disableBlend(); matrixStack.pop(); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java index 0c79651..30df0e5 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java @@ -10,7 +10,6 @@ package eu.midnightdust.midnightcontrols.client.gui; import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; -import eu.midnightdust.midnightcontrols.client.ring.MidnightRing; import eu.midnightdust.midnightcontrols.client.ring.RingButtonMode; import eu.midnightdust.midnightcontrols.client.ring.RingPage; import net.minecraft.client.gui.screen.Screen; @@ -37,8 +36,8 @@ public class RingScreen extends Screen { protected void init() { super.init(); if (mod.ring.getMaxPages() > 1) { - this.addDrawableChild(ButtonWidget.method_46430(Text.of("◀"), button -> this.mod.ring.cyclePage(false)).method_46434(5, 5, 20, 20).method_46431()); - this.addDrawableChild(ButtonWidget.method_46430(Text.of("▶"), button -> this.mod.ring.cyclePage(true)).method_46434(width - 25, 5, 20, 20).method_46431()); + this.addDrawableChild(ButtonWidget.builder(Text.of("◀"), button -> this.mod.ring.cyclePage(false)).dimensions(5, 5, 20, 20).build()); + this.addDrawableChild(ButtonWidget.builder(Text.of("▶"), button -> this.mod.ring.cyclePage(true)).dimensions(width - 25, 5, 20, 20).build()); } } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ChatScreenMixin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ChatScreenMixin.java new file mode 100644 index 0000000..1650538 --- /dev/null +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ChatScreenMixin.java @@ -0,0 +1,35 @@ +package eu.midnightdust.midnightcontrols.client.mixin; + +import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; +import net.minecraft.client.gui.screen.ChatScreen; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ChatScreen.class) +public abstract class ChatScreenMixin extends Screen { + @Shadow protected TextFieldWidget chatField; + + protected ChatScreenMixin(Text title) { + super(title); + } + + @Inject(at = @At("TAIL"), method = "init") + private void midnightcontrols$moveInputField(CallbackInfo ci) { + if (MidnightControlsConfig.moveChat) chatField.setY(4); + } + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/TextFieldWidget;setTextFieldFocused(Z)V", shift = At.Shift.AFTER)) + private void midnightcontrols$moveInputFieldBackground(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) { + if (MidnightControlsConfig.moveChat) matrices.translate(0f, -this.height + 16, 0f); + } + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/TextFieldWidget;render(Lnet/minecraft/client/util/math/MatrixStack;IIF)V", shift = At.Shift.BEFORE)) + private void midnightcontrols$dontMoveOtherStuff(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) { + if (MidnightControlsConfig.moveChat) matrices.translate(0f, this.height - 16, 0f); + } +} diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ControlsOptionsScreenMixin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ControlsOptionsScreenMixin.java index 9d29580..46dbb41 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ControlsOptionsScreenMixin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/ControlsOptionsScreenMixin.java @@ -11,16 +11,13 @@ package eu.midnightdust.midnightcontrols.client.mixin; import eu.midnightdust.lib.util.screen.TexturedOverlayButtonWidget; import eu.midnightdust.midnightcontrols.client.gui.MidnightControlsSettingsScreen; -import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.option.ControlsOptionsScreen; import net.minecraft.client.gui.screen.option.GameOptionsScreen; -import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.option.GameOptions; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.spongepowered.asm.mixin.Mixin; -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; @@ -30,27 +27,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; */ @Mixin(ControlsOptionsScreen.class) public abstract class ControlsOptionsScreenMixin extends GameOptionsScreen { - @Unique private final boolean showAlternativeButton = FabricLoader.getInstance().isModLoaded("crawl"); public ControlsOptionsScreenMixin(Screen parent, GameOptions gameOptions, Text text) { super(parent, gameOptions, text); } @Inject(method = "init", at = @At(value = "INVOKE", ordinal = 1, shift = At.Shift.AFTER, target = "Lnet/minecraft/client/gui/screen/option/ControlsOptionsScreen;addDrawableChild(Lnet/minecraft/client/gui/Element;)Lnet/minecraft/client/gui/Element;")) - private void addAlternativeControllerButton(CallbackInfo ci) { - if (showAlternativeButton) { - this.addDrawableChild(new TexturedOverlayButtonWidget(this.width / 2 + 158, this.height / 6 - 12, 20, 20,0,0,20, new Identifier("midnightcontrols", "textures/gui/midnightcontrols_button.png"), 32, 64, (button) -> { - this.client.setScreen(new MidnightControlsSettingsScreen(this, false)); - }, Text.translatable("midnightcontrols.menu.title.controller"))); - } - } - @Inject(method = "init", at = @At(value = "INVOKE", ordinal = 4, shift = At.Shift.AFTER, target = "Lnet/minecraft/client/gui/screen/option/ControlsOptionsScreen;addDrawableChild(Lnet/minecraft/client/gui/Element;)Lnet/minecraft/client/gui/Element;")) private void addControllerButton(CallbackInfo ci) { - if (!showAlternativeButton) { - int i = this.width / 2 - 155; - int j = i + 160; - int k = this.height / 6 - 12 + 48; - this.addDrawableChild(ButtonWidget.method_46430(Text.translatable("midnightcontrols.menu.title.controller").append("..."), (button) -> { - this.client.setScreen(new MidnightControlsSettingsScreen(this, false)); - }).method_46434(j, k, 150, 20).method_46431()); - } + this.addDrawableChild(new TexturedOverlayButtonWidget(this.width / 2 + 158, this.height / 6 - 12, 20, 20,0,0,20, new Identifier("midnightcontrols", "textures/gui/midnightcontrols_button.png"), 32, 64, (button) -> { + this.client.setScreen(new MidnightControlsSettingsScreen(this, false)); + }, Text.translatable("midnightcontrols.menu.title.controller"))); } } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/CreativeInventoryScreenAccessor.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/CreativeInventoryScreenAccessor.java index 14bad62..94961cf 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/CreativeInventoryScreenAccessor.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/CreativeInventoryScreenAccessor.java @@ -11,6 +11,7 @@ package eu.midnightdust.midnightcontrols.client.mixin; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemGroups; import net.minecraft.screen.slot.Slot; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,8 +30,8 @@ public interface CreativeInventoryScreenAccessor { * @return the selected tab index */ @Accessor("selectedTab") - static int getSelectedTab() { - return 0; + static ItemGroup getSelectedTab() { + return ItemGroups.getDefaultTab(); } /** diff --git a/src/main/resources/assets/midnightcontrols/lang/en_us.json b/src/main/resources/assets/midnightcontrols/lang/en_us.json index 15f998e..4651850 100644 --- a/src/main/resources/assets/midnightcontrols/lang/en_us.json +++ b/src/main/resources/assets/midnightcontrols/lang/en_us.json @@ -140,6 +140,7 @@ "midnightcontrols.menu.hud_side": "HUD Side", "midnightcontrols.menu.invert_right_x_axis": "Invert Right X", "midnightcontrols.menu.invert_right_y_axis": "Invert Right Y", + "midnightcontrols.menu.joystick_as_mouse": "Always use left stick as mouse", "midnightcontrols.menu.keyboard_controls": "Keyboard Controls...", "midnightcontrols.menu.left_dead_zone": "Left Stick Dead Zone", "midnightcontrols.menu.mappings.open_input_str": "Open Mappings File Editor", @@ -148,6 +149,7 @@ "midnightcontrols.menu.max_right_x_value": "Right X Axis Max Value", "midnightcontrols.menu.max_right_y_value": "Right Y Axis Max Value", "midnightcontrols.menu.mouse_speed": "Mouse Speed", + "midnightcontrols.menu.move_chat": "Move chat input box to top", "midnightcontrols.menu.reacharound.horizontal": "Front Block Placing", "midnightcontrols.menu.reacharound.vertical": "Vertical Reacharound", "midnightcontrols.menu.reload_controller_mappings": "Reload Controller Mappings", @@ -181,12 +183,14 @@ "midnightcontrols.tooltip.fly_drifting_vertical": "While flying, enables Vanilla vertical drifting/intertia.", "midnightcontrols.tooltip.hud_enable": "Toggles the on-screen controller button indicator.", "midnightcontrols.tooltip.hud_side": "The position of the HUD.", + "midnightcontrols.tooltip.joystick_as_mouse": "Make the joystick behave like a mouse in every menu.", "midnightcontrols.tooltip.left_dead_zone": "The dead zone for the controller's left analog stick.", "midnightcontrols.tooltip.max_left_x_value": "Changes what the mod considers the highest value for the left X axis. Useful if your axis does not use the full range and seems slow.", "midnightcontrols.tooltip.max_left_y_value": "Changes what the mod considers the highest value for the left Y axis. Useful if your axis does not use the full range and seems slow.", "midnightcontrols.tooltip.max_right_x_value": "Changes what the mod considers the highest value for the right X axis. Useful if your axis does not use the full range and seems slow.", "midnightcontrols.tooltip.max_right_y_value": "Changes what the mod considers the highest value for the right Y axis. Useful if your axis does not use the full range and seems slow.", "midnightcontrols.tooltip.mouse_speed": "The controller's emulated mouse speed.", + "midnightcontrols.tooltip.move_chat": "Moves the chat input field to the top, for better input on devices with on-screen keyboards.", "midnightcontrols.tooltip.reacharound.horizontal": "Enables front block placing, §cmight be considered cheating on some servers§r.", "midnightcontrols.tooltip.reacharound.vertical": "Enables vertical reacharound, §cmight be considered cheating on some servers§r.", "midnightcontrols.tooltip.reload_controller_mappings": "Reloads the controller mappings file.", diff --git a/src/main/resources/assets/midnightcontrols/lang/zh_tw b/src/main/resources/assets/midnightcontrols/lang/zh_tw.json similarity index 83% rename from src/main/resources/assets/midnightcontrols/lang/zh_tw rename to src/main/resources/assets/midnightcontrols/lang/zh_tw.json index 2c32ff0..64b0844 100644 --- a/src/main/resources/assets/midnightcontrols/lang/zh_tw +++ b/src/main/resources/assets/midnightcontrols/lang/zh_tw.json @@ -6,7 +6,7 @@ "key.midnightcontrols.ring": "顯示額外按鍵菜單", "midnightcontrols.action.attack": "攻擊", "midnightcontrols.action.back": "向後移動", - "midnightcontrols.action.chat": "打開聊天室", + "midnightcontrols.action.chat": "打開聊天欄", "midnightcontrols.action.drop_item": "丟棄所選物品", "midnightcontrols.action.exit": "退出", "midnightcontrols.action.forward": "向前移動", @@ -19,14 +19,14 @@ "midnightcontrols.action.pause_game": "暫停遊戲", "midnightcontrols.action.pick_block": "選取方塊", "midnightcontrols.action.pickup": "拿取一個/拿取一半", - "midnightcontrols.action.pickup_all": "拿取一组/拿取全部", + "midnightcontrols.action.pickup_all": "拿取一組/拿取全部", "midnightcontrols.action.place": "放置方塊", "midnightcontrols.action.player_list": "玩家列表", "midnightcontrols.action.quick_move": "快速移動物品", "midnightcontrols.action.right": "向右移動", "midnightcontrols.action.screenshot": "截圖", "midnightcontrols.action.sneak": "潛行", - "midnightcontrols.action.sprint": "疾走", + "midnightcontrols.action.sprint": "疾跑", "midnightcontrols.action.swap_hands": "與副手交換", "midnightcontrols.action.toggle_perspective": "切換視角", "midnightcontrols.action.toggle_smooth_camera": "切換電影視角", @@ -54,8 +54,8 @@ "midnightcontrols.axis.left_y+": "左搖桿上(Y軸正向)", "midnightcontrols.axis.right_x+": "右搖桿右(X軸正向)", "midnightcontrols.axis.right_y+": "右搖桿上(Y軸正向)", - "midnightcontrols.axis.left_trigger": "左板機鍵", - "midnightcontrols.axis.right_trigger": "右板機鍵", + "midnightcontrols.axis.left_trigger": "左扳機鍵", + "midnightcontrols.axis.right_trigger": "右扳機鍵", "midnightcontrols.axis.left_x-": "左搖桿左(X軸負向)", "midnightcontrols.axis.left_y-": "左搖桿下(Y軸負向)", "midnightcontrols.axis.right_x-": "右搖桿左(X軸負向)", @@ -63,12 +63,12 @@ "midnightcontrols.button.unknown": "未知(%d)", "midnightcontrols.controller.connected": "手把 %d 已連接。", "midnightcontrols.controller.disconnected": "手把 %d 已斷開。", - "midnightcontrols.controller.mappings.1": "請使用 %s 配置手把對應", - "midnightcontrols.controller.mappings.3": "並將對應文件放入此位置:`%s.minecraft/config/gamecontrollerdb.txt%s`。", - "midnightcontrols.controller.mappings.error": "發生錯誤,無法讀取對應文件。", - "midnightcontrols.controller.mappings.error.write": "發生錯誤,無法保存對應文件。", - "midnightcontrols.controller.mappings.updated": "對應已更新!", - "midnightcontrols.controller_type.default": "重設", + "midnightcontrols.controller.mappings.1": "請使用 %s 配置手把按鍵映射", + "midnightcontrols.controller.mappings.3": "並將按鍵映射文件放入此路徑:`%s.minecraft/config/gamecontrollerdb.txt%s`。", + "midnightcontrols.controller.mappings.error": "發生錯誤,無法讀取按鍵映射文件。", + "midnightcontrols.controller.mappings.error.write": "發生錯誤,無法保存按鍵映射文件。", + "midnightcontrols.controller.mappings.updated": "按鍵映射已更新!", + "midnightcontrols.controller_type.default": "默認", "midnightcontrols.controller_type.dualshock": "DualShock", "midnightcontrols.controller_type.switch": "Switch", "midnightcontrols.controller_type.xbox": "Xbox", @@ -92,9 +92,9 @@ "midnightcontrols.menu.hud_side": "HUD位置", "midnightcontrols.menu.invert_right_x_axis": "反轉右搖桿X軸", "midnightcontrols.menu.invert_right_y_axis": "反轉右搖桿Y軸", - "midnightcontrols.menu.keyboard_controls": "鍵盤控制...", + "midnightcontrols.menu.keyboard_controls": "鍵盤控制…", "midnightcontrols.menu.left_dead_zone": "左搖桿死區", - "midnightcontrols.menu.mappings.open_input_str": "編輯對應文件", + "midnightcontrols.menu.mappings.open_input_str": "編輯按鍵映射文件", "midnightcontrols.menu.max_left_x_value": "左搖桿X軸最大值識別範圍", "midnightcontrols.menu.max_left_y_value": "左搖桿Y軸最大值識別範圍", "midnightcontrols.menu.max_right_x_value": "右搖桿X軸最大值識別範圍", @@ -102,7 +102,7 @@ "midnightcontrols.menu.mouse_speed": "鼠標移動速度", "midnightcontrols.menu.reacharound.horizontal": "水平方向方塊放置輔助", "midnightcontrols.menu.reacharound.vertical": "垂直方向方塊放置輔助", - "midnightcontrols.menu.reload_controller_mappings": "重新加载手把對應", + "midnightcontrols.menu.reload_controller_mappings": "重新加載手把按鍵映射", "midnightcontrols.menu.right_dead_zone": "右搖桿死區", "midnightcontrols.menu.rotation_speed": "鏡頭旋轉速度 (X)", "midnightcontrols.menu.y_axis_rotation_speed": "鏡頭旋轉速度 (Y)", @@ -111,42 +111,42 @@ "midnightcontrols.menu.title": "midnightcontrols — 設置", "midnightcontrols.menu.title.controller": "手把選項", "midnightcontrols.menu.title.controller_controls": "手把控制", - "midnightcontrols.menu.title.gameplay": "遊戲内容選項", + "midnightcontrols.menu.title.gameplay": "遊戲內容選項", "midnightcontrols.menu.title.general": "通用選項", "midnightcontrols.menu.title.hud": "HUD選項", - "midnightcontrols.menu.title.mappings.string": "編輯對應文件", + "midnightcontrols.menu.title.mappings.string": "編輯按鍵映射文件", "midnightcontrols.menu.title.visual": "界面選項", "midnightcontrols.menu.unfocused_input": "非活動狀態輸入", "midnightcontrols.menu.virtual_mouse": "虛擬鼠標", - "midnightcontrols.menu.virtual_mouse.skin": "虛擬鼠標指针樣式", - "midnightcontrols.narrator.unbound": "取消绑定 %s", - "midnightcontrols.not_bound": "未绑定", + "midnightcontrols.menu.virtual_mouse.skin": "虛擬鼠標指針樣式", + "midnightcontrols.narrator.unbound": "取消綁定 %s", + "midnightcontrols.not_bound": "未綁定", "midnightcontrols.tooltip.analog_movement": "若遊戲機制允許,則可根據推動搖桿的力度與幅度決定移動的速度。", "midnightcontrols.tooltip.auto_switch_mode": "如果已有手把連接,則自動切換為手把操作模式。", - "midnightcontrols.tooltip.controller2": "使用額外的手把,比如將一左一右的兩個 Joy-Con 合為一个功能完全的手把。", + "midnightcontrols.tooltip.controller2": "使用額外的手把,比如將一左一右的兩個 Joy-Con 合為一個功能完全的手把。", "midnightcontrols.tooltip.controller_type": "選擇手把類型,以顯示對應的按鍵圖標。", "midnightcontrols.tooltip.controls_mode": "操作模式", - "midnightcontrols.tooltip.fast_block_placing": "在創造模式中處於飛行狀態時,可以根據你飛行的速度快速放置方塊。\n§c在部分伺服器可能会被認定為作弊。", + "midnightcontrols.tooltip.fast_block_placing": "在創造模式中處於飛行狀態時,可以根據你飛行的速度快速放置方塊。\n§c在部分服務器可能會被認定為作弊。", "midnightcontrols.tooltip.fly_drifting": "處於飛行狀態時,啟用原版的水平方向飛行慣性(緩停滑行)。", "midnightcontrols.tooltip.fly_drifting_vertical": "處於飛行狀態時,啟用原版的垂直方向飛行慣性(緩停滑行)。", "midnightcontrols.tooltip.hud_enable": "顯示手把按鍵操作提示。", "midnightcontrols.tooltip.hud_side": "HUD的位置位於畫面的哪一側。", "midnightcontrols.tooltip.left_dead_zone": "左搖桿配置的死區。\n死區決定搖桿要偏離中心位置多遠才能讓搖桿的輸入有效。", - "midnightcontrols.tooltip.max_left_x_value": "更改左搖桿X軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致在識別搖桿輸入的精確認值的情况下,左右移動較為緩慢等问题,本项可能会有所帮助。", - "midnightcontrols.tooltip.max_left_y_value": "更改左搖桿Y軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致在識別搖桿輸入的精確認值的情况下,前后移動較為緩慢等问题,本项可能会有所帮助。", - "midnightcontrols.tooltip.max_right_x_value": "更改右搖桿X軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致鏡頭左右旋轉較為緩慢等問题,本項可能會有所幫助。", - "midnightcontrols.tooltip.max_right_y_value": "更改右搖桿Y軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致鏡頭上下旋轉較為緩慢等問题,本項可能會有所幫助。", + "midnightcontrols.tooltip.max_left_x_value": "更改左搖桿X軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致在識別搖桿輸入的精確值的情況下,左右移動較為緩慢等問題,本項可能會有所幫助。", + "midnightcontrols.tooltip.max_left_y_value": "更改左搖桿Y軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致在識別搖桿輸入的精確值的情況下,前後移動較為緩慢等問題,本項可能會有所幫助。", + "midnightcontrols.tooltip.max_right_x_value": "更改右搖桿X軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致鏡頭左右旋轉較為緩慢等問題,本項可能會有所幫助。", + "midnightcontrols.tooltip.max_right_y_value": "更改右搖桿Y軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致鏡頭上下旋轉較為緩慢等問題,本項可能會有所幫助。", "midnightcontrols.tooltip.mouse_speed": "手把模擬的鼠標的移動速度。", - "midnightcontrols.tooltip.reacharound.horizontal": "啟用水平方向方塊放置輔助,可在腳下方塊的前方放置方塊。\n§c在部分伺服器可能會被認定為作弊。", - "midnightcontrols.tooltip.reacharound.vertical": "啟用垂直方向方塊放置輔助,可在腳下方塊的下方放置方塊。\n§c在部分伺服器可能會被認定為作弊。", - "midnightcontrols.tooltip.reload_controller_mappings": "重新加載手把的對應文件。", + "midnightcontrols.tooltip.reacharound.horizontal": "啟用水平方向方塊放置輔助,可在腳下方塊的前方放置方塊。\n§c在部分服務器可能會被認定為作弊。", + "midnightcontrols.tooltip.reacharound.vertical": "啟用垂直方向方塊放置輔助,可在腳下方塊的下方放置方塊。\n§c在部分服務器可能會被認定為作弊。", + "midnightcontrols.tooltip.reload_controller_mappings": "重新加載手把的按鍵映射文件。", "midnightcontrols.tooltip.right_dead_zone": "右搖桿配置的死區。\n死區決定搖桿要偏離中心位置多遠才能讓搖桿的輸入有效。", "midnightcontrols.tooltip.rotation_speed": "手把操作模式下的鏡頭旋轉速度。(X)", "midnightcontrols.tooltip.y_axis_rotation_speed": "手把操作模式下的鏡頭旋轉速度。(Y)", "midnightcontrols.tooltip.unfocused_input": "即使遊戲窗口處於非活動狀態,也允許手把進行按鍵輸入。", - "midnightcontrols.tooltip.virtual_mouse": "啟用虛擬鼠標,在分屏的情况下很有用。", - "midnightcontrols.virtual_mouse.skin.default_light": "預設樣式(白色)", - "midnightcontrols.virtual_mouse.skin.default_dark": "預設樣式(黑色)", + "midnightcontrols.tooltip.virtual_mouse": "啟用虛擬鼠標,在分屏的情況下很有用。", + "midnightcontrols.virtual_mouse.skin.default_light": "默認樣式(白色)", + "midnightcontrols.virtual_mouse.skin.default_dark": "默認樣式(黑色)", "midnightcontrols.virtual_mouse.skin.second_light": "額外樣式(白色)", "midnightcontrols.virtual_mouse.skin.second_dark": "額外樣式(黑色)" -} +} \ No newline at end of file diff --git a/src/main/resources/midnightcontrols.mixins.json b/src/main/resources/midnightcontrols.mixins.json index 5691852..80b8185 100644 --- a/src/main/resources/midnightcontrols.mixins.json +++ b/src/main/resources/midnightcontrols.mixins.json @@ -15,6 +15,7 @@ "KeyBindingMixin", "MinecraftClientMixin", "MouseMixin", + "ChatScreenMixin", "RecipeBookWidgetAccessor", "WorldRendererMixin", "KeyBindingRegistryImplAccessor", diff --git a/src/main/resources/resourcepacks/bedrock/assets/midnightcontrols/textures/gui/controller_buttons.png b/src/main/resources/resourcepacks/bedrock/assets/midnightcontrols/textures/gui/controller_buttons.png index 135cd2e7b74ed3ca5a43650f735ea83b919f3ef7..4eab1afe58278796dde446a24e33e7e17a9310cb 100644 GIT binary patch delta 4851 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 XW5S)kIdk3qv%HzHwNdF=kC^`f;|DBj diff --git a/src/main/resources/resourcepacks/bedrock/pack.mcmeta b/src/main/resources/resourcepacks/bedrock/pack.mcmeta index 776b2b6..13abd37 100644 --- a/src/main/resources/resourcepacks/bedrock/pack.mcmeta +++ b/src/main/resources/resourcepacks/bedrock/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 9, + "pack_format": 12, "description": "Makes controller tooltips use similar icons to Bedrock Edition" } } diff --git a/src/main/resources/resourcepacks/legacy/pack.mcmeta b/src/main/resources/resourcepacks/legacy/pack.mcmeta index 7ec8688..5d18928 100644 --- a/src/main/resources/resourcepacks/legacy/pack.mcmeta +++ b/src/main/resources/resourcepacks/legacy/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { - "pack_format": 9, + "pack_format": 12, "description": "Makes controller icons look similar to Legacy Console Edit." } } From c272fb457f2d1a7cb21f94c386defe1020905489 Mon Sep 17 00:00:00 2001 From: isXander Date: Fri, 9 Dec 2022 22:50:51 +0000 Subject: [PATCH 5/9] YACL compat (WIP) --- gradle.properties | 2 +- .../client/MidnightInput.java | 11 ++-- .../client/compat/YACLCompat.java | 56 +++++++++++++++++++ .../client/controller/InputHandlers.java | 7 ++- src/main/resources/fabric.mod.json | 2 +- 5 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 src/main/java/eu/midnightdust/midnightcontrols/client/compat/YACLCompat.java diff --git a/gradle.properties b/gradle.properties index c928629..c8c5885 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,7 +26,7 @@ emi_version=0.5.0+1.19.3 libgui_version=6.0.0+1.19 inventorytabs_version=inventorytabs-0.9.beta-1.19.x clothconfig_version=7.0.72 -yacl_version=0.1.2 +yacl_version=2.0.0 bedrockify_version=1.5+mc1.19.1-2 # Ok Zoomer and LibZoomer are temporarily disabled for the time being, as we are currently using Reflection at runtime instead in OkZoomerCompat due to there being two major, completely incompatible API versions. diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java index 97a6905..9d30a4f 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java @@ -13,10 +13,7 @@ import com.google.common.collect.ImmutableSet; import dev.lambdaurora.spruceui.widget.AbstractSpruceWidget; import dev.lambdaurora.spruceui.widget.container.SpruceEntryListWidget; import eu.midnightdust.midnightcontrols.MidnightControls; -import eu.midnightdust.midnightcontrols.client.compat.EmotecraftCompat; -import eu.midnightdust.midnightcontrols.client.compat.LibGuiCompat; -import eu.midnightdust.midnightcontrols.client.compat.MidnightControlsCompat; -import eu.midnightdust.midnightcontrols.client.compat.SodiumCompat; +import eu.midnightdust.midnightcontrols.client.compat.*; import eu.midnightdust.midnightcontrols.client.controller.ButtonBinding; import eu.midnightdust.midnightcontrols.client.controller.Controller; import eu.midnightdust.midnightcontrols.client.controller.InputManager; @@ -695,6 +692,8 @@ public class MidnightInput { var childFocused = widget.getFocused(); if (childFocused != null) return this.handleAButton(screen, childFocused); + } else if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib") && YACLCompat.handleAButton(screen, focused)) { + return true; } return false; } @@ -711,6 +710,10 @@ public class MidnightInput { this.actionGuiCooldown = 5; return false; } + if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib") && YACLCompat.handleLeftRight(screen, right)) { + this.actionGuiCooldown = 5; + return false; + } var focused = screen.getFocused(); if (focused != null) if (this.handleRightLeftElement(focused, right)) diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/compat/YACLCompat.java b/src/main/java/eu/midnightdust/midnightcontrols/client/compat/YACLCompat.java new file mode 100644 index 0000000..671bf1e --- /dev/null +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/compat/YACLCompat.java @@ -0,0 +1,56 @@ +package eu.midnightdust.midnightcontrols.client.compat; + +import dev.isxander.yacl.gui.AbstractWidget; +import dev.isxander.yacl.gui.OptionListWidget; +import dev.isxander.yacl.gui.YACLScreen; +import dev.isxander.yacl.gui.controllers.ControllerWidget; +import dev.isxander.yacl.gui.controllers.slider.SliderControllerElement; +import net.minecraft.client.gui.Element; +import net.minecraft.client.gui.screen.Screen; +import org.lwjgl.glfw.GLFW; + +public class YACLCompat { + public static boolean handleAButton(Screen screen, Element element) { + if (element instanceof AbstractWidget abstractWidget) { + // imitate ender key press + return abstractWidget.keyPressed(GLFW.GLFW_KEY_ENTER, 0, 0); + } + return false; + } + + public static boolean handleLeftRight(Screen screen, boolean direction) { + if (screen instanceof YACLScreen yaclScreen) { + SliderControllerElement focusedSlider = yaclScreen.optionList.children().stream() + .filter(OptionListWidget.OptionEntry.class::isInstance) + .map(entry -> ((OptionListWidget.OptionEntry) entry).widget) + .filter(ControllerWidget.class::isInstance) + .map(ControllerWidget.class::cast) + .filter(SliderControllerElement.class::isInstance) + .map(SliderControllerElement.class::cast) + .filter(ControllerWidget::isHovered) + .findFirst() + .orElse(null); + + if (focusedSlider == null) + return false; + + focusedSlider.incrementValue(direction ? 1 : -1); + return true; + } + + return false; + } + + public static boolean handleCategories(Screen screen, boolean direction) { + if (screen instanceof YACLScreen yaclScreen) { + int categoryIdx = yaclScreen.getCurrentCategoryIdx(); + if (direction) categoryIdx++; else categoryIdx--; + if (categoryIdx < 0) categoryIdx = yaclScreen.config.categories().size() - 1; + if (categoryIdx >= yaclScreen.config.categories().size()) categoryIdx = 0; + + yaclScreen.changeCategory(categoryIdx); + return true; + } + return false; + } +} diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java index 7488f47..9b6f7a1 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java @@ -16,6 +16,7 @@ import eu.midnightdust.midnightcontrols.client.MidnightInput; import eu.midnightdust.midnightcontrols.client.compat.InventoryTabsCompat; import eu.midnightdust.midnightcontrols.client.compat.MidnightControlsCompat; import eu.midnightdust.midnightcontrols.client.compat.SodiumCompat; +import eu.midnightdust.midnightcontrols.client.compat.YACLCompat; import eu.midnightdust.midnightcontrols.client.gui.RingScreen; import eu.midnightdust.midnightcontrols.client.mixin.AdvancementsScreenAccessor; import eu.midnightdust.midnightcontrols.client.mixin.CreativeInventoryScreenAccessor; @@ -161,7 +162,10 @@ public class InputHandlers { } return true; } else { - if (FabricLoader.getInstance().isModLoaded("sodium")) SodiumCompat.handleTabs(client.currentScreen, next); + if (FabricLoader.getInstance().isModLoaded("sodium")) + SodiumCompat.handleTabs(client.currentScreen, next); + if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib") && YACLCompat.handleCategories(client.currentScreen, next)) + return true; } if (MidnightControlsCompat.isInventoryTabsPresent()) InventoryTabsCompat.handleInventoryTabs(client.currentScreen, next); return false; @@ -198,6 +202,7 @@ public class InputHandlers { } catch (Exception ignored) {} } if (MidnightControlsCompat.isInventoryTabsPresent()) InventoryTabsCompat.handleInventoryPage(client.currentScreen, next); + return false; }; } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2499da3..add1d69 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -53,7 +53,7 @@ "depends": { "fabricloader": ">=0.11.3", "fabric": ">=0.36.0", - "minecraft": ">=1.17", + "minecraft": "~1.19.3", "spruceui": ">=3.2.0", "java": ">=17" }, From 89914a1b6e83fcee98dd6a56382f5c3491e447f9 Mon Sep 17 00:00:00 2001 From: glaav <112773448+glaav@users.noreply.github.com> Date: Thu, 15 Dec 2022 19:51:03 +0100 Subject: [PATCH 6/9] Italian Translations --- .../assets/midnightcontrols/lang/it_it.json | 203 ++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 src/main/resources/assets/midnightcontrols/lang/it_it.json diff --git a/src/main/resources/assets/midnightcontrols/lang/it_it.json b/src/main/resources/assets/midnightcontrols/lang/it_it.json new file mode 100644 index 0000000..609f59f --- /dev/null +++ b/src/main/resources/assets/midnightcontrols/lang/it_it.json @@ -0,0 +1,203 @@ +{ + "midnightcontrols.midnightconfig.title": "Configurazione Avanzata MidnightControls", + "midnightcontrols.midnightconfig.enum.VirtualMouseSkin.DEFAULT_LIGHT": "Default Chiaro", + "midnightcontrols.midnightconfig.enum.VirtualMouseSkin.DEFAULT_DARK": "Default Scuro", + "midnightcontrols.midnightconfig.enum.VirtualMouseSkin.SECOND_LIGHT": "Chiaro Secondario", + "midnightcontrols.midnightconfig.enum.VirtualMouseSkin.SECOND_DARK": "Scuro secondario", + "midnightcontrols.midnightconfig.enum.ControllerType.DEFAULT": "Default", + "midnightcontrols.midnightconfig.enum.ControllerType.DUALSHOCK": "DualShock", + "midnightcontrols.midnightconfig.enum.ControllerType.DUALSENSE": "DualSense", + "midnightcontrols.midnightconfig.enum.ControllerType.SWITCH": "Controller Switch/Wii", + "midnightcontrols.midnightconfig.enum.ControllerType.XBOX": "Controller Xbox One/Series", + "midnightcontrols.midnightconfig.enum.ControllerType.XBOX_360": "Controller Xbox 360", + "midnightcontrols.midnightconfig.enum.ControllerType.STEAM_CONTROLLER": "Controller Steam", + "midnightcontrols.midnightconfig.enum.ControllerType.STEAM_DECK": "Steam Deck", + "midnightcontrols.midnightconfig.enum.ControllerType.OUYA": "Controller OUYA", + "midnightcontrols.midnightconfig.enum.ControllerType.NUMBERED": "Controller Numerato", + "midnightcontrols.midnightconfig.enum.ControlsMode.DEFAULT": "Tastiera/Mouse", + "midnightcontrols.midnightconfig.enum.ControlsMode.CONTROLLER": "Controller", + "midnightcontrols.midnightconfig.enum.ControlsMode.TOUCHSCREEN": "Touchscreen (WIP)", + "midnightcontrols.midnightconfig.enum.HudSide.LEFT": "Sinistra", + "midnightcontrols.midnightconfig.enum.HudSide.RIGHT": "Destra", + "key.midnightcontrols.look_down": "Guarda in basso", + "key.midnightcontrols.look_left": "Guarda a sinistra", + "key.midnightcontrols.look_right": "Guarda a destra", + "key.midnightcontrols.look_up": "Guarda sopra", + "key.midnightcontrols.ring": "Apri Tasti non impostati", + "midnightcontrols.action.attack": "Attacca", + "midnightcontrols.action.back": "Indietro", + "midnightcontrols.action.chat": "Apri Chat", + "midnightcontrols.action.controls_ring": "Apri Tasti non impostati", + "midnightcontrols.action.debug_screen": "Apri HUD di Debug (F3)", + "midnightcontrols.action.drop_item": "Rilascia oggetto", + "midnightcontrols.action.exit": "Esci", + "midnightcontrols.action.forward": "Avanti", + "midnightcontrols.action.hit": "Colpisci", + "midnightcontrols.action.hotbar_left": "Hotbar sinistra", + "midnightcontrols.action.hotbar_right": "Hotbar destra", + "midnightcontrols.action.inventory": "Inventario", + "midnightcontrols.action.jump": "Salta", + "midnightcontrols.action.left": "Sinistra", + "midnightcontrols.action.pause_game": "Pausa il gioco", + "midnightcontrols.action.pick_block": "Prendi Blocco", + "midnightcontrols.action.pickup": "Raccogli", + "midnightcontrols.action.pickup_all": "Raccogli Tutto", + "midnightcontrols.action.place": "Piazza", + "midnightcontrols.action.player_list": "Lista Giocatori", + "midnightcontrols.action.quick_move": "Muovi veloce", + "midnightcontrols.action.right": "Destra", + "midnightcontrols.action.screenshot": "Fai uno Screenshot", + "midnightcontrols.action.slot_up": "Muovi slot sopra", + "midnightcontrols.action.slot_down": "Muovi slot sotto", + "midnightcontrols.action.slot_left": "Muovi slot a sinistra", + "midnightcontrols.action.slot_right": "Muovi slot a destra", + "midnightcontrols.action.sneak": "Accovaccia", + "midnightcontrols.action.sprint": "Corri", + "midnightcontrols.action.swap_hands": "Scambia le mani", + "midnightcontrols.action.toggle_perspective": "Cambia la prospettiva", + "midnightcontrols.action.toggle_smooth_camera": "Cambia Camera Cinematica", + "midnightcontrols.action.page_back": "Pagina precedente", + "midnightcontrols.action.page_next": "Pagina Successica", + "midnightcontrols.action.tab_back": "Tab Precedente", + "midnightcontrols.action.tab_next": "Tab Successiva", + "midnightcontrols.action.take": "Prendi Item", + "midnightcontrols.action.take_all": "Prendi Stack", + "midnightcontrols.action.use": "Usa", + "midnightcontrols.action.zoom": "Zoom", + "midnightcontrols.action.zoom_in": "Aumenta Zoom", + "midnightcontrols.action.zoom_out": "Diminuisci Zoom", + "midnightcontrols.action.zoom_reset": "Resetta Zoom", + "midnightcontrols.action.emi_page_left": "Pagina Precedente", + "midnightcontrols.action.emi_page_right": "Pagina Successiva", + "midnightcontrols.category.emi": "EMI", + "midnightcontrols.button.a": "A", + "midnightcontrols.button.b": "B", + "midnightcontrols.button.x": "X", + "midnightcontrols.button.y": "Y", + "midnightcontrols.button.left_bumper": "Bumper Destro", + "midnightcontrols.button.right_bumper": "Bumper Sinistro", + "midnightcontrols.button.back": "Indietro", + "midnightcontrols.button.start": "Avvia", + "midnightcontrols.button.guide": "Guida", + "midnightcontrols.button.left_thumb": "Pollice Sinistro", + "midnightcontrols.button.right_thumb": "Pollice Destro", + "midnightcontrols.button.dpad_up": "DPAD Sopra", + "midnightcontrols.button.dpad_right": "DPAD Destra", + "midnightcontrols.button.dpad_down": "DPAD Sotto", + "midnightcontrols.button.dpad_left": "DPAD Sinistra", + "midnightcontrols.button.l4": "L4", + "midnightcontrols.button.l5": "L5", + "midnightcontrols.button.r4": "R4", + "midnightcontrols.button.r5": "L5", + "midnightcontrols.axis.left_x+": "Sinistra X+", + "midnightcontrols.axis.left_y+": "Sinistra Y+", + "midnightcontrols.axis.right_x+": "Destra X+", + "midnightcontrols.axis.right_y+": "Destra Y+", + "midnightcontrols.axis.left_trigger": "Trigger Sinistro", + "midnightcontrols.axis.right_trigger": "Trigger Destro", + "midnightcontrols.axis.left_x-": "Sinistra X-", + "midnightcontrols.axis.left_y-": "Sinistra Y-", + "midnightcontrols.axis.right_x-": "Destra X-", + "midnightcontrols.axis.right_y-": "Destra Y-", + "midnightcontrols.button.unknown": "Sconosciuto", + "midnightcontrols.controller.tutorial.title": "Gioca il gioco con un Controller!", + "midnightcontrols.controller.tutorial.description": "Vai a %s -> %s -> %s", + "midnightcontrols.controller.connected": "Controller %d connesso.", + "midnightcontrols.controller.disconnected": "Controller %d disconnesso", + "midnightcontrols.controller.mappings.1": "Per configurare le mappature dei controller, per favore usa %s", + "midnightcontrols.controller.mappings.3": "e incolla le mappature nel file editor.", + "midnightcontrols.controller.mappings.error": "Errore durante il caricamento delle mappature", + "midnightcontrols.controller.mappings.error.write": "Errore durante la scrittura delle mappature su file", + "midnightcontrols.controller.mappings.updated": "Aggiornate le mappature!", + "midnightcontrols.controller_type.default": "Default", + "midnightcontrols.controller_type.dualshock": "DualShock", + "midnightcontrols.controller_type.dualsense": "DualSense", + "midnightcontrols.controller_type.switch": "Controller Switch/Wii", + "midnightcontrols.controller_type.xbox": "Controller Xbox One/Series", + "midnightcontrols.controller_type.xbox_360": "Controller Xbox 360", + "midnightcontrols.controller_type.steam_controller": "Controller Steam", + "midnightcontrols.controller_type.steam_deck": "Steam Deck", + "midnightcontrols.controller_type.ouya": "Controller OUYA", + "midnightcontrols.controller_type.numbered": "Controller Numerato", + "midnightcontrols.controls_mode.default": "Tastiera/Mouse", + "midnightcontrols.controls_mode.controller": "Controller", + "midnightcontrols.controls_mode.touchscreen": "Touchscreen (WIP)", + "midnightcontrols.hud_side.left": "Left", + "midnightcontrols.hud_side.right": "Destra", + "midnightcontrols.menu.analog_movement": "Movimento Analogo", + "midnightcontrols.menu.auto_switch_mode": "Modalità Cambio Automatico", + "midnightcontrols.menu.controller": "Controller", + "midnightcontrols.menu.controller2": "Controller Secondario", + "midnightcontrols.menu.controller_toggle_sneak": "Attiva/Disattiva Accovacciamento su Controller", + "midnightcontrols.menu.controller_toggle_sprint": "Attiva/Disattiva Correre su Controller", + "midnightcontrols.menu.controller_type": "Tipo di Controller", + "midnightcontrols.menu.controls_mode": "Modalità", + "midnightcontrols.menu.double_tap_to_sprint": "Doppio Tap per Sprintare", + "midnightcontrols.menu.fast_block_placing": "Veloce Piazzamento di Blocchi", + "midnightcontrols.menu.fly_drifting": "Drift in Volo", + "midnightcontrols.menu.fly_drifting_vertical": "Drift in Volo Verticale", + "midnightcontrols.menu.hud_enable": "Attiva HUD", + "midnightcontrols.menu.hud_side": "Lato HUD", + "midnightcontrols.menu.invert_right_x_axis": "Inverti Destro X", + "midnightcontrols.menu.invert_right_y_axis": "Inverti Destro Y", + "midnightcontrols.menu.keyboard_controls": "Controlli da Tastiera...", + "midnightcontrols.menu.left_dead_zone": "Zona Morta dello Stick Sinistro", + "midnightcontrols.menu.mappings.open_input_str": "Apri il File Editor delle Mappature", + "midnightcontrols.menu.max_left_x_value": "Asse X Sinistro Massimo Valore", + "midnightcontrols.menu.max_left_y_value": "Asse Y Sinistro Massimo Valore", + "midnightcontrols.menu.max_right_x_value": "Asse Destro X Massimo Valore", + "midnightcontrols.menu.max_right_y_value": "Asse Destro Y Massimo Valore", + "midnightcontrols.menu.mouse_speed": "Velocità Mouse", + "midnightcontrols.menu.reacharound.horizontal": "Piazza blocchi Davanti", + "midnightcontrols.menu.reacharound.vertical": "Reach Verticale", + "midnightcontrols.menu.reload_controller_mappings": "Ricarica Mappature del Controller", + "midnightcontrols.menu.right_dead_zone": "Zona Morta Stick Destro", + "midnightcontrols.menu.rotation_speed": "Velocità di rotazione dell'Asse X", + "midnightcontrols.menu.y_axis_rotation_speed": "Velocità di rotazione dell'Asse Y", + "midnightcontrols.menu.separate_controller_profile": "Profilo Controller Separato", + "midnightcontrols.menu.separator.controller": "Controller", + "midnightcontrols.menu.separator.general": "Generale", + "midnightcontrols.menu.title": "MidnightControls - Impostazioni", + "midnightcontrols.menu.title.controller": "Opzioni Controller", + "midnightcontrols.menu.title.controller_controls": "Tasti Controller", + "midnightcontrols.menu.title.gameplay": "Opzioni del Gameplay", + "midnightcontrols.menu.title.general": "Impostazioni Generali", + "midnightcontrols.menu.title.hud": "Opzioni della HUD", + "midnightcontrols.menu.title.mappings.string": "Editor di file delle Mappature", + "midnightcontrols.menu.title.visual": "Aspetto", + "midnightcontrols.menu.unfocused_input": "Input non a fuoco", + "midnightcontrols.menu.virtual_mouse": "Mouse Virtuale", + "midnightcontrols.menu.virtual_mouse.skin": "Aspetto Mouse Virtuale", + "midnightcontrols.narrator.unbound": "Disimpostato %s", + "midnightcontrols.not_bound": "Non Impostato", + "midnightcontrols.tooltip.analog_movement": "Quando possibile, attiva movimento analogo.", + "midnightcontrols.tooltip.auto_switch_mode": "Quando la modalità controlli dovrebbe passare a Controller automaticamente se uno è connesso", + "midnightcontrols.tooltip.controller2": "Secondo controller da usare, che permette (per esempio) Supporto dei Joy-Cons.", + "midnightcontrols.tooltip.controller_type": "Il tipo di controller che stai usando (usato per mostrare i pulsanti corretti)", + "midnightcontrols.tooltip.controls_mode": "Modalita controlli.", + "midnightcontrols.tooltip.double_tap_to_sprint": "Attiva quando il tasto \"Cammina Avanti\" fa correre il giocatore con doppio tap velocemente", + "midnightcontrols.tooltip.fast_block_placing": "Quando si vola in creativa, attiva il movimento veloce dei blocchi in base alla tua velocità. §cSu alcuni server potrebbe essere considerato un cheat.§r", + "midnightcontrols.tooltip.fly_drifting": "Quando si vola, attiva L'inerzia del Vanilla", + "midnightcontrols.tooltip.fly_drifting_vertical": "Quando si vola, attiva l'inerzia verticale Vanilla", + "midnightcontrols.tooltip.hud_enable": "Attiva gli indicatori dei pulsanti dei controller sullo schermo.", + "midnightcontrols.tooltip.hud_side": "La posizione della HUD", + "midnightcontrols.tooltip.left_dead_zone": "La zona morta per lo stick sinistro del controller.", + "midnightcontrols.tooltip.max_left_x_value": "Cambia cosa la mod considera il più alto valore per l'asse X sinistro. Utile se il tuo asse non usa il range massimo e sembra lento", + "midnightcontrols.tooltip.max_left_y_value": "Cambia cosa la mod considera il più alto valore per l'asse Y sinistro. Utile se il tuo asse non usa il range massimo e sembra lento", + "midnightcontrols.tooltip.max_right_x_value": "Cambia cosa la mod considera il più alto valore per l'asse X Destro. Utile se il tuo asse non usa il range massimo e sembra lento.", + "midnightcontrols.tooltip.max_right_y_value": "Cambia cosa la mod considera il più alto valore per l'asse Y Destro. Utile se il tuo asse non usa il range massimo e sembra lento.", + "midnightcontrols.tooltip.mouse_speed": "La velocità del controller emulato.", + "midnightcontrols.tooltip.reacharound.horizontal": "Attiva il piazzare blocchi davanti, Potrebbe essere considerato un cheat su alcuni server.", + "midnightcontrols.tooltip.reacharound.vertical": "Attiva il reach verticale, potrebbe essere considerato cheating su alcuni server", + "midnightcontrols.tooltip.reload_controller_mappings": "Riavvia il file dlle mappature del controller", + "midnightcontrols.tooltip.right_dead_zone": "La zona morta per lo stick destro del controller", + "midnightcontrols.tooltip.rotation_speed": "L'asse X della velocità di rotazione della camera im modalità controller", + "midnightcontrols.tooltip.y_axis_rotation_speed": "L'asse Y della velocità di rotazione della camera im modalità controller", + "midnightcontrols.tooltip.unfocused_input": "Permette imput dei controller quando la finestra non è messa a fuoco", + "midnightcontrols.tooltip.virtual_mouse": "Attiva il mouse virtuale, che può essere utile nello schermo diviso.", + "midnightcontrols.virtual_mouse.skin.default_light": "Chiaro Default", + "midnightcontrols.virtual_mouse.skin.default_dark": "Scuro Default", + "midnightcontrols.virtual_mouse.skin.second_light": "Chiaro Secondario", + "midnightcontrols.virtual_mouse.skin.second_dark": "Scuro Secondario", + "modmenu.descriptionTranslation.midnightcontrols": "Aggiunge supporto e controlli migliorati in generale. \\nProveniente da LambdaControls, che è stato rimosso." +} From 617648cf572b6b9f895883febaecdc4bf57060ce Mon Sep 17 00:00:00 2001 From: HttpRafa Date: Tue, 3 Jan 2023 03:11:44 +0100 Subject: [PATCH 7/9] Fixed error with Fabric API version 0.71.0+1.19.3 --- gradle.properties | 6 +++--- .../midnightcontrols/client/MidnightControlsClient.java | 6 +++--- .../client/mixin/KeyBindingRegistryImplAccessor.java | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index c928629..ad3aa08 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,8 +4,8 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use minecraft_version=1.19.3 -yarn_mappings=1.19.3+build.2 -loader_version=0.14.11 +yarn_mappings=1.19.3+build.5 +loader_version=0.14.12 # Mod Properties mod_version = 1.7.2 @@ -15,7 +15,7 @@ modrinth_id=bXX9h73M # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.68.1+1.19.3 +fabric_version=0.71.0+1.19.3 sodium_version=mc1.19.2-0.4.4 spruceui_version=4.1.0+1.19.3 midnightlib_version=1.1.0-fabric diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java index 40915ff..5ff513f 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java @@ -173,9 +173,9 @@ public class MidnightControlsClient extends MidnightControls implements ClientMo voxelmapInitDone = true; } if (lateInitDone) return; - if (KeyBindingRegistryImplAccessor.getModdedKeyBindings() == null || KeyBindingRegistryImplAccessor.getModdedKeyBindings().isEmpty()) return; - for (int i = 0; i < KeyBindingRegistryImplAccessor.getModdedKeyBindings().size(); ++i) { - KeyBinding keyBinding = KeyBindingRegistryImplAccessor.getModdedKeyBindings().get(i); + if (KeyBindingRegistryImplAccessor.getMODDED_KEY_BINDINGS() == null || KeyBindingRegistryImplAccessor.getMODDED_KEY_BINDINGS().isEmpty()) return; + for (int i = 0; i < KeyBindingRegistryImplAccessor.getMODDED_KEY_BINDINGS().size(); ++i) { + KeyBinding keyBinding = KeyBindingRegistryImplAccessor.getMODDED_KEY_BINDINGS().get(i); if (!keyBinding.getTranslationKey().contains("midnightcontrols") && !keyBinding.getTranslationKey().contains("ok_zoomer") && !keyBinding.getTranslationKey().contains("okzoomer")) { category = null; InputManager.streamCategories().forEach(buttonCategory -> { diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/KeyBindingRegistryImplAccessor.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/KeyBindingRegistryImplAccessor.java index d93e41d..efd6d6e 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/KeyBindingRegistryImplAccessor.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/KeyBindingRegistryImplAccessor.java @@ -10,8 +10,10 @@ import java.util.List; @Mixin(value = KeyBindingRegistryImpl.class, remap = false) public interface KeyBindingRegistryImplAccessor { + @Accessor @Final - static List getModdedKeyBindings() { + static List getMODDED_KEY_BINDINGS() { return null; } + } From 36e241e4386bd4b54408ab5a38b861a0238b76c1 Mon Sep 17 00:00:00 2001 From: Motschen Date: Tue, 3 Jan 2023 18:18:21 +0100 Subject: [PATCH 8/9] MidnightControls 1.7.3 - FAPI 0.71 hotfix --- gradle.properties | 2 +- .../assets/midnightcontrols/lang/zh_tw | 152 ------------------ src/main/resources/fabric.mod.json | 2 +- 3 files changed, 2 insertions(+), 154 deletions(-) delete mode 100644 src/main/resources/assets/midnightcontrols/lang/zh_tw diff --git a/gradle.properties b/gradle.properties index ad3aa08..890f88e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=1.19.3+build.5 loader_version=0.14.12 # Mod Properties -mod_version = 1.7.2 +mod_version = 1.7.3 maven_group = eu.midnightdust archives_base_name = midnightcontrols modrinth_id=bXX9h73M diff --git a/src/main/resources/assets/midnightcontrols/lang/zh_tw b/src/main/resources/assets/midnightcontrols/lang/zh_tw deleted file mode 100644 index 294ddde..0000000 --- a/src/main/resources/assets/midnightcontrols/lang/zh_tw +++ /dev/null @@ -1,152 +0,0 @@ -{ - "key.midnightcontrols.look_down": "視角下移", - "key.midnightcontrols.look_left": "視角左移", - "key.midnightcontrols.look_right": "視角右移", - "key.midnightcontrols.look_up": "視角上移", - "key.midnightcontrols.ring": "顯示額外按鍵菜單", - "midnightcontrols.action.attack": "攻擊", - "midnightcontrols.action.back": "向後移動", - "midnightcontrols.action.chat": "打開聊天欄", - "midnightcontrols.action.drop_item": "丟棄所選物品", - "midnightcontrols.action.exit": "退出", - "midnightcontrols.action.forward": "向前移動", - "midnightcontrols.action.hit": "挖掘", - "midnightcontrols.action.hotbar_left": "向左循環選擇快捷欄", - "midnightcontrols.action.hotbar_right": "向右循環選擇快捷欄", - "midnightcontrols.action.inventory": "物品欄", - "midnightcontrols.action.jump": "跳躍", - "midnightcontrols.action.left": "向左移動", - "midnightcontrols.action.pause_game": "暫停遊戲", - "midnightcontrols.action.pick_block": "選取方塊", - "midnightcontrols.action.pickup": "拿取一個/拿取一半", - "midnightcontrols.action.pickup_all": "拿取一組/拿取全部", - "midnightcontrols.action.place": "放置方塊", - "midnightcontrols.action.player_list": "玩家列表", - "midnightcontrols.action.quick_move": "快速移動物品", - "midnightcontrols.action.right": "向右移動", - "midnightcontrols.action.screenshot": "截圖", - "midnightcontrols.action.sneak": "潛行", - "midnightcontrols.action.sprint": "疾跑", - "midnightcontrols.action.swap_hands": "與副手交換", - "midnightcontrols.action.toggle_perspective": "切換視角", - "midnightcontrols.action.toggle_smooth_camera": "切換電影視角", - "midnightcontrols.action.use": "使用物品/放置方塊", - "midnightcontrols.action.zoom": "視野縮放", - "midnightcontrols.action.zoom_in": "縮放時將視野推近", - "midnightcontrols.action.zoom_out": "縮放時將視野拉遠", - "midnightcontrols.action.zoom_reset": "縮放時重置縮放距離", - "midnightcontrols.button.a": "A", - "midnightcontrols.button.b": "B", - "midnightcontrols.button.x": "X", - "midnightcontrols.button.y": "Y", - "midnightcontrols.button.left_bumper": "LB 鍵", - "midnightcontrols.button.right_bumper": "RB 鍵", - "midnightcontrols.button.back": "選擇鍵", - "midnightcontrols.button.start": "開始鍵", - "midnightcontrols.button.guide": "功能鍵", - "midnightcontrols.button.left_thumb": "左搖桿(按壓)", - "midnightcontrols.button.right_thumb": "右搖桿(按壓)", - "midnightcontrols.button.dpad_up": "十字鍵上", - "midnightcontrols.button.dpad_right": "十字鍵右", - "midnightcontrols.button.dpad_down": "十字鍵下", - "midnightcontrols.button.dpad_left": "十字鍵左", - "midnightcontrols.axis.left_x+": "左搖桿右(X軸正向)", - "midnightcontrols.axis.left_y+": "左搖桿上(Y軸正向)", - "midnightcontrols.axis.right_x+": "右搖桿右(X軸正向)", - "midnightcontrols.axis.right_y+": "右搖桿上(Y軸正向)", - "midnightcontrols.axis.left_trigger": "左扳機鍵", - "midnightcontrols.axis.right_trigger": "右扳機鍵", - "midnightcontrols.axis.left_x-": "左搖桿左(X軸負向)", - "midnightcontrols.axis.left_y-": "左搖桿下(Y軸負向)", - "midnightcontrols.axis.right_x-": "右搖桿左(X軸負向)", - "midnightcontrols.axis.right_y-": "右搖桿下(Y軸負向)", - "midnightcontrols.button.unknown": "未知(%d)", - "midnightcontrols.controller.connected": "手把 %d 已連接。", - "midnightcontrols.controller.disconnected": "手把 %d 已斷開。", - "midnightcontrols.controller.mappings.1": "請使用 %s 配置手把按鍵映射", - "midnightcontrols.controller.mappings.3": "並將按鍵映射文件放入此路徑:`%s.minecraft/config/gamecontrollerdb.txt%s`。", - "midnightcontrols.controller.mappings.error": "發生錯誤,無法讀取按鍵映射文件。", - "midnightcontrols.controller.mappings.error.write": "發生錯誤,無法保存按鍵映射文件。", - "midnightcontrols.controller.mappings.updated": "按鍵映射已更新!", - "midnightcontrols.controller_type.default": "默認", - "midnightcontrols.controller_type.dualshock": "DualShock", - "midnightcontrols.controller_type.switch": "Switch", - "midnightcontrols.controller_type.xbox": "Xbox", - "midnightcontrols.controller_type.steam": "Steam", - "midnightcontrols.controller_type.ouya": "OUYA", - "midnightcontrols.controls_mode.default": "鍵鼠", - "midnightcontrols.controls_mode.controller": "手把", - "midnightcontrols.controls_mode.touchscreen": "觸摸屏", - "midnightcontrols.hud_side.left": "左側", - "midnightcontrols.hud_side.right": "右側", - "midnightcontrols.menu.analog_movement": "識別搖桿輸入的精確值", - "midnightcontrols.menu.auto_switch_mode": "自動切換模式", - "midnightcontrols.menu.controller": "手把", - "midnightcontrols.menu.controller2": "額外手把", - "midnightcontrols.menu.controller_type": "手把類型", - "midnightcontrols.menu.controls_mode": "模式", - "midnightcontrols.menu.fast_block_placing": "方塊快速放置", - "midnightcontrols.menu.fly_drifting": "水平方向飛行慣性", - "midnightcontrols.menu.fly_drifting_vertical": "垂直方向飛行慣性", - "midnightcontrols.menu.hud_enable": "啟用HUD", - "midnightcontrols.menu.hud_side": "HUD位置", - "midnightcontrols.menu.invert_right_x_axis": "反轉右搖桿X軸", - "midnightcontrols.menu.invert_right_y_axis": "反轉右搖桿Y軸", - "midnightcontrols.menu.keyboard_controls": "鍵盤控制…", - "midnightcontrols.menu.left_dead_zone": "左搖桿死區", - "midnightcontrols.menu.mappings.open_input_str": "編輯按鍵映射文件", - "midnightcontrols.menu.max_left_x_value": "左搖桿X軸最大值識別範圍", - "midnightcontrols.menu.max_left_y_value": "左搖桿Y軸最大值識別範圍", - "midnightcontrols.menu.max_right_x_value": "右搖桿X軸最大值識別範圍", - "midnightcontrols.menu.max_right_y_value": "右搖桿Y軸最大值識別範圍", - "midnightcontrols.menu.mouse_speed": "鼠標移動速度", - "midnightcontrols.menu.reacharound.horizontal": "水平方向方塊放置輔助", - "midnightcontrols.menu.reacharound.vertical": "垂直方向方塊放置輔助", - "midnightcontrols.menu.reload_controller_mappings": "重新加載手把按鍵映射", - "midnightcontrols.menu.right_dead_zone": "右搖桿死區", - "midnightcontrols.menu.rotation_speed": "鏡頭旋轉速度 (X)", - "midnightcontrols.menu.y_axis_rotation_speed": "鏡頭旋轉速度 (Y)", - "midnightcontrols.menu.separator.controller": "手把", - "midnightcontrols.menu.separator.general": "通用", - "midnightcontrols.menu.title": "midnightcontrols — 設置", - "midnightcontrols.menu.title.controller": "手把選項", - "midnightcontrols.menu.title.controller_controls": "手把控制", - "midnightcontrols.menu.title.gameplay": "遊戲內容選項", - "midnightcontrols.menu.title.general": "通用選項", - "midnightcontrols.menu.title.hud": "HUD選項", - "midnightcontrols.menu.title.mappings.string": "編輯按鍵映射文件", - "midnightcontrols.menu.title.visual": "界面選項", - "midnightcontrols.menu.unfocused_input": "非活動狀態輸入", - "midnightcontrols.menu.virtual_mouse": "虛擬鼠標", - "midnightcontrols.menu.virtual_mouse.skin": "虛擬鼠標指針樣式", - "midnightcontrols.narrator.unbound": "取消綁定 %s", - "midnightcontrols.not_bound": "未綁定", - "midnightcontrols.tooltip.analog_movement": "若遊戲機制允許,則可根據推動搖桿的力度與幅度決定移動的速度。", - "midnightcontrols.tooltip.auto_switch_mode": "如果已有手把連接,則自動切換為手把操作模式。", - "midnightcontrols.tooltip.controller2": "使用額外的手把,比如將一左一右的兩個 Joy-Con 合為一個功能完全的手把。", - "midnightcontrols.tooltip.controller_type": "選擇手把類型,以顯示對應的按鍵圖標。", - "midnightcontrols.tooltip.controls_mode": "操作模式", - "midnightcontrols.tooltip.fast_block_placing": "在創造模式中處於飛行狀態時,可以根據你飛行的速度快速放置方塊。\n§c在部分服務器可能會被認定為作弊。", - "midnightcontrols.tooltip.fly_drifting": "處於飛行狀態時,啟用原版的水平方向飛行慣性(緩停滑行)。", - "midnightcontrols.tooltip.fly_drifting_vertical": "處於飛行狀態時,啟用原版的垂直方向飛行慣性(緩停滑行)。", - "midnightcontrols.tooltip.hud_enable": "顯示手把按鍵操作提示。", - "midnightcontrols.tooltip.hud_side": "HUD的位置位於畫面的哪一側。", - "midnightcontrols.tooltip.left_dead_zone": "左搖桿配置的死區。\n死區決定搖桿要偏離中心位置多遠才能讓搖桿的輸入有效。", - "midnightcontrols.tooltip.max_left_x_value": "更改左搖桿X軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致在識別搖桿輸入的精確值的情況下,左右移動較為緩慢等問題,本項可能會有所幫助。", - "midnightcontrols.tooltip.max_left_y_value": "更改左搖桿Y軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致在識別搖桿輸入的精確值的情況下,前後移動較為緩慢等問題,本項可能會有所幫助。", - "midnightcontrols.tooltip.max_right_x_value": "更改右搖桿X軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致鏡頭左右旋轉較為緩慢等問題,本項可能會有所幫助。", - "midnightcontrols.tooltip.max_right_y_value": "更改右搖桿Y軸最大值的識別範圍。\n若感覺即便推滿搖桿也未達到最大的輸入值,導致鏡頭上下旋轉較為緩慢等問題,本項可能會有所幫助。", - "midnightcontrols.tooltip.mouse_speed": "手把模擬的鼠標的移動速度。", - "midnightcontrols.tooltip.reacharound.horizontal": "啟用水平方向方塊放置輔助,可在腳下方塊的前方放置方塊。\n§c在部分服務器可能會被認定為作弊。", - "midnightcontrols.tooltip.reacharound.vertical": "啟用垂直方向方塊放置輔助,可在腳下方塊的下方放置方塊。\n§c在部分服務器可能會被認定為作弊。", - "midnightcontrols.tooltip.reload_controller_mappings": "重新加載手把的按鍵映射文件。", - "midnightcontrols.tooltip.right_dead_zone": "右搖桿配置的死區。\n死區決定搖桿要偏離中心位置多遠才能讓搖桿的輸入有效。", - "midnightcontrols.tooltip.rotation_speed": "手把操作模式下的鏡頭旋轉速度。(X)", - "midnightcontrols.tooltip.y_axis_rotation_speed": "手把操作模式下的鏡頭旋轉速度。(Y)", - "midnightcontrols.tooltip.unfocused_input": "即使遊戲窗口處於非活動狀態,也允許手把進行按鍵輸入。", - "midnightcontrols.tooltip.virtual_mouse": "啟用虛擬鼠標,在分屏的情況下很有用。", - "midnightcontrols.virtual_mouse.skin.default_light": "默認樣式(白色)", - "midnightcontrols.virtual_mouse.skin.default_dark": "默認樣式(黑色)", - "midnightcontrols.virtual_mouse.skin.second_light": "額外樣式(白色)", - "midnightcontrols.virtual_mouse.skin.second_dark": "額外樣式(黑色)" -} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2499da3..a3c70bb 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -52,7 +52,7 @@ ], "depends": { "fabricloader": ">=0.11.3", - "fabric": ">=0.36.0", + "fabric": ">=0.71.0", "minecraft": ">=1.17", "spruceui": ">=3.2.0", "java": ">=17" From d48952fec93ec2a0439f3a6e850178312aa59213 Mon Sep 17 00:00:00 2001 From: Motschen Date: Tue, 3 Jan 2023 18:47:41 +0100 Subject: [PATCH 9/9] Fix YACL category switching with bumpers --- build.gradle | 2 +- gradle.properties | 2 +- .../midnightcontrols/client/controller/ButtonBinding.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 343bec3..71cea55 100644 --- a/build.gradle +++ b/build.gradle @@ -116,7 +116,7 @@ dependencies { modImplementation "maven.modrinth:emi:${project.emi_version}" modCompileOnlyApi "maven.modrinth:emotecraft:${project.emotecraft_version}" modCompileOnlyApi "io.github.kosmx:bendy-lib:${project.bendylib_version}" - modCompileOnlyApi "dev.isxander:yet-another-config-lib:${project.yacl_version}" + modImplementation "dev.isxander:yet-another-config-lib:${project.yacl_version}" modCompileOnlyApi "maven.modrinth:inventory-tabs-updated:${project.inventorytabs_version}" modCompileOnlyApi "maven.modrinth:bedrockify:${project.bedrockify_version}" // Required for Inventory Tabs diff --git a/gradle.properties b/gradle.properties index 35db776..dfadaa8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,7 +26,7 @@ emi_version=0.5.0+1.19.3 libgui_version=6.0.0+1.19 inventorytabs_version=inventorytabs-0.9.beta-1.19.x clothconfig_version=7.0.72 -yacl_version=2.0.0 +yacl_version=2.2.0 bedrockify_version=1.5+mc1.19.1-2 # Ok Zoomer and LibZoomer are temporarily disabled for the time being, as we are currently using Reflection at runtime instead in OkZoomerCompat due to there being two major, completely incompatible API versions. diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/ButtonBinding.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/ButtonBinding.java index 240dfc4..4402653 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/ButtonBinding.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/ButtonBinding.java @@ -92,9 +92,9 @@ public class ButtonBinding { .actions(InputHandlers::handleToggleSprint).onlyInGame().register(); public static final ButtonBinding SWAP_HANDS = new Builder("swap_hands").buttons(GLFW_GAMEPAD_BUTTON_X).onlyInGame().cooldown().register(); public static final ButtonBinding TAB_LEFT = new Builder("tab_back").buttons(GLFW_GAMEPAD_BUTTON_LEFT_BUMPER) - .action(InputHandlers.handleHotbar(false)).filter(Predicates.or(InputHandlers::inInventory, InputHandlers::inAdvancements).or((client, binding) -> client.currentScreen != null && client.currentScreen.getClass().toString().contains("sodium"))).cooldown().register(); + .action(InputHandlers.handleHotbar(false)).filter(Predicates.or(InputHandlers::inInventory, InputHandlers::inAdvancements).or((client, binding) -> client.currentScreen != null)).cooldown().register(); public static final ButtonBinding TAB_RIGHT = new Builder("tab_next").buttons(GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER) - .action(InputHandlers.handleHotbar(true)).filter(Predicates.or(InputHandlers::inInventory, InputHandlers::inAdvancements).or((client, binding) -> client.currentScreen != null && client.currentScreen.getClass().toString().contains("sodium"))).cooldown().register(); + .action(InputHandlers.handleHotbar(true)).filter(Predicates.or(InputHandlers::inInventory, InputHandlers::inAdvancements).or((client, binding) -> client.currentScreen != null)).cooldown().register(); public static final ButtonBinding PAGE_LEFT = new Builder("page_back").buttons(axisAsButton(GLFW_GAMEPAD_AXIS_LEFT_TRIGGER, true)) .action(InputHandlers.handlePage(false)).filter(InputHandlers::inInventory).cooldown(30).register(); public static final ButtonBinding PAGE_RIGHT = new Builder("page_next").buttons(axisAsButton(GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER, true))