mirror of
https://github.com/TeamMidnightDust/MidnightControls.git
synced 2025-12-14 07:35:10 +01:00
Merge branch '1.19.4' into 1.19.4-Atlas
This commit is contained in:
@@ -97,7 +97,9 @@ dependencies {
|
|||||||
// Fabric API. This is technically optional, but you probably want it anyway.
|
// Fabric API. This is technically optional, but you probably want it anyway.
|
||||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
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}"
|
include "dev.lambdaurora:spruceui:${project.spruceui_version}"
|
||||||
api('org.aperlambda:lambdajcommon:1.8.1') {
|
api('org.aperlambda:lambdajcommon:1.8.1') {
|
||||||
exclude group: 'com.google.code.gson'
|
exclude group: 'com.google.code.gson'
|
||||||
@@ -105,7 +107,9 @@ dependencies {
|
|||||||
}
|
}
|
||||||
include 'org.aperlambda:lambdajcommon:1.8.1'
|
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
|
// Compatibility mods
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ org.gradle.jvmargs=-Xmx1G
|
|||||||
|
|
||||||
# Fabric Properties
|
# Fabric Properties
|
||||||
# check these on https://fabricmc.net/use
|
# check these on https://fabricmc.net/use
|
||||||
minecraft_version=23w06a
|
minecraft_version=1.19.4-pre4
|
||||||
yarn_mappings=23w06a+build.14
|
yarn_mappings=1.19.4-pre4+build.1
|
||||||
loader_version=0.14.14
|
loader_version=0.14.17
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.7.4
|
mod_version = 1.7.4
|
||||||
@@ -15,10 +15,10 @@ modrinth_id=bXX9h73M
|
|||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
|
||||||
fabric_version=0.74.0+1.19.4
|
fabric_version=0.75.3+1.19.4
|
||||||
sodium_version=mc1.19.2-0.4.4
|
sodium_version=mc1.19.2-0.4.4
|
||||||
spruceui_version=4.2.0+23w06a
|
spruceui_version=4.2.0+23w06a
|
||||||
midnightlib_version=1.1.0-fabric
|
midnightlib_version=fabric-1.2.0
|
||||||
modmenu_version=5.0.1
|
modmenu_version=5.0.1
|
||||||
emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric
|
emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric
|
||||||
bendylib_version=2.0.+
|
bendylib_version=2.0.+
|
||||||
|
|||||||
BIN
localMaven/midnightlib-fabric-1.2.0.jar
Normal file
BIN
localMaven/midnightlib-fabric-1.2.0.jar
Normal file
Binary file not shown.
@@ -144,6 +144,11 @@ public class MidnightControlsClient extends MidnightControls implements ClientMo
|
|||||||
public void onMcInit(@NotNull MinecraftClient client) {
|
public void onMcInit(@NotNull MinecraftClient client) {
|
||||||
ButtonBinding.init(client.options);
|
ButtonBinding.init(client.options);
|
||||||
MidnightControlsConfig.load();
|
MidnightControlsConfig.load();
|
||||||
|
if (MidnightControlsConfig.configVersion < 2) {
|
||||||
|
MidnightControlsConfig.mouseScreens.remove("me.jellysquid.mods.sodium.client.gui");
|
||||||
|
MidnightControlsConfig.mouseScreens.remove("net.coderbot.iris.gui");
|
||||||
|
MidnightControlsConfig.write("midnightcontrols");
|
||||||
|
}
|
||||||
this.hud.setVisible(MidnightControlsConfig.hudEnable);
|
this.hud.setVisible(MidnightControlsConfig.hudEnable);
|
||||||
Controller.updateMappings();
|
Controller.updateMappings();
|
||||||
GLFW.glfwSetJoystickCallback((jid, event) -> {
|
GLFW.glfwSetJoystickCallback((jid, event) -> {
|
||||||
|
|||||||
@@ -33,58 +33,61 @@ import static org.lwjgl.glfw.GLFW.*;
|
|||||||
*/
|
*/
|
||||||
public class MidnightControlsConfig extends MidnightConfig {
|
public class MidnightControlsConfig extends MidnightConfig {
|
||||||
public static boolean isEditing = false;
|
public static boolean isEditing = false;
|
||||||
@Hidden @Entry public static int configVersion = 1;
|
@Hidden @Entry public static int configVersion = 2;
|
||||||
// General
|
// General
|
||||||
@Entry(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(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;
|
||||||
@Entry(name = "Debug") public static boolean debug = false;
|
@Entry(category = "misc", name = "Debug") public static boolean debug = false;
|
||||||
// HUD
|
// HUD
|
||||||
@Entry(name = "midnightcontrols.menu.hud_enable") public static boolean hudEnable = true;
|
@Entry(category = "visual", name = "midnightcontrols.menu.hud_enable") public static boolean hudEnable = true;
|
||||||
@Entry(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(name = "midnightcontrols.menu.move_chat") public static boolean moveChat = false;
|
@Entry(category = "screens", name = "midnightcontrols.menu.move_chat") public static boolean moveChat = false;
|
||||||
// Gameplay
|
// Gameplay
|
||||||
@Entry(name = "midnightcontrols.menu.analog_movement") public static boolean analogMovement = true;
|
@Entry(category = "gameplay", name = "midnightcontrols.menu.analog_movement") public static boolean analogMovement = true;
|
||||||
@Entry(name = "midnightcontrols.menu.double_tap_to_sprint") public static boolean doubleTapToSprint = true;
|
@Entry(category = "gameplay", 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(category = "gameplay", 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(category = "gameplay", 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(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(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") 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(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(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.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(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(name = "Reacharound Outline") public static boolean shouldRenderReacharoundOutline = true;
|
@Entry(category = "visual", name = "Reacharound Outline") public static boolean shouldRenderReacharoundOutline = true;
|
||||||
@Entry(name = "Reacharound Outline Color (WIP)", isColor = true) public static String reacharoundOutlineColorHex = "#ffffff";
|
@Entry(category = "visual", name = "Reacharound Outline Color", isColor = true) public static String reacharoundOutlineColorHex = "#ffffff";
|
||||||
@Entry(name = "Reacharound Outline Alpha", min = 0, max = 255) public static int reacharoundOutlineColorAlpha = 102;
|
@Entry(category = "visual", name = "Reacharound Outline Alpha", isSlider = true, min = 0, max = 255) public static int reacharoundOutlineColorAlpha = 102;
|
||||||
@Entry(name = "midnightcontrols.menu.right_dead_zone") public static double rightDeadZone = 0.25;
|
@Entry(category = "controller", name = "midnightcontrols.menu.right_dead_zone", isSlider = true, min = 0.05, max = 1) public static double rightDeadZone = 0.25;
|
||||||
@Entry(name = "midnightcontrols.menu.left_dead_zone") public static double leftDeadZone = 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(name = "midnightcontrols.menu.invert_right_y_axis") public static boolean invertRightYAxis = false;
|
@Entry(category = "controller", 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(category = "controller", 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(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(name = "midnightcontrols.menu.y_axis_rotation_speed") public static double yAxisRotationSpeed = rotationSpeed;
|
@Entry(category = "controller", name = "midnightcontrols.menu.y_axis_rotation_speed", isSlider = true, min = 0, max = 100, precision = 10) public static double yAxisRotationSpeed = rotationSpeed;
|
||||||
@Entry(name = "midnightcontrols.menu.mouse_speed") 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(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;
|
||||||
@Entry(name = "midnightcontrols.menu.unfocused_input") public static boolean unfocusedInput = false;
|
@Entry(category = "controller", name = "midnightcontrols.menu.unfocused_input") public static boolean unfocusedInput = false;
|
||||||
@Entry(name = "midnightcontrols.menu.virtual_mouse") public static boolean virtualMouse = false;
|
@Entry(category = "screens", 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(category = "screens", name = "midnightcontrols.menu.virtual_mouse.skin") public static VirtualMouseSkin virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT;
|
||||||
@Entry(name = "Controller ID") public static Object controllerID = 0;
|
@Entry(category = "controller", name = "Controller ID") @Hidden public static Object controllerID = 0;
|
||||||
@Entry(name = "2nd Controller ID") public static Object secondControllerID = -1;
|
@Entry(category = "controller", name = "2nd Controller ID") @Hidden public static Object secondControllerID = -1;
|
||||||
@Entry(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;
|
||||||
@Entry(name = "Mouse screens") public static List<String> mouseScreens = Lists.newArrayList("me.jellysquid.mods.sodium.client.gui",
|
@Entry(category = "screens", name = "Mouse screens") public static List<String> mouseScreens = Lists.newArrayList("net.minecraft.client.gui.screen.advancement", "net.minecraft.client.gui.screen.pack.PackScreen", "net.minecraft.class_5375",
|
||||||
"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",
|
"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",
|
"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");
|
"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(category = "screens", 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(category = "screens", 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 @Hidden public static Map<String, String> BINDING = new HashMap<>();
|
||||||
|
|
||||||
private static final Pattern BUTTON_BINDING_PATTERN = Pattern.compile("(-?\\d+)\\+?");
|
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};
|
@Deprecated @Hidden @Entry public static double[] maxAnalogValues = new double[]{1, 1, 1, 1};
|
||||||
@Entry(name = "Trigger button fix") public static boolean triggerFix = true;
|
@Entry(category = "controller", name = "Max analog value: Left X", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueLeftX = maxAnalogValues[0];
|
||||||
@Entry(name = "Enable Hints") public static boolean enableHints = true;
|
@Entry(category = "controller", name = "Max analog value: Left Y", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueLeftY = maxAnalogValues[1];
|
||||||
@Entry(name = "Enable Shortcut in Controls Options") public static boolean shortcutInControls = true;
|
@Entry(category = "controller", name = "Max analog value: Right X", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueRightX = maxAnalogValues[2];
|
||||||
@Entry(name = "Ring Bindings (WIP)") public static List<String> ringBindings = new ArrayList<>();
|
@Entry(category = "controller", name = "Max analog value: Right Y", isSlider = true, min = .25f, max = 1.f) public static double maxAnalogValueRightY = maxAnalogValues[3];
|
||||||
@Entry(name = "Ignored Unbound Keys") public static List<String> ignoredUnboundKeys = Lists.newArrayList("inventorytabs.key.next_tab");
|
@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<>();
|
@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;
|
||||||
@@ -198,14 +201,21 @@ public class MidnightControlsConfig extends MidnightConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static double getAxisMaxValue(int axis) {
|
public static double getAxisMaxValue(int axis) {
|
||||||
if (axis >= MidnightControlsConfig.maxAnalogValues.length)
|
return switch (axis) {
|
||||||
return 1;
|
case GLFW_GAMEPAD_AXIS_LEFT_X -> MidnightControlsConfig.maxAnalogValueLeftX;
|
||||||
return MidnightControlsConfig.maxAnalogValues[axis];
|
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) {
|
public static void setAxisMaxValue(int axis, double value) {
|
||||||
if (axis < MidnightControlsConfig.maxAnalogValues.length)
|
switch (axis) {
|
||||||
MidnightControlsConfig.maxAnalogValues[axis] = value;
|
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 +340,12 @@ public class MidnightControlsConfig extends MidnightConfig {
|
|||||||
controllerID = 0;
|
controllerID = 0;
|
||||||
secondControllerID = -1;
|
secondControllerID = -1;
|
||||||
controllerType = ControllerType.DEFAULT;
|
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.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");
|
||||||
BINDING = new HashMap<>();
|
BINDING = new HashMap<>();
|
||||||
maxAnalogValues = new double[]{1, 1, 1, 1};
|
maxAnalogValueLeftX = 1;
|
||||||
|
maxAnalogValueLeftY = 1;
|
||||||
|
maxAnalogValueRightX = 1;
|
||||||
|
maxAnalogValueRightY = 1;
|
||||||
triggerFix = true;
|
triggerFix = true;
|
||||||
enableHints = true;
|
enableHints = true;
|
||||||
shortcutInControls = true;
|
shortcutInControls = true;
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ public class MidnightInput {
|
|||||||
private static final Map<Integer, Integer> BUTTON_COOLDOWNS = new HashMap<>();
|
private static final Map<Integer, Integer> BUTTON_COOLDOWNS = new HashMap<>();
|
||||||
// Cooldowns
|
// Cooldowns
|
||||||
public int actionGuiCooldown = 0;
|
public int actionGuiCooldown = 0;
|
||||||
|
public int joystickCooldown = 0;
|
||||||
public boolean ignoreNextARelease = false;
|
public boolean ignoreNextARelease = false;
|
||||||
public boolean ignoreNextXRelease = false;
|
public boolean ignoreNextXRelease = false;
|
||||||
private double targetYaw = 0.0;
|
private double targetYaw = 0.0;
|
||||||
@@ -126,6 +127,8 @@ public class MidnightInput {
|
|||||||
--this.actionGuiCooldown;
|
--this.actionGuiCooldown;
|
||||||
if (this.screenCloseCooldown > 0)
|
if (this.screenCloseCooldown > 0)
|
||||||
--this.screenCloseCooldown;
|
--this.screenCloseCooldown;
|
||||||
|
if (this.joystickCooldown > 0)
|
||||||
|
--this.joystickCooldown;
|
||||||
|
|
||||||
InputManager.updateStates();
|
InputManager.updateStates();
|
||||||
|
|
||||||
@@ -328,10 +331,10 @@ public class MidnightInput {
|
|||||||
|| button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_LEFT || button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_RIGHT)) {
|
|| button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_LEFT || button == GLFW.GLFW_GAMEPAD_BUTTON_DPAD_RIGHT)) {
|
||||||
if (this.actionGuiCooldown == 0) {
|
if (this.actionGuiCooldown == 0) {
|
||||||
switch (button) {
|
switch (button) {
|
||||||
case GLFW_GAMEPAD_BUTTON_DPAD_UP -> pressKeyboardKey(client, GLFW.GLFW_KEY_UP);
|
case GLFW_GAMEPAD_BUTTON_DPAD_UP -> this.changeFocus(client.currentScreen, NavigationDirection.UP);
|
||||||
case GLFW_GAMEPAD_BUTTON_DPAD_DOWN -> pressKeyboardKey(client, GLFW.GLFW_KEY_DOWN);
|
case GLFW_GAMEPAD_BUTTON_DPAD_DOWN -> this.changeFocus(client.currentScreen, NavigationDirection.DOWN);
|
||||||
case GLFW_GAMEPAD_BUTTON_DPAD_LEFT -> pressKeyboardKey(client, GLFW.GLFW_KEY_LEFT);
|
case GLFW_GAMEPAD_BUTTON_DPAD_LEFT -> this.handleLeftRight(client.currentScreen, false);
|
||||||
case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT -> pressKeyboardKey(client, GLFW.GLFW_KEY_RIGHT);
|
case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT -> this.handleLeftRight(client.currentScreen, true);
|
||||||
}
|
}
|
||||||
if (MidnightControlsConfig.wasdScreens.contains(client.currentScreen.getClass().getCanonicalName())) {
|
if (MidnightControlsConfig.wasdScreens.contains(client.currentScreen.getClass().getCanonicalName())) {
|
||||||
switch (button) {
|
switch (button) {
|
||||||
@@ -341,11 +344,6 @@ public class MidnightInput {
|
|||||||
case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT -> pressKeyboardKey(client, GLFW.GLFW_KEY_D);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
@@ -572,9 +570,8 @@ public class MidnightInput {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (client.currentScreen != null) {
|
} else if (client.currentScreen != null) {
|
||||||
if (axis == GLFW_GAMEPAD_AXIS_RIGHT_Y && absValue >= deadZone) {
|
|
||||||
float finalValue = value;
|
float finalValue = value;
|
||||||
if (client.currentScreen.children().stream().filter(element -> element instanceof SpruceEntryListWidget)
|
if (axis == GLFW_GAMEPAD_AXIS_RIGHT_Y && absValue >= deadZone && client.currentScreen.children().stream().filter(element -> element instanceof SpruceEntryListWidget)
|
||||||
.map(element -> (SpruceEntryListWidget<?>) element)
|
.map(element -> (SpruceEntryListWidget<?>) element)
|
||||||
.filter(AbstractSpruceWidget::isFocusedOrHovered)
|
.filter(AbstractSpruceWidget::isFocusedOrHovered)
|
||||||
.noneMatch(element -> {
|
.noneMatch(element -> {
|
||||||
@@ -592,7 +589,20 @@ public class MidnightInput {
|
|||||||
{
|
{
|
||||||
client.currentScreen.mouseScrolled(0.0, 0.0, -(value * 1.5f));
|
client.currentScreen.mouseScrolled(0.0, 0.0, -(value * 1.5f));
|
||||||
}
|
}
|
||||||
|
else if (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;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -696,6 +706,7 @@ public class MidnightInput {
|
|||||||
} else if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib") && YACLCompat.handleAButton(screen, focused)) {
|
} else if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib") && YACLCompat.handleAButton(screen, focused)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else pressKeyboardKey(screen, GLFW_KEY_ENTER);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,9 +740,11 @@ public class MidnightInput {
|
|||||||
return !spruceElement.onNavigation(right ? NavigationDirection.RIGHT : NavigationDirection.LEFT, false);
|
return !spruceElement.onNavigation(right ? NavigationDirection.RIGHT : NavigationDirection.LEFT, false);
|
||||||
}
|
}
|
||||||
if (element instanceof SliderWidget slider) {
|
if (element instanceof SliderWidget slider) {
|
||||||
|
if (slider.active) {
|
||||||
slider.keyPressed(right ? 262 : 263, 0, 0);
|
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.
|
this.actionGuiCooldown = 2; // Prevent to press too quickly the focused element, so we have to skip 5 ticks.
|
||||||
return false;
|
return true;
|
||||||
|
}
|
||||||
} else if (element instanceof AlwaysSelectedEntryListWidget) {
|
} else if (element instanceof AlwaysSelectedEntryListWidget) {
|
||||||
//TODO((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;
|
return false;
|
||||||
@@ -782,9 +795,6 @@ public class MidnightInput {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (FabricLoader.getInstance().isModLoaded("sodium"))
|
|
||||||
SodiumCompat.handleInput(screen, direction.isLookingForward());
|
|
||||||
else {
|
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case UP -> pressKeyboardKey(screen, GLFW.GLFW_KEY_UP);
|
case UP -> pressKeyboardKey(screen, GLFW.GLFW_KEY_UP);
|
||||||
case DOWN -> pressKeyboardKey(screen, GLFW.GLFW_KEY_DOWN);
|
case DOWN -> pressKeyboardKey(screen, GLFW.GLFW_KEY_DOWN);
|
||||||
@@ -793,7 +803,6 @@ public class MidnightInput {
|
|||||||
}
|
}
|
||||||
this.actionGuiCooldown = 5;
|
this.actionGuiCooldown = 5;
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
} catch (Exception exception) {MidnightControls.get().warn("Unknown exception encountered while trying to change focus: "+exception);}
|
} catch (Exception exception) {MidnightControls.get().warn("Unknown exception encountered while trying to change focus: "+exception);}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class MidnightControlsMixinPlugin implements IMixinConfigPlugin {
|
|||||||
private final HashMap<String, Boolean> conditionalMixins = new HashMap<>();
|
private final HashMap<String, Boolean> conditionalMixins = new HashMap<>();
|
||||||
|
|
||||||
public MidnightControlsMixinPlugin() {
|
public MidnightControlsMixinPlugin() {
|
||||||
this.putConditionalMixin("SodiumOptionsGUIAccessor", FabricLoader.getInstance().isModLoaded("sodium"));
|
//this.putConditionalMixin("SodiumOptionsGUIAccessor", FabricLoader.getInstance().isModLoaded("sodium"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void putConditionalMixin(@NotNull String path, boolean condition) {
|
private void putConditionalMixin(@NotNull String path, boolean condition) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
package eu.midnightdust.midnightcontrols.client.controller;
|
package eu.midnightdust.midnightcontrols.client.controller;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import eu.midnightdust.midnightcontrols.client.ButtonState;
|
import eu.midnightdust.midnightcontrols.client.ButtonState;
|
||||||
import eu.midnightdust.midnightcontrols.client.MidnightControlsClient;
|
import eu.midnightdust.midnightcontrols.client.MidnightControlsClient;
|
||||||
import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig;
|
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.AdvancementsScreenAccessor;
|
||||||
import eu.midnightdust.midnightcontrols.client.mixin.CreativeInventoryScreenAccessor;
|
import eu.midnightdust.midnightcontrols.client.mixin.CreativeInventoryScreenAccessor;
|
||||||
import eu.midnightdust.midnightcontrols.client.mixin.RecipeBookWidgetAccessor;
|
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.HandledScreenAccessor;
|
||||||
import eu.midnightdust.midnightcontrols.client.util.MouseAccessor;
|
import eu.midnightdust.midnightcontrols.client.util.MouseAccessor;
|
||||||
import net.fabricmc.fabric.impl.client.itemgroup.CreativeGuiExtensions;
|
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.advancement.AdvancementsScreen;
|
||||||
import net.minecraft.client.gui.screen.ingame.*;
|
import net.minecraft.client.gui.screen.ingame.*;
|
||||||
import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget;
|
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.PressableWidget;
|
||||||
|
import net.minecraft.client.gui.widget.TabNavigationWidget;
|
||||||
import net.minecraft.client.util.ScreenshotRecorder;
|
import net.minecraft.client.util.ScreenshotRecorder;
|
||||||
import net.minecraft.item.ItemGroup;
|
import net.minecraft.item.ItemGroup;
|
||||||
import net.minecraft.item.ItemGroups;
|
import net.minecraft.item.ItemGroups;
|
||||||
@@ -161,6 +165,18 @@ public class InputHandlers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
} else if (client.currentScreen != null && client.currentScreen.children().stream().anyMatch(e -> e instanceof TabNavigationWidget)) {
|
||||||
|
Lists.newCopyOnWriteArrayList(client.currentScreen.children()).stream().anyMatch(e -> {
|
||||||
|
if (e instanceof TabNavigationWidget tabs) {
|
||||||
|
TabNavigationWidgetAccessor accessor = (TabNavigationWidgetAccessor) tabs;
|
||||||
|
if (next ? accessor.getCurrentTabIndex()+1 < accessor.getTabs().size() : accessor.getCurrentTabIndex() > 0) {
|
||||||
|
if (next) tabs.selectTab(accessor.getCurrentTabIndex() + 1, true);
|
||||||
|
else tabs.selectTab(accessor.getCurrentTabIndex() - 1, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
if (FabricLoader.getInstance().isModLoaded("sodium"))
|
if (FabricLoader.getInstance().isModLoaded("sodium"))
|
||||||
SodiumCompat.handleTabs(client.currentScreen, next);
|
SodiumCompat.handleTabs(client.currentScreen, next);
|
||||||
@@ -174,31 +190,20 @@ public class InputHandlers {
|
|||||||
public static PressAction handlePage(boolean next) {
|
public static PressAction handlePage(boolean next) {
|
||||||
return (client, button, value, action) -> {
|
return (client, button, value, action) -> {
|
||||||
if (client.currentScreen instanceof CreativeInventoryScreen) {
|
if (client.currentScreen instanceof CreativeInventoryScreen) {
|
||||||
var screen = (HandledScreenAccessor) client.currentScreen;
|
|
||||||
try {
|
try {
|
||||||
if (next) {
|
|
||||||
return client.currentScreen.children().stream().filter(element -> element instanceof PressableWidget)
|
return client.currentScreen.children().stream().filter(element -> element instanceof PressableWidget)
|
||||||
.map(element -> (PressableWidget) element)
|
.map(element -> (PressableWidget) element)
|
||||||
.filter(element -> element.getMessage() != null && element.getMessage().getContent() != null)
|
.filter(element -> element.getMessage() != null && element.getMessage().getContent() != null)
|
||||||
.anyMatch(element -> {
|
.anyMatch(element -> {
|
||||||
if (element.getMessage().getString().equals(">")) {
|
if (next && element.getMessage().getString().equals(">")) {
|
||||||
|
element.onPress();
|
||||||
|
return true;
|
||||||
|
} else if (element.getMessage().getString().equals("<")) {
|
||||||
element.onPress();
|
element.onPress();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
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;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {}
|
||||||
}
|
}
|
||||||
if (MidnightControlsCompat.isInventoryTabsPresent()) InventoryTabsCompat.handleInventoryPage(client.currentScreen, next);
|
if (MidnightControlsCompat.isInventoryTabsPresent()) InventoryTabsCompat.handleInventoryPage(client.currentScreen, next);
|
||||||
@@ -246,24 +251,22 @@ public class InputHandlers {
|
|||||||
|
|
||||||
MidnightControlsClient.get().input.inventoryInteractionCooldown = 5;
|
MidnightControlsClient.get().input.inventoryInteractionCooldown = 5;
|
||||||
switch (button.getName()) {
|
switch (button.getName()) {
|
||||||
case "take_all": {
|
case "take_all" -> {
|
||||||
if (screen instanceof CreativeInventoryScreen) {
|
if (screen instanceof CreativeInventoryScreen) {
|
||||||
if (slot != null && (((CreativeInventoryScreenAccessor) accessor).midnightcontrols$isCreativeInventorySlot(slot) || MidnightControlsCompat.streamCompatHandlers().anyMatch(handler -> handler.isCreativeSlot(screen, slot))))
|
if (slot != null && (((CreativeInventoryScreenAccessor) accessor).midnightcontrols$isCreativeInventorySlot(slot) || MidnightControlsCompat.streamCompatHandlers().anyMatch(handler -> handler.isCreativeSlot(screen, slot))))
|
||||||
actionType = SlotActionType.CLONE;
|
actionType = SlotActionType.CLONE;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case "take": {
|
case "take" -> {
|
||||||
clickData = GLFW_MOUSE_BUTTON_2;
|
clickData = GLFW_MOUSE_BUTTON_2;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
case "quick_move": {
|
case "quick_move" -> {
|
||||||
actionType = SlotActionType.QUICK_MOVE;
|
actionType = SlotActionType.QUICK_MOVE;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
default:
|
default -> {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
accessor.midnightcontrols$onMouseClick(slot, slotId, clickData, actionType);
|
accessor.midnightcontrols$onMouseClick(slot, slotId, clickData, actionType);
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -428,16 +428,16 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class MidnightControlsBackground implements Background {
|
public static class MidnightControlsBackground implements Background {
|
||||||
private int transparency = 160;
|
private static int transparency = 160;
|
||||||
public MidnightControlsBackground() {}
|
public MidnightControlsBackground() {}
|
||||||
public MidnightControlsBackground(int transparency) {
|
public MidnightControlsBackground(int transparency) {
|
||||||
this.transparency = transparency;
|
MidnightControlsBackground.transparency = transparency;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void render(MatrixStack matrixStack, SpruceWidget widget, int vOffset, int mouseX, int mouseY, float delta) {
|
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"));
|
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();
|
matrixStack.push();
|
||||||
|
|
||||||
Matrix4f matrix = matrixStack.peek().getPositionMatrix();
|
Matrix4f matrix = matrixStack.peek().getPositionMatrix();
|
||||||
@@ -447,7 +447,6 @@ public class MidnightControlsSettingsScreen extends SpruceScreen {
|
|||||||
float t = (float)(transparency) / 255.0F;
|
float t = (float)(transparency) / 255.0F;
|
||||||
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
BufferBuilder bufferBuilder = Tessellator.getInstance().getBuffer();
|
||||||
RenderSystem.enableBlend();
|
RenderSystem.enableBlend();
|
||||||
//RenderSystem.enableColorLogicOp();//.disableTexture();
|
|
||||||
RenderSystem.defaultBlendFunc();
|
RenderSystem.defaultBlendFunc();
|
||||||
RenderSystem.setShader(GameRenderer::getPositionColorProgram);
|
RenderSystem.setShader(GameRenderer::getPositionColorProgram);
|
||||||
bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
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)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();
|
bufferBuilder.vertex(matrix, (float)x1, (float)y1, 0.0F).color(r, g, b, t).next();
|
||||||
BufferRenderer.drawWithGlobalProgram(bufferBuilder.end());
|
BufferRenderer.drawWithGlobalProgram(bufferBuilder.end());
|
||||||
//RenderSystem.enableColorLogicOp();//enableTexture
|
|
||||||
RenderSystem.disableBlend();
|
RenderSystem.disableBlend();
|
||||||
matrixStack.pop();
|
matrixStack.pop();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
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;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||||
|
|
||||||
|
@Mixin(TabNavigationWidget.class)
|
||||||
|
public interface TabNavigationWidgetAccessor {
|
||||||
|
@Accessor
|
||||||
|
TabManager getTabManager();
|
||||||
|
@Accessor
|
||||||
|
ImmutableList<Tab> getTabs();
|
||||||
|
@Invoker("getCurrentTabIndex")
|
||||||
|
int getCurrentTabIndex();
|
||||||
|
}
|
||||||
@@ -203,5 +203,10 @@
|
|||||||
"midnightcontrols.virtual_mouse.skin.default_dark": "Default Dark",
|
"midnightcontrols.virtual_mouse.skin.default_dark": "Default Dark",
|
||||||
"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.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."
|
"modmenu.descriptionTranslation.midnightcontrols": "Adds controller support and enhanced controls overall.\nForked from LambdaControls, which sadly got discontinued."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,8 @@
|
|||||||
"WorldRendererMixin",
|
"WorldRendererMixin",
|
||||||
"KeyBindingRegistryImplAccessor",
|
"KeyBindingRegistryImplAccessor",
|
||||||
"KeyBindingIDAccessor",
|
"KeyBindingIDAccessor",
|
||||||
"ScreenAccessor"
|
"ScreenAccessor",
|
||||||
|
"TabNavigationWidgetAccessor"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
|||||||
Reference in New Issue
Block a user