mirror of
https://github.com/TeamMidnightDust/MidnightControls.git
synced 2025-12-13 23:25:10 +01:00
Add mouse4 as back in GUIs.
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
package me.lambdaurora.lambdacontrols.client;
|
package me.lambdaurora.lambdacontrols.client;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
import me.lambdaurora.lambdacontrols.client.compat.LambdaControlsCompat;
|
import me.lambdaurora.lambdacontrols.client.compat.LambdaControlsCompat;
|
||||||
import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding;
|
import me.lambdaurora.lambdacontrols.client.controller.ButtonBinding;
|
||||||
import me.lambdaurora.lambdacontrols.client.controller.Controller;
|
import me.lambdaurora.lambdacontrols.client.controller.Controller;
|
||||||
@@ -39,6 +40,7 @@ import net.minecraft.client.gui.widget.SliderWidget;
|
|||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.screen.slot.Slot;
|
import net.minecraft.screen.slot.Slot;
|
||||||
import net.minecraft.screen.slot.SlotActionType;
|
import net.minecraft.screen.slot.SlotActionType;
|
||||||
|
import net.minecraft.text.TranslatableText;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import org.aperlambda.lambdacommon.utils.Pair;
|
import org.aperlambda.lambdacommon.utils.Pair;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -315,7 +317,8 @@ public class LambdaInput
|
|||||||
if (button == GLFW.GLFW_GAMEPAD_BUTTON_B) {
|
if (button == GLFW.GLFW_GAMEPAD_BUTTON_B) {
|
||||||
if (client.currentScreen != null) {
|
if (client.currentScreen != null) {
|
||||||
if (!LambdaControlsCompat.handleMenuBack(client, client.currentScreen))
|
if (!LambdaControlsCompat.handleMenuBack(client, client.currentScreen))
|
||||||
client.currentScreen.onClose();
|
if (!this.tryGoBack(client.currentScreen))
|
||||||
|
client.currentScreen.onClose();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -397,6 +400,27 @@ public class LambdaInput
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tries to go back.
|
||||||
|
*
|
||||||
|
* @param screen The current screen.
|
||||||
|
* @return True if successful, else false.
|
||||||
|
*/
|
||||||
|
public boolean tryGoBack(@NotNull Screen screen)
|
||||||
|
{
|
||||||
|
ImmutableSet<String> set = ImmutableSet.of("gui.back", "gui.done", "gui.cancel", "gui.toTitle", "gui.toMenu");
|
||||||
|
return screen.children().stream().filter(element -> element instanceof AbstractPressableButtonWidget)
|
||||||
|
.map(element -> (AbstractPressableButtonWidget) element)
|
||||||
|
.filter(element -> element.getMessage() instanceof TranslatableText)
|
||||||
|
.anyMatch(element -> {
|
||||||
|
if (set.stream().anyMatch(key -> key.equals(((TranslatableText) element.getMessage()).getKey()))) {
|
||||||
|
element.onPress();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void handleAxe(@NotNull MinecraftClient client, int axis, float value, float absValue, int state)
|
private void handleAxe(@NotNull MinecraftClient client, int axis, float value, float absValue, int state)
|
||||||
{
|
{
|
||||||
int asButtonState = value > 0.5F ? 1 : (value < -0.5F ? 2 : 0);
|
int asButtonState = value > 0.5F ? 1 : (value < -0.5F ? 2 : 0);
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import me.lambdaurora.lambdacontrols.client.LambdaControlsConfig;
|
|||||||
import me.lambdaurora.lambdacontrols.client.util.MouseAccessor;
|
import me.lambdaurora.lambdacontrols.client.util.MouseAccessor;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.Mouse;
|
import net.minecraft.client.Mouse;
|
||||||
|
import org.lwjgl.glfw.GLFW;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
@@ -37,10 +38,20 @@ public abstract class MouseMixin implements MouseAccessor
|
|||||||
@Invoker("onCursorPos")
|
@Invoker("onCursorPos")
|
||||||
public abstract void lambdacontrols_onCursorPos(long window, double x, double y);
|
public abstract void lambdacontrols_onCursorPos(long window, double x, double y);
|
||||||
|
|
||||||
|
@Inject(method = "method_1605", at = @At(value = "INVOKE", shift = At.Shift.AFTER, target = "Lnet/minecraft/client/gui/screen/Screen;mouseReleased(DDI)Z"))
|
||||||
|
private void onMouseBackButton(boolean[] result, double mouseX, double mouseY, int button, CallbackInfo ci)
|
||||||
|
{
|
||||||
|
if (!result[0] && button == GLFW.GLFW_MOUSE_BUTTON_4 && this.client.currentScreen != null) {
|
||||||
|
if (LambdaControlsClient.get().input.tryGoBack(this.client.currentScreen)) {
|
||||||
|
result[0] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Inject(method = "isCursorLocked", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "isCursorLocked", at = @At("HEAD"), cancellable = true)
|
||||||
private void isCursorLocked(CallbackInfoReturnable<Boolean> ci)
|
private void isCursorLocked(CallbackInfoReturnable<Boolean> ci)
|
||||||
{
|
{
|
||||||
if (client.currentScreen == null) {
|
if (this.client.currentScreen == null) {
|
||||||
LambdaControlsConfig config = LambdaControlsClient.get().config;
|
LambdaControlsConfig config = LambdaControlsClient.get().config;
|
||||||
if (config.getControlsMode() == ControlsMode.CONTROLLER && config.hasVirtualMouse()) {
|
if (config.getControlsMode() == ControlsMode.CONTROLLER && config.hasVirtualMouse()) {
|
||||||
ci.setReturnValue(true);
|
ci.setReturnValue(true);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G
|
|||||||
loader_version=0.8.8+build.202
|
loader_version=0.8.8+build.202
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.3.2
|
mod_version = 1.4.0
|
||||||
maven_group = me.lambdaurora.lambdacontrols
|
maven_group = me.lambdaurora.lambdacontrols
|
||||||
archives_base_name = lambdacontrols
|
archives_base_name = lambdacontrols
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user