diff --git a/build.gradle b/build.gradle index d01c265..853b831 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ dependencies { modImplementation "org.quiltmc:quilt-json5:1.0.0" //modImplementation "maven.modrinth:sodium:${project.sodium_version}" - modImplementation("me.shedaniel:RoughlyEnoughItems-runtime-fabric:${project.rei_version}") + //modImplementation("maven.modrinth:emi:${project.emi_version}") modImplementation "maven.modrinth:emotecraft:${project.emotecraft_version}" modImplementation "io.github.kosmx:bendy-lib:${project.bendylib_version}" diff --git a/controller_banner.svg b/controller_banner.svg new file mode 100644 index 0000000..51d98f4 --- /dev/null +++ b/controller_banner.svg @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradle.properties b/gradle.properties index 0881019..ec8cf84 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,26 +3,26 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.18.1 -yarn_mappings=1.18.1+build.22 -loader_version=0.13.3 +minecraft_version=1.19 +yarn_mappings=1.19+build.1 +loader_version=0.14.7 # Mod Properties -mod_version = 1.0.0 +mod_version = 1.1.0 maven_group = eu.midnightdust archives_base_name = midnightcontrols modrinth_id=bXX9h73M # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_version=0.46.6+1.18 -sodium_version=mc1.18.2-0.4.1 -spruceui_version=3.3.2+1.17 -midnightlib_version=0.4.0 -modmenu_version=2.0.2 -emotecraft_version=2.1-MC1.18.1-fabric +fabric_version=0.55.2+1.19 +sodium_version=mc1.19-0.4.1 +spruceui_version=4.0.0+1.19 +midnightlib_version=0.5.2 +modmenu_version=4.0.0 +emotecraft_version=2.1.3-SNAPSHOT-build.29-MC1.19-fabric bendylib_version=2.0.+ -rei_version=7.4.456 +emi_version=0.1.1+1.18.2 # Ok Zoomer and LibZoomer are temporarily disabled for the time being, as we are currently using Reflection at runtime instead in OkZoomerCompat due to there being two major, completely incompatible API versions. # ok_zoomer_version=5.0.0-beta.3+1.17.1 diff --git a/src/main/java/eu/midnightdust/midnightcontrols/MidnightControls.java b/src/main/java/eu/midnightdust/midnightcontrols/MidnightControls.java index 115bb05..fb1d0ae 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/MidnightControls.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/MidnightControls.java @@ -16,7 +16,7 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; import net.minecraft.network.PacketByteBuf; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -38,7 +38,7 @@ public class MidnightControls implements ModInitializer { public static final Identifier FEATURE_CHANNEL = new Identifier(MidnightControlsConstants.FEATURE_CHANNEL.toString()); public static final Identifier HELLO_CHANNEL = new Identifier(MidnightControlsConstants.HELLO_CHANNEL.toString()); - public static final TranslatableText NOT_BOUND_TEXT = new TranslatableText("midnightcontrols.not_bound"); + public static final Text NOT_BOUND_TEXT = Text.translatable("midnightcontrols.not_bound"); public final Logger logger = LogManager.getLogger("MidnightControls"); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/ControllerType.java b/src/main/java/eu/midnightdust/midnightcontrols/client/ControllerType.java index 49ba222..a3b388e 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/ControllerType.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/ControllerType.java @@ -9,9 +9,7 @@ package eu.midnightdust.midnightcontrols.client; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.aperlambda.lambdacommon.utils.Nameable; import org.jetbrains.annotations.NotNull; @@ -26,22 +24,22 @@ import java.util.Optional; * @since 1.0.0 */ public enum ControllerType implements Nameable { - DEFAULT(0, new LiteralText("Default")), - DUALSHOCK(1, new LiteralText("Dualshock")), - DUALSENSE(2, new LiteralText("Dualsense")), - SWITCH(3, new LiteralText("Switch")), - XBOX_360(4, new LiteralText("Xbox 360")), - XBOX(5, new LiteralText("Xbox")), - STEAM_DECK(6, new LiteralText("Steam Deck")), - STEAM_CONTROLLER(7, new LiteralText("Steam Controller")), - OUYA(8, new LiteralText("Ouya")); + DEFAULT(0, Text.of("Default")), + DUALSHOCK(1, Text.of("Dualshock")), + DUALSENSE(2, Text.of("Dualsense")), + SWITCH(3, Text.of("Switch")), + XBOX_360(4, Text.of("Xbox 360")), + XBOX(5, Text.of("Xbox")), + STEAM_DECK(6, Text.of("Steam Deck")), + STEAM_CONTROLLER(7, Text.of("Steam Controller")), + OUYA(8, Text.of("Ouya")); private final int id; private final Text text; ControllerType(int id) { this.id = id; - this.text = new TranslatableText("midnightcontrols.controller_type." + this.getName()); + this.text = Text.translatable("midnightcontrols.controller_type." + this.getName()); } ControllerType(int id, @NotNull Text text) { diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/HudSide.java b/src/main/java/eu/midnightdust/midnightcontrols/client/HudSide.java index 8ce117b..db3e3d6 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/HudSide.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/HudSide.java @@ -10,7 +10,6 @@ package eu.midnightdust.midnightcontrols.client; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.aperlambda.lambdacommon.utils.Nameable; import org.jetbrains.annotations.NotNull; @@ -31,7 +30,7 @@ public enum HudSide implements Nameable { private final Text text; HudSide() { - this.text = new TranslatableText(this.getTranslationKey()); + this.text = Text.translatable(this.getTranslationKey()); } /** diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java index e8fdbe8..36147eb 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsClient.java @@ -36,8 +36,7 @@ import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.toast.SystemToast; import net.minecraft.client.util.InputUtil; -import net.minecraft.text.LiteralText; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; @@ -133,10 +132,10 @@ public class MidnightControlsClient extends MidnightControls implements ClientMo GLFW.glfwSetJoystickCallback((jid, event) -> { if (event == GLFW.GLFW_CONNECTED) { var controller = Controller.byId(jid); - client.getToastManager().add(new SystemToast(SystemToast.Type.TUTORIAL_HINT, new TranslatableText("midnightcontrols.controller.connected", jid), - new LiteralText(controller.getName()))); + client.getToastManager().add(new SystemToast(SystemToast.Type.TUTORIAL_HINT, Text.translatable("midnightcontrols.controller.connected", jid), + Text.literal(controller.getName()))); } else if (event == GLFW.GLFW_DISCONNECTED) { - client.getToastManager().add(new SystemToast(SystemToast.Type.TUTORIAL_HINT, new TranslatableText("midnightcontrols.controller.disconnected", jid), + client.getToastManager().add(new SystemToast(SystemToast.Type.TUTORIAL_HINT, Text.translatable("midnightcontrols.controller.disconnected", jid), null)); } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java index 1eb40ad..35a75b3 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightControlsConfig.java @@ -59,7 +59,7 @@ public class MidnightControlsConfig extends MidnightConfig { @Entry public static VirtualMouseSkin virtualMouseSkin = VirtualMouseSkin.DEFAULT_LIGHT; @Entry public static Object controllerID = 0; @Entry public static Object secondControllerID = -1; - @Entry public static List mouseScreens = List.of("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"); + @Entry public static List mouseScreens = List.of("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", "me.flashyreese.mods.reeses_sodium_options.client.gui"); @Entry public static Map BINDINGS = Map.of(); private static final Pattern BUTTON_BINDING_PATTERN = Pattern.compile("(-?\\d+)\\+?"); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java index 6b4e3ff..241a386 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/MidnightInput.java @@ -27,6 +27,7 @@ import dev.lambdaurora.spruceui.widget.AbstractSprucePressableButtonWidget; import dev.lambdaurora.spruceui.widget.SpruceElement; import dev.lambdaurora.spruceui.widget.SpruceLabelWidget; import dev.lambdaurora.spruceui.widget.container.SpruceParentWidget; +import net.fabricmc.fabric.impl.item.group.CreativeGuiExtensions; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.ParentElement; @@ -45,7 +46,7 @@ import net.minecraft.client.gui.widget.PressableWidget; import net.minecraft.client.gui.widget.SliderWidget; import net.minecraft.screen.slot.Slot; import net.minecraft.screen.slot.SlotActionType; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; import org.aperlambda.lambdacommon.utils.Pair; import org.jetbrains.annotations.NotNull; @@ -53,10 +54,7 @@ import org.jetbrains.annotations.Nullable; import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFWGamepadState; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; +import java.util.*; import static org.lwjgl.glfw.GLFW.*; @@ -71,7 +69,7 @@ public class MidnightInput { private static final Map BUTTON_COOLDOWNS = new HashMap<>(); // Cooldowns public int actionGuiCooldown = 0; - private boolean ignoreNextARelease = false; + public boolean ignoreNextARelease = false; private double targetYaw = 0.0; private double targetPitch = 0.0; private float prevXAxis = 0.f; @@ -80,7 +78,7 @@ public class MidnightInput { private int targetMouseY = 0; private float mouseSpeedX = 0.f; private float mouseSpeedY = 0.f; - private int inventoryInteractionCooldown = 0; + public int inventoryInteractionCooldown = 0; private ControllerControlsWidget controlsInput = null; @@ -315,7 +313,7 @@ public class MidnightInput { if (client.currentScreen != null && client.currentScreen.getClass() != TitleScreen.class) { if (!MidnightControlsCompat.handleMenuBack(client, client.currentScreen)) if (!this.tryGoBack(client.currentScreen)) - client.currentScreen.onClose(); + client.currentScreen.close(); return; } } @@ -323,6 +321,9 @@ public class MidnightInput { if (button == GLFW.GLFW_GAMEPAD_BUTTON_A && client.currentScreen != null && !isScreenInteractive(client.currentScreen) && this.actionGuiCooldown == 0) { + if (client.currentScreen instanceof CreativeInventoryScreen creativeScreen && ((HandledScreenAccessor) creativeScreen).midnightcontrols$getSlotAt( + client.mouse.getX() * (double) client.getWindow().getScaledWidth() / (double) client.getWindow().getWidth(), + client.mouse.getY() * (double) client.getWindow().getScaledHeight() / (double) client.getWindow().getHeight()) != null) return; if (!this.ignoreNextARelease) { 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(); @@ -347,58 +348,57 @@ public class MidnightInput { * @return {@code true} if an inventory interaction was done */ private boolean handleInventory(@NotNull MinecraftClient client, int button) { - if (!(client.currentScreen instanceof HandledScreen)) - return false; - - if (client.interactionManager == null || client.player == null) - return false; - - if (this.inventoryInteractionCooldown > 0) - return true; - - if (button == GLFW.GLFW_GAMEPAD_BUTTON_B) { - client.player.closeHandledScreen(); - return true; - } - - double x = client.mouse.getX() * (double) client.getWindow().getScaledWidth() / (double) client.getWindow().getWidth(); - double y = client.mouse.getY() * (double) client.getWindow().getScaledHeight() / (double) client.getWindow().getHeight(); - - var screen = (HandledScreen) client.currentScreen; - var accessor = (HandledScreenAccessor) screen; - Slot slot = ((HandledScreenAccessor) client.currentScreen).midnightcontrols$getSlotAt(x, y); - - int slotId; - if (slot == null) { - if (client.player.currentScreenHandler.getCursorStack().isEmpty()) - return false; - slotId = accessor.midnightcontrols$isClickOutsideBounds(x, y, accessor.getX(), accessor.getY(), GLFW_MOUSE_BUTTON_1) ? -999 : -1; - } else { - slotId = slot.id; - } - - var actionType = SlotActionType.PICKUP; - int clickData = GLFW.GLFW_MOUSE_BUTTON_1; - switch (button) { - case GLFW_GAMEPAD_BUTTON_A: - if (screen instanceof CreativeInventoryScreen) - if (((CreativeInventoryScreenAccessor) screen).midnightcontrols$isCreativeInventorySlot(slot)) - actionType = SlotActionType.CLONE; - if (slot != null && MidnightControlsCompat.streamCompatHandlers().anyMatch(handler -> handler.isCreativeSlot(screen, slot))) - actionType = SlotActionType.CLONE; - break; - case GLFW.GLFW_GAMEPAD_BUTTON_X: - clickData = GLFW_MOUSE_BUTTON_2; - break; - case GLFW.GLFW_GAMEPAD_BUTTON_Y: - actionType = SlotActionType.QUICK_MOVE; - break; - default: - return false; - } - - accessor.midnightcontrols$onMouseClick(slot, slotId, clickData, actionType); - return true; +// if (!(client.currentScreen instanceof HandledScreen screen)) +// return false; +// +// if (client.interactionManager == null || client.player == null) +// return false; +// +// if (this.inventoryInteractionCooldown > 0) +// return true; +// +// if (button == GLFW.GLFW_GAMEPAD_BUTTON_B) { +// client.player.closeHandledScreen(); +// return true; +// } +// +// double x = client.mouse.getX() * (double) client.getWindow().getScaledWidth() / (double) client.getWindow().getWidth(); +// double y = client.mouse.getY() * (double) client.getWindow().getScaledHeight() / (double) client.getWindow().getHeight(); +// +// var accessor = (HandledScreenAccessor) screen; +// Slot slot = ((HandledScreenAccessor) client.currentScreen).midnightcontrols$getSlotAt(x, y); +// +// int slotId; +// if (slot == null) { +// if (client.player.currentScreenHandler.getCursorStack().isEmpty()) +// return false; +// slotId = accessor.midnightcontrols$isClickOutsideBounds(x, y, accessor.getX(), accessor.getY(), GLFW_MOUSE_BUTTON_1) ? -999 : -1; +// } else { +// slotId = slot.id; +// } +// +// var actionType = SlotActionType.PICKUP; +// int clickData = GLFW.GLFW_MOUSE_BUTTON_1; +// switch (button) { +// case GLFW_GAMEPAD_BUTTON_A: +// if (screen instanceof CreativeInventoryScreen) +// if (((CreativeInventoryScreenAccessor) screen).midnightcontrols$isCreativeInventorySlot(slot)) +// actionType = SlotActionType.CLONE; +// if (slot != null && MidnightControlsCompat.streamCompatHandlers().anyMatch(handler -> handler.isCreativeSlot(screen, slot))) +// actionType = SlotActionType.CLONE; +// break; +// case GLFW.GLFW_GAMEPAD_BUTTON_X: +// clickData = GLFW_MOUSE_BUTTON_2; +// break; +// case GLFW.GLFW_GAMEPAD_BUTTON_Y: +// actionType = SlotActionType.QUICK_MOVE; +// break; +// default: +// return false; +// } +// +// accessor.midnightcontrols$onMouseClick(slot, slotId, clickData, actionType); + return false; } /** @@ -411,9 +411,9 @@ public class MidnightInput { var set = ImmutableSet.of("gui.back", "gui.done", "gui.cancel", "gui.toTitle", "gui.toMenu"); return screen.children().stream().filter(element -> element instanceof PressableWidget) .map(element -> (PressableWidget) element) - .filter(element -> element.getMessage() instanceof TranslatableText) + .filter(element -> element.getMessage() != null && element.getMessage().getContent() != null) .anyMatch(element -> { - if (set.stream().anyMatch(key -> key.equals(((TranslatableText) element.getMessage()).getKey()))) { + if (set.stream().anyMatch(key -> element.getMessage().getContent().toString().equals(key))) { element.onPress(); return true; } @@ -511,6 +511,17 @@ public class MidnightInput { } return; } + } else if (client.currentScreen != null) { + if (axis == GLFW_GAMEPAD_AXIS_RIGHT_Y && absValue >= deadZone) { + client.currentScreen.children().stream().filter(element -> element instanceof EntryListWidget) + .map(element -> (EntryListWidget) element) + .filter(element -> element.getType().isFocused()) + .anyMatch(element -> { + element.mouseScrolled(0.0, 0.0, -value); + return true; + }); + return; + } } absValue -= deadZone; @@ -593,7 +604,7 @@ public class MidnightInput { labelWidget.onPress(); return true; } else if (focused instanceof WorldListWidget list) { - list.getSelectedAsOptional().ifPresent(WorldListWidget.Entry::play); + list.getSelectedAsOptional().ifPresent(WorldListWidget.WorldEntry::play); return true; } else if (focused instanceof MultiplayerServerListWidget list) { var entry = list.getSelectedOrNull(); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/VirtualMouseSkin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/VirtualMouseSkin.java index f2871ce..01ac7cf 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/VirtualMouseSkin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/VirtualMouseSkin.java @@ -10,7 +10,6 @@ package eu.midnightdust.midnightcontrols.client; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.aperlambda.lambdacommon.utils.Nameable; import org.jetbrains.annotations.NotNull; @@ -34,7 +33,7 @@ public enum VirtualMouseSkin implements Nameable { VirtualMouseSkin(String name) { this.name = name; - this.text = new TranslatableText(this.getTranslationKey()); + this.text = Text.translatable(this.getTranslationKey()); } /** diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/compat/ReiCompat.java b/src/main/java/eu/midnightdust/midnightcontrols/client/compat/ReiCompat.java index 8fa82e1..0756f41 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/compat/ReiCompat.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/compat/ReiCompat.java @@ -16,16 +16,6 @@ import eu.midnightdust.midnightcontrols.client.compat.mixin.EntryWidgetAccessor; import eu.midnightdust.midnightcontrols.client.controller.ButtonBinding; import eu.midnightdust.midnightcontrols.client.controller.InputHandlers; import eu.midnightdust.midnightcontrols.client.controller.PressAction; -import me.shedaniel.rei.RoughlyEnoughItemsCoreClient; -import me.shedaniel.rei.impl.client.ClientHelperImpl; -import me.shedaniel.rei.impl.client.REIRuntimeImpl; -import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl; -import me.shedaniel.rei.impl.client.gui.screen.CompositeDisplayViewingScreen; -import me.shedaniel.rei.impl.client.gui.screen.DefaultDisplayViewingScreen; -import me.shedaniel.rei.impl.client.gui.widget.EntryListEntryWidget; -import me.shedaniel.rei.impl.client.gui.widget.EntryWidget; -import me.shedaniel.rei.impl.client.registry.screen.ScreenRegistryImpl; -import me.shedaniel.rei.impl.common.entry.AbstractEntryStack; import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; import net.minecraft.client.MinecraftClient; diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/ButtonBinding.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/ButtonBinding.java index 154d532..422a9eb 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/ButtonBinding.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/ButtonBinding.java @@ -14,7 +14,6 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.GameOptions; import net.minecraft.client.option.KeyBinding; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import org.aperlambda.lambdacommon.utils.function.PairPredicate; import org.aperlambda.lambdacommon.utils.function.Predicates; @@ -79,6 +78,16 @@ public class ButtonBinding { .action(InputHandlers.handleHotbar(false)).filter(Predicates.or(InputHandlers::inInventory, InputHandlers::inAdvancements)).cooldown().register(); public static final ButtonBinding TAB_RIGHT = new Builder("tab_next").buttons(GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER) .action(InputHandlers.handleHotbar(true)).filter(Predicates.or(InputHandlers::inInventory, InputHandlers::inAdvancements)).cooldown().register(); + public static final ButtonBinding PAGE_LEFT = new Builder("page_back").buttons(axisAsButton(GLFW_GAMEPAD_AXIS_LEFT_TRIGGER, true)) + .action(InputHandlers.handlePage(false)).filter(InputHandlers::inInventory).cooldown().register(); + public static final ButtonBinding PAGE_RIGHT = new Builder("page_next").buttons(axisAsButton(GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER, true)) + .action(InputHandlers.handlePage(true)).filter(InputHandlers::inInventory).cooldown().register(); + public static final ButtonBinding TAKE = new Builder("take").buttons(GLFW_GAMEPAD_BUTTON_X) + .action(InputHandlers.handleActions()).filter(InputHandlers::inInventory).cooldown().register(); + public static final ButtonBinding TAKE_ALL = new Builder("take_all").buttons(GLFW_GAMEPAD_BUTTON_A) + .action(InputHandlers.handleActions()).filter(InputHandlers::inInventory).cooldown().register(); + public static final ButtonBinding QUICK_MOVE = new Builder("quick_move").buttons(GLFW_GAMEPAD_BUTTON_Y) + .action(InputHandlers.handleActions()).filter(InputHandlers::inInventory).cooldown().register(); public static final ButtonBinding TOGGLE_PERSPECTIVE = new Builder("toggle_perspective").buttons(GLFW_GAMEPAD_BUTTON_DPAD_UP, GLFW_GAMEPAD_BUTTON_Y).cooldown().register(); public static final ButtonBinding USE = new Builder("use").buttons(axisAsButton(GLFW_GAMEPAD_AXIS_LEFT_TRIGGER, true)).register(); @@ -96,7 +105,7 @@ public class ButtonBinding { public ButtonBinding(String key, int[] defaultButton, List actions, PairPredicate filter, boolean hasCooldown) { this.setButton(this.defaultButton = defaultButton); this.key = key; - this.text = new TranslatableText(this.key); + this.text = Text.translatable(this.key); this.filter = filter; this.actions.addAll(actions); this.hasCooldown = hasCooldown; @@ -295,24 +304,24 @@ public class ButtonBinding { } public static void init(@NotNull GameOptions options) { - ATTACK.mcKeyBinding = options.keyAttack; - BACK.mcKeyBinding = options.keyBack; - CHAT.mcKeyBinding = options.keyChat; - DROP_ITEM.mcKeyBinding = options.keyDrop; - FORWARD.mcKeyBinding = options.keyForward; - INVENTORY.mcKeyBinding = options.keyInventory; - JUMP.mcKeyBinding = options.keyJump; - LEFT.mcKeyBinding = options.keyLeft; - PICK_BLOCK.mcKeyBinding = options.keyPickItem; - PLAYER_LIST.mcKeyBinding = options.keyPlayerList; - RIGHT.mcKeyBinding = options.keyRight; - SCREENSHOT.mcKeyBinding = options.keyScreenshot; - SMOOTH_CAMERA.mcKeyBinding = options.keySmoothCamera; - SNEAK.mcKeyBinding = options.keySneak; - SPRINT.mcKeyBinding = options.keySprint; - SWAP_HANDS.mcKeyBinding = options.keySwapHands; - TOGGLE_PERSPECTIVE.mcKeyBinding = options.keyTogglePerspective; - USE.mcKeyBinding = options.keyUse; + ATTACK.mcKeyBinding = options.attackKey; + BACK.mcKeyBinding = options.backKey; + CHAT.mcKeyBinding = options.chatKey; + DROP_ITEM.mcKeyBinding = options.dropKey; + FORWARD.mcKeyBinding = options.forwardKey; + INVENTORY.mcKeyBinding = options.inventoryKey; + JUMP.mcKeyBinding = options.jumpKey; + LEFT.mcKeyBinding = options.leftKey; + PICK_BLOCK.mcKeyBinding = options.pickItemKey; + PLAYER_LIST.mcKeyBinding = options.playerListKey; + RIGHT.mcKeyBinding = options.rightKey; + SCREENSHOT.mcKeyBinding = options.screenshotKey; + SMOOTH_CAMERA.mcKeyBinding = options.smoothCameraKey; + SNEAK.mcKeyBinding = options.sneakKey; + SPRINT.mcKeyBinding = options.sprintKey; + SWAP_HANDS.mcKeyBinding = options.swapHandsKey; + TOGGLE_PERSPECTIVE.mcKeyBinding = options.togglePerspectiveKey; + USE.mcKeyBinding = options.useKey; } /** @@ -323,37 +332,37 @@ public class ButtonBinding { */ public static @NotNull Text getLocalizedButtonName(int button) { return switch (button % 500) { - case -1 -> new TranslatableText("key.keyboard.unknown"); - case GLFW_GAMEPAD_BUTTON_A -> new TranslatableText("midnightcontrols.button.a"); - case GLFW_GAMEPAD_BUTTON_B -> new TranslatableText("midnightcontrols.button.b"); - case GLFW_GAMEPAD_BUTTON_X -> new TranslatableText("midnightcontrols.button.x"); - case GLFW_GAMEPAD_BUTTON_Y -> new TranslatableText("midnightcontrols.button.y"); - case GLFW_GAMEPAD_BUTTON_LEFT_BUMPER -> new TranslatableText("midnightcontrols.button.left_bumper"); - case GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER -> new TranslatableText("midnightcontrols.button.right_bumper"); - case GLFW_GAMEPAD_BUTTON_BACK -> new TranslatableText("midnightcontrols.button.back"); - case GLFW_GAMEPAD_BUTTON_START -> new TranslatableText("midnightcontrols.button.start"); - case GLFW_GAMEPAD_BUTTON_GUIDE -> new TranslatableText("midnightcontrols.button.guide"); - case GLFW_GAMEPAD_BUTTON_LEFT_THUMB -> new TranslatableText("midnightcontrols.button.left_thumb"); - case GLFW_GAMEPAD_BUTTON_RIGHT_THUMB -> new TranslatableText("midnightcontrols.button.right_thumb"); - case GLFW_GAMEPAD_BUTTON_DPAD_UP -> new TranslatableText("midnightcontrols.button.dpad_up"); - case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT -> new TranslatableText("midnightcontrols.button.dpad_right"); - case GLFW_GAMEPAD_BUTTON_DPAD_DOWN -> new TranslatableText("midnightcontrols.button.dpad_down"); - case GLFW_GAMEPAD_BUTTON_DPAD_LEFT -> new TranslatableText("midnightcontrols.button.dpad_left"); - case 100 -> new TranslatableText("midnightcontrols.axis.left_x+"); - case 101 -> new TranslatableText("midnightcontrols.axis.left_y+"); - case 102 -> new TranslatableText("midnightcontrols.axis.right_x+"); - case 103 -> new TranslatableText("midnightcontrols.axis.right_y+"); - case 104 -> new TranslatableText("midnightcontrols.axis.left_trigger"); - case 105 -> new TranslatableText("midnightcontrols.axis.right_trigger"); - case 200 -> new TranslatableText("midnightcontrols.axis.left_x-"); - case 201 -> new TranslatableText("midnightcontrols.axis.left_y-"); - case 202 -> new TranslatableText("midnightcontrols.axis.right_x-"); - case 203 -> new TranslatableText("midnightcontrols.axis.right_y-"); - case 15 -> new TranslatableText("midnightcontrols.button.l4"); - case 16 -> new TranslatableText("midnightcontrols.button.l5"); - case 17 -> new TranslatableText("midnightcontrols.button.r4"); - case 18 -> new TranslatableText("midnightcontrols.button.r5"); - default -> new TranslatableText("midnightcontrols.button.unknown", button); + case -1 -> Text.translatable("key.keyboard.unknown"); + case GLFW_GAMEPAD_BUTTON_A -> Text.translatable("midnightcontrols.button.a"); + case GLFW_GAMEPAD_BUTTON_B -> Text.translatable("midnightcontrols.button.b"); + case GLFW_GAMEPAD_BUTTON_X -> Text.translatable("midnightcontrols.button.x"); + case GLFW_GAMEPAD_BUTTON_Y -> Text.translatable("midnightcontrols.button.y"); + case GLFW_GAMEPAD_BUTTON_LEFT_BUMPER -> Text.translatable("midnightcontrols.button.left_bumper"); + case GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER -> Text.translatable("midnightcontrols.button.right_bumper"); + case GLFW_GAMEPAD_BUTTON_BACK -> Text.translatable("midnightcontrols.button.back"); + case GLFW_GAMEPAD_BUTTON_START -> Text.translatable("midnightcontrols.button.start"); + case GLFW_GAMEPAD_BUTTON_GUIDE -> Text.translatable("midnightcontrols.button.guide"); + case GLFW_GAMEPAD_BUTTON_LEFT_THUMB -> Text.translatable("midnightcontrols.button.left_thumb"); + case GLFW_GAMEPAD_BUTTON_RIGHT_THUMB -> Text.translatable("midnightcontrols.button.right_thumb"); + case GLFW_GAMEPAD_BUTTON_DPAD_UP -> Text.translatable("midnightcontrols.button.dpad_up"); + case GLFW_GAMEPAD_BUTTON_DPAD_RIGHT -> Text.translatable("midnightcontrols.button.dpad_right"); + case GLFW_GAMEPAD_BUTTON_DPAD_DOWN -> Text.translatable("midnightcontrols.button.dpad_down"); + case GLFW_GAMEPAD_BUTTON_DPAD_LEFT -> Text.translatable("midnightcontrols.button.dpad_left"); + case 100 -> Text.translatable("midnightcontrols.axis.left_x+"); + case 101 -> Text.translatable("midnightcontrols.axis.left_y+"); + case 102 -> Text.translatable("midnightcontrols.axis.right_x+"); + case 103 -> Text.translatable("midnightcontrols.axis.right_y+"); + case 104 -> Text.translatable("midnightcontrols.axis.left_trigger"); + case 105 -> Text.translatable("midnightcontrols.axis.right_trigger"); + case 200 -> Text.translatable("midnightcontrols.axis.left_x-"); + case 201 -> Text.translatable("midnightcontrols.axis.left_y-"); + case 202 -> Text.translatable("midnightcontrols.axis.right_x-"); + case 203 -> Text.translatable("midnightcontrols.axis.right_y-"); + case 15 -> Text.translatable("midnightcontrols.button.l4"); + case 16 -> Text.translatable("midnightcontrols.button.l5"); + case 17 -> Text.translatable("midnightcontrols.button.r4"); + case 18 -> Text.translatable("midnightcontrols.button.r5"); + default -> Text.translatable("midnightcontrols.button.unknown", button); }; } @@ -376,7 +385,12 @@ public class ButtonBinding { ButtonBinding.HOTBAR_LEFT, ButtonBinding.HOTBAR_RIGHT, ButtonBinding.INVENTORY, - ButtonBinding.SWAP_HANDS + ButtonBinding.SWAP_HANDS, + ButtonBinding.PAGE_LEFT, + ButtonBinding.PAGE_RIGHT, + ButtonBinding.TAKE, + ButtonBinding.TAKE_ALL, + ButtonBinding.QUICK_MOVE )); MULTIPLAYER_CATEGORY = InputManager.registerDefaultCategory("key.categories.multiplayer", category -> category.registerAllBindings(ButtonBinding.CHAT, ButtonBinding.PLAYER_LIST)); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/Controller.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/Controller.java index 849d80f..5859047 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/Controller.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/Controller.java @@ -14,8 +14,7 @@ import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; import net.minecraft.client.MinecraftClient; import net.minecraft.client.toast.SystemToast; -import net.minecraft.text.LiteralText; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import org.aperlambda.lambdacommon.utils.Nameable; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; @@ -178,7 +177,7 @@ public record Controller(int id) implements Nameable { var client = MinecraftClient.getInstance(); if (client != null) { client.getToastManager().add(SystemToast.create(client, SystemToast.Type.TUTORIAL_HINT, - new TranslatableText("midnightcontrols.controller.mappings.error"), new LiteralText(string))); + Text.translatable("midnightcontrols.controller.mappings.error"), Text.literal(string))); } } } catch (Throwable e) { diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java index 970334a..18fb149 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/controller/InputHandlers.java @@ -10,27 +10,36 @@ package eu.midnightdust.midnightcontrols.client.controller; import eu.midnightdust.midnightcontrols.client.ButtonState; +import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; import eu.midnightdust.midnightcontrols.client.MidnightInput; +import eu.midnightdust.midnightcontrols.client.compat.MidnightControlsCompat; import eu.midnightdust.midnightcontrols.client.mixin.AdvancementsScreenAccessor; import eu.midnightdust.midnightcontrols.client.mixin.CreativeInventoryScreenAccessor; import eu.midnightdust.midnightcontrols.client.mixin.RecipeBookWidgetAccessor; import eu.midnightdust.midnightcontrols.client.util.HandledScreenAccessor; +import net.fabricmc.fabric.impl.item.group.CreativeGuiExtensions; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gl.Framebuffer; import net.minecraft.client.gui.screen.advancement.AdvancementsScreen; +import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.ingame.InventoryScreen; import net.minecraft.client.util.ScreenshotRecorder; import net.minecraft.item.ItemGroup; import net.minecraft.screen.slot.Slot; +import net.minecraft.screen.slot.SlotActionType; import org.aperlambda.lambdacommon.utils.Pair; import org.jetbrains.annotations.NotNull; +import org.lwjgl.glfw.GLFW; import java.util.Comparator; import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Collectors; +import static org.lwjgl.glfw.GLFW.*; +import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_2; + /** * Represents some input handlers. * @@ -100,6 +109,67 @@ public class InputHandlers { return false; }; } + public static PressAction handlePage(boolean next) { + return (client, button, value, action) -> { + if (client.currentScreen instanceof CreativeInventoryScreen) { + var screen = (HandledScreenAccessor) client.currentScreen; + try { + if (next) { + ((CreativeGuiExtensions) screen).fabric_nextPage(); + } else { + ((CreativeGuiExtensions) screen).fabric_previousPage(); + } + } catch (Exception ignored) {} + } + return false; + }; + } + public static PressAction handleActions() { + return (client, button, value, action) -> { + if (!(client.currentScreen instanceof HandledScreen screen)) return false; + if (client.interactionManager == null || client.player == null) + return false; + + if (MidnightControlsClient.get().input.inventoryInteractionCooldown > 0) + return true; + double x = client.mouse.getX() * (double) client.getWindow().getScaledWidth() / (double) client.getWindow().getWidth(); + double y = client.mouse.getY() * (double) client.getWindow().getScaledHeight() / (double) client.getWindow().getHeight(); + + var accessor = (HandledScreenAccessor) screen; + Slot slot = ((HandledScreenAccessor) screen).midnightcontrols$getSlotAt(x, y); + + int slotId; + if (slot == null) { + if (client.player.currentScreenHandler.getCursorStack().isEmpty()) + return false; + slotId = accessor.midnightcontrols$isClickOutsideBounds(x, y, accessor.getX(), accessor.getY(), GLFW_MOUSE_BUTTON_1) ? -999 : -1; + } else { + slotId = slot.id; + } + var actionType = SlotActionType.PICKUP; + int clickData = GLFW.GLFW_MOUSE_BUTTON_1; + MidnightControlsClient.get().input.inventoryInteractionCooldown = 5; + switch (button.getName()) { + case "take_all": + if (accessor instanceof CreativeInventoryScreen) + if (((CreativeInventoryScreenAccessor) accessor).midnightcontrols$isCreativeInventorySlot(slot)) + actionType = SlotActionType.CLONE; + if (slot != null && MidnightControlsCompat.streamCompatHandlers().anyMatch(handler -> handler.isCreativeSlot(screen, slot))) + actionType = SlotActionType.CLONE; + break; + case "take": + clickData = GLFW_MOUSE_BUTTON_2; + break; + case "quick_move": + actionType = SlotActionType.QUICK_MOVE; + break; + default: + return false; + } + accessor.midnightcontrols$onMouseClick(slot, slotId, clickData, actionType); + return true; + }; + } public static boolean handlePauseGame(@NotNull MinecraftClient client, @NotNull ButtonBinding binding, float value, @NotNull ButtonState action) { if (action == ButtonState.PRESS) { @@ -109,7 +179,7 @@ public class InputHandlers { else if (client.currentScreen instanceof HandledScreen && client.player != null) // If the current screen is a container then close it. client.player.closeHandledScreen(); else // Else just close the current screen. - client.currentScreen.onClose(); + client.currentScreen.close(); } return true; } @@ -131,12 +201,12 @@ public class InputHandlers { public static boolean handleToggleSneak(@NotNull MinecraftClient client, @NotNull ButtonBinding button, float value, @NotNull ButtonState action) { button.asKeyBinding().ifPresent(binding -> { - boolean sneakToggled = client.options.sneakToggled; + boolean sneakToggled = client.options.getSneakToggled().getValue(); if (client.player.getAbilities().flying && sneakToggled) - client.options.sneakToggled = false; + client.options.getSneakToggled().setValue(false); binding.setPressed(button.pressed); if (client.player.getAbilities().flying && sneakToggled) - client.options.sneakToggled = true; + client.options.getSneakToggled().setValue(true); }); return true; } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MappingsStringInputWidget.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MappingsStringInputWidget.java index 9b56c1d..d5b0835 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MappingsStringInputWidget.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MappingsStringInputWidget.java @@ -16,8 +16,7 @@ import dev.lambdaurora.spruceui.option.SpruceOption; import dev.lambdaurora.spruceui.widget.container.SpruceContainerWidget; import dev.lambdaurora.spruceui.widget.text.SpruceTextAreaWidget; import net.minecraft.client.toast.SystemToast; -import net.minecraft.text.LiteralText; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import java.io.FileWriter; import java.io.IOException; @@ -65,7 +64,7 @@ public class MappingsStringInputWidget extends SpruceContainerWidget { } catch (IOException e) { if (this.client != null) this.client.getToastManager().add(SystemToast.create(this.client, SystemToast.Type.TUTORIAL_HINT, - new TranslatableText("midnightcontrols.controller.mappings.error.write"), LiteralText.EMPTY)); + Text.translatable("midnightcontrols.controller.mappings.error.write"), Text.empty())); e.printStackTrace(); } } @@ -90,7 +89,7 @@ public class MappingsStringInputWidget extends SpruceContainerWidget { } int textFieldWidth = (int) (this.width * (5.0 / 6.0)); - this.textArea = new SpruceTextAreaWidget(Position.of(this, this.width / 2 - textFieldWidth / 2, 0), textFieldWidth, this.height - 50, new LiteralText(mappings)); + this.textArea = new SpruceTextAreaWidget(Position.of(this, this.width / 2 - textFieldWidth / 2, 0), textFieldWidth, this.height - 50, Text.literal(mappings)); this.textArea.setText(mappings); // Display as many lines as possible this.textArea.setDisplayedLines(this.textArea.getInnerHeight() / this.client.textRenderer.fontHeight); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsHud.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsHud.java index 4d89381..a2b5c3c 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsHud.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsHud.java @@ -106,7 +106,7 @@ public class MidnightControlsHud extends Hud { this.drawButton(matrices, currentX, y, ButtonBinding.INVENTORY, true); this.drawButton(matrices, currentX += (MidnightControlsConfig.hudSide == HudSide.LEFT ? offset : -offset), y, ButtonBinding.SWAP_HANDS, true); offset = 2 + this.swapHandsWidth + this.dropItemButtonWidth + 4; - if (this.client.options.showSubtitles && MidnightControlsConfig.hudSide == HudSide.RIGHT) { + if (this.client.options.getShowSubtitles().getValue() && MidnightControlsConfig.hudSide == HudSide.RIGHT) { currentX += -offset; } else { currentX = MidnightControlsConfig.hudSide == HudSide.LEFT ? x : x - this.dropItemButtonWidth; @@ -123,7 +123,7 @@ public class MidnightControlsHud extends Hud { currentX -= this.useButtonWidth; this.drawButton(matrices, currentX, y, ButtonBinding.USE, true); offset = 2 + this.useWidth + 4; - if (this.client.options.showSubtitles && MidnightControlsConfig.hudSide == HudSide.LEFT) { + if (this.client.options.getShowSubtitles().getValue() && MidnightControlsConfig.hudSide == HudSide.LEFT) { currentX -= offset; } else { currentX = x; @@ -143,7 +143,7 @@ public class MidnightControlsHud extends Hud { currentX += MidnightControlsConfig.hudSide == HudSide.LEFT ? this.inventoryWidth + 4 + this.swapHandsButtonWidth + 2 : -this.swapHandsWidth - 2 - this.swapHandsButtonWidth - 4; this.drawTip(matrices, currentX, y, ButtonBinding.SWAP_HANDS, true); - if (this.client.options.showSubtitles && MidnightControlsConfig.hudSide == HudSide.RIGHT) { + if (this.client.options.getShowSubtitles().getValue() && MidnightControlsConfig.hudSide == HudSide.RIGHT) { currentX += -this.dropItemWidth - 2 - this.dropItemButtonWidth - 4; } else { y -= 24; @@ -160,7 +160,7 @@ public class MidnightControlsHud extends Hud { this.drawTip(matrices, currentX, y, this.placeAction, true); - if (this.client.options.showSubtitles && MidnightControlsConfig.hudSide == HudSide.LEFT) { + if (this.client.options.getShowSubtitles().getValue() && MidnightControlsConfig.hudSide == HudSide.LEFT) { currentX -= 4; } else { currentX = x; diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java index 1911cb1..8941f10 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/MidnightControlsSettingsScreen.java @@ -34,10 +34,8 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.render.*; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.LiteralText; import net.minecraft.text.MutableText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import net.minecraft.util.Util; import net.minecraft.util.math.Matrix4f; @@ -49,7 +47,7 @@ import java.awt.*; * Represents the midnightcontrols settings screen. */ public class MidnightControlsSettingsScreen extends SpruceScreen { - private static final Text SDL2_GAMEPAD_TOOL = new LiteralText("SDL2 Gamepad Tool").formatted(Formatting.GREEN); + private static final Text SDL2_GAMEPAD_TOOL = Text.literal("SDL2 Gamepad Tool").formatted(Formatting.GREEN); public static final String GAMEPAD_TOOL_URL = "https://generalarcade.com/gamepadtool/"; final MidnightControlsClient mod = MidnightControlsClient.get(); private final Screen parent; @@ -88,11 +86,11 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { var controller = MidnightControlsConfig.getController(); var controllerName = controller.getName(); if (!controller.isConnected()) - return option.getDisplayText(new LiteralText(controllerName).formatted(Formatting.RED)); + return option.getDisplayText(Text.literal(controllerName).formatted(Formatting.RED)); else if (!controller.isGamepad()) - return option.getDisplayText(new LiteralText(controllerName).formatted(Formatting.GOLD)); + return option.getDisplayText(Text.literal(controllerName).formatted(Formatting.GOLD)); else - return option.getDisplayText(new LiteralText(controllerName)); + return option.getDisplayText(Text.literal(controllerName)); }, null); private final SpruceOption secondControllerOption = new SpruceCyclingOption("midnightcontrols.menu.controller2", amount -> { @@ -106,13 +104,13 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { option -> MidnightControlsConfig.getSecondController().map(controller -> { var controllerName = controller.getName(); if (!controller.isConnected()) - return option.getDisplayText(new LiteralText(controllerName).formatted(Formatting.RED)); + return option.getDisplayText(Text.literal(controllerName).formatted(Formatting.RED)); else if (!controller.isGamepad()) - return option.getDisplayText(new LiteralText(controllerName).formatted(Formatting.GOLD)); + return option.getDisplayText(Text.literal(controllerName).formatted(Formatting.GOLD)); else - return option.getDisplayText(new LiteralText(controllerName)); - }).orElse(option.getDisplayText(SpruceTexts.OPTIONS_OFF.shallowCopy().formatted(Formatting.RED))), - new TranslatableText("midnightcontrols.tooltip.controller2")); + return option.getDisplayText(Text.literal(controllerName)); + }).orElse(option.getDisplayText(SpruceTexts.OPTIONS_OFF.copyContentOnly().formatted(Formatting.RED))), + Text.translatable("midnightcontrols.tooltip.controller2")); private final SpruceOption unfocusedInputOption; private final SpruceOption invertsRightXAxis; private final SpruceOption invertsRightYAxis; @@ -129,13 +127,13 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { return new SpruceDoubleOption(key, .25f, 1.f, 0.05f, () -> MidnightControlsConfig.getAxisMaxValue(axis), newValue -> MidnightControlsConfig.setAxisMaxValue(axis, newValue), - option -> option.getDisplayText(new LiteralText(String.format("%.2f", option.get()))), - new TranslatableText(key.replace("menu", "tooltip")) + option -> option.getDisplayText(Text.literal(String.format("%.2f", option.get()))), + Text.translatable(key.replace("menu", "tooltip")) ); } - private final MutableText controllerMappingsUrlText = new LiteralText("(") - .append(new LiteralText(GAMEPAD_TOOL_URL).formatted(Formatting.GOLD)) + private final MutableText controllerMappingsUrlText = Text.literal("(") + .append(Text.literal(GAMEPAD_TOOL_URL).formatted(Formatting.GOLD)) .append("),"); private static int searchNextAvailableController(int newId, boolean allowNone) { @@ -153,7 +151,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { } public MidnightControlsSettingsScreen(Screen parent, boolean hideControls) { - super(new TranslatableText("midnightcontrols.title.settings")); + super(Text.translatable("midnightcontrols.title.settings")); this.parent = parent; // General options this.inputModeOption = new SpruceCyclingOption("midnightcontrols.menu.controls_mode", @@ -165,18 +163,18 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { if (this.client.player != null) { ClientPlayNetworking.getSender().sendPacket(MidnightControls.CONTROLS_MODE_CHANNEL, this.mod.makeControlsModeBuffer(next)); } - }, option -> option.getDisplayText(new TranslatableText(MidnightControlsConfig.controlsMode.getTranslationKey())), - new TranslatableText("midnightcontrols.tooltip.controls_mode")); + }, option -> option.getDisplayText(Text.translatable(MidnightControlsConfig.controlsMode.getTranslationKey())), + Text.translatable("midnightcontrols.tooltip.controls_mode")); this.autoSwitchModeOption = new SpruceToggleBooleanOption("midnightcontrols.menu.auto_switch_mode", () -> MidnightControlsConfig.autoSwitchMode, - value -> MidnightControlsConfig.autoSwitchMode = value, new TranslatableText("midnightcontrols.tooltip.auto_switch_mode")); + value -> MidnightControlsConfig.autoSwitchMode = value, Text.translatable("midnightcontrols.tooltip.auto_switch_mode")); this.rotationSpeedOption = new SpruceDoubleOption("midnightcontrols.menu.rotation_speed", 0.0, 100.0, .5f, () -> MidnightControlsConfig.rotationSpeed, - value -> MidnightControlsConfig.rotationSpeed = value, option -> option.getDisplayText(new LiteralText(String.valueOf(option.get()))), - new TranslatableText("midnightcontrols.tooltip.rotation_speed")); + value -> MidnightControlsConfig.rotationSpeed = value, option -> option.getDisplayText(Text.literal(String.valueOf(option.get()))), + Text.translatable("midnightcontrols.tooltip.rotation_speed")); this.mouseSpeedOption = new SpruceDoubleOption("midnightcontrols.menu.mouse_speed", 0.0, 150.0, .5f, () -> MidnightControlsConfig.mouseSpeed, - value -> MidnightControlsConfig.mouseSpeed = value, option -> option.getDisplayText(new LiteralText(String.valueOf(option.get()))), - new TranslatableText("midnightcontrols.tooltip.mouse_speed")); + value -> MidnightControlsConfig.mouseSpeed = value, option -> option.getDisplayText(Text.literal(String.valueOf(option.get()))), + Text.translatable("midnightcontrols.tooltip.mouse_speed")); this.resetOption = SpruceSimpleActionOption.reset(btn -> { // TODO MidnightControlsConfig.init("midnightcontrols", MidnightControlsConfig.class); @@ -186,57 +184,57 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { // Gameplay options this.analogMovementOption = new SpruceToggleBooleanOption("midnightcontrols.menu.analog_movement", () -> MidnightControlsConfig.analogMovement, value -> MidnightControlsConfig.analogMovement = value, - new TranslatableText("midnightcontrols.tooltip.analog_movement")); + Text.translatable("midnightcontrols.tooltip.analog_movement")); this.autoJumpOption = new SpruceToggleBooleanOption("options.autoJump", - () -> this.client.options.autoJump, - newValue -> this.client.options.autoJump = newValue, + () -> this.client.options.getAutoJump().getValue(), + newValue -> this.client.options.getAutoJump().setValue(newValue), null); this.fastBlockPlacingOption = new SpruceToggleBooleanOption("midnightcontrols.menu.fast_block_placing", () -> MidnightControlsConfig.fastBlockPlacing, - value -> MidnightControlsConfig.fastBlockPlacing = value, new TranslatableText("midnightcontrols.tooltip.fast_block_placing")); + value -> MidnightControlsConfig.fastBlockPlacing = value, Text.translatable("midnightcontrols.tooltip.fast_block_placing")); this.frontBlockPlacingOption = new SpruceToggleBooleanOption("midnightcontrols.menu.reacharound.horizontal", () -> MidnightControlsConfig.horizontalReacharound, - value -> MidnightControlsConfig.horizontalReacharound = value, new TranslatableText("midnightcontrols.tooltip.reacharound.horizontal")); + value -> MidnightControlsConfig.horizontalReacharound = value, Text.translatable("midnightcontrols.tooltip.reacharound.horizontal")); this.verticalReacharoundOption = new SpruceToggleBooleanOption("midnightcontrols.menu.reacharound.vertical", () -> MidnightControlsConfig.verticalReacharound, - value -> MidnightControlsConfig.verticalReacharound = value, new TranslatableText("midnightcontrols.tooltip.reacharound.vertical")); + value -> MidnightControlsConfig.verticalReacharound = value, Text.translatable("midnightcontrols.tooltip.reacharound.vertical")); this.flyDriftingOption = new SpruceToggleBooleanOption("midnightcontrols.menu.fly_drifting", () -> MidnightControlsConfig.flyDrifting, - value -> MidnightControlsConfig.flyDrifting = value, new TranslatableText("midnightcontrols.tooltip.fly_drifting")); + value -> MidnightControlsConfig.flyDrifting = value, Text.translatable("midnightcontrols.tooltip.fly_drifting")); this.flyVerticalDriftingOption = new SpruceToggleBooleanOption("midnightcontrols.menu.fly_drifting_vertical", () -> MidnightControlsConfig.verticalFlyDrifting, - value -> MidnightControlsConfig.verticalFlyDrifting = value, new TranslatableText("midnightcontrols.tooltip.fly_drifting_vertical")); + value -> MidnightControlsConfig.verticalFlyDrifting = value, Text.translatable("midnightcontrols.tooltip.fly_drifting_vertical")); // Appearance options this.controllerTypeOption = new SpruceCyclingOption("midnightcontrols.menu.controller_type", amount -> MidnightControlsConfig.controllerType = MidnightControlsConfig.controllerType.next(), option -> option.getDisplayText(MidnightControlsConfig.controllerType.getTranslatedText()), - new TranslatableText("midnightcontrols.tooltip.controller_type")); + Text.translatable("midnightcontrols.tooltip.controller_type")); this.virtualMouseSkinOption = new SpruceCyclingOption("midnightcontrols.menu.virtual_mouse.skin", amount -> MidnightControlsConfig.virtualMouseSkin = MidnightControlsConfig.virtualMouseSkin.next(), option -> option.getDisplayText(MidnightControlsConfig.virtualMouseSkin.getTranslatedText()), null); this.hudEnableOption = new SpruceToggleBooleanOption("midnightcontrols.menu.hud_enable", () -> MidnightControlsConfig.hudEnable, - this.mod::setHudEnabled, new TranslatableText("midnightcontrols.tooltip.hud_enable")); + this.mod::setHudEnabled, Text.translatable("midnightcontrols.tooltip.hud_enable")); this.hudSideOption = new SpruceCyclingOption("midnightcontrols.menu.hud_side", amount -> MidnightControlsConfig.hudSide = MidnightControlsConfig.hudSide.next(), option -> option.getDisplayText(MidnightControlsConfig.hudSide.getTranslatedText()), - new TranslatableText("midnightcontrols.tooltip.hud_side")); + Text.translatable("midnightcontrols.tooltip.hud_side")); // Controller options this.rightDeadZoneOption = new SpruceDoubleOption("midnightcontrols.menu.right_dead_zone", 0.05, 1.0, .05f, () -> MidnightControlsConfig.rightDeadZone, value -> MidnightControlsConfig.rightDeadZone = value, option -> { var value = String.valueOf(option.get()); - return option.getDisplayText(new LiteralText(value.substring(0, Math.min(value.length(), 5)))); - }, new TranslatableText("midnightcontrols.tooltip.right_dead_zone")); + return option.getDisplayText(Text.literal(value.substring(0, Math.min(value.length(), 5)))); + }, Text.translatable("midnightcontrols.tooltip.right_dead_zone")); this.leftDeadZoneOption = new SpruceDoubleOption("midnightcontrols.menu.left_dead_zone", 0.05, 1.0, .05f, () -> MidnightControlsConfig.leftDeadZone, value -> MidnightControlsConfig.leftDeadZone = value, option -> { var value = String.valueOf(option.get()); - return option.getDisplayText(new LiteralText(value.substring(0, Math.min(value.length(), 5)))); - }, new TranslatableText("midnightcontrols.tooltip.left_dead_zone")); + return option.getDisplayText(Text.literal(value.substring(0, Math.min(value.length(), 5)))); + }, Text.translatable("midnightcontrols.tooltip.left_dead_zone")); this.invertsRightXAxis = new SpruceToggleBooleanOption("midnightcontrols.menu.invert_right_x_axis", () -> MidnightControlsConfig.invertRightXAxis, value -> MidnightControlsConfig.invertRightXAxis = value, null); this.invertsRightYAxis = new SpruceToggleBooleanOption("midnightcontrols.menu.invert_right_y_axis", () -> MidnightControlsConfig.invertRightYAxis, value -> MidnightControlsConfig.invertRightYAxis = value, null); this.unfocusedInputOption = new SpruceToggleBooleanOption("midnightcontrols.menu.unfocused_input", () -> MidnightControlsConfig.unfocusedInput, - value -> MidnightControlsConfig.unfocusedInput = value, new TranslatableText("midnightcontrols.tooltip.unfocused_input")); + value -> MidnightControlsConfig.unfocusedInput = value, Text.translatable("midnightcontrols.tooltip.unfocused_input")); this.virtualMouseOption = new SpruceToggleBooleanOption("midnightcontrols.menu.virtual_mouse", () -> MidnightControlsConfig.virtualMouse, - value -> MidnightControlsConfig.virtualMouse = value, new TranslatableText("midnightcontrols.tooltip.virtual_mouse")); + value -> MidnightControlsConfig.virtualMouse = value, Text.translatable("midnightcontrols.tooltip.virtual_mouse")); } @Override @@ -246,9 +244,9 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { } @Override - public void onClose() { + public void close() { MidnightControlsConfig.save(); - super.onClose(); + super.close(); } private int getTextHeight() { @@ -273,22 +271,22 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { tabs.getList().setBackground(new MidnightControlsBackground()); this.addDrawableChild(tabs); - tabs.addSeparatorEntry(new TranslatableText("midnightcontrols.menu.separator.general")); - tabs.addTabEntry(new TranslatableText("midnightcontrols.menu.title.general"), null, + tabs.addSeparatorEntry(Text.translatable("midnightcontrols.menu.separator.general")); + tabs.addTabEntry(Text.translatable("midnightcontrols.menu.title.general"), null, this::buildGeneralTab); - tabs.addTabEntry(new TranslatableText("midnightcontrols.menu.title.gameplay"), null, + tabs.addTabEntry(Text.translatable("midnightcontrols.menu.title.gameplay"), null, this::buildGameplayTab); - tabs.addTabEntry(new TranslatableText("midnightcontrols.menu.title.visual"), null, + tabs.addTabEntry(Text.translatable("midnightcontrols.menu.title.visual"), null, this::buildVisualTab); - tabs.addSeparatorEntry(new TranslatableText("options.controls")); - tabs.addTabEntry(new TranslatableText("midnightcontrols.menu.title.controller_controls"), null, + tabs.addSeparatorEntry(Text.translatable("options.controls")); + tabs.addTabEntry(Text.translatable("midnightcontrols.menu.title.controller_controls"), null, this::buildControllerControlsTab); - tabs.addSeparatorEntry(new TranslatableText("midnightcontrols.menu.separator.controller")); - tabs.addTabEntry(new TranslatableText("midnightcontrols.menu.title.controller"), null, + tabs.addSeparatorEntry(Text.translatable("midnightcontrols.menu.separator.controller")); + tabs.addTabEntry(Text.translatable("midnightcontrols.menu.title.controller"), null, this::buildControllerTab); - tabs.addTabEntry(new TranslatableText("midnightcontrols.menu.title.mappings.string"), null, + tabs.addTabEntry(Text.translatable("midnightcontrols.menu.title.mappings.string"), null, this::buildMappingsStringEditorTab); } @@ -332,17 +330,17 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { var root = new SpruceContainerWidget(Position.origin(), width, height); var aboutMappings1 = new SpruceLabelWidget(Position.of(0, 2), - new TranslatableText("midnightcontrols.controller.mappings.1", SDL2_GAMEPAD_TOOL), + Text.translatable("midnightcontrols.controller.mappings.1", SDL2_GAMEPAD_TOOL), width, true); var gamepadToolUrlLabel = new SpruceLabelWidget(Position.of(0, aboutMappings1.getHeight() + 4), this.controllerMappingsUrlText, width, label -> Util.getOperatingSystem().open(GAMEPAD_TOOL_URL), true); - gamepadToolUrlLabel.setTooltip(new TranslatableText("chat.link.open")); + gamepadToolUrlLabel.setTooltip(Text.translatable("chat.link.open")); var aboutMappings3 = new SpruceLabelWidget(Position.of(0, aboutMappings1.getHeight() + gamepadToolUrlLabel.getHeight() + 6), - new TranslatableText("midnightcontrols.controller.mappings.3", Formatting.GREEN.toString(), Formatting.RESET.toString()), + Text.translatable("midnightcontrols.controller.mappings.3", Formatting.GREEN.toString(), Formatting.RESET.toString()), width, true); int listHeight = height - 8 - aboutMappings1.getHeight() - aboutMappings3.getHeight() - gamepadToolUrlLabel.getHeight(); @@ -401,8 +399,7 @@ public class MidnightControlsSettingsScreen extends SpruceScreen { bufferBuilder.vertex(matrix, (float)x2, (float)y2, 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.end(); - BufferRenderer.draw(bufferBuilder); + BufferRenderer.drawWithShader(bufferBuilder.end()); RenderSystem.enableTexture(); RenderSystem.disableBlend(); matrixStack.pop(); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/ReloadControllerMappingsOption.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/ReloadControllerMappingsOption.java index bd3f1db..372cce3 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/ReloadControllerMappingsOption.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/ReloadControllerMappingsOption.java @@ -14,8 +14,7 @@ import dev.lambdaurora.spruceui.option.SpruceSimpleActionOption; import dev.lambdaurora.spruceui.widget.SpruceButtonWidget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.toast.SystemToast; -import net.minecraft.text.LiteralText; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import org.jetbrains.annotations.Nullable; import java.util.function.Consumer; @@ -35,7 +34,7 @@ public class ReloadControllerMappingsOption { if (client.currentScreen instanceof MidnightControlsSettingsScreen) client.currentScreen.init(client, client.getWindow().getScaledWidth(), client.getWindow().getScaledHeight()); client.getToastManager().add(SystemToast.create(client, SystemToast.Type.TUTORIAL_HINT, - new TranslatableText("midnightcontrols.controller.mappings.updated"), LiteralText.EMPTY)); - }, new TranslatableText("midnightcontrols.tooltip.reload_controller_mappings")); + Text.translatable("midnightcontrols.controller.mappings.updated"), Text.empty())); + }, Text.translatable("midnightcontrols.tooltip.reload_controller_mappings")); } } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java index 4a2c9a6..8ee1f17 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/RingScreen.java @@ -13,7 +13,7 @@ import eu.midnightdust.midnightcontrols.client.MidnightControlsClient; import eu.midnightdust.midnightcontrols.client.ring.RingPage; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; /** * Represents the controls ring screen. @@ -26,7 +26,7 @@ public class RingScreen extends Screen { protected final MidnightControlsClient mod; public RingScreen() { - super(new TranslatableText("midnightcontrols.menu.title.ring")); + super(Text.literal("midnightcontrols.menu.title.ring")); this.mod = MidnightControlsClient.get(); } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/TouchscreenOverlay.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/TouchscreenOverlay.java index 55809f3..8273a21 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/TouchscreenOverlay.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/TouchscreenOverlay.java @@ -22,7 +22,7 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.TexturedButtonWidget; import net.minecraft.client.option.KeyBinding; import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; -import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; import net.minecraft.util.Arm; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; @@ -52,7 +52,7 @@ public class TouchscreenOverlay extends Screen { public TouchscreenOverlay(@NotNull MidnightControlsClient mod) { - super(new LiteralText("Touchscreen overlay")); + super(Text.literal("Touchscreen overlay")); this.mod = mod; this.passEvents = true; } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControllerButtonWidget.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControllerButtonWidget.java index 7aac73a..d29c89a 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControllerButtonWidget.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControllerButtonWidget.java @@ -16,7 +16,6 @@ import dev.lambdaurora.spruceui.SpruceTexts; import dev.lambdaurora.spruceui.widget.AbstractSpruceIconButtonWidget; import net.minecraft.client.MinecraftClient; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; @@ -35,13 +34,13 @@ public class ControllerButtonWidget extends AbstractSpruceIconButtonWidget { public void update() { int length = binding.getButton().length; this.setMessage(this.binding.isNotBound() ? SpruceTexts.NOT_BOUND.copy() : - (length > 0 ? ButtonBinding.getLocalizedButtonName(binding.getButton()[0]) : new LiteralText("<>"))); + (length > 0 ? ButtonBinding.getLocalizedButtonName(binding.getButton()[0]) : Text.literal("<>"))); } @Override public Text getMessage() { if (this.binding.getButton().length > 1) - return LiteralText.EMPTY; + return Text.empty(); return super.getMessage(); } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControllerControlsWidget.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControllerControlsWidget.java index f8f2c67..ce2c823 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControllerControlsWidget.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControllerControlsWidget.java @@ -19,7 +19,7 @@ import dev.lambdaurora.spruceui.widget.SpruceButtonWidget; import dev.lambdaurora.spruceui.widget.container.SpruceContainerWidget; import net.minecraft.client.gui.screen.option.ControlsOptionsScreen; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import org.aperlambda.lambdacommon.utils.function.Predicates; import java.util.ArrayList; @@ -46,7 +46,7 @@ public class ControllerControlsWidget extends SpruceContainerWidget { protected void init() { this.addChild(new SpruceButtonWidget(Position.of(this, this.width / 2 - 155, 18), 310, 20, - new TranslatableText("midnightcontrols.menu.keyboard_controls"), + Text.translatable("midnightcontrols.menu.keyboard_controls"), btn -> this.client.setScreen(new ControlsOptionsScreen(null, this.client.options)))); this.bindingsListWidget = new ControlsListWidget(Position.of(this, 0, 43), this.width, this.height - 43 - 35, this); this.addChild(this.bindingsListWidget); @@ -57,7 +57,7 @@ public class ControllerControlsWidget extends SpruceContainerWidget { @Override public void renderWidget(MatrixStack matrices, int mouseX, int mouseY, float delta) { - drawCenteredText(matrices, this.client.textRenderer, new TranslatableText("midnightcontrols.menu.title.controller_controls"), + drawCenteredText(matrices, this.client.textRenderer, Text.translatable("midnightcontrols.menu.title.controller_controls"), this.getX() + this.width / 2, this.getY() + 4, 16777215); this.resetButton.setActive(InputManager.streamBindings().anyMatch(Predicates.not(ButtonBinding::isDefault))); super.renderWidget(matrices, mouseX, mouseY, delta); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControlsListWidget.java b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControlsListWidget.java index 8e91d33..1282bbb 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControlsListWidget.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/gui/widget/ControlsListWidget.java @@ -27,9 +27,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import net.minecraft.util.Formatting; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -93,17 +91,17 @@ public class ControlsListWidget extends SpruceEntryListWidget MidnightControlsConfig.setButtonBinding(binding, binding.getDefaultButton())) { protected Text getNarrationMessage() { - return new TranslatableText("narrator.controls.reset", bindingName); + return Text.translatable("narrator.controls.reset", bindingName); } }; this.children.add(this.resetButton); @@ -116,7 +114,7 @@ public class ControlsListWidget extends SpruceEntryListWidget ").formatted(Formatting.WHITE); + var text = Text.literal("> ").formatted(Formatting.WHITE); text.append(this.editButton.getMessage().copy().formatted(Formatting.YELLOW)); - this.editButton.setMessage(text.append(new LiteralText(" <").formatted(Formatting.WHITE))); + this.editButton.setMessage(text.append(Text.literal(" <").formatted(Formatting.WHITE))); } else if (!this.binding.isNotBound() && InputManager.hasDuplicatedBindings(this.binding)) { var text = this.editButton.getMessage().copy(); this.editButton.setMessage(text.formatted(Formatting.RED)); @@ -264,7 +262,7 @@ public class ControlsListWidget extends SpruceEntryListWidget { + this.addDrawableChild(new ButtonWidget(j, k, 150, 20, Text.translatable("midnightcontrols.menu.title.controller").append("..."), (button) -> { this.client.setScreen(new MidnightControlsSettingsScreen(this, false)); })); } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameOptionsMixin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameOptionsMixin.java index 7ce3470..84291fc 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameOptionsMixin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/GameOptionsMixin.java @@ -10,6 +10,8 @@ package eu.midnightdust.midnightcontrols.client.mixin; import net.minecraft.client.option.GameOptions; +import net.minecraft.client.option.SimpleOption; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -22,13 +24,13 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; * Sets the default of the Auto-Jump option to false. */ @Mixin(GameOptions.class) -public class GameOptionsMixin { - @Shadow - public boolean autoJump; +public abstract class GameOptionsMixin { + + @Shadow public abstract SimpleOption getAutoJump(); @Inject(method = "load", at = @At("HEAD")) public void onInit(CallbackInfo ci) { // Set default value of the Auto-Jump option to false. - this.autoJump = false; + getAutoJump().setValue(false); } } diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MinecraftClientMixin.java b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MinecraftClientMixin.java index f98f39b..98796f2 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MinecraftClientMixin.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/mixin/MinecraftClientMixin.java @@ -138,7 +138,7 @@ public abstract class MinecraftClientMixin { hitResult = mod.reacharound.withSideForReacharound(hitResult, stackInHand); int previousStackCount = stackInHand.getCount(); - var result = this.interactionManager.interactBlock(this.player, this.world, hand, hitResult); + var result = this.interactionManager.interactBlock(this.player, hand, hitResult); if (result.isAccepted()) { if (result.shouldSwingHand()) { this.player.swingHand(hand); diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/ring/KeyBindingRingAction.java b/src/main/java/eu/midnightdust/midnightcontrols/client/ring/KeyBindingRingAction.java index 8da8fa5..cf34e18 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/ring/KeyBindingRingAction.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/ring/KeyBindingRingAction.java @@ -15,7 +15,7 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.option.KeyBinding; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.TranslatableText; +import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -49,7 +49,7 @@ public class KeyBindingRingAction extends RingAction { @Override public void drawIcon(@NotNull MatrixStack matrices, @NotNull TextRenderer textRenderer, int x, int y, boolean hovered) { - drawCenteredText(matrices, textRenderer, new TranslatableText(this.getName()), x + 25, y + 25 - textRenderer.fontHeight / 2, 0xffffff); + drawCenteredText(matrices, textRenderer, Text.translatable(this.getName()), x + 25, y + 25 - textRenderer.fontHeight / 2, 0xffffff); } protected static class Factory implements RingAction.Factory { diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/ring/RingAction.java b/src/main/java/eu/midnightdust/midnightcontrols/client/ring/RingAction.java index fb2be50..1062b26 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/ring/RingAction.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/ring/RingAction.java @@ -15,7 +15,6 @@ import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.aperlambda.lambdacommon.utils.Nameable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -43,7 +42,7 @@ public abstract class RingAction extends DrawableHelper implements Nameable { * @return the text name */ public Text getTextName() { - return new TranslatableText(this.getName()); + return Text.translatable(this.getName()); } /** diff --git a/src/main/java/eu/midnightdust/midnightcontrols/client/ring/RingButtonMode.java b/src/main/java/eu/midnightdust/midnightcontrols/client/ring/RingButtonMode.java index 9ba3e17..0a94c41 100644 --- a/src/main/java/eu/midnightdust/midnightcontrols/client/ring/RingButtonMode.java +++ b/src/main/java/eu/midnightdust/midnightcontrols/client/ring/RingButtonMode.java @@ -10,7 +10,6 @@ package eu.midnightdust.midnightcontrols.client.ring; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableText; import org.aperlambda.lambdacommon.utils.Nameable; import org.jetbrains.annotations.NotNull; @@ -31,7 +30,7 @@ public enum RingButtonMode implements Nameable { RingButtonMode(@NotNull String name) { this.name = name; - this.text = new TranslatableText(this.getTranslationKey()); + this.text = Text.translatable(this.getTranslationKey()); } /** diff --git a/src/main/resources/assets/midnightcontrols/lang/de_de.json b/src/main/resources/assets/midnightcontrols/lang/de_de.json index 5007465..0ffa312 100644 --- a/src/main/resources/assets/midnightcontrols/lang/de_de.json +++ b/src/main/resources/assets/midnightcontrols/lang/de_de.json @@ -31,6 +31,10 @@ "midnightcontrols.action.swap_hands": "Hände wechseln", "midnightcontrols.action.toggle_perspective": "Perspektive wechseln", "midnightcontrols.action.toggle_smooth_camera": "Cinematische Kamera", + "midnightcontrols.action.page_back": "Vorherige Seite", + "midnightcontrols.action.page_next": "Nächste Seite", + "midnightcontrols.action.take": "Item nehmen", + "midnightcontrols.action.take_all": "Stack nehmen", "midnightcontrols.action.use": "Benutzen", "midnightcontrols.action.zoom": "Zoom", "midnightcontrols.action.zoom_in": "Zoom erhöhen", diff --git a/src/main/resources/assets/midnightcontrols/lang/en_us.json b/src/main/resources/assets/midnightcontrols/lang/en_us.json index aa7b287..7e86297 100644 --- a/src/main/resources/assets/midnightcontrols/lang/en_us.json +++ b/src/main/resources/assets/midnightcontrols/lang/en_us.json @@ -31,6 +31,10 @@ "midnightcontrols.action.swap_hands": "Swap Hands", "midnightcontrols.action.toggle_perspective": "Toggle Perspective", "midnightcontrols.action.toggle_smooth_camera": "Toggle Cinematic Camera", + "midnightcontrols.action.page_back": "Previous Page", + "midnightcontrols.action.page_next": "Next Page", + "midnightcontrols.action.take": "Take Item", + "midnightcontrols.action.take_all": "Take Stack", "midnightcontrols.action.use": "Use", "midnightcontrols.action.zoom": "Zoom", "midnightcontrols.action.zoom_in": "Increase Zoom",