mirror of
https://github.com/TeamMidnightDust/MidnightControls.git
synced 2025-12-15 16:15:09 +01:00
Compare commits
6 Commits
c2cab16989
...
faf24ced17
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
faf24ced17 | ||
|
|
d7ea484e71 | ||
|
|
e24ecdc78b | ||
|
|
66874b7164 | ||
|
|
238ea583a2 | ||
|
|
b3b3eb4d55 |
@@ -9,12 +9,20 @@
|
|||||||
|
|
||||||
package eu.midnightdust.midnightcontrols;
|
package eu.midnightdust.midnightcontrols;
|
||||||
|
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.text.object.AtlasTextObjectContents;
|
||||||
|
import net.minecraft.text.object.TextObjectContents;
|
||||||
|
import net.minecraft.util.Atlases;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.TranslatableOption;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.thinkingstudio.obsidianui.util.Nameable;
|
import org.thinkingstudio.obsidianui.util.Nameable;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static eu.midnightdust.midnightcontrols.MidnightControls.id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the controls mode.
|
* Represents the controls mode.
|
||||||
*
|
*
|
||||||
@@ -22,10 +30,15 @@ import java.util.Optional;
|
|||||||
* @version 1.7.0
|
* @version 1.7.0
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public enum ControlsMode {
|
public enum ControlsMode implements TranslatableOption {
|
||||||
DEFAULT,
|
DEFAULT("icon/keyboard_mouse"),
|
||||||
CONTROLLER,
|
CONTROLLER("icon/controller"),
|
||||||
TOUCHSCREEN;
|
TOUCHSCREEN("icon/touchscreen");
|
||||||
|
final String emoji;
|
||||||
|
|
||||||
|
ControlsMode(String emoji) {
|
||||||
|
this.emoji = emoji;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the next controls mode available.
|
* Returns the next controls mode available.
|
||||||
@@ -39,6 +52,16 @@ public enum ControlsMode {
|
|||||||
return v[this.ordinal() + 1];
|
return v[this.ordinal() + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getId() {
|
||||||
|
return this.ordinal();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Text getText() {
|
||||||
|
return Text.object(new AtlasTextObjectContents(Atlases.GUI, id(emoji))).append(" ").append(Text.translatable(getTranslationKey()));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the translation key of this controls mode.
|
* Gets the translation key of this controls mode.
|
||||||
*
|
*
|
||||||
@@ -49,6 +72,7 @@ public enum ControlsMode {
|
|||||||
return "midnightcontrols.controls_mode." + this.getName();
|
return "midnightcontrols.controls_mode." + this.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public @NotNull String getName() {
|
public @NotNull String getName() {
|
||||||
return this.name().toLowerCase();
|
return this.name().toLowerCase();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,11 +38,8 @@ import net.minecraft.client.MinecraftClient;
|
|||||||
import net.minecraft.client.gui.screen.ChatScreen;
|
import net.minecraft.client.gui.screen.ChatScreen;
|
||||||
import net.minecraft.client.gui.screen.advancement.AdvancementsScreen;
|
import net.minecraft.client.gui.screen.advancement.AdvancementsScreen;
|
||||||
import net.minecraft.client.gui.widget.ButtonWidget;
|
import net.minecraft.client.gui.widget.ButtonWidget;
|
||||||
import net.minecraft.client.gui.widget.PressableTextWidget;
|
|
||||||
import net.minecraft.client.gui.widget.PressableWidget;
|
|
||||||
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Formatting;
|
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -52,8 +49,6 @@ import java.lang.annotation.Annotation;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static eu.midnightdust.midnightcontrols.client.MidnightControlsClient.client;
|
|
||||||
import static eu.midnightdust.midnightcontrols.client.gui.MidnightControlsSettingsScreen.searchNextAvailableController;
|
|
||||||
import static org.lwjgl.glfw.GLFW.*;
|
import static org.lwjgl.glfw.GLFW.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -69,20 +64,60 @@ public class MidnightControlsConfig extends MidnightConfig {
|
|||||||
public static final String BUTTONS = "buttons";
|
public static final String BUTTONS = "buttons";
|
||||||
public static boolean isEditing = false;
|
public static boolean isEditing = false;
|
||||||
@Hidden @Entry public static int configVersion = 2;
|
@Hidden @Entry public static int configVersion = 2;
|
||||||
// General
|
|
||||||
@Comment(category = CONTROLLER, centered = true, name="\uD83C\uDFAE General") public static Comment _general;
|
// Controller
|
||||||
|
@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;
|
||||||
|
|
||||||
|
@Comment(category = CONTROLLER, centered = true, name="\uD83D\uDD90 Input Mode") public static Comment _input_mode;
|
||||||
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.controls_mode") public static ControlsMode controlsMode = ControlsMode.DEFAULT;
|
@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 = CONTROLLER, name = "midnightcontrols.menu.auto_switch_mode") public static boolean autoSwitchMode = true;
|
||||||
// HUD
|
|
||||||
|
@Comment(category = CONTROLLER, centered = true, name="\uD83D\uDCF7 Camera Settings") public static Comment _cameraSettings;
|
||||||
|
@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 = 35.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 = CONTROLLER, name = "midnightcontrols.menu.camera_mode") public static CameraMode cameraMode = CameraMode.FLAT;
|
||||||
|
|
||||||
|
@Comment(category = CONTROLLER, centered = true, name="\uD83D\uDC40 Eye Tracking") public static Comment _eyeTracker;
|
||||||
|
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.eye_tracker_as_mouse") public static boolean eyeTrackerAsMouse = false;
|
||||||
|
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.eye_tracker_deadzone", isSlider = true, min = 0, max = 0.4) public static double eyeTrackerDeadzone = 0.05;
|
||||||
|
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.unfocused_input") public static boolean unfocusedInput = false;
|
||||||
|
|
||||||
|
@Comment(category = CONTROLLER, centered = true, name="\uD83D\uDD79 Max Analog Stick Values") public static Comment _maxAnalogValues;
|
||||||
|
@Entry(category = CONTROLLER, name = "Max analog value: Left X", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueLeftX = 1;
|
||||||
|
@Entry(category = CONTROLLER, name = "Max analog value: Left Y", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueLeftY = 1;
|
||||||
|
@Entry(category = CONTROLLER, name = "Max analog value: Right X", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueRightX = 1;
|
||||||
|
@Entry(category = CONTROLLER, name = "Max analog value: Right Y", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueRightY = 1;
|
||||||
|
@Comment(category = CONTROLLER, centered = true, name="☠ Dead Zones") public static Comment _deadZones;
|
||||||
|
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.right_dead_zone", isSlider = true, min = 0.05, max = 1) public static double rightDeadZone = 0.15;
|
||||||
|
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.left_dead_zone", isSlider = true, min = 0.05, max = 1) public static double leftDeadZone = 0.15;
|
||||||
|
@Entry(category = CONTROLLER, name = "Trigger Dead-Zone", isSlider = true, min = 0.05, max = 1) public static double triggerDeadZone = 0.1;
|
||||||
|
|
||||||
|
// Init button binding tab (see #onTabInit())
|
||||||
|
@Comment(category = BUTTONS) @Condition(requiredModId = "thisModDoesNotExist") public static Comment this_spacer_will_never_be_visible;
|
||||||
|
@Entry @Hidden public static Map<String, String> BINDING = new HashMap<>();
|
||||||
|
private static final Pattern BUTTON_BINDING_PATTERN = Pattern.compile("(-?\\d+)\\+?");
|
||||||
|
|
||||||
|
// Visual
|
||||||
@Comment(category = VISUAL, centered = true, name="\uD83D\uDDB9 Hud") public static Comment _hud;
|
@Comment(category = VISUAL, centered = true, name="\uD83D\uDDB9 Hud") public static Comment _hud;
|
||||||
@Entry(category = VISUAL, name = "midnightcontrols.menu.hud_enable") public static boolean hudEnable = true;
|
@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 = VISUAL, name = "midnightcontrols.menu.hud_side") public static HudSide hudSide = HudSide.LEFT;
|
||||||
@Entry(category = VISUAL, name = "midnightcontrols.menu.controller_type") public static ControllerType controllerType = ControllerType.DEFAULT;
|
@Entry(category = VISUAL, name = "midnightcontrols.menu.controller_type") public static ControllerType controllerType = ControllerType.DEFAULT;
|
||||||
|
|
||||||
|
@Comment(category = VISUAL, centered = true, name="⊽ Reacharound") public static Comment _reacharoundOutline;
|
||||||
|
@Condition(requiredModId = "midnightcontrols-extra")
|
||||||
|
@Entry(category = VISUAL, name = "Reacharound Outline") public static boolean shouldRenderReacharoundOutline = true;
|
||||||
|
@Condition(requiredModId = "midnightcontrols-extra", requiredOption = "shouldRenderReacharoundOutline")
|
||||||
|
@Entry(category = VISUAL, name = "Reacharound Outline Color", isColor = true) public static String reacharoundOutlineColorHex = "#ffffff";
|
||||||
|
@Condition(requiredModId = "midnightcontrols-extra", requiredOption = "shouldRenderReacharoundOutline")
|
||||||
|
@Entry(category = VISUAL, name = "Reacharound Outline Alpha", isSlider = true, min = 0, max = 255) public static int reacharoundOutlineColorAlpha = 102;
|
||||||
|
|
||||||
// Gameplay
|
// Gameplay
|
||||||
@Comment(category = GAMEPLAY, centered = true, name="\uD83D\uDECB Comfort") public static Comment _comfort;
|
@Comment(category = GAMEPLAY, centered = true, name="\uD83D\uDECB Comfort") public static Comment _comfort;
|
||||||
@Entry(category = GAMEPLAY, name = "Enable Hints") public static boolean enableHints = true;
|
@Entry(category = GAMEPLAY, name = "Enable Hints") public static boolean enableHints = true;
|
||||||
@Entry(category = GAMEPLAY, name = "midnightcontrols.menu.analog_movement") public static boolean analogMovement = true;
|
@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_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.controller_toggle_sprint") public static boolean controllerToggleSprint = MinecraftClient.getInstance().options.getSprintToggled().getValue();
|
||||||
|
|
||||||
@@ -99,19 +134,8 @@ public class MidnightControlsConfig extends MidnightConfig {
|
|||||||
@Condition(requiredModId = "midnightcontrols-extra")
|
@Condition(requiredModId = "midnightcontrols-extra")
|
||||||
@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 = GAMEPLAY, name = "midnightcontrols.menu.reacharound.vertical") public static boolean verticalReacharound = false; // Disabled by default as this behaviour can be considered cheating on multiplayer servers.
|
||||||
@Condition(requiredModId = "midnightcontrols-extra")
|
@Condition(requiredModId = "midnightcontrols-extra")
|
||||||
@Comment(category = VISUAL, centered = true, name="⊽ Reacharound") public static Comment _reacharoundOutline;
|
|
||||||
@Condition(requiredModId = "midnightcontrols-extra")
|
// Screens
|
||||||
@Entry(category = VISUAL, name = "Reacharound Outline") public static boolean shouldRenderReacharoundOutline = true;
|
|
||||||
@Condition(requiredModId = "midnightcontrols-extra", requiredOption = "shouldRenderReacharoundOutline")
|
|
||||||
@Entry(category = VISUAL, name = "Reacharound Outline Color", isColor = true) public static String reacharoundOutlineColorHex = "#ffffff";
|
|
||||||
@Condition(requiredModId = "midnightcontrols-extra", requiredOption = "shouldRenderReacharoundOutline")
|
|
||||||
@Entry(category = VISUAL, name = "Reacharound Outline Alpha", isSlider = true, min = 0, max = 255) public static int reacharoundOutlineColorAlpha = 102;
|
|
||||||
@Comment(category = CONTROLLER, centered = true, name="\uD83D\uDCF7 Camera Settings") public static Comment _cameraSettings;
|
|
||||||
@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 = 35.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 = CONTROLLER, name = "midnightcontrols.menu.camera_mode") public static CameraMode cameraMode = CameraMode.FLAT;
|
|
||||||
@Comment(category = SCREENS, centered = true, name="\uD83D\uDDB1 Mouse Behaviour") public static Comment _mouseBehaviour;
|
@Comment(category = SCREENS, centered = true, name="\uD83D\uDDB1 Mouse Behaviour") public static Comment _mouseBehaviour;
|
||||||
@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.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 = SCREENS, name = "midnightcontrols.menu.joystick_as_mouse") public static boolean joystickAsMouse = false;
|
||||||
@@ -121,51 +145,37 @@ public class MidnightControlsConfig extends MidnightConfig {
|
|||||||
"me.shedaniel.clothconfig2.gui.ClothConfigScreen", "com.mamiyaotaru.voxelmap.gui.GuiWaypoints", "com.mamiyaotaru.voxelmap.gui.GuiPersistentMap");
|
"me.shedaniel.clothconfig2.gui.ClothConfigScreen", "com.mamiyaotaru.voxelmap.gui.GuiWaypoints", "com.mamiyaotaru.voxelmap.gui.GuiPersistentMap");
|
||||||
@Entry(category = SCREENS, name = "Arrow screens") public static List<String> arrowScreens = Lists.newArrayList(ChatScreen.class.getCanonicalName());
|
@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(category = SCREENS, name = "WASD screens") public static List<String> wasdScreens = Lists.newArrayList("com.ultreon.devices.core.Laptop");
|
||||||
@Comment(category = CONTROLLER, centered = true, name="\uD83D\uDC40 Eye Tracking") public static Comment _eyeTracker;
|
|
||||||
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.eye_tracker_as_mouse") public static boolean eyeTrackerAsMouse = false;
|
|
||||||
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.eye_tracker_deadzone", isSlider = true, min = 0, max = 0.4) public static double eyeTrackerDeadzone = 0.05;
|
|
||||||
@Entry(category = CONTROLLER, name = "midnightcontrols.menu.unfocused_input") public static boolean unfocusedInput = false;
|
|
||||||
@Comment(category = SCREENS, centered = true, name="\uD83D\uDC46 Virtual Mouse") public static Comment _virtualMouse;
|
@Comment(category = SCREENS, centered = true, name="\uD83D\uDC46 Virtual Mouse") public static Comment _virtualMouse;
|
||||||
@Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_mouse") public static boolean virtualMouse = false;
|
@Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_mouse") public static boolean virtualMouse = false;
|
||||||
@Condition(requiredOption = "virtualMouse", visibleButLocked = true)
|
@Condition(requiredOption = "virtualMouse", visibleButLocked = true)
|
||||||
@Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_mouse.skin") public static VirtualMouseSkin virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT;
|
@Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_mouse.skin") public static VirtualMouseSkin virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT;
|
||||||
@Entry(category = SCREENS, name = "midnightcontrols.menu.hide_cursor") public static boolean hideNormalMouse = false;
|
@Entry(category = SCREENS, name = "midnightcontrols.menu.hide_cursor") public static boolean hideNormalMouse = false;
|
||||||
@Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_keyboard") public static boolean virtualKeyboard = false;
|
@Entry(category = SCREENS, name = "midnightcontrols.menu.virtual_keyboard") public static boolean virtualKeyboard = false;
|
||||||
@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;
|
@Comment(category = SCREENS, centered = true, name="\uD83D\uDD27 UI Modifications") public static Comment _uiMods;
|
||||||
|
@Entry(category = SCREENS, name = "midnightcontrols.menu.move_chat") public static boolean moveChat = false;
|
||||||
|
@Entry(category = SCREENS, name = "Enable Shortcut in Controls Options") public static boolean shortcutInControls = true;
|
||||||
|
|
||||||
|
// Touch
|
||||||
@Comment(category = TOUCH, centered = true, name="\uD83E\uDE84 Behaviour") public static Comment _touchBehaviour;
|
@Comment(category = TOUCH, centered = true, name="\uD83E\uDE84 Behaviour") public static Comment _touchBehaviour;
|
||||||
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_with_controller") public static boolean touchInControllerMode = false;
|
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_with_controller") public static boolean touchInControllerMode = false;
|
||||||
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_speed", isSlider = true, min = 0, max = 150, precision = 10) public static double touchSpeed = 50.0;
|
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_speed", isSlider = true, min = 0, max = 150, precision = 10) public static double touchSpeed = 50.0;
|
||||||
@Entry(category = TOUCH, name = "midnightcontrols.menu.invert_touch") public static boolean invertTouch = false;
|
@Entry(category = TOUCH, name = "midnightcontrols.menu.invert_touch") public static boolean invertTouch = false;
|
||||||
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_mode") public static TouchMode touchMode = TouchMode.CROSSHAIR;
|
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_mode") public static TouchMode touchMode = TouchMode.CROSSHAIR;
|
||||||
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_break_delay", isSlider = true, min = 50, max = 500) public static int touchBreakDelay = 120;
|
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_break_delay", isSlider = true, min = 50, max = 500) public static int touchBreakDelay = 120;
|
||||||
|
|
||||||
@Comment(category = TOUCH, centered = true, name="\uD83D\uDCA1 Visuals") public static Comment _visuals;
|
@Comment(category = TOUCH, centered = true, name="\uD83D\uDCA1 Visuals") public static Comment _visuals;
|
||||||
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_transparency", isSlider = true, min = 0, max = 100) public static int touchTransparency = 75;
|
@Entry(category = TOUCH, name = "midnightcontrols.menu.touch_transparency", isSlider = true, min = 0, max = 100) public static int touchTransparency = 75;
|
||||||
@Entry(category = TOUCH, name = "Touch Outline Color", isColor = true) public static String touchOutlineColorHex = "#ffffff";
|
@Entry(category = TOUCH, name = "Touch Outline Color", isColor = true) public static String touchOutlineColorHex = "#ffffff";
|
||||||
@Entry(category = TOUCH, name = "Touch Outline Alpha", isSlider = true, min = 0, max = 255) public static int touchOutlineColorAlpha = 150;
|
@Entry(category = TOUCH, name = "Touch Outline Alpha", isSlider = true, min = 0, max = 255) public static int touchOutlineColorAlpha = 150;
|
||||||
|
|
||||||
@Comment(category = TOUCH, centered = true, name="\uD83E\uDDEA Advanced") public static Comment _advanced;
|
@Comment(category = TOUCH, centered = true, name="\uD83E\uDDEA Advanced") public static Comment _advanced;
|
||||||
@Entry(category = TOUCH, name = "Screens with close button") public static List<String> closeButtonScreens = Lists.newArrayList(ChatScreen.class.getCanonicalName(), AdvancementsScreen.class.getCanonicalName(), RingScreen.class.getCanonicalName());
|
@Entry(category = TOUCH, name = "Screens with close button") public static List<String> closeButtonScreens = Lists.newArrayList(ChatScreen.class.getCanonicalName(), AdvancementsScreen.class.getCanonicalName(), RingScreen.class.getCanonicalName());
|
||||||
@Entry(category = TOUCH, name = "Left Touch button bindings") public static List<String> leftTouchBinds = Lists.newArrayList("debug_screen", "screenshot","toggle_perspective");
|
@Entry(category = TOUCH, name = "Left Touch button bindings") public static List<String> leftTouchBinds = Lists.newArrayList("debug_screen", "screenshot","toggle_perspective");
|
||||||
@Entry(category = TOUCH, name = "Right Touch button bindings") public static List<String> rightTouchBinds = Lists.newArrayList("screenshot","toggle_perspective", "use");
|
@Entry(category = TOUCH, name = "Right Touch button bindings") public static List<String> rightTouchBinds = Lists.newArrayList("screenshot","toggle_perspective", "use");
|
||||||
|
|
||||||
@Entry @Hidden public static Map<String, String> BINDING = new HashMap<>();
|
// Miscellaneous
|
||||||
|
|
||||||
private static final Pattern BUTTON_BINDING_PATTERN = Pattern.compile("(-?\\d+)\\+?");
|
|
||||||
@Comment(category = CONTROLLER, centered = true, name="\uD83D\uDD79 Max Analog Stick Values") public static Comment _maxAnalogValues;
|
|
||||||
@Entry(category = CONTROLLER, name = "Max analog value: Left X", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueLeftX = 1;
|
|
||||||
@Entry(category = CONTROLLER, name = "Max analog value: Left Y", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueLeftY = 1;
|
|
||||||
@Entry(category = CONTROLLER, name = "Max analog value: Right X", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueRightX = 1;
|
|
||||||
@Entry(category = CONTROLLER, name = "Max analog value: Right Y", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueRightY = 1;
|
|
||||||
@Comment(category = CONTROLLER, centered = true, name="☠ Dead Zones") public static Comment _deadZones;
|
|
||||||
@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 = "Trigger Dead-Zone", isSlider = true, min = 0.05, max = 1) public static double triggerDeadZone = 0.1;
|
|
||||||
@Comment(category = CONTROLLER, centered = true, name="☆ Other Options") public static Comment _otherOptions;
|
|
||||||
@Entry(category = CONTROLLER, name = "Trigger button fix") public static boolean triggerFix = true;
|
|
||||||
@Entry(category = CONTROLLER, name = "Excluded Controllers (Name Regex)") public static List<String> excludedControllers = Lists.newArrayList(".*(Keyboard)$", ".*(Touchpad)$", ".*(Pen)$", ".*(Finger)$");
|
|
||||||
@Comment(category = SCREENS, centered = true, name="\uD83D\uDD27 UI Modifications") public static Comment _uiMods;
|
|
||||||
@Entry(category = SCREENS, name = "midnightcontrols.menu.move_chat") public static boolean moveChat = false;
|
|
||||||
@Entry(category = SCREENS, name = "Enable Shortcut in Controls Options") public static boolean shortcutInControls = true;
|
|
||||||
@Entry(category = MISC) @Hidden public static String keyboardLayout = "en_US:qwerty";
|
@Entry(category = MISC) @Hidden public static String keyboardLayout = "en_US:qwerty";
|
||||||
@Entry(category = MISC, name = "Debug") public static boolean debug = false;
|
@Entry(category = MISC, name = "Debug") public static boolean debug = false;
|
||||||
@Entry(category = MISC, name = "Excluded Keybindings") public static List<String> excludedKeybindings = Lists.newArrayList("key.forward", "key.left", "key.back", "key.right", "key.jump", "key.sneak", "key.sprint", "key.inventory",
|
@Entry(category = MISC, name = "Excluded Keybindings") public static List<String> excludedKeybindings = Lists.newArrayList("key.forward", "key.left", "key.back", "key.right", "key.jump", "key.sneak", "key.sprint", "key.inventory",
|
||||||
@@ -173,11 +183,13 @@ public class MidnightControlsConfig extends MidnightConfig {
|
|||||||
"key.pickItem", "key.hotbar.1", "key.hotbar.2", "key.hotbar.3", "key.hotbar.4", "key.hotbar.5", "key.hotbar.6", "key.hotbar.7", "key.hotbar.8", "key.hotbar.9");
|
"key.pickItem", "key.hotbar.1", "key.hotbar.2", "key.hotbar.3", "key.hotbar.4", "key.hotbar.5", "key.hotbar.6", "key.hotbar.7", "key.hotbar.8", "key.hotbar.9");
|
||||||
@Entry(category = MISC, name = "Ring Bindings (WIP)") @Hidden public static List<String> ringBindings = new ArrayList<>();
|
@Entry(category = MISC, name = "Ring Bindings (WIP)") @Hidden 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(category = MISC, name = "Ignored Unbound Keys") public static List<String> ignoredUnboundKeys = Lists.newArrayList("inventorytabs.key.next_tab");
|
||||||
|
@Comment(category = MISC, centered = true, name="☆ Other Options") public static Comment _otherOptions;
|
||||||
|
@Entry(category = MISC, name = "Trigger button fix") public static boolean triggerFix = true;
|
||||||
|
@Entry(category = MISC, name = "Excluded Controllers (Name Regex)") public static List<String> excludedControllers = Lists.newArrayList(".*(Keyboard)$", ".*(Touchpad)$", ".*(Pen)$", ".*(Finger)$");
|
||||||
@Entry @Hidden public static Map<String, Map<String, String>> controllerBindingProfiles = new HashMap<>();
|
@Entry @Hidden public static Map<String, Map<String, String>> controllerBindingProfiles = new HashMap<>();
|
||||||
private static Map<String, String> currentBindingProfile = new HashMap<>();
|
private static Map<String, String> currentBindingProfile = new HashMap<>();
|
||||||
private static Controller prevController;
|
private static Controller prevController;
|
||||||
|
|
||||||
@Comment(category = BUTTONS) @Condition(requiredModId = "thisModDoesNotExist") public static Comment this_spacer_will_never_be_visible;
|
|
||||||
public void onTabInit(String tabName, MidnightConfigListWidget list, MidnightConfigScreen screen) {
|
public void onTabInit(String tabName, MidnightConfigListWidget list, MidnightConfigScreen screen) {
|
||||||
EntryInfo centeredComment = new EntryInfo(null, "midnightcontrols");
|
EntryInfo centeredComment = new EntryInfo(null, "midnightcontrols");
|
||||||
centeredComment.comment = new Comment() {
|
centeredComment.comment = new Comment() {
|
||||||
@@ -221,6 +233,7 @@ public class MidnightControlsConfig extends MidnightConfig {
|
|||||||
list.addButton(List.of(editButton, resetButton), Text.translatable("midnightcontrols.menu.virtual_keyboard_layout"), new EntryInfo(null, screen.modid));
|
list.addButton(List.of(editButton, resetButton), Text.translatable("midnightcontrols.menu.virtual_keyboard_layout"), new EntryInfo(null, screen.modid));
|
||||||
}
|
}
|
||||||
if (CONTROLLER.equals(tabName)) {
|
if (CONTROLLER.equals(tabName)) {
|
||||||
|
list.addButton(List.of(), Text.of("\uD83C\uDFAE General"), centeredComment);
|
||||||
ControllerSelectionButton.add(list, screen, false);
|
ControllerSelectionButton.add(list, screen, false);
|
||||||
ControllerSelectionButton.add(list, screen, true);
|
ControllerSelectionButton.add(list, screen, true);
|
||||||
}
|
}
|
||||||
@@ -450,7 +463,6 @@ public class MidnightControlsConfig extends MidnightConfig {
|
|||||||
hudEnable = true;
|
hudEnable = true;
|
||||||
hudSide = HudSide.LEFT;
|
hudSide = HudSide.LEFT;
|
||||||
analogMovement = true;
|
analogMovement = true;
|
||||||
doubleTapToSprint = true;
|
|
||||||
controllerToggleSneak = MinecraftClient.getInstance().options.getSneakToggled().getValue();
|
controllerToggleSneak = MinecraftClient.getInstance().options.getSneakToggled().getValue();
|
||||||
controllerToggleSprint = MinecraftClient.getInstance().options.getSprintToggled().getValue();
|
controllerToggleSprint = MinecraftClient.getInstance().options.getSprintToggled().getValue();
|
||||||
fastBlockPlacing = false;
|
fastBlockPlacing = false;
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ import eu.midnightdust.midnightcontrols.client.gui.MidnightControlsSettingsScree
|
|||||||
* @since 1.1.0
|
* @since 1.1.0
|
||||||
*/
|
*/
|
||||||
public class MidnightControlsModMenu implements ModMenuApi {
|
public class MidnightControlsModMenu implements ModMenuApi {
|
||||||
@Override
|
// @Override
|
||||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
// public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
||||||
return parent -> new MidnightControlsSettingsScreen(parent, false);
|
// return parent -> new MidnightControlsSettingsScreen(parent, false);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
|
|||||||
private final SpruceOption advancedConfigOption;
|
private final SpruceOption advancedConfigOption;
|
||||||
// Gameplay options
|
// Gameplay options
|
||||||
private final SpruceOption analogMovementOption;
|
private final SpruceOption analogMovementOption;
|
||||||
private final SpruceOption doubleTapToSprintOption;
|
|
||||||
private final SpruceOption autoJumpOption;
|
private final SpruceOption autoJumpOption;
|
||||||
private final SpruceOption controllerToggleSneakOption;
|
private final SpruceOption controllerToggleSneakOption;
|
||||||
private final SpruceOption controllerToggleSprintOption;
|
private final SpruceOption controllerToggleSprintOption;
|
||||||
@@ -228,9 +227,6 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
|
|||||||
this.analogMovementOption = new SpruceToggleBooleanOption("midnightcontrols.menu.analog_movement",
|
this.analogMovementOption = new SpruceToggleBooleanOption("midnightcontrols.menu.analog_movement",
|
||||||
() -> MidnightControlsConfig.analogMovement, value -> MidnightControlsConfig.analogMovement = value,
|
() -> MidnightControlsConfig.analogMovement, value -> MidnightControlsConfig.analogMovement = value,
|
||||||
Text.translatable("midnightcontrols.menu.analog_movement.tooltip"));
|
Text.translatable("midnightcontrols.menu.analog_movement.tooltip"));
|
||||||
this.doubleTapToSprintOption = new SpruceToggleBooleanOption("midnightcontrols.menu.double_tap_to_sprint",
|
|
||||||
() -> MidnightControlsConfig.doubleTapToSprint, value -> MidnightControlsConfig.doubleTapToSprint = value,
|
|
||||||
Text.translatable("midnightcontrols.menu.double_tap_to_sprint.tooltip"));
|
|
||||||
this.autoJumpOption = new SpruceToggleBooleanOption("options.autoJump",
|
this.autoJumpOption = new SpruceToggleBooleanOption("options.autoJump",
|
||||||
() -> this.client.options.getAutoJump().getValue(),
|
() -> this.client.options.getAutoJump().getValue(),
|
||||||
newValue -> this.client.options.getAutoJump().setValue(newValue),
|
newValue -> this.client.options.getAutoJump().setValue(newValue),
|
||||||
@@ -409,7 +405,6 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
|
|||||||
var list = new SpruceOptionListWidget(Position.origin(), width, height);
|
var list = new SpruceOptionListWidget(Position.origin(), width, height);
|
||||||
list.setBackground(new MidnightControlsBackground(130));
|
list.setBackground(new MidnightControlsBackground(130));
|
||||||
list.addSingleOptionEntry(this.analogMovementOption);
|
list.addSingleOptionEntry(this.analogMovementOption);
|
||||||
list.addSingleOptionEntry(this.doubleTapToSprintOption);
|
|
||||||
list.addSingleOptionEntry(this.controllerToggleSneakOption);
|
list.addSingleOptionEntry(this.controllerToggleSneakOption);
|
||||||
list.addSingleOptionEntry(this.controllerToggleSprintOption);
|
list.addSingleOptionEntry(this.controllerToggleSprintOption);
|
||||||
if (MidnightControls.isExtrasLoaded) list.addSingleOptionEntry(this.fastBlockPlacingOption);
|
if (MidnightControls.isExtrasLoaded) list.addSingleOptionEntry(this.fastBlockPlacingOption);
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp
|
|||||||
ControllerBindingButton editButton = new ControllerBindingButton(screen.width - 185 + 22, 0, 128, 20, binding);
|
ControllerBindingButton editButton = new ControllerBindingButton(screen.width - 185 + 22, 0, 128, 20, binding);
|
||||||
TextIconButtonWidget resetButton = TextIconButtonWidget.builder(Text.translatable("controls.reset"), (button -> {
|
TextIconButtonWidget resetButton = TextIconButtonWidget.builder(Text.translatable("controls.reset"), (button -> {
|
||||||
MidnightControlsConfig.setButtonBinding(binding, binding.getDefaultButton());
|
MidnightControlsConfig.setButtonBinding(binding, binding.getDefaultButton());
|
||||||
screen.updateList();
|
MidnightControlsClient.input.beginControlsInput(null);
|
||||||
|
editButton.updateMessage(false);
|
||||||
}), true).texture(Identifier.of("midnightlib","icon/reset"), 12, 12).dimension(20, 20).build();
|
}), true).texture(Identifier.of("midnightlib","icon/reset"), 12, 12).dimension(20, 20).build();
|
||||||
resetButton.setPosition(screen.width - 205 + 150 + 25, 0);
|
resetButton.setPosition(screen.width - 205 + 150 + 25, 0);
|
||||||
editButton.resetButton = resetButton;
|
editButton.resetButton = resetButton;
|
||||||
@@ -47,16 +48,20 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp
|
|||||||
|
|
||||||
TextIconButtonWidget unbindButton = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.narrator.unbound", binding.getText()), (button -> {
|
TextIconButtonWidget unbindButton = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.narrator.unbound", binding.getText()), (button -> {
|
||||||
MidnightControlsConfig.setButtonBinding(binding, UNBOUND);
|
MidnightControlsConfig.setButtonBinding(binding, UNBOUND);
|
||||||
screen.updateList();
|
MidnightControlsClient.input.beginControlsInput(null);
|
||||||
|
editButton.updateMessage(false);
|
||||||
}), true).texture(Identifier.of("midnightcontrols","icon/unbind"), 12, 12).dimension(20, 20).build();
|
}), true).texture(Identifier.of("midnightcontrols","icon/unbind"), 12, 12).dimension(20, 20).build();
|
||||||
unbindButton.setPosition(screen.width - 205 + 20, 0);
|
unbindButton.setPosition(screen.width - 205 + 20, 0);
|
||||||
unbindButton.setTooltip(Tooltip.of(SpruceTexts.GUI_UNBIND));
|
unbindButton.setTooltip(Tooltip.of(SpruceTexts.GUI_UNBIND));
|
||||||
|
unbindButton.active = !binding.isNotBound();
|
||||||
|
editButton.unbindButton = unbindButton;
|
||||||
|
|
||||||
list.addButton(Lists.newArrayList(editButton, resetButton, unbindButton), Text.translatable(binding.getTranslationKey()), info);
|
list.addButton(Lists.newArrayList(editButton, resetButton, unbindButton), Text.translatable(binding.getTranslationKey()), info);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final ButtonBinding binding;
|
private final ButtonBinding binding;
|
||||||
private @Nullable ClickableWidget resetButton;
|
private @Nullable ClickableWidget resetButton;
|
||||||
|
private @Nullable ClickableWidget unbindButton;
|
||||||
public ControllerBindingButton(int x, int y, int width, int height, ButtonBinding binding) {
|
public ControllerBindingButton(int x, int y, int width, int height, ButtonBinding binding) {
|
||||||
super(x, y, width, height, binding.getText(), (button) -> {},
|
super(x, y, width, height, binding.getText(), (button) -> {},
|
||||||
(textSupplier) -> binding.isNotBound() ? Text.translatable("narrator.controls.unbound", binding.getTranslationKey()) : Text.translatable("narrator.controls.bound", binding.getTranslationKey(), textSupplier.get()));
|
(textSupplier) -> binding.isNotBound() ? Text.translatable("narrator.controls.unbound", binding.getTranslationKey()) : Text.translatable("narrator.controls.bound", binding.getTranslationKey(), textSupplier.get()));
|
||||||
@@ -91,6 +96,7 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this.resetButton != null) this.resetButton.active = !this.binding.isDefault();
|
if (this.resetButton != null) this.resetButton.active = !this.binding.isDefault();
|
||||||
|
if (this.unbindButton != null) this.unbindButton.active = !binding.isNotBound();
|
||||||
|
|
||||||
if (hasConflicts.get()) {
|
if (hasConflicts.get()) {
|
||||||
this.setMessage(Text.literal("[ ").append(this.getMessage().copy().formatted(Formatting.WHITE)).append(" ]").formatted(Formatting.RED));
|
this.setMessage(Text.literal("[ ").append(this.getMessage().copy().formatted(Formatting.WHITE)).append(" ]").formatted(Formatting.RED));
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import eu.midnightdust.lib.config.MidnightConfigListWidget;
|
|||||||
import eu.midnightdust.lib.config.MidnightConfigScreen;
|
import eu.midnightdust.lib.config.MidnightConfigScreen;
|
||||||
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
|
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
|
||||||
import eu.midnightdust.midnightcontrols.client.controller.Controller;
|
import eu.midnightdust.midnightcontrols.client.controller.Controller;
|
||||||
|
import net.minecraft.client.gui.tooltip.Tooltip;
|
||||||
import net.minecraft.client.gui.widget.ButtonWidget;
|
import net.minecraft.client.gui.widget.ButtonWidget;
|
||||||
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
import net.minecraft.client.gui.widget.TextIconButtonWidget;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
@@ -43,6 +44,7 @@ public class ControllerSelectionButton {
|
|||||||
button.setMessage(getControllerName(second));
|
button.setMessage(getControllerName(second));
|
||||||
}).dimensions(screen.width - 185, 0, 150, 20).build();
|
}).dimensions(screen.width - 185, 0, 150, 20).build();
|
||||||
resetButton.active = second ? MidnightControlsConfig.getSecondController().isPresent() : false;
|
resetButton.active = second ? MidnightControlsConfig.getSecondController().isPresent() : false;
|
||||||
|
if (second) editButton.setTooltip(Tooltip.of(Text.translatable("midnightcontrols.menu.controller2.tooltip")));
|
||||||
|
|
||||||
list.addButton(List.of(editButton, resetButton), Text.translatable(second ? "midnightcontrols.menu.controller2" : "midnightcontrols.menu.controller"), new EntryInfo(null, screen.modid));
|
list.addButton(List.of(editButton, resetButton), Text.translatable(second ? "midnightcontrols.menu.controller2" : "midnightcontrols.menu.controller"), new EntryInfo(null, screen.modid));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,12 +56,9 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity
|
|||||||
@Shadow
|
@Shadow
|
||||||
protected abstract boolean isCamera();
|
protected abstract boolean isCamera();
|
||||||
|
|
||||||
@Shadow protected int ticksLeftToDoubleTapSprint;
|
|
||||||
|
|
||||||
|
|
||||||
@Inject(method = "move(Lnet/minecraft/entity/MovementType;Lnet/minecraft/util/math/Vec3d;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/AbstractClientPlayerEntity;move(Lnet/minecraft/entity/MovementType;Lnet/minecraft/util/math/Vec3d;)V"))
|
@Inject(method = "move(Lnet/minecraft/entity/MovementType;Lnet/minecraft/util/math/Vec3d;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/AbstractClientPlayerEntity;move(Lnet/minecraft/entity/MovementType;Lnet/minecraft/util/math/Vec3d;)V"))
|
||||||
public void onMove(MovementType type, Vec3d movement, CallbackInfo ci) {
|
public void onMove(MovementType type, Vec3d movement, CallbackInfo ci) {
|
||||||
if (!MidnightControlsConfig.doubleTapToSprint) ticksLeftToDoubleTapSprint = 0;
|
|
||||||
if (!MidnightControls.isExtrasLoaded) return;
|
if (!MidnightControls.isExtrasLoaded) return;
|
||||||
if (type == MovementType.SELF) {
|
if (type == MovementType.SELF) {
|
||||||
if (this.getAbilities().flying && (!MidnightControlsConfig.flyDrifting || !MidnightControlsConfig.verticalFlyDrifting)) {
|
if (this.getAbilities().flying && (!MidnightControlsConfig.flyDrifting || !MidnightControlsConfig.verticalFlyDrifting)) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
package eu.midnightdust.midnightcontrols.client.mixin;
|
package eu.midnightdust.midnightcontrols.client.mixin;
|
||||||
|
|
||||||
|
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
|
||||||
import eu.midnightdust.midnightcontrols.client.gui.MidnightControlsSettingsScreen;
|
import eu.midnightdust.midnightcontrols.client.gui.MidnightControlsSettingsScreen;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
@@ -34,7 +35,7 @@ import static eu.midnightdust.midnightcontrols.MidnightControls.id;
|
|||||||
public abstract class GameOptionsScreenMixin extends Screen {
|
public abstract class GameOptionsScreenMixin extends Screen {
|
||||||
@Shadow @Nullable protected OptionListWidget body;
|
@Shadow @Nullable protected OptionListWidget body;
|
||||||
@Unique TextIconButtonWidget midnightcontrols$button = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.menu.title.controller"),
|
@Unique TextIconButtonWidget midnightcontrols$button = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.menu.title.controller"),
|
||||||
(button -> this.client.setScreen(new MidnightControlsSettingsScreen(this, false))), true)
|
(button -> this.client.setScreen(MidnightControlsConfig.getScreen(this, "midnightcontrols"))), true)
|
||||||
.dimension(20,20).texture(id("icon/controller"), 20, 20).build();
|
.dimension(20,20).texture(id("icon/controller"), 20, 20).build();
|
||||||
|
|
||||||
protected GameOptionsScreenMixin(Text title) {
|
protected GameOptionsScreenMixin(Text title) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"midnightcontrols.midnightconfig.title": "MidnightControls Advanced Config",
|
"midnightcontrols.midnightconfig.title": "MidnightControls Config",
|
||||||
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.DEFAULT_LIGHT": "Default Light",
|
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.DEFAULT_LIGHT": "Default Light",
|
||||||
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.DEFAULT_DARK": "Default Dark",
|
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.DEFAULT_DARK": "Default Dark",
|
||||||
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.SECOND_LIGHT": "Second Light",
|
"midnightcontrols.midnightconfig.enum.VirtualMouseSkin.SECOND_LIGHT": "Second Light",
|
||||||
@@ -237,6 +237,7 @@
|
|||||||
"midnightcontrols.virtual_mouse.skin.second_light": "Second Light",
|
"midnightcontrols.virtual_mouse.skin.second_light": "Second Light",
|
||||||
"midnightcontrols.virtual_mouse.skin.second_dark": "Second Dark",
|
"midnightcontrols.virtual_mouse.skin.second_dark": "Second Dark",
|
||||||
"midnightcontrols.midnightconfig.category.controller": "Controller",
|
"midnightcontrols.midnightconfig.category.controller": "Controller",
|
||||||
|
"midnightcontrols.midnightconfig.category.buttons": "Buttons",
|
||||||
"midnightcontrols.midnightconfig.category.misc": "Miscellaneous",
|
"midnightcontrols.midnightconfig.category.misc": "Miscellaneous",
|
||||||
"midnightcontrols.midnightconfig.category.screens": "Screens",
|
"midnightcontrols.midnightconfig.category.screens": "Screens",
|
||||||
"midnightcontrols.midnightconfig.category.gameplay": "Gameplay",
|
"midnightcontrols.midnightconfig.category.gameplay": "Gameplay",
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.6 KiB |
@@ -8,19 +8,19 @@ yarn_mappings=1.21.9+build.1
|
|||||||
enabled_platforms=fabric,neoforge
|
enabled_platforms=fabric,neoforge
|
||||||
|
|
||||||
archives_base_name=midnightcontrols
|
archives_base_name=midnightcontrols
|
||||||
mod_version=1.11.3-alpha.2
|
mod_version=1.11.3-beta.1
|
||||||
maven_group=eu.midnightdust
|
maven_group=eu.midnightdust
|
||||||
release_type=alpha
|
release_type=alpha
|
||||||
modrinth_id = bXX9h73M
|
modrinth_id = bXX9h73M
|
||||||
curseforge_id = 621768
|
curseforge_id = 621768
|
||||||
# Configure the IDs here after creating the projects on the websites
|
# Configure the IDs here after creating the projects on the websites
|
||||||
|
|
||||||
midnightlib_version=1.8.0+1.21.9-rc1
|
midnightlib_version=1.8.2+1.21.9
|
||||||
|
|
||||||
fabric_loader_version=0.17.2
|
fabric_loader_version=0.17.2
|
||||||
fabric_api_version=0.133.13+1.21.9
|
fabric_api_version=0.133.13+1.21.9
|
||||||
|
|
||||||
neoforge_version=21.6.0-beta
|
neoforge_version=21.9.3-beta
|
||||||
yarn_mappings_patch_neoforge_version = 1.21+build.4
|
yarn_mappings_patch_neoforge_version = 1.21+build.4
|
||||||
|
|
||||||
quilt_loader_version=0.19.0-beta.18
|
quilt_loader_version=0.19.0-beta.18
|
||||||
|
|||||||
Reference in New Issue
Block a user