From 80631168205599b23a19313e2cce4b7dfeff98d0 Mon Sep 17 00:00:00 2001 From: LambdAurora Date: Thu, 13 Feb 2020 00:28:58 +0100 Subject: [PATCH] :sparkles: Some refactor and add missing behaviors in some GUIs. --- fabric/build.gradle | 2 +- .../client/LambdaControlsModMenu.java | 7 ++-- .../lambdacontrols/client/LambdaInput.java | 31 +++++++++++++--- .../client/controller/InputHandlers.java | 14 ++++---- .../client/gui/ControllerControlsScreen.java | 2 +- .../gui/LambdaControlsSettingsScreen.java | 2 +- .../client/gui/TouchscreenOverlay.java | 2 +- .../mixin/AbstractButtonWidgetAccessor.java | 2 +- .../mixin/AdvancementsScreenAccessor.java | 6 ++-- .../mixin/ClientPlayNetworkHandlerMixin.java | 4 +-- .../client/mixin/ClientPlayerEntityMixin.java | 4 +-- .../client/mixin/ContainerScreenMixin.java | 20 ++++------- .../mixin/ControlsOptionsScreenMixin.java | 6 ++-- .../CreativeInventoryScreenAccessor.java | 10 +++++- .../client/mixin/GameOptionsMixin.java | 36 +++++++++++++++++++ .../client/mixin/KeyBindingMixin.java | 3 -- .../client/mixin/MinecraftClientMixin.java | 8 ++--- .../client/mixin/MouseMixin.java | 16 +++------ .../client/mixin/SettingsScreenMixin.java | 2 +- .../client/util/ContainerScreenAccessor.java | 4 +-- fabric/src/main/resources/fabric.mod.json | 7 ++-- .../main/resources/lambdacontrols.mixins.json | 1 + gradle.properties | 4 +-- 23 files changed, 123 insertions(+), 70 deletions(-) create mode 100644 fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/GameOptionsMixin.java diff --git a/fabric/build.gradle b/fabric/build.gradle index f66b5aa..b3349d9 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -42,7 +42,7 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modApi "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - modCompile "io.github.prospector:modmenu:1.8.5+build.23" + modCompile "io.github.prospector:modmenu:${project.modmenu_version}" modCompile "com.github.lambdaurora:spruceui:${project.spruceui_version}" include "com.github.lambdaurora:spruceui:${project.spruceui_version}" diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsModMenu.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsModMenu.java index 5ff0a76..d76404f 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsModMenu.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaControlsModMenu.java @@ -9,6 +9,7 @@ package me.lambdaurora.lambdacontrols.client; +import io.github.prospector.modmenu.api.ConfigScreenFactory; import io.github.prospector.modmenu.api.ModMenuApi; import me.lambdaurora.lambdacontrols.LambdaControlsConstants; import me.lambdaurora.lambdacontrols.client.gui.LambdaControlsSettingsScreen; @@ -21,7 +22,7 @@ import java.util.function.Function; * Represents the API implementation of ModMenu for LambdaControls. * * @author LambdAurora - * @version 1.1.0 + * @version 1.1.1 * @since 1.1.0 */ public class LambdaControlsModMenu implements ModMenuApi @@ -33,8 +34,8 @@ public class LambdaControlsModMenu implements ModMenuApi } @Override - public Function getConfigScreenFactory() + public ConfigScreenFactory getModConfigScreenFactory() { - return screen -> new LambdaControlsSettingsScreen(screen, MinecraftClient.getInstance().options, false); + return parent -> new LambdaControlsSettingsScreen(parent, false); } } diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaInput.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaInput.java index adf9a96..4405aa0 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaInput.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/LambdaInput.java @@ -14,6 +14,7 @@ import me.lambdaurora.lambdacontrols.client.controller.Controller; import me.lambdaurora.lambdacontrols.client.controller.InputManager; import me.lambdaurora.lambdacontrols.client.gui.ControllerControlsScreen; import me.lambdaurora.lambdacontrols.client.gui.TouchscreenOverlay; +import me.lambdaurora.lambdacontrols.client.mixin.AdvancementsScreenAccessor; import me.lambdaurora.lambdacontrols.client.mixin.CreativeInventoryScreenAccessor; import me.lambdaurora.lambdacontrols.client.mixin.EntryListWidgetAccessor; import me.lambdaurora.lambdacontrols.client.util.ContainerScreenAccessor; @@ -22,6 +23,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.ParentElement; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.advancement.AdvancementTab; import net.minecraft.client.gui.screen.advancement.AdvancementsScreen; import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; @@ -55,7 +57,7 @@ import static org.lwjgl.glfw.GLFW.*; * Represents the LambdaControls' input handler. * * @author LambdAurora - * @version 1.1.0 + * @version 1.1.1 * @since 1.0.0 */ public class LambdaInput @@ -311,6 +313,7 @@ public class LambdaInput slotAction = SlotActionType.CLONE; } client.interactionManager.clickSlot(((ContainerScreen) client.currentScreen).getContainer().syncId, slot.id, GLFW.GLFW_MOUSE_BUTTON_1, slotAction, client.player); + client.player.playerContainer.sendContentUpdates(); this.actionGuiCooldown = 5; return; } else if (button == GLFW.GLFW_GAMEPAD_BUTTON_B) { @@ -381,6 +384,8 @@ public class LambdaInput } } + double deadZone = this.config.getDeadZone(); + if (client.currentScreen instanceof ControllerControlsScreen) { ControllerControlsScreen screen = (ControllerControlsScreen) client.currentScreen; if (screen.focusedBinding != null) { @@ -397,9 +402,27 @@ public class LambdaInput } return; } + } else if (client.currentScreen instanceof CreativeInventoryScreen) { + if (axis == GLFW_GAMEPAD_AXIS_RIGHT_Y) { + CreativeInventoryScreen screen = (CreativeInventoryScreen) client.currentScreen; + CreativeInventoryScreenAccessor accessor = (CreativeInventoryScreenAccessor) screen; + if (accessor.lambdacontrols_hasScrollbar() && absValue >= deadZone) { + screen.mouseScrolled(0.0, 0.0, -value); + } + return; + } + } else if (client.currentScreen instanceof AdvancementsScreen) { + if (axis == GLFW_GAMEPAD_AXIS_RIGHT_X || axis == GLFW_GAMEPAD_AXIS_RIGHT_Y) { + AdvancementsScreen screen = (AdvancementsScreen) client.currentScreen; + AdvancementsScreenAccessor accessor = (AdvancementsScreenAccessor) screen; + if (absValue >= deadZone) { + AdvancementTab tab = accessor.getSelectedTab(); + tab.move(axis == GLFW_GAMEPAD_AXIS_RIGHT_X ? -value * 5.0 : 0.0, axis == GLFW_GAMEPAD_AXIS_RIGHT_Y ? -value * 5.0 : 0.0); + } + return; + } } - double deadZone = this.config.getDeadZone(); if (client.currentScreen == null) { // Handles the look direction. this.handleLook(client, axis, (float) (absValue / (1.0 - this.config.getDeadZone())), state); @@ -590,8 +613,8 @@ public class LambdaInput if (screen instanceof ContainerScreen) { ContainerScreen inventoryScreen = (ContainerScreen) screen; ContainerScreenAccessor accessor = (ContainerScreenAccessor) inventoryScreen; - int guiLeft = accessor.lambdacontrols_getX(); - int guiTop = accessor.lambdacontrols_getY(); + int guiLeft = accessor.getX(); + int guiTop = accessor.getY(); int mouseX = (int) (targetMouseX * (double) client.getWindow().getScaledWidth() / (double) client.getWindow().getWidth()); int mouseY = (int) (targetMouseY * (double) client.getWindow().getScaledHeight() / (double) client.getWindow().getHeight()); diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputHandlers.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputHandlers.java index c73dd3f..be7ac89 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputHandlers.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/controller/InputHandlers.java @@ -35,7 +35,7 @@ import java.util.stream.Collectors; * Represents some input handlers. * * @author LambdAurora - * @version 1.1.0 + * @version 1.1.1 * @since 1.1.0 */ public class InputHandlers @@ -59,7 +59,7 @@ public class InputHandlers return true; } else if (client.currentScreen instanceof CreativeInventoryScreen) { CreativeInventoryScreenAccessor inventory = (CreativeInventoryScreenAccessor) client.currentScreen; - int currentSelectedTab = inventory.lambdacontrols_getSelectedTab(); + int currentSelectedTab = inventory.getSelectedTab(); int nextTab = currentSelectedTab + (right ? 1 : -1); if (nextTab < 0) nextTab = ItemGroup.GROUPS.length - 1; @@ -69,8 +69,8 @@ public class InputHandlers return true; } else if (client.currentScreen instanceof AdvancementsScreen) { AdvancementsScreenAccessor screen = (AdvancementsScreenAccessor) client.currentScreen; - List tabs = screen.lambdacontrols_getTabs().values().stream().distinct().collect(Collectors.toList()); - AdvancementTab tab = screen.lambdacontrols_getSelectedTab(); + List tabs = screen.getTabs().values().stream().distinct().collect(Collectors.toList()); + AdvancementTab tab = screen.getSelectedTab(); for (int i = 0; i < tabs.size(); i++) { if (tabs.get(i).equals(tab)) { int nextTab = i + (right ? 1 : -1); @@ -78,7 +78,7 @@ public class InputHandlers nextTab = tabs.size() - 1; else if (nextTab >= tabs.size()) nextTab = 0; - screen.lambdacontrols_getAdvancementManager().selectTab(tabs.get(nextTab).getRoot(), true); + screen.getAdvancementManager().selectTab(tabs.get(nextTab).getRoot(), true); break; } } @@ -134,8 +134,8 @@ public class InputHandlers ContainerScreen inventory = (ContainerScreen) client.currentScreen; ContainerScreenAccessor accessor = (ContainerScreenAccessor) inventory; - int guiLeft = accessor.lambdacontrols_getX(); - int guiTop = accessor.lambdacontrols_getY(); + int guiLeft = accessor.getX(); + int guiTop = accessor.getY(); double mouseX = client.mouse.getX() * (double) client.getWindow().getScaledWidth() / (double) client.getWindow().getWidth(); double mouseY = client.mouse.getY() * (double) client.getWindow().getScaledHeight() / (double) client.getWindow().getHeight(); diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControllerControlsScreen.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControllerControlsScreen.java index b3a3d2d..7eca949 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControllerControlsScreen.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/ControllerControlsScreen.java @@ -60,7 +60,7 @@ public class ControllerControlsScreen extends Screen btn -> this.minecraft.openScreen(new ControlsOptionsScreen(this, this.minecraft.options)))); if (!this.hideSettings) this.addButton(new SpruceButtonWidget(this.width / 2 - 155 + 160, 18, 150, 20, I18n.translate("menu.options"), - btn -> this.minecraft.openScreen(new LambdaControlsSettingsScreen(this, this.minecraft.options, true)))); + btn -> this.minecraft.openScreen(new LambdaControlsSettingsScreen(this, true)))); this.bindingsListWidget = new ControlsListWidget(this, this.minecraft); this.children.add(this.bindingsListWidget); this.resetButton = this.addButton(new ButtonWidget(this.width / 2 - 155, this.height - 29, 150, 20, I18n.translate("controls.resetAll"), diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsSettingsScreen.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsSettingsScreen.java index 5c60d4a..5b292f2 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsSettingsScreen.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/LambdaControlsSettingsScreen.java @@ -65,7 +65,7 @@ public class LambdaControlsSettingsScreen extends Screen private ButtonListWidget list; private SpruceLabelWidget gamepadToolUrlLabel; - public LambdaControlsSettingsScreen(Screen parent, @NotNull GameOptions options, boolean hideControls) + public LambdaControlsSettingsScreen(Screen parent, boolean hideControls) { super(new TranslatableText("lambdacontrols.title.settings")); this.mod = LambdaControlsClient.get(); diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/TouchscreenOverlay.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/TouchscreenOverlay.java index 41ac3c3..78e2236 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/TouchscreenOverlay.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/gui/TouchscreenOverlay.java @@ -19,7 +19,7 @@ import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.TexturedButtonWidget; -import net.minecraft.server.network.packet.PlayerActionC2SPacket; +import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; import net.minecraft.text.LiteralText; import net.minecraft.util.Arm; import net.minecraft.util.Identifier; diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractButtonWidgetAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractButtonWidgetAccessor.java index 5ef0f42..912784a 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractButtonWidgetAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AbstractButtonWidgetAccessor.java @@ -17,5 +17,5 @@ import org.spongepowered.asm.mixin.gen.Accessor; public interface AbstractButtonWidgetAccessor { @Accessor("height") - int lambdacontrols_getHeight(); + int getHeight(); } diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AdvancementsScreenAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AdvancementsScreenAccessor.java index 2902d29..28ffc61 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AdvancementsScreenAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/AdvancementsScreenAccessor.java @@ -25,11 +25,11 @@ import java.util.Map; public interface AdvancementsScreenAccessor { @Accessor("advancementHandler") - ClientAdvancementManager lambdacontrols_getAdvancementManager(); + ClientAdvancementManager getAdvancementManager(); @Accessor("tabs") - Map lambdacontrols_getTabs(); + Map getTabs(); @Accessor("selectedTab") - AdvancementTab lambdacontrols_getSelectedTab(); + AdvancementTab getSelectedTab(); } diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ClientPlayNetworkHandlerMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ClientPlayNetworkHandlerMixin.java index 795562a..e6031d2 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ClientPlayNetworkHandlerMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ClientPlayNetworkHandlerMixin.java @@ -13,7 +13,7 @@ import me.lambdaurora.lambdacontrols.LambdaControls; import me.lambdaurora.lambdacontrols.client.LambdaControlsClient; import net.fabricmc.fabric.api.network.ClientSidePacketRegistry; import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.client.network.packet.GameJoinS2CPacket; +import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -23,7 +23,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public class ClientPlayNetworkHandlerMixin { @Inject(method = "onGameJoin", at = @At(value = "TAIL")) - private void lambdacontrols_onConnect(GameJoinS2CPacket packet, CallbackInfo ci) + private void onGameJoin(GameJoinS2CPacket packet, CallbackInfo ci) { ClientSidePacketRegistry.INSTANCE.sendToServer(LambdaControls.HELLO_CHANNEL, LambdaControls.get().makeHello(LambdaControlsClient.get().config.getControlsMode())); ClientSidePacketRegistry.INSTANCE.sendToServer(LambdaControls.CONTROLS_MODE_CHANNEL, diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ClientPlayerEntityMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ClientPlayerEntityMixin.java index 7794b7d..9381860 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ClientPlayerEntityMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ClientPlayerEntityMixin.java @@ -52,7 +52,7 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity } @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 lambdacontrols_move(MovementType type, Vec3d movement, CallbackInfo ci) + public void onMove(MovementType type, Vec3d movement, CallbackInfo ci) { LambdaControlsClient mod = LambdaControlsClient.get(); if (type == MovementType.SELF) { @@ -70,7 +70,7 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity } @Inject(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isCamera()Z")) - public void lambdacontrols_tickMovement(CallbackInfo ci) + public void onTickMovement(CallbackInfo ci) { if (this.abilities.flying && this.isCamera()) { if (LambdaControlsClient.get().config.hasFlyVerticalDrifting()) diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ContainerScreenMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ContainerScreenMixin.java index 0cad2e7..0a7e768 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ContainerScreenMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ContainerScreenMixin.java @@ -17,6 +17,7 @@ import net.minecraft.client.gui.screen.ingame.ContainerScreen; import net.minecraft.container.Slot; import org.lwjgl.glfw.GLFW; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -28,26 +29,17 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ContainerScreen.class) public abstract class ContainerScreenMixin implements ContainerScreenAccessor { - protected int x; - protected int y; + @Accessor("x") + public abstract int getX(); - @Override - public int lambdacontrols_getX() - { - return this.x; - } - - @Override - public int lambdacontrols_getY() - { - return this.y; - } + @Accessor("y") + public abstract int getY(); @Invoker("getSlotAt") public abstract Slot lambdacontrols_getSlotAt(double posX, double posY); @Inject(method = "render", at = @At("RETURN")) - public void render(int mouseX, int mouseY, float delta, CallbackInfo ci) + public void onRender(int mouseX, int mouseY, float delta, CallbackInfo ci) { if (LambdaControlsClient.get().config.getControlsMode() == ControlsMode.CONTROLLER) { MinecraftClient client = MinecraftClient.getInstance(); diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ControlsOptionsScreenMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ControlsOptionsScreenMixin.java index 1a84810..428ff99 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ControlsOptionsScreenMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/ControlsOptionsScreenMixin.java @@ -35,12 +35,12 @@ public class ControlsOptionsScreenMixin extends GameOptionsScreen } @Redirect(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/options/ControlsOptionsScreen;addButton(Lnet/minecraft/client/gui/widget/AbstractButtonWidget;)Lnet/minecraft/client/gui/widget/AbstractButtonWidget;", ordinal = 1)) - private AbstractButtonWidget on_init(ControlsOptionsScreen screen, AbstractButtonWidget btn) + private AbstractButtonWidget onInit(ControlsOptionsScreen screen, AbstractButtonWidget btn) { if (this.parent instanceof ControllerControlsScreen) return this.addButton(btn); else - return this.addButton(new ButtonWidget(btn.x, btn.y, btn.getWidth(), ((AbstractButtonWidgetAccessor) btn).lambdacontrols_getHeight(), I18n.translate("menu.options"), - b -> this.minecraft.openScreen(new LambdaControlsSettingsScreen(this, this.gameOptions, true)))); + return this.addButton(new ButtonWidget(btn.x, btn.y, btn.getWidth(), ((AbstractButtonWidgetAccessor) btn).getHeight(), I18n.translate("menu.options"), + b -> this.minecraft.openScreen(new LambdaControlsSettingsScreen(this, true)))); } } diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/CreativeInventoryScreenAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/CreativeInventoryScreenAccessor.java index 0b2e08e..60bed45 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/CreativeInventoryScreenAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/CreativeInventoryScreenAccessor.java @@ -30,7 +30,7 @@ public interface CreativeInventoryScreenAccessor * @return The selected tab index. */ @Accessor("selectedTab") - int lambdacontrols_getSelectedTab(); + int getSelectedTab(); /** * Sets the selected tab. @@ -48,4 +48,12 @@ public interface CreativeInventoryScreenAccessor */ @Invoker("isCreativeInventorySlot") boolean lambdacontrols_isCreativeInventorySlot(@Nullable Slot slot); + + /** + * Returns whether the current tab has a scrollbar or not. + * + * @return True if the current tab has a scrollbar, else false. + */ + @Invoker("hasScrollbar") + boolean lambdacontrols_hasScrollbar(); } diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/GameOptionsMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/GameOptionsMixin.java new file mode 100644 index 0000000..3ac9e93 --- /dev/null +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/GameOptionsMixin.java @@ -0,0 +1,36 @@ +/* + * Copyright © 2020 LambdAurora + * + * This file is part of LambdaControls. + * + * Licensed under the MIT license. For more information, + * see the LICENSE file. + */ + +package me.lambdaurora.lambdacontrols.client.mixin; + +import net.minecraft.client.options.GameOptions; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +/** + * Represents a mixin to GameOptions. + *

+ * Sets the default of the Auto-Jump option to false. + */ +@Mixin(GameOptions.class) +public class GameOptionsMixin +{ + @Shadow + public boolean autoJump; + + @Inject(method = "load", at = @At("HEAD")) + public void onInit(CallbackInfo ci) + { + // Set default value of the Auto-Jump option to false. + this.autoJump = false; + } +} diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/KeyBindingMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/KeyBindingMixin.java index 1815e13..443be3f 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/KeyBindingMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/KeyBindingMixin.java @@ -18,9 +18,6 @@ import org.spongepowered.asm.mixin.Shadow; @Mixin(KeyBinding.class) public class KeyBindingMixin implements KeyBindingAccessor { - @Shadow - private InputUtil.KeyCode keyCode; - @Shadow private int timesPressed; diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MinecraftClientMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MinecraftClientMixin.java index f7f5ac6..a9ba610 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MinecraftClientMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MinecraftClientMixin.java @@ -61,25 +61,25 @@ public abstract class MinecraftClientMixin public GameRenderer gameRenderer; @Inject(method = "", at = @At("RETURN")) - private void lambdacontrols_onInit(CallbackInfo ci) + private void onInit(CallbackInfo ci) { LambdaControlsClient.get().onMcInit((MinecraftClient) (Object) this); } @Inject(method = "render", at = @At("HEAD")) - private void lambdacontrols_onRender(boolean fullRender, CallbackInfo ci) + private void onRender(boolean fullRender, CallbackInfo ci) { LambdaControlsClient.get().onRender((MinecraftClient) (Object) (this)); } @Inject(method = "disconnect(Lnet/minecraft/client/gui/screen/Screen;)V", at = @At("RETURN")) - private void lambdacontrols_onLeave(@Nullable Screen screen, CallbackInfo ci) + private void onLeave(@Nullable Screen screen, CallbackInfo ci) { LambdaControlsClient.get().onLeave(); } @Inject(method = "doItemUse()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/hit/HitResult;getType()Lnet/minecraft/util/hit/HitResult$Type;"), locals = LocalCapture.CAPTURE_FAILEXCEPTION, cancellable = true) - private void lambdacontrols_onItemUse(CallbackInfo ci, Hand[] hands, int handCount, int handIndex, Hand hand, ItemStack stackInHand) + private void onItemUse(CallbackInfo ci, Hand[] hands, int handCount, int handIndex, Hand hand, ItemStack stackInHand) { if (!stackInHand.isEmpty() && this.player.pitch > 35.0F && LambdaControlsFeature.FRONT_BLOCK_PLACING.isAvailable()) { if (this.crosshairTarget != null && this.crosshairTarget.getType() == HitResult.Type.MISS && this.player.onGround) { diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MouseMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MouseMixin.java index 3d0abfd..3be0a93 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MouseMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/MouseMixin.java @@ -15,6 +15,7 @@ import me.lambdaurora.lambdacontrols.client.util.MouseAccessor; import net.minecraft.client.Mouse; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.gen.Invoker; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -25,22 +26,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Mouse.class) public abstract class MouseMixin implements MouseAccessor { - @Shadow - protected abstract void onCursorPos(long window, double x, double y); - - @Shadow - protected abstract void onMouseButton(long window, int button, int action, int mods); + @Invoker("onCursorPos") + public abstract void lambdacontrols_onCursorPos(long window, double x, double y); @Inject(method = "lockCursor", at = @At("HEAD"), cancellable = true) - private void lambdacontrols_onMouseLocked(CallbackInfo ci) + private void onMouseLocked(CallbackInfo ci) { if (LambdaControlsClient.get().config.getControlsMode() == ControlsMode.TOUCHSCREEN) ci.cancel(); } - - @Override - public void lambdacontrols_onCursorPos(long window, double x, double y) - { - this.onCursorPos(window, x, y); - } } diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/SettingsScreenMixin.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/SettingsScreenMixin.java index a1927a0..2046173 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/SettingsScreenMixin.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/mixin/SettingsScreenMixin.java @@ -36,7 +36,7 @@ public class SettingsScreenMixin extends Screen private AbstractButtonWidget lambdacontrols_onInit(SettingsScreen screen, AbstractButtonWidget btn) { if (LambdaControlsClient.get().config.getControlsMode() == ControlsMode.CONTROLLER) { - return this.addButton(new ButtonWidget(btn.x, btn.y, btn.getWidth(), ((AbstractButtonWidgetAccessor) btn).lambdacontrols_getHeight(), btn.getMessage(), + return this.addButton(new ButtonWidget(btn.x, btn.y, btn.getWidth(), ((AbstractButtonWidgetAccessor) btn).getHeight(), btn.getMessage(), b -> this.minecraft.openScreen(new ControllerControlsScreen(this, false)))); } else { return this.addButton(btn); diff --git a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/ContainerScreenAccessor.java b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/ContainerScreenAccessor.java index 355a3cb..9a5d96a 100644 --- a/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/ContainerScreenAccessor.java +++ b/fabric/src/main/java/me/lambdaurora/lambdacontrols/client/util/ContainerScreenAccessor.java @@ -21,14 +21,14 @@ public interface ContainerScreenAccessor * * @return The left coordinate of the GUI. */ - int lambdacontrols_getX(); + int getX(); /** * Gets the top coordinate of the GUI. * * @return The top coordinate of the GUI. */ - int lambdacontrols_getY(); + int getY(); /** * Gets the slot at position. diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 4a5d8ea..b83545c 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -32,16 +32,19 @@ "depends": { "fabricloader": ">=0.4.0", "fabric": "*", - "minecraft": "1.15.x", + "minecraft": ">=1.15", "spruceui": ">=1.3.4" }, "recommends": { - "modmenu": ">=1.8.0+build.16", + "modmenu": ">=1.9.0", "okzoomer": ">=1.0.4" }, "suggests": { "flamingo": "*" }, + "breaks": { + "modmenu": "<1.9.0" + }, "custom": { "modmenu:clientsideOnly": true } diff --git a/fabric/src/main/resources/lambdacontrols.mixins.json b/fabric/src/main/resources/lambdacontrols.mixins.json index d2eb164..efa727f 100644 --- a/fabric/src/main/resources/lambdacontrols.mixins.json +++ b/fabric/src/main/resources/lambdacontrols.mixins.json @@ -11,6 +11,7 @@ "ControlsOptionsScreenMixin", "CreativeInventoryScreenAccessor", "EntryListWidgetAccessor", + "GameOptionsMixin", "GameRendererMixin", "KeyBindingMixin", "MinecraftClientMixin", diff --git a/gradle.properties b/gradle.properties index 7660cd8..974df4d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use minecraft_version=1.15.2 - yarn_mappings=1.15.2+build.9:v2 + yarn_mappings=1.15.2+build.14:v2 loader_version=0.7.6+build.180 # Mod Properties @@ -16,4 +16,4 @@ org.gradle.jvmargs=-Xmx1G # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api fabric_version=0.4.29+build.290-1.15 spruceui_version=1.3.4 - + modmenu_version=1.10.1+build.30