mirror of
https://github.com/TeamMidnightDust/MidnightControls.git
synced 2025-12-13 15:25:08 +01:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
febf171b88 | ||
|
|
d133fed2f6 | ||
|
|
9a61a13fb3 | ||
|
|
e97223e316 | ||
|
|
f16f7416ea | ||
|
|
c086ecfcef | ||
|
|
66cdca30fe | ||
|
|
6e49667ada | ||
|
|
d4c3208cee | ||
|
|
35a4fbee1b | ||
|
|
2aac2ad4e7 | ||
|
|
4b2919bfca | ||
|
|
1c999137ba |
18
build.gradle
18
build.gradle
@@ -1,5 +1,5 @@
|
||||
plugins {
|
||||
id 'fabric-loom' version '1.0-SNAPSHOT'
|
||||
id 'fabric-loom' version '1.1-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() || project.minecraft_version == "1.19.3") {
|
||||
if (isMCVersionNonRelease() || project.minecraft_version == "1.19.4") {
|
||||
return project.minecraft_version
|
||||
}
|
||||
def version = project.minecraft_version.split('\\.')
|
||||
@@ -94,7 +94,9 @@ dependencies {
|
||||
// Fabric API. This is technically optional, but you probably want it anyway.
|
||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||
|
||||
modImplementation "dev.lambdaurora:spruceui:${project.spruceui_version}"
|
||||
modImplementation ("dev.lambdaurora:spruceui:${project.spruceui_version}") {
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
}
|
||||
include "dev.lambdaurora:spruceui:${project.spruceui_version}"
|
||||
api('org.aperlambda:lambdajcommon:1.8.1') {
|
||||
exclude group: 'com.google.code.gson'
|
||||
@@ -102,7 +104,9 @@ dependencies {
|
||||
}
|
||||
include 'org.aperlambda:lambdajcommon:1.8.1'
|
||||
|
||||
modCompileOnlyApi "com.terraformersmc:modmenu:${project.modmenu_version}"
|
||||
modCompileOnlyApi ("com.terraformersmc:modmenu:${project.modmenu_version}") {
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
}
|
||||
|
||||
// Compatibility mods
|
||||
|
||||
@@ -113,14 +117,14 @@ dependencies {
|
||||
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}"
|
||||
modCompileOnlyApi "maven.modrinth:emi:${project.emi_version}"
|
||||
modCompileOnlyApi "maven.modrinth:emotecraft:${project.emotecraft_version}"
|
||||
modCompileOnlyApi "io.github.kosmx:bendy-lib:${project.bendylib_version}"
|
||||
modImplementation "dev.isxander:yet-another-config-lib:${project.yacl_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}") {
|
||||
modCompileOnlyApi("me.shedaniel.cloth:cloth-config-fabric:${project.clothconfig_version}") {
|
||||
exclude(group: "net.fabricmc.fabric-api")
|
||||
}
|
||||
|
||||
|
||||
@@ -3,22 +3,22 @@ org.gradle.jvmargs=-Xmx1G
|
||||
|
||||
# Fabric Properties
|
||||
# check these on https://fabricmc.net/use
|
||||
minecraft_version=1.19.3
|
||||
yarn_mappings=1.19.3+build.5
|
||||
loader_version=0.14.12
|
||||
minecraft_version=1.19.4
|
||||
yarn_mappings=1.19.4+build.1
|
||||
loader_version=0.14.17
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.7.3
|
||||
mod_version = 1.8.1
|
||||
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.71.0+1.19.3
|
||||
fabric_version=0.75.3+1.19.4
|
||||
sodium_version=mc1.19.2-0.4.4
|
||||
spruceui_version=4.1.0+1.19.3
|
||||
midnightlib_version=1.1.0-fabric
|
||||
spruceui_version=4.2.0+1.19.4
|
||||
midnightlib_version=1.2.1-fabric
|
||||
modmenu_version=5.0.1
|
||||
emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric
|
||||
bendylib_version=2.0.+
|
||||
|
||||
@@ -144,6 +144,14 @@ public class MidnightControlsClient extends MidnightControls implements ClientMo
|
||||
public void onMcInit(@NotNull MinecraftClient client) {
|
||||
ButtonBinding.init(client.options);
|
||||
MidnightControlsConfig.load();
|
||||
if (MidnightControlsConfig.configVersion < 2) {
|
||||
MidnightControlsConfig.mouseScreens.remove("me.jellysquid.mods.sodium.client.gui");
|
||||
MidnightControlsConfig.mouseScreens.remove("net.coderbot.iris.gui");
|
||||
MidnightControlsConfig.mouseScreens.remove("net.minecraft.class_5375");
|
||||
MidnightControlsConfig.mouseScreens.remove("net.minecraft.client.gui.screen.pack.PackScreen");
|
||||
MidnightControlsConfig.configVersion = 2;
|
||||
MidnightControlsConfig.write("midnightcontrols");
|
||||
}
|
||||
this.hud.setVisible(MidnightControlsConfig.hudEnable);
|
||||
Controller.updateMappings();
|
||||
GLFW.glfwSetJoystickCallback((jid, event) -> {
|
||||
|
||||
@@ -11,6 +11,7 @@ package eu.midnightdust.midnightcontrols.client;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.mojang.blaze3d.platform.GlDebugInfo;
|
||||
import eu.midnightdust.lib.config.MidnightConfig;
|
||||
import eu.midnightdust.midnightcontrols.ControlsMode;
|
||||
import eu.midnightdust.midnightcontrols.MidnightControlsFeature;
|
||||
@@ -33,58 +34,61 @@ import static org.lwjgl.glfw.GLFW.*;
|
||||
*/
|
||||
public class MidnightControlsConfig extends MidnightConfig {
|
||||
public static boolean isEditing = false;
|
||||
@Hidden @Entry public static int configVersion = 1;
|
||||
@Hidden @Entry public static int configVersion = 2;
|
||||
// General
|
||||
@Entry(name = "midnightcontrols.menu.controls_mode") public static ControlsMode controlsMode = ControlsMode.DEFAULT;
|
||||
@Entry(name = "midnightcontrols.menu.auto_switch_mode") public static boolean autoSwitchMode = true;
|
||||
@Entry(name = "Debug") public static boolean debug = false;
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.controls_mode") public static ControlsMode controlsMode = ControlsMode.DEFAULT;
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.auto_switch_mode") public static boolean autoSwitchMode = true;
|
||||
@Entry(category = "misc", name = "Debug") public static boolean debug = false;
|
||||
// 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;
|
||||
@Entry(category = "visual", name = "midnightcontrols.menu.hud_enable") public static boolean hudEnable = true;
|
||||
@Entry(category = "visual", name = "midnightcontrols.menu.hud_side") public static HudSide hudSide = HudSide.LEFT;
|
||||
@Entry(category = "screens", 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;
|
||||
@Entry(name = "midnightcontrols.menu.controller_toggle_sneak") public static boolean controllerToggleSneak = MinecraftClient.getInstance().options.getSneakToggled().getValue();
|
||||
@Entry(name = "midnightcontrols.menu.controller_toggle_sprint") public static boolean controllerToggleSprint = MinecraftClient.getInstance().options.getSprintToggled().getValue();
|
||||
@Entry(name = "midnightcontrols.menu.fast_block_placing") public static boolean fastBlockPlacing = false; // Disabled by default as this behaviour can be considered cheating on multiplayer servers.
|
||||
@Entry(name = "midnightcontrols.menu.fly_drifting") public static boolean flyDrifting = true; // Enabled by default as disabling this behaviour can be considered cheating on multiplayer servers. It can also conflict with some other mods.
|
||||
@Entry(name = "midnightcontrols.menu.fly_drifting_vertical") public static boolean verticalFlyDrifting = true; // Enabled by default as disabling this behaviour can be considered cheating on multiplayer servers.
|
||||
@Entry(name = "midnightcontrols.menu.reacharound.horizontal") public static boolean horizontalReacharound = false; // Disabled by default as this behaviour can be considered cheating on multiplayer servers.
|
||||
@Entry(name = "midnightcontrols.menu.reacharound.vertical") public static boolean verticalReacharound = false; // Disabled by default as this behaviour can be considered cheating on multiplayer servers.
|
||||
@Entry(name = "Reacharound Outline") public static boolean shouldRenderReacharoundOutline = true;
|
||||
@Entry(name = "Reacharound Outline Color (WIP)", isColor = true) public static String reacharoundOutlineColorHex = "#ffffff";
|
||||
@Entry(name = "Reacharound Outline Alpha", min = 0, max = 255) public static int reacharoundOutlineColorAlpha = 102;
|
||||
@Entry(name = "midnightcontrols.menu.right_dead_zone") public static double rightDeadZone = 0.25;
|
||||
@Entry(name = "midnightcontrols.menu.left_dead_zone") public static double leftDeadZone = 0.25;
|
||||
@Entry(name = "midnightcontrols.menu.invert_right_y_axis") public static boolean invertRightYAxis = false;
|
||||
@Entry(name = "midnightcontrols.menu.invert_right_x_axis") public static boolean invertRightXAxis = false;
|
||||
@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;
|
||||
@Entry(name = "Controller ID") public static Object controllerID = 0;
|
||||
@Entry(name = "2nd Controller ID") public static Object secondControllerID = -1;
|
||||
@Entry(name = "midnightcontrols.menu.controller_type") public static ControllerType controllerType = ControllerType.DEFAULT;
|
||||
@Entry(name = "Mouse screens") public static List<String> mouseScreens = Lists.newArrayList("me.jellysquid.mods.sodium.client.gui",
|
||||
"net.coderbot.iris.gui", "net.minecraft.client.gui.screen.advancement", "net.minecraft.client.gui.screen.pack.PackScreen", "net.minecraft.class_5375",
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.analog_movement") public static boolean analogMovement = true;
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.double_tap_to_sprint") public static boolean doubleTapToSprint = true;
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.controller_toggle_sneak") public static boolean controllerToggleSneak = MinecraftClient.getInstance().options.getSneakToggled().getValue();
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.controller_toggle_sprint") public static boolean controllerToggleSprint = MinecraftClient.getInstance().options.getSprintToggled().getValue();
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.fast_block_placing") public static boolean fastBlockPlacing = false; // Disabled by default as this behaviour can be considered cheating on multiplayer servers.
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.fly_drifting") public static boolean flyDrifting = true; // Enabled by default as disabling this behaviour can be considered cheating on multiplayer servers. It can also conflict with some other mods.
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.fly_drifting_vertical") public static boolean verticalFlyDrifting = true; // Enabled by default as disabling this behaviour can be considered cheating on multiplayer servers.
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.reacharound.horizontal") public static boolean horizontalReacharound = false; // Disabled by default as this behaviour can be considered cheating on multiplayer servers.
|
||||
@Entry(category = "gameplay", name = "midnightcontrols.menu.reacharound.vertical") public static boolean verticalReacharound = false; // Disabled by default as this behaviour can be considered cheating on multiplayer servers.
|
||||
@Entry(category = "visual", name = "Reacharound Outline") public static boolean shouldRenderReacharoundOutline = true;
|
||||
@Entry(category = "visual", name = "Reacharound Outline Color", isColor = true) public static String reacharoundOutlineColorHex = "#ffffff";
|
||||
@Entry(category = "visual", name = "Reacharound Outline Alpha", isSlider = true, min = 0, max = 255) public static int reacharoundOutlineColorAlpha = 102;
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.right_dead_zone", isSlider = true, min = 0.05, max = 1) public static double rightDeadZone = 0.25;
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.left_dead_zone", isSlider = true, min = 0.05, max = 1) public static double leftDeadZone = 0.25;
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.invert_right_y_axis") public static boolean invertRightYAxis = false;
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.invert_right_x_axis") public static boolean invertRightXAxis = false;
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.rotation_speed", isSlider = true, min = 0, max = 100, precision = 10) public static double rotationSpeed = 40.0; //used for x-axis, name kept for compatibility
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.y_axis_rotation_speed", isSlider = true, min = 0, max = 100, precision = 10) public static double yAxisRotationSpeed = rotationSpeed;
|
||||
@Entry(category = "screens", name = "midnightcontrols.menu.mouse_speed", isSlider = true, min = 0, max = 150, precision = 10) public static double mouseSpeed = 25.0;
|
||||
@Entry(category = "screens", name = "midnightcontrols.menu.joystick_as_mouse") public static boolean joystickAsMouse = false;
|
||||
@Entry(category = "controller", name = "midnightcontrols.menu.unfocused_input") public static boolean unfocusedInput = false;
|
||||
@Entry(category = "screens", name = "midnightcontrols.menu.virtual_mouse") public static boolean virtualMouse = false;
|
||||
@Entry(category = "screens", name = "midnightcontrols.menu.virtual_mouse.skin") public static VirtualMouseSkin virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT;
|
||||
@Entry(category = "controller", name = "Controller ID") @Hidden public static Object controllerID = 0;
|
||||
@Entry(category = "controller", name = "2nd Controller ID") @Hidden public static Object secondControllerID = -1;
|
||||
@Entry(category = "visual", name = "midnightcontrols.menu.controller_type") public static ControllerType controllerType = ControllerType.DEFAULT;
|
||||
@Entry(category = "screens", name = "Mouse screens") public static List<String> mouseScreens = Lists.newArrayList("net.minecraft.client.gui.screen.advancement",
|
||||
"net.minecraft.class_457", "net.minecraft.class_408", "net.minecraft.class_3872", "me.flashyreese.mods.reeses_sodium_options.client.gui", "dev.emi.emi.screen",
|
||||
"hardcorequesting.client.interfaces.GuiQuestBook", "hardcorequesting.client.interfaces.GuiReward", "hardcorequesting.client.interfaces.EditTrackerScreen",
|
||||
"me.shedaniel.clothconfig2.gui.ClothConfigScreen", "com.mamiyaotaru.voxelmap.gui.GuiWaypoints", "com.mamiyaotaru.voxelmap.gui.GuiPersistentMap");
|
||||
@Entry(name = "Arrow screens") public static List<String> arrowScreens = Lists.newArrayList(ChatScreen.class.getCanonicalName());
|
||||
@Entry(name = "WASD screens") public static List<String> wasdScreens = Lists.newArrayList("com.ultreon.devices.core.Laptop");
|
||||
@Entry(name = "Keybindings") public static Map<String, String> BINDING = new HashMap<>();
|
||||
@Entry(category = "screens", name = "Arrow screens") public static List<String> arrowScreens = Lists.newArrayList(ChatScreen.class.getCanonicalName());
|
||||
@Entry(category = "screens", name = "WASD screens") public static List<String> wasdScreens = Lists.newArrayList("com.ultreon.devices.core.Laptop");
|
||||
@Entry @Hidden public static Map<String, String> BINDING = new HashMap<>();
|
||||
|
||||
private static final Pattern BUTTON_BINDING_PATTERN = Pattern.compile("(-?\\d+)\\+?");
|
||||
@Entry(name = "Max analog values") public static double[] maxAnalogValues = new double[]{1, 1, 1, 1};
|
||||
@Entry(name = "Trigger button fix") public static boolean triggerFix = true;
|
||||
@Entry(name = "Enable Hints") public static boolean enableHints = true;
|
||||
@Entry(name = "Enable Shortcut in Controls Options") public static boolean shortcutInControls = true;
|
||||
@Entry(name = "Ring Bindings (WIP)") public static List<String> ringBindings = new ArrayList<>();
|
||||
@Entry(name = "Ignored Unbound Keys") public static List<String> ignoredUnboundKeys = Lists.newArrayList("inventorytabs.key.next_tab");
|
||||
@Deprecated @Hidden @Entry public static double[] maxAnalogValues = new double[]{1, 1, 1, 1};
|
||||
@Entry(category = "controller", name = "Max analog value: Left X", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueLeftX = maxAnalogValues[0];
|
||||
@Entry(category = "controller", name = "Max analog value: Left Y", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueLeftY = maxAnalogValues[1];
|
||||
@Entry(category = "controller", name = "Max analog value: Right X", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueRightX = maxAnalogValues[2];
|
||||
@Entry(category = "controller", name = "Max analog value: Right Y", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueRightY = maxAnalogValues[3];
|
||||
@Entry(category = "controller", name = "Trigger button fix") public static boolean triggerFix = true;
|
||||
@Entry(category = "gameplay", name = "Enable Hints") public static boolean enableHints = true;
|
||||
@Entry(category = "screens", name = "Enable Shortcut in Controls Options") public static boolean shortcutInControls = true;
|
||||
@Entry(category = "misc", name = "Ring Bindings (WIP)") public static List<String> ringBindings = new ArrayList<>();
|
||||
@Entry(category = "misc", name = "Ignored Unbound Keys") public static List<String> ignoredUnboundKeys = Lists.newArrayList("inventorytabs.key.next_tab");
|
||||
@Entry @Hidden public static Map<String, Map<String, String>> controllerBindingProfiles = new HashMap<>();
|
||||
private static Map<String, String> currentBindingProfile = new HashMap<>();
|
||||
private static Controller prevController;
|
||||
@@ -198,14 +202,21 @@ public class MidnightControlsConfig extends MidnightConfig {
|
||||
}
|
||||
|
||||
public static double getAxisMaxValue(int axis) {
|
||||
if (axis >= MidnightControlsConfig.maxAnalogValues.length)
|
||||
return 1;
|
||||
return MidnightControlsConfig.maxAnalogValues[axis];
|
||||
return switch (axis) {
|
||||
case GLFW_GAMEPAD_AXIS_LEFT_X -> MidnightControlsConfig.maxAnalogValueLeftX;
|
||||
case GLFW_GAMEPAD_AXIS_LEFT_Y -> MidnightControlsConfig.maxAnalogValueLeftY;
|
||||
case GLFW_GAMEPAD_AXIS_RIGHT_X -> MidnightControlsConfig.maxAnalogValueRightX;
|
||||
default -> MidnightControlsConfig.maxAnalogValueRightY;
|
||||
};
|
||||
}
|
||||
|
||||
public static void setAxisMaxValue(int axis, double value) {
|
||||
if (axis < MidnightControlsConfig.maxAnalogValues.length)
|
||||
MidnightControlsConfig.maxAnalogValues[axis] = value;
|
||||
switch (axis) {
|
||||
case GLFW_GAMEPAD_AXIS_LEFT_X -> MidnightControlsConfig.maxAnalogValueLeftX = value;
|
||||
case GLFW_GAMEPAD_AXIS_LEFT_Y -> MidnightControlsConfig.maxAnalogValueLeftY = value;
|
||||
case GLFW_GAMEPAD_AXIS_RIGHT_X -> MidnightControlsConfig.maxAnalogValueRightX = value;
|
||||
default -> MidnightControlsConfig.maxAnalogValueRightY = value;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -330,9 +341,12 @@ public class MidnightControlsConfig extends MidnightConfig {
|
||||
controllerID = 0;
|
||||
secondControllerID = -1;
|
||||
controllerType = ControllerType.DEFAULT;
|
||||
mouseScreens = Lists.newArrayList("me.jellysquid.mods.sodium.client.gui", "net.coderbot.iris.gui", "net.minecraft.client.gui.screen.advancement", "net.minecraft.client.gui.screen.pack.PackScreen", "net.minecraft.class_5375", "net.minecraft.class_457", "net.minecraft.class_408", "net.minecraft.class_3872", "me.flashyreese.mods.reeses_sodium_options.client.gui", "dev.emi.emi.screen", "me.shedaniel.clothconfig2.gui.ClothConfigScreen", "com.mamiyaotaru.voxelmap.gui.GuiWaypoints", "com.mamiyaotaru.voxelmap.gui.GuiPersistentMap");
|
||||
mouseScreens = Lists.newArrayList("net.minecraft.client.gui.screen.advancement", "net.minecraft.class_457", "net.minecraft.class_408", "net.minecraft.class_3872", "me.flashyreese.mods.reeses_sodium_options.client.gui", "dev.emi.emi.screen", "me.shedaniel.clothconfig2.gui.ClothConfigScreen", "com.mamiyaotaru.voxelmap.gui.GuiWaypoints", "com.mamiyaotaru.voxelmap.gui.GuiPersistentMap");
|
||||
BINDING = new HashMap<>();
|
||||
maxAnalogValues = new double[]{1, 1, 1, 1};
|
||||
maxAnalogValueLeftX = 1;
|
||||
maxAnalogValueLeftY = 1;
|
||||
maxAnalogValueRightX = 1;
|
||||
maxAnalogValueRightY = 1;
|
||||
triggerFix = true;
|
||||
enableHints = true;
|
||||
shortcutInControls = true;
|
||||
@@ -350,7 +364,7 @@ public class MidnightControlsConfig extends MidnightConfig {
|
||||
String controller = getController().getName().toLowerCase();
|
||||
if (controller.contains("xbox 360")) return ControllerType.XBOX_360;
|
||||
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") && GlDebugInfo.getCpuInfo().contains("AMD Custom APU")) return ControllerType.STEAM_DECK;
|
||||
else if (controller.contains("steam")) return ControllerType.STEAM_CONTROLLER;
|
||||
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;
|
||||
|
||||
@@ -72,6 +72,7 @@ public class MidnightInput {
|
||||
private static final Map<Integer, Integer> BUTTON_COOLDOWNS = new HashMap<>();
|
||||
// Cooldowns
|
||||
public int actionGuiCooldown = 0;
|
||||
public int joystickCooldown = 0;
|
||||
public boolean ignoreNextARelease = false;
|
||||
public boolean ignoreNextXRelease = false;
|
||||
private double targetYaw = 0.0;
|
||||
@@ -126,6 +127,8 @@ public class MidnightInput {
|
||||
--this.actionGuiCooldown;
|
||||
if (this.screenCloseCooldown > 0)
|
||||
--this.screenCloseCooldown;
|
||||
if (this.joystickCooldown > 0)
|
||||
--this.joystickCooldown;
|
||||
|
||||
InputManager.updateStates();
|
||||
|
||||
@@ -327,15 +330,13 @@ public class MidnightInput {
|
||||
&& (button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_UP || button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_DOWN
|
||||
|| button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_LEFT || button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_RIGHT)) {
|
||||
if (this.actionGuiCooldown == 0) {
|
||||
if (MidnightControlsConfig.arrowScreens.contains(client.currentScreen.getClass().getCanonicalName())) {
|
||||
switch (button) {
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_UP -> pressKeyboardKey(client, GLFW.GLFW_KEY_UP);
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_DOWN -> pressKeyboardKey(client, GLFW.GLFW_KEY_DOWN);
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_LEFT -> pressKeyboardKey(client, GLFW.GLFW_KEY_LEFT);
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT -> pressKeyboardKey(client, GLFW.GLFW_KEY_RIGHT);
|
||||
}
|
||||
switch (button) {
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_UP -> this.changeFocus(client.currentScreen, NavigationDirection.UP);
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_DOWN -> this.changeFocus(client.currentScreen, NavigationDirection.DOWN);
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_LEFT -> this.handleLeftRight(client.currentScreen, false);
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT -> this.handleLeftRight(client.currentScreen, true);
|
||||
}
|
||||
else if (MidnightControlsConfig.wasdScreens.contains(client.currentScreen.getClass().getCanonicalName())) {
|
||||
if (MidnightControlsConfig.wasdScreens.contains(client.currentScreen.getClass().getCanonicalName())) {
|
||||
switch (button) {
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_UP -> pressKeyboardKey(client, GLFW.GLFW_KEY_W);
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_DOWN -> pressKeyboardKey(client, GLFW.GLFW_KEY_S);
|
||||
@@ -343,11 +344,6 @@ public class MidnightInput {
|
||||
case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT -> pressKeyboardKey(client, GLFW.GLFW_KEY_D);
|
||||
}
|
||||
}
|
||||
else if (button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_UP) {
|
||||
this.changeFocus(client.currentScreen, NavigationDirection.UP);
|
||||
} else if (button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_DOWN) {
|
||||
this.changeFocus(client.currentScreen, NavigationDirection.DOWN);
|
||||
} else this.handleLeftRight(client.currentScreen, button != GLFW.GLFW_GAMEPAD_BUTTON_DPAD_LEFT);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -426,6 +422,9 @@ public class MidnightInput {
|
||||
public void pressKeyboardKey(MinecraftClient client, int key) {
|
||||
client.keyboard.onKey(client.getWindow().getHandle(), key, 0, 1, 0);
|
||||
}
|
||||
public void pressKeyboardKey(Screen screen, int key) {
|
||||
screen.keyPressed(key, 0, 1);
|
||||
}
|
||||
/**
|
||||
|
||||
/**
|
||||
@@ -571,9 +570,8 @@ public class MidnightInput {
|
||||
return;
|
||||
}
|
||||
} else if (client.currentScreen != null) {
|
||||
if (axis == GLFW_GAMEPAD_AXIS_RIGHT_Y && absValue >= deadZone) {
|
||||
float finalValue = value;
|
||||
if (client.currentScreen.children().stream().filter(element -> element instanceof SpruceEntryListWidget)
|
||||
float finalValue = value;
|
||||
if (axis == GLFW_GAMEPAD_AXIS_RIGHT_Y && absValue >= deadZone && client.currentScreen.children().stream().filter(element -> element instanceof SpruceEntryListWidget)
|
||||
.map(element -> (SpruceEntryListWidget<?>) element)
|
||||
.filter(AbstractSpruceWidget::isFocusedOrHovered)
|
||||
.noneMatch(element -> {
|
||||
@@ -591,7 +589,20 @@ public class MidnightInput {
|
||||
{
|
||||
client.currentScreen.mouseScrolled(0.0, 0.0, -(value * 1.5f));
|
||||
}
|
||||
|
||||
else if (isScreenInteractive(client.currentScreen) && absValue >= deadZone) {
|
||||
if (value > 0 && joystickCooldown == 0) {
|
||||
switch (axis) {
|
||||
case GLFW_GAMEPAD_AXIS_LEFT_Y -> this.changeFocus(client.currentScreen, NavigationDirection.UP);
|
||||
case GLFW_GAMEPAD_AXIS_LEFT_X -> this.handleLeftRight(client.currentScreen, true);
|
||||
}
|
||||
if (axis == GLFW_GAMEPAD_AXIS_LEFT_Y || axis == GLFW_GAMEPAD_AXIS_LEFT_X) joystickCooldown = 4;
|
||||
} else if (value < 0 && joystickCooldown == 0) {
|
||||
switch (axis) {
|
||||
case GLFW_GAMEPAD_AXIS_LEFT_Y -> this.changeFocus(client.currentScreen, NavigationDirection.DOWN);
|
||||
case GLFW_GAMEPAD_AXIS_LEFT_X -> this.handleLeftRight(client.currentScreen, false);
|
||||
}
|
||||
if (axis == GLFW_GAMEPAD_AXIS_LEFT_Y || axis == GLFW_GAMEPAD_AXIS_LEFT_X) joystickCooldown = 4;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -695,6 +706,7 @@ public class MidnightInput {
|
||||
} else if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib") && YACLCompat.handleAButton(screen, focused)) {
|
||||
return true;
|
||||
}
|
||||
else pressKeyboardKey(screen, GLFW_KEY_ENTER);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -728,11 +740,13 @@ public class MidnightInput {
|
||||
return !spruceElement.onNavigation(right ? NavigationDirection.RIGHT : NavigationDirection.LEFT, false);
|
||||
}
|
||||
if (element instanceof SliderWidget slider) {
|
||||
slider.keyPressed(right ? 262 : 263, 0, 0);
|
||||
this.actionGuiCooldown = 2; // Prevent to press too quickly the focused element, so we have to skip 5 ticks.
|
||||
return false;
|
||||
if (slider.active) {
|
||||
slider.keyPressed(right ? 262 : 263, 0, 0);
|
||||
this.actionGuiCooldown = 2; // Prevent to press too quickly the focused element, so we have to skip 5 ticks.
|
||||
return true;
|
||||
}
|
||||
} else if (element instanceof AlwaysSelectedEntryListWidget) {
|
||||
((EntryListWidgetAccessor) element).midnightcontrols$moveSelection(right ? EntryListWidget.MoveDirection.DOWN : EntryListWidget.MoveDirection.UP);
|
||||
//TODO((EntryListWidgetAccessor) element).midnightcontrols$moveSelection(right ? EntryListWidget.MoveDirection.DOWN : EntryListWidget.MoveDirection.UP);
|
||||
return false;
|
||||
} else if (element instanceof ParentElement entryList) {
|
||||
var focused = entryList.getFocused();
|
||||
@@ -781,81 +795,14 @@ public class MidnightInput {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (FabricLoader.getInstance().isModLoaded("sodium"))
|
||||
SodiumCompat.handleInput(screen, direction.isLookingForward());
|
||||
// This still needs some work
|
||||
// ScreenAccessor accessor = (ScreenAccessor) screen;
|
||||
// if (accessor.getSelected() != null && accessor.getSelected() instanceof ClickableWidget selected && accessor.getSelectables() != null) {
|
||||
// //System.out.println(direction);
|
||||
// if (accessor.getSelectables().size() >= 2) {
|
||||
// //System.out.println(direction + " 2");
|
||||
// int xDifference = Integer.MAX_VALUE;
|
||||
// int yDifference = Integer.MAX_VALUE;
|
||||
// ClickableWidget newWidget = null;
|
||||
// for (int i = 0; i < accessor.getSelectables().size(); ++i) {
|
||||
// if (accessor.getSelectables().get(i) instanceof ClickableWidget candidate) {
|
||||
// if (!(candidate.x == selected.x && candidate.y == selected.y)) {
|
||||
// int canXDifference = Math.abs(candidate.x - selected.x);
|
||||
// int canYDifference = Math.abs(candidate.y - selected.y);
|
||||
// if (direction.isHorizontal()) {
|
||||
// if (direction.isLookingForward()) {
|
||||
// if (candidate.x >= selected.x && canYDifference <= yDifference && canXDifference <= xDifference) {
|
||||
// System.out.println(direction + " forward horizontal " + candidate);
|
||||
// newWidget = candidate;
|
||||
// xDifference = canXDifference;
|
||||
// yDifference = canYDifference;
|
||||
// }
|
||||
// } else {
|
||||
// if (candidate.x <= selected.x && canYDifference <= yDifference && canXDifference >= xDifference) {
|
||||
// System.out.println(direction + " backward horizontal " + candidate);
|
||||
// newWidget = candidate;
|
||||
// xDifference = canXDifference;
|
||||
// yDifference = canYDifference;
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// if (direction.isLookingForward()) {
|
||||
// if (candidate.y >= selected.y && canYDifference <= yDifference && canXDifference <= xDifference) {
|
||||
// System.out.println(direction + " forward vertical " + candidate);
|
||||
// newWidget = candidate;
|
||||
// xDifference = canXDifference;
|
||||
// yDifference = canYDifference;
|
||||
// }
|
||||
// } else {
|
||||
// if (candidate.y <= selected.y && canYDifference >= yDifference && canXDifference <= xDifference) {
|
||||
// System.out.println(direction + " backward vertical " + candidate);
|
||||
// newWidget = candidate;
|
||||
// xDifference = canXDifference;
|
||||
// yDifference = canYDifference;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (newWidget != null) {
|
||||
// //selected.changeFocus(true);
|
||||
// ((ClickableWidgetAccessor) selected).setFocused(false);
|
||||
// ((ClickableWidgetAccessor) newWidget).setFocused(true);
|
||||
// screen.setFocused(newWidget);
|
||||
// screen.changeFocus(false);
|
||||
// screen.changeFocus(true);
|
||||
// this.actionGuiCooldown = 5;
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
if (!screen.changeFocus(direction.isLookingForward())) {
|
||||
if (screen.changeFocus(direction.isLookingForward())) {
|
||||
this.actionGuiCooldown = 5;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
this.actionGuiCooldown = 5;
|
||||
return false;
|
||||
switch (direction) {
|
||||
case UP -> pressKeyboardKey(screen, GLFW.GLFW_KEY_UP);
|
||||
case DOWN -> pressKeyboardKey(screen, GLFW.GLFW_KEY_DOWN);
|
||||
case LEFT -> pressKeyboardKey(screen, GLFW.GLFW_KEY_LEFT);
|
||||
case RIGHT -> pressKeyboardKey(screen, GLFW.GLFW_KEY_RIGHT);
|
||||
}
|
||||
this.actionGuiCooldown = 5;
|
||||
return false;
|
||||
} catch (Exception exception) {MidnightControls.get().warn("Unknown exception encountered while trying to change focus: "+exception);}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -120,31 +120,39 @@ public class MidnightReacharound {
|
||||
return null;
|
||||
|
||||
if (client.player != null && client.crosshairTarget != null && client.crosshairTarget.getType() == HitResult.Type.MISS
|
||||
&& client.player.isOnGround() && client.player.getPitch(0.f) > 35.f) {
|
||||
&& client.player.isOnGround() && client.player.getPitch(0.f) >= 35.f) {
|
||||
if (client.player.isRiding())
|
||||
return null;
|
||||
var playerPos = client.player.getBlockPos().down();
|
||||
// Temporary pos, do not use
|
||||
Vec3d playerPosi = client.player.getPos();
|
||||
|
||||
// Imitates var playerPos = client.player.getBlockPos().down();
|
||||
Vec3d playerPos = new Vec3d(playerPosi.getX(), playerPosi.getY() - 1.0, playerPosi.getZ());
|
||||
if (client.player.getY() - playerPos.getY() - 1.0 >= 0.25) {
|
||||
playerPos = playerPos.up();
|
||||
// Imitates playerPos = playerPos.up();
|
||||
playerPos = playerPosi;
|
||||
this.onSlab = true;
|
||||
} else {
|
||||
this.onSlab = false;
|
||||
}
|
||||
var targetPos = new BlockPos(client.crosshairTarget.getPos()).subtract(playerPos);
|
||||
var vector = new BlockPos.Mutable(MathHelper.clamp(targetPos.getX(), -1, 1), 0, MathHelper.clamp(targetPos.getZ(), -1, 1));
|
||||
var targetPos = new Vec3d(client.crosshairTarget.getPos().getX(), client.crosshairTarget.getPos().getY(), client.crosshairTarget.getPos().getZ()).subtract(playerPos);
|
||||
var vector = new Vec3d(MathHelper.clamp(targetPos.getX(), -1, 1), 0, MathHelper.clamp(targetPos.getZ(), -1, 1));
|
||||
var blockPos = playerPos.add(vector);
|
||||
|
||||
// Some functions still need BlockPos, so this is here to let that happen
|
||||
var blockyPos = BlockPos.ofFloored(blockPos);
|
||||
|
||||
var direction = client.player.getHorizontalFacing();
|
||||
|
||||
var state = client.world.getBlockState(blockPos);
|
||||
var state = client.world.getBlockState(blockyPos);
|
||||
if (!state.isAir())
|
||||
return null;
|
||||
var adjacentBlockState = client.world.getBlockState(blockPos.offset(direction.getOpposite()));
|
||||
var adjacentBlockState = client.world.getBlockState(blockyPos.offset(direction.getOpposite()));
|
||||
if (adjacentBlockState.isAir() || adjacentBlockState.getBlock() instanceof FluidBlock || (vector.getX() == 0 && vector.getZ() == 0)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new BlockHitResult(new Vec3d(blockPos.getX(),blockPos.getY(),blockPos.getZ()), direction, blockPos, false);
|
||||
return new BlockHitResult(blockPos, direction, blockyPos, false);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ public class MidnightControlsMixinPlugin implements IMixinConfigPlugin {
|
||||
private final HashMap<String, Boolean> conditionalMixins = new HashMap<>();
|
||||
|
||||
public MidnightControlsMixinPlugin() {
|
||||
this.putConditionalMixin("SodiumOptionsGUIAccessor", FabricLoader.getInstance().isModLoaded("sodium"));
|
||||
//this.putConditionalMixin("SodiumOptionsGUIAccessor", FabricLoader.getInstance().isModLoaded("sodium"));
|
||||
}
|
||||
|
||||
private void putConditionalMixin(@NotNull String path, boolean condition) {
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
package eu.midnightdust.midnightcontrols.client.controller;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import eu.midnightdust.midnightcontrols.client.ButtonState;
|
||||
import eu.midnightdust.midnightcontrols.client.MidnightControlsClient;
|
||||
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
|
||||
@@ -21,6 +22,7 @@ import eu.midnightdust.midnightcontrols.client.gui.RingScreen;
|
||||
import eu.midnightdust.midnightcontrols.client.mixin.AdvancementsScreenAccessor;
|
||||
import eu.midnightdust.midnightcontrols.client.mixin.CreativeInventoryScreenAccessor;
|
||||
import eu.midnightdust.midnightcontrols.client.mixin.RecipeBookWidgetAccessor;
|
||||
import eu.midnightdust.midnightcontrols.client.mixin.TabNavigationWidgetAccessor;
|
||||
import eu.midnightdust.midnightcontrols.client.util.HandledScreenAccessor;
|
||||
import eu.midnightdust.midnightcontrols.client.util.MouseAccessor;
|
||||
import net.fabricmc.fabric.impl.client.itemgroup.CreativeGuiExtensions;
|
||||
@@ -33,7 +35,9 @@ 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.tab.TabManager;
|
||||
import net.minecraft.client.gui.widget.PressableWidget;
|
||||
import net.minecraft.client.gui.widget.TabNavigationWidget;
|
||||
import net.minecraft.client.util.ScreenshotRecorder;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemGroups;
|
||||
@@ -67,7 +71,7 @@ public class InputHandlers {
|
||||
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);
|
||||
return ((CreativeGuiExtensions)screen).fabric_currentPage() == ((FabricItemGroup)itemGroup).getPage() && itemGroup.shouldDisplay();
|
||||
}).toList();
|
||||
}
|
||||
|
||||
@@ -161,6 +165,19 @@ public class InputHandlers {
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else if (client.currentScreen != null && client.currentScreen.children().stream().anyMatch(e -> e instanceof TabNavigationWidget)) {
|
||||
return Lists.newCopyOnWriteArrayList(client.currentScreen.children()).stream().anyMatch(e -> {
|
||||
if (e instanceof TabNavigationWidget tabs) {
|
||||
TabNavigationWidgetAccessor accessor = (TabNavigationWidgetAccessor) tabs;
|
||||
int tabIndex = accessor.getTabs().indexOf(accessor.getTabManager().getCurrentTab());
|
||||
if (next ? tabIndex+1 < accessor.getTabs().size() : tabIndex > 0) {
|
||||
if (next) tabs.selectTab(tabIndex + 1, true);
|
||||
else tabs.selectTab(tabIndex - 1, true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
} else {
|
||||
if (FabricLoader.getInstance().isModLoaded("sodium"))
|
||||
SodiumCompat.handleTabs(client.currentScreen, next);
|
||||
@@ -174,31 +191,20 @@ public class InputHandlers {
|
||||
public static PressAction handlePage(boolean next) {
|
||||
return (client, button, value, action) -> {
|
||||
if (client.currentScreen instanceof CreativeInventoryScreen) {
|
||||
var screen = (HandledScreenAccessor) client.currentScreen;
|
||||
try {
|
||||
if (next) {
|
||||
return client.currentScreen.children().stream().filter(element -> element instanceof PressableWidget)
|
||||
.map(element -> (PressableWidget) element)
|
||||
.filter(element -> element.getMessage() != null && element.getMessage().getContent() != null)
|
||||
.anyMatch(element -> {
|
||||
if (element.getMessage().getString().equals(">")) {
|
||||
element.onPress();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
} else {
|
||||
return client.currentScreen.children().stream().filter(element -> element instanceof PressableWidget)
|
||||
.map(element -> (PressableWidget) element)
|
||||
.filter(element -> element.getMessage() != null && element.getMessage().getContent() != null)
|
||||
.anyMatch(element -> {
|
||||
if (element.getMessage().getString().equals("<")) {
|
||||
element.onPress();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
return client.currentScreen.children().stream().filter(element -> element instanceof PressableWidget)
|
||||
.map(element -> (PressableWidget) element)
|
||||
.filter(element -> element.getMessage() != null && element.getMessage().getContent() != null)
|
||||
.anyMatch(element -> {
|
||||
if (next && element.getMessage().getString().equals(">")) {
|
||||
element.onPress();
|
||||
return true;
|
||||
} else if (element.getMessage().getString().equals("<")) {
|
||||
element.onPress();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
} catch (Exception ignored) {}
|
||||
}
|
||||
if (MidnightControlsCompat.isInventoryTabsPresent()) InventoryTabsCompat.handleInventoryPage(client.currentScreen, next);
|
||||
@@ -246,23 +252,21 @@ public class InputHandlers {
|
||||
|
||||
MidnightControlsClient.get().input.inventoryInteractionCooldown = 5;
|
||||
switch (button.getName()) {
|
||||
case "take_all": {
|
||||
if (screen instanceof CreativeInventoryScreen) {
|
||||
if (slot != null && (((CreativeInventoryScreenAccessor) accessor).midnightcontrols$isCreativeInventorySlot(slot) || MidnightControlsCompat.streamCompatHandlers().anyMatch(handler -> handler.isCreativeSlot(screen, slot))))
|
||||
actionType = SlotActionType.CLONE;
|
||||
case "take_all" -> {
|
||||
if (screen instanceof CreativeInventoryScreen) {
|
||||
if (slot != null && (((CreativeInventoryScreenAccessor) accessor).midnightcontrols$isCreativeInventorySlot(slot) || MidnightControlsCompat.streamCompatHandlers().anyMatch(handler -> handler.isCreativeSlot(screen, slot))))
|
||||
actionType = SlotActionType.CLONE;
|
||||
}
|
||||
}
|
||||
case "take" -> {
|
||||
clickData = GLFW_MOUSE_BUTTON_2;
|
||||
}
|
||||
case "quick_move" -> {
|
||||
actionType = SlotActionType.QUICK_MOVE;
|
||||
}
|
||||
default -> {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "take": {
|
||||
clickData = GLFW_MOUSE_BUTTON_2;
|
||||
break;
|
||||
}
|
||||
case "quick_move": {
|
||||
actionType = SlotActionType.QUICK_MOVE;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
accessor.midnightcontrols$onMouseClick(slot, slotId, clickData, actionType);
|
||||
return true;
|
||||
|
||||
@@ -424,20 +424,20 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
|
||||
|
||||
@Override
|
||||
public void renderTitle(MatrixStack matrices, int mouseX, int mouseY, float delta) {
|
||||
drawCenteredText(matrices, this.textRenderer, I18n.translate("midnightcontrols.menu.title"), this.width / 2, 8, 16777215);
|
||||
drawCenteredTextWithShadow(matrices, this.textRenderer, I18n.translate("midnightcontrols.menu.title"), this.width / 2, 8, 16777215);
|
||||
}
|
||||
|
||||
public static class MidnightControlsBackground implements Background {
|
||||
private int transparency = 160;
|
||||
private static int transparency = 160;
|
||||
public MidnightControlsBackground() {}
|
||||
public MidnightControlsBackground(int transparency) {
|
||||
this.transparency = transparency;
|
||||
MidnightControlsBackground.transparency = transparency;
|
||||
}
|
||||
@Override
|
||||
public void render(MatrixStack matrixStack, SpruceWidget widget, int vOffset, int mouseX, int mouseY, float delta) {
|
||||
fill(matrixStack, widget.getX(), widget.getY(), widget.getX() + widget.getWidth(), widget.getY() + widget.getHeight(), MidnightColorUtil.hex2Rgb("#000000"));
|
||||
}
|
||||
private void fill(MatrixStack matrixStack, int x2, int y2, int x1, int y1, Color color) {
|
||||
private static void fill(MatrixStack matrixStack, int x2, int y2, int x1, int y1, Color color) {
|
||||
matrixStack.push();
|
||||
|
||||
Matrix4f matrix = matrixStack.peek().getPositionMatrix();
|
||||
@@ -447,7 +447,6 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
|
||||
float t = (float)(transparency) / 255.0F;
|
||||
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
||||
RenderSystem.enableBlend();
|
||||
RenderSystem.disableTexture();
|
||||
RenderSystem.defaultBlendFunc();
|
||||
RenderSystem.setShader(GameRenderer::getPositionColorProgram);
|
||||
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
||||
@@ -456,7 +455,6 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
|
||||
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.drawWithGlobalProgram(bufferBuilder.end());
|
||||
RenderSystem.enableTexture();
|
||||
RenderSystem.disableBlend();
|
||||
matrixStack.pop();
|
||||
}
|
||||
|
||||
@@ -65,18 +65,18 @@ public class RingScreen extends Screen {
|
||||
RingPage.selected = -1;
|
||||
this.removed();
|
||||
}
|
||||
@Override
|
||||
public boolean changeFocus(boolean lookForwards) {
|
||||
if (lookForwards) {
|
||||
if (RingPage.selected < 7) ++RingPage.selected;
|
||||
else RingPage.selected = -1;
|
||||
}
|
||||
else {
|
||||
if (RingPage.selected > -1) --RingPage.selected;
|
||||
else RingPage.selected = 7;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// @Override
|
||||
// public boolean changeFocus(boolean lookForwards) {
|
||||
// if (lookForwards) {
|
||||
// if (RingPage.selected < 7) ++RingPage.selected;
|
||||
// else RingPage.selected = -1;
|
||||
// }
|
||||
// else {
|
||||
// if (RingPage.selected > -1) --RingPage.selected;
|
||||
// else RingPage.selected = 7;
|
||||
// }
|
||||
// return true;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public boolean mouseReleased(double mouseX, double mouseY, int button) {
|
||||
|
||||
@@ -59,7 +59,7 @@ public class ControllerControlsWidget extends SpruceContainerWidget {
|
||||
|
||||
@Override
|
||||
public void renderWidget(MatrixStack matrices, int mouseX, int mouseY, float delta) {
|
||||
drawCenteredText(matrices, this.client.textRenderer, Text.translatable("midnightcontrols.menu.title.controller_controls"),
|
||||
drawCenteredTextWithShadow(matrices, this.client.textRenderer, Text.translatable("midnightcontrols.menu.title.controller_controls"),
|
||||
this.getX() + this.width / 2, this.getY() + 4, 16777215);
|
||||
this.resetButton.setActive(InputManager.streamBindings().anyMatch(Predicates.not(ButtonBinding::isDefault)));
|
||||
super.renderWidget(matrices, mouseX, mouseY, delta);
|
||||
|
||||
@@ -24,7 +24,7 @@ public abstract class ChatScreenMixin extends Screen {
|
||||
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))
|
||||
@Inject(method = "render", at = @At("HEAD"))
|
||||
private void midnightcontrols$moveInputFieldBackground(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) {
|
||||
if (MidnightControlsConfig.moveChat) matrices.translate(0f, -this.height + 16, 0f);
|
||||
}
|
||||
|
||||
@@ -9,12 +9,13 @@
|
||||
|
||||
package eu.midnightdust.midnightcontrols.client.mixin;
|
||||
|
||||
import net.minecraft.client.gui.navigation.NavigationDirection;
|
||||
import net.minecraft.client.gui.widget.EntryListWidget;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||
|
||||
@Mixin(EntryListWidget.class)
|
||||
public interface EntryListWidgetAccessor {
|
||||
@Invoker("moveSelection")
|
||||
void midnightcontrols$moveSelection(EntryListWidget.MoveDirection direction);
|
||||
//@Invoker("getNeighbouringEntry")
|
||||
//void midnightcontrols$getNeighbouringEntry(NavigationDirection direction);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package eu.midnightdust.midnightcontrols.client.mixin;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import net.minecraft.client.gui.tab.Tab;
|
||||
import net.minecraft.client.gui.tab.TabManager;
|
||||
import net.minecraft.client.gui.widget.TabNavigationWidget;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||
|
||||
@Mixin(TabNavigationWidget.class)
|
||||
public interface TabNavigationWidgetAccessor {
|
||||
@Accessor
|
||||
TabManager getTabManager();
|
||||
@Accessor
|
||||
ImmutableList<Tab> getTabs();
|
||||
}
|
||||
@@ -64,8 +64,8 @@ public final class MidnightRing {
|
||||
for (String binding : configBindings) {
|
||||
ButtonBinding buttonBinding = InputManager.getBinding(binding);
|
||||
if (buttonBinding != null) {
|
||||
RingPage page = this.pages.get(MathHelper.fastFloor(bindingIndex / 8f));
|
||||
page.actions[bindingIndex - 8 * (MathHelper.fastFloor(bindingIndex / 8f))] = (new ButtonBindingRingAction(buttonBinding));
|
||||
RingPage page = this.pages.get(MathHelper.floor(bindingIndex / 8f));
|
||||
page.actions[bindingIndex - 8 * (MathHelper.floor(bindingIndex / 8f))] = (new ButtonBindingRingAction(buttonBinding));
|
||||
++bindingIndex;
|
||||
}
|
||||
}
|
||||
@@ -88,8 +88,8 @@ public final class MidnightRing {
|
||||
|
||||
for (ButtonBinding buttonBinding : unboundBindings) {
|
||||
if (buttonBinding != null) {
|
||||
RingPage page = this.pages.get(MathHelper.fastFloor(bindingIndex / 8f));
|
||||
page.actions[bindingIndex - 8 * (MathHelper.fastFloor(bindingIndex / 8f))] = (new ButtonBindingRingAction(buttonBinding));
|
||||
RingPage page = this.pages.get(MathHelper.floor(bindingIndex / 8f));
|
||||
page.actions[bindingIndex - 8 * (MathHelper.floor(bindingIndex / 8f))] = (new ButtonBindingRingAction(buttonBinding));
|
||||
++bindingIndex;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public class RingPage extends DrawableHelper {
|
||||
public void render(@NotNull MatrixStack matrices, @NotNull TextRenderer textRenderer, int width, int height, int mouseX, int mouseY, float tickDelta) {
|
||||
int centerX = width / 2;
|
||||
int centerY = height / 2;
|
||||
if (MidnightControlsClient.get().ring.getMaxPages() > 1) drawCenteredText(matrices, textRenderer, name, centerX, 5, 0xffffff);
|
||||
if (MidnightControlsClient.get().ring.getMaxPages() > 1) drawCenteredTextWithShadow(matrices, textRenderer, name, centerX, 5, 0xffffff);
|
||||
|
||||
int offset = MidnightRing.ELEMENT_SIZE + (MidnightRing.ELEMENT_SIZE / 2) + 5;
|
||||
|
||||
|
||||
@@ -203,5 +203,10 @@
|
||||
"midnightcontrols.virtual_mouse.skin.default_dark": "Default Dark",
|
||||
"midnightcontrols.virtual_mouse.skin.second_light": "Second Light",
|
||||
"midnightcontrols.virtual_mouse.skin.second_dark": "Second Dark",
|
||||
"midnightcontrols.midnightconfig.category.controller": "Controller",
|
||||
"midnightcontrols.midnightconfig.category.misc": "Miscellaneous",
|
||||
"midnightcontrols.midnightconfig.category.screens": "Screens",
|
||||
"midnightcontrols.midnightconfig.category.gameplay": "Gameplay",
|
||||
"midnightcontrols.midnightconfig.category.visual": "Visual",
|
||||
"modmenu.descriptionTranslation.midnightcontrols": "Adds controller support and enhanced controls overall.\nForked from LambdaControls, which sadly got discontinued."
|
||||
}
|
||||
|
||||
184
src/main/resources/assets/midnightcontrols/lang/uk_ua.json
Normal file
184
src/main/resources/assets/midnightcontrols/lang/uk_ua.json
Normal file
@@ -0,0 +1,184 @@
|
||||
{
|
||||
"midnightcontrols.midnightconfig.title": "Розширена конфігурація MidnightControls",
|
||||
"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.debug_screen": "Відкрити налагодження (F3)",
|
||||
"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.slot_up": "Двинути на слот вгору",
|
||||
"midnightcontrols.action.slot_down": "Повернути на слот вниз",
|
||||
"midnightcontrols.action.slot_left": "Двинути на слот вліво",
|
||||
"midnightcontrols.action.slot_right": "Повернути на слот вправо",
|
||||
"midnightcontrols.action.sneak": "Крастися",
|
||||
"midnightcontrols.action.sprint": "Біг",
|
||||
"midnightcontrols.action.swap_hands": "Змінити руку",
|
||||
"midnightcontrols.action.toggle_perspective": "Переключити перспективу",
|
||||
"midnightcontrols.action.toggle_smooth_camera": "Переключити кінематографічну камеру",
|
||||
"midnightcontrols.action.page_back": "Попередня сторінка",
|
||||
"midnightcontrols.action.page_next": "Наступна сторінка",
|
||||
"midnightcontrols.action.tab_back": "Попередня секція",
|
||||
"midnightcontrols.action.tab_next": "Наступна секція",
|
||||
"midnightcontrols.action.take": "Взяти предмет",
|
||||
"midnightcontrols.action.take_all": "Взяти стак",
|
||||
"midnightcontrols.action.use": "Використовувати",
|
||||
"midnightcontrols.action.zoom": "Наблизити",
|
||||
"midnightcontrols.action.zoom_in": "Збільшити масштаб",
|
||||
"midnightcontrols.action.zoom_out": "Зменшити масштаб",
|
||||
"midnightcontrols.action.zoom_reset": "Скинути масштаб",
|
||||
"midnightcontrols.action.emi_page_left": "Попередня сторінка",
|
||||
"midnightcontrols.action.emi_page_right": "Наступна сторінка",
|
||||
"midnightcontrols.category.emi": "ЕМІ",
|
||||
"midnightcontrols.button.a": "A",
|
||||
"midnightcontrols.button.b": "B",
|
||||
"midnightcontrols.button.x": "X",
|
||||
"midnightcontrols.button.y": "Y",
|
||||
"midnightcontrols.button.left_bumper": "Лівий бампер",
|
||||
"midnightcontrols.button.right_bumper": "Правий бампер",
|
||||
"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.button.l4": "L4",
|
||||
"midnightcontrols.button.l5": "L5",
|
||||
"midnightcontrols.button.r4": "R4",
|
||||
"midnightcontrols.button.r5": "L5",
|
||||
"midnightcontrols.axis.left_x+": "Лівий cтік X+",
|
||||
"midnightcontrols.axis.left_y+": "Лівий cтік Y+",
|
||||
"midnightcontrols.axis.right_x+": "Правий cтік X+",
|
||||
"midnightcontrols.axis.right_y+": "Правий cтік 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": "і вставте ваш підсумок у редактор файлів розкладок.",
|
||||
"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.dualsense": "DualSense",
|
||||
"midnightcontrols.controller_type.switch": "Switch",
|
||||
"midnightcontrols.controller_type.xbox": "Xbox",
|
||||
"midnightcontrols.controller_type.xbox_360": "Xbox 360",
|
||||
"midnightcontrols.controller_type.steam_controller": "Steam Controller",
|
||||
"midnightcontrols.controller_type.steam_deck": "Steam Deck",
|
||||
"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.double_tap_to_sprint": "Двічі відвести лівий стік, щоб почати бігти",
|
||||
"midnightcontrols.menu.fast_block_placing": "Швидка постачання блоків",
|
||||
"midnightcontrols.menu.fly_drifting": "Інерція при польоті",
|
||||
"midnightcontrols.menu.fly_drifting_vertical": "Вертикальна інерція при польоті",
|
||||
"midnightcontrols.menu.hud_enable": "Увімкнути іконоки контролера",
|
||||
"midnightcontrols.menu.hud_side": "Розташування інтерфейсу",
|
||||
"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": "Налаштування інтерфейсу",
|
||||
"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": "Додатковий контролер, наприклад для джой-конів.",
|
||||
"midnightcontrols.tooltip.controller_type": "Тип контролера, щоб правильно зіставити іконки кнопок.",
|
||||
"midnightcontrols.tooltip.controls_mode": "Тип контролю за грою.",
|
||||
"midnightcontrols.tooltip.double_tap_to_sprint": "При подвійному переміщенні на лівий стик, персонаж починає бігти.",
|
||||
"midnightcontrols.tooltip.fast_block_placing": "Під час польоту в творчому режимі дозволяє швидко розміщувати блоки в залежності від вашої швидкості. §cНа деяких серверах це може розцінюватися як читерство.§r",
|
||||
"midnightcontrols.tooltip.fly_drifting": "Під час польоту включає ванільну інерцію.",
|
||||
"midnightcontrols.tooltip.fly_drifting_vertical": "Під час польоту включає ванільну вертикальну інерцію.",
|
||||
"midnightcontrols.tooltip.hud_enable": "Переключає бачення іконок кнопок контролера на екрані.",
|
||||
"midnightcontrols.tooltip.hud_side": "Розташування інтерфейсу у певний бік.",
|
||||
"midnightcontrols.tooltip.left_dead_zone": "Мертва зона для лівого аналогового стику контролера.",
|
||||
"midnightcontrols.tooltip.max_left_x_value": "Змінює те, що мод в результаті вважає максимальним значенням для лівої осі X. Корисно, якщо ваша вісь не використовує весь діапазон і здається повільною.",
|
||||
"midnightcontrols.tooltip.max_left_y_value": "Змінює те, що мод в результаті вважає максимальним значенням для лівої осі Y. Корисно, якщо ваша вісь не використовує весь діапазон і здається повільною.",
|
||||
"midnightcontrols.tooltip.max_right_x_value": "Змінює те, що мод в результаті вважає максимальним значенням для правої осі X. Корисно, якщо ваша вісь не використовує весь діапазон і здається повільною.",
|
||||
"midnightcontrols.tooltip.max_right_y_value": "Змінює те, що мод в результаті вважає максимальним значенням для правої осі Y. Корисно, якщо ваша вісь не використовує весь діапазон і здається повільною.",
|
||||
"midnightcontrols.tooltip.mouse_speed": "Швидкість миші, що емульується контролером.",
|
||||
"midnightcontrols.tooltip.reacharound.horizontal": "Дозволяє розміщувати передній блок перед собою. §cМоже розглядатися як читерство на деяких серверах§r.",
|
||||
"midnightcontrols.tooltip.reacharound.vertical": "Забезпечує вертикальне охоплення. §cМоже розглядатися як шахрайство на деяких серверах§r.",
|
||||
"midnightcontrols.tooltip.reload_controller_mappings": "Перезавантажує файл розкладки контролерів.",
|
||||
"midnightcontrols.tooltip.right_dead_zone": "Мертва зона для правого аналогового стику контролера.",
|
||||
"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": "Додатковий темний",
|
||||
"modmenu.descriptionTranslation.midnightcontrols": "Додавання підтримки контролера та покращення елементів керування в цілому.\nРозгалужений від LambdaControls, підтримка якого, на жаль, припинена..",
|
||||
"midnightcontrols.menu.joystick_as_mouse": "Завжди використовуйте лівий стік як мишку",
|
||||
"midnightcontrols.tooltip.joystick_as_mouse": "Джойстик поводиться як миша в кожному меню.",
|
||||
"midnightcontrols.menu.controller_toggle_sneak": "Перемикач присідання на контролері",
|
||||
"midnightcontrols.menu.controller_toggle_sprint": "Перемикач бігу на контролері",
|
||||
"midnightcontrols.menu.move_chat": "Перемістити поле введення чату вгору",
|
||||
"midnightcontrols.action.controls_ring": "Показати кільце Управління",
|
||||
"midnightcontrols.menu.separate_controller_profile": "Окремий профіль контролера"
|
||||
}
|
||||
@@ -1,40 +1,75 @@
|
||||
{
|
||||
"midnightcontrols.midnightconfig.title": "Midnightcontrols 進階設定",
|
||||
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.DEFAULT_LIGHT": "預設淺色",
|
||||
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.DEFAULT_DARK": "預設深色",
|
||||
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.SECOND_LIGHT": "額外淺色",
|
||||
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.SECOND_DARK": "額外深色",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.DEFAULT": "預設",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.DUALSHOCK": "DualShock",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.DUALSENSE": "DualSense",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.SWITCH": "Switch/Wii 手把",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.XBOX": "Xbox One/Series 手把",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.XBOX_360": "Xbox 360 手把",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.STEAM_CONTROLLER": "Steam 手把",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.STEAM_DECK": "Steam Deck",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.OUYA": "OUYA 手把",
|
||||
"midnightcontrols.midnightconfig.enum.ControllerType.NUMBERED": "Numbered 手把",
|
||||
"midnightcontrols.midnightconfig.enum.ControlsMode.DEFAULT": "鍵盤/滑鼠",
|
||||
"midnightcontrols.midnightconfig.enum.ControlsMode.CONTROLLER": "手把",
|
||||
"midnightcontrols.midnightconfig.enum.ControlsMode.TOUCHSCREEN": "觸控螢幕",
|
||||
"midnightcontrols.midnightconfig.enum.HudSide.LEFT": "左",
|
||||
"midnightcontrols.midnightconfig.enum.HudSide.RIGHT": "右",
|
||||
"key.midnightcontrols.look_down": "視角下移",
|
||||
"key.midnightcontrols.look_left": "視角左移",
|
||||
"key.midnightcontrols.look_right": "視角右移",
|
||||
"key.midnightcontrols.look_up": "視角上移",
|
||||
"key.midnightcontrols.ring": "顯示額外按鍵菜單",
|
||||
"key.midnightcontrols.ring": "開啟額外按鍵菜單",
|
||||
"midnightcontrols.action.attack": "攻擊",
|
||||
"midnightcontrols.action.back": "向後移動",
|
||||
"midnightcontrols.action.chat": "打開聊天欄",
|
||||
"midnightcontrols.action.drop_item": "丟棄所選物品",
|
||||
"midnightcontrols.action.exit": "退出",
|
||||
"midnightcontrols.action.back": "後退",
|
||||
"midnightcontrols.action.chat": "開啟聊天畫面",
|
||||
"midnightcontrols.action.controls_ring": "開啟未綁定",
|
||||
"midnightcontrols.action.debug_screen": "開啟除錯畫面(F3)",
|
||||
"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.left": "往左",
|
||||
"midnightcontrols.action.pause_game": "暫停遊戲",
|
||||
"midnightcontrols.action.pick_block": "選取方塊",
|
||||
"midnightcontrols.action.pickup": "拿取一個/拿取一半",
|
||||
"midnightcontrols.action.pickup_all": "拿取一組/拿取全部",
|
||||
"midnightcontrols.action.pickup": "拿取一個/拿取一半",
|
||||
"midnightcontrols.action.pickup_all": "拿取一組/拿取全部",
|
||||
"midnightcontrols.action.place": "放置方塊",
|
||||
"midnightcontrols.action.player_list": "玩家列表",
|
||||
"midnightcontrols.action.quick_move": "快速移動物品",
|
||||
"midnightcontrols.action.right": "向右移動",
|
||||
"midnightcontrols.action.right": "往右",
|
||||
"midnightcontrols.action.screenshot": "截圖",
|
||||
"midnightcontrols.action.slot_up": "上移物品欄",
|
||||
"midnightcontrols.action.slot_down": "下移物品欄",
|
||||
"midnightcontrols.action.slot_left": "左移物品欄",
|
||||
"midnightcontrols.action.slot_right": "右移物品欄",
|
||||
"midnightcontrols.action.sneak": "潛行",
|
||||
"midnightcontrols.action.sprint": "疾跑",
|
||||
"midnightcontrols.action.sprint": "跑步",
|
||||
"midnightcontrols.action.swap_hands": "與副手交換",
|
||||
"midnightcontrols.action.toggle_perspective": "切換視角",
|
||||
"midnightcontrols.action.toggle_smooth_camera": "切換電影視角",
|
||||
"midnightcontrols.action.use": "使用物品/放置方塊",
|
||||
"midnightcontrols.action.page_back": "上一頁",
|
||||
"midnightcontrols.action.page_next": "下一頁",
|
||||
"midnightcontrols.action.tab_back": "上一個頁籤",
|
||||
"midnightcontrols.action.tab_next": "下一個頁籤",
|
||||
"midnightcontrols.action.take": "拿取物品",
|
||||
"midnightcontrols.action.take_all": "拿取全部",
|
||||
"midnightcontrols.action.use": "使用物品/放置方塊",
|
||||
"midnightcontrols.action.zoom": "視野縮放",
|
||||
"midnightcontrols.action.zoom_in": "縮放時將視野推近",
|
||||
"midnightcontrols.action.zoom_out": "縮放時將視野拉遠",
|
||||
"midnightcontrols.action.zoom_reset": "縮放時重置縮放距離",
|
||||
"midnightcontrols.action.emi_page_left": "上一頁",
|
||||
"midnightcontrols.action.emi_page_right": "下一頁",
|
||||
"midnightcontrols.category.emi": "EMI",
|
||||
"midnightcontrols.button.a": "A",
|
||||
"midnightcontrols.button.b": "B",
|
||||
"midnightcontrols.button.x": "X",
|
||||
@@ -50,103 +85,128 @@
|
||||
"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.button.l4": "L4",
|
||||
"midnightcontrols.button.l5": "L5",
|
||||
"midnightcontrols.button.r4": "R4",
|
||||
"midnightcontrols.button.r5": "L5",
|
||||
"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.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.tutorial.title": "使用手把玩遊戲!",
|
||||
"midnightcontrols.controller.tutorial.description": "前往 %s -> %s -> %s",
|
||||
"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.default": "預設",
|
||||
"midnightcontrols.controller_type.dualshock": "DualShock",
|
||||
"midnightcontrols.controller_type.switch": "Switch",
|
||||
"midnightcontrols.controller_type.xbox": "Xbox",
|
||||
"midnightcontrols.controller_type.steam": "Steam",
|
||||
"midnightcontrols.controller_type.dualsense": "DualSense",
|
||||
"midnightcontrols.controller_type.switch": "Switch/Wii 手把",
|
||||
"midnightcontrols.controller_type.xbox": "Xbox One/Series 手把",
|
||||
"midnightcontrols.controller_type.xbox_360": "Xbox 360 手把",
|
||||
"midnightcontrols.controller_type.steam_controller": "Steam 手把",
|
||||
"midnightcontrols.controller_type.steam_deck": "Steam Deck",
|
||||
"midnightcontrols.controller_type.ouya": "OUYA",
|
||||
"midnightcontrols.controller_type.numbered": "Numbered 手把",
|
||||
"midnightcontrols.controls_mode.default": "鍵鼠",
|
||||
"midnightcontrols.controls_mode.controller": "手把",
|
||||
"midnightcontrols.controls_mode.touchscreen": "觸摸屏",
|
||||
"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.controller": "搖桿",
|
||||
"midnightcontrols.menu.controller2": "額外搖桿",
|
||||
"midnightcontrols.menu.controller_toggle_sneak": "搖桿潛行切換",
|
||||
"midnightcontrols.menu.controller_toggle_sprint": "搖桿衝刺切換",
|
||||
"midnightcontrols.menu.controller_type": "搖桿類型",
|
||||
"midnightcontrols.menu.controls_mode": "模式",
|
||||
"midnightcontrols.menu.fast_block_placing": "方塊快速放置",
|
||||
"midnightcontrols.menu.double_tap_to_sprint": "雙擊以奔跑",
|
||||
"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.hud_enable": "啟用 HUD",
|
||||
"midnightcontrols.menu.hud_side": "HUD 位置",
|
||||
"midnightcontrols.menu.invert_right_x_axis": "反轉右搖桿 X 軸",
|
||||
"midnightcontrols.menu.invert_right_y_axis": "反轉右搖桿 Y 軸",
|
||||
"midnightcontrols.menu.joystick_as_mouse": "總是將左搖桿作為滑鼠",
|
||||
"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.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.move_chat": "將聊天輸入框移至頂部",
|
||||
"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)",
|
||||
"midnightcontrols.menu.separator.controller": "手把",
|
||||
"midnightcontrols.menu.separator.general": "通用",
|
||||
"midnightcontrols.menu.title": "midnightcontrols — 設置",
|
||||
"midnightcontrols.menu.title.controller": "手把選項",
|
||||
"midnightcontrols.menu.title.controller_controls": "手把控制",
|
||||
"midnightcontrols.menu.rotation_speed": "X 軸鏡頭旋轉速度",
|
||||
"midnightcontrols.menu.y_axis_rotation_speed": "Y 軸鏡頭旋轉速度",
|
||||
"midnightcontrols.menu.separate_controller_profile": "搖桿設定檔",
|
||||
"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.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.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.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.double_tap_to_sprint": "切換是否啟用向前行走按鍵,快速按兩次走路讓玩家奔跑",
|
||||
"midnightcontrols.tooltip.fast_block_placing": "在創造模式中處於飛行狀態時,可以根據你飛行的速度快速放置方塊。\n§c在部分伺服器可能會被認定為作弊§r。",
|
||||
"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.tooltip.hud_enable": "顯示搖桿按鍵操作提示。",
|
||||
"midnightcontrols.tooltip.hud_side": "HUD 的位置位於畫面的哪一側。",
|
||||
"midnightcontrols.tooltip.joystick_as_mouse": "讓搖桿在每個介面有滑鼠的功能。",
|
||||
"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.move_chat": "將聊天輸入欄位移至頂部,以便在使用虛擬鍵盤的裝置上更好地輸入。",
|
||||
"midnightcontrols.tooltip.reacharound.horizontal": "啟用水平方向方塊放置輔助,可在腳下方塊的前方放置方塊。\n§c在部分伺服器可能會被認定為作弊§r。",
|
||||
"midnightcontrols.tooltip.reacharound.vertical": "啟用垂直方向方塊放置輔助,可在腳下方塊的下方放置方塊。\n§c在部分伺服器可能會被認定為作弊§r。",
|
||||
"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": "額外樣式(黑色)"
|
||||
}
|
||||
"midnightcontrols.virtual_mouse.skin.second_dark": "額外樣式(黑色)",
|
||||
"midnightcontrols.midnightconfig.category.controller": "手把",
|
||||
"midnightcontrols.midnightconfig.category.misc": "雜項",
|
||||
"midnightcontrols.midnightconfig.category.screens": "螢幕",
|
||||
"midnightcontrols.midnightconfig.category.gameplay": "遊戲內容",
|
||||
"midnightcontrols.midnightconfig.category.visual": "界面",
|
||||
"modmenu.descriptionTranslation.midnightcontrols": "增加控制器支援和整體增強控制。\n此版本是從 LambdaControls 分支而來,可惜的是 LambdaControls 已經停止維護。"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
accessWidener v1 named
|
||||
|
||||
accessible class net/minecraft/client/gui/widget/EntryListWidget$MoveDirection
|
||||
#accessible class net/minecraft/client/gui/widget/EntryListWidget$MoveDirection
|
||||
@@ -20,7 +20,8 @@
|
||||
"WorldRendererMixin",
|
||||
"KeyBindingRegistryImplAccessor",
|
||||
"KeyBindingIDAccessor",
|
||||
"ScreenAccessor"
|
||||
"ScreenAccessor",
|
||||
"TabNavigationWidgetAccessor"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"pack": {
|
||||
"pack_format": 12,
|
||||
"pack_format": 13,
|
||||
"description": "Makes controller tooltips use similar icons to Bedrock Edition"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"pack": {
|
||||
"pack_format": 12,
|
||||
"pack_format": 13,
|
||||
"description": "Makes controller icons look similar to Legacy Console Edit."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user