From f2d25d8b0570e90f189d4482b836baa0de641435 Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Tue, 12 Mar 2024 17:12:09 +0100 Subject: [PATCH] Added a configurable key-bind for the modifier used by mouse-wheel items (color applicator) --- .../resources/assets/ae2/lang/en_us.json | 1 + .../guidebook/hotkey/OpenGuideHotkey.java | 12 ++---------- src/main/java/appeng/core/AppEngClient.java | 18 ++++++++++++++---- .../localization/LocalizationProvider.java | 1 + 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/generated/resources/assets/ae2/lang/en_us.json b/src/generated/resources/assets/ae2/lang/en_us.json index 70c9b792844..111b0e84465 100644 --- a/src/generated/resources/assets/ae2/lang/en_us.json +++ b/src/generated/resources/assets/ae2/lang/en_us.json @@ -956,6 +956,7 @@ "item.ae2.yellow_smart_dense_cable": "Yellow ME Dense Smart Cable", "key.ae2.category": "Applied Energistics 2", "key.ae2.guide": "Open Guide for Items", + "key.ae2.mouse_wheel_item_modifier": "Modifier for Mouse-Wheel Items", "key.ae2.portable_fluid_cell": "Open Portable Fluid Cell", "key.ae2.portable_item_cell": "Open Portable Item Cell", "key.ae2.wireless_terminal": "Open Wireless Terminal", diff --git a/src/main/java/appeng/client/guidebook/hotkey/OpenGuideHotkey.java b/src/main/java/appeng/client/guidebook/hotkey/OpenGuideHotkey.java index 5dc350b900b..bceb514b3e6 100644 --- a/src/main/java/appeng/client/guidebook/hotkey/OpenGuideHotkey.java +++ b/src/main/java/appeng/client/guidebook/hotkey/OpenGuideHotkey.java @@ -6,7 +6,6 @@ import com.mojang.blaze3d.platform.InputConstants; import org.jetbrains.annotations.Nullable; -import org.lwjgl.glfw.GLFW; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,7 +14,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; @@ -29,7 +27,6 @@ import appeng.client.guidebook.indices.ItemIndex; import appeng.client.guidebook.screen.GuideScreen; import appeng.core.AEConfig; -import appeng.core.AppEng; import appeng.core.AppEngClient; /** @@ -37,17 +34,12 @@ */ public final class OpenGuideHotkey { private static final KeyMapping OPEN_GUIDE_MAPPING = new KeyMapping( - "key.ae2.guide", GLFW.GLFW_KEY_G, "key.ae2.category"); - - static { - // Should only occur in tooltips (which is only in UI) - OPEN_GUIDE_MAPPING.setKeyConflictContext(KeyConflictContext.GUI); - } + "key.ae2.guide", KeyConflictContext.GUI, InputConstants.Type.KEYSYM, InputConstants.KEY_G, + "key.ae2.category"); private static final Logger LOG = LoggerFactory.getLogger(OpenGuideHotkey.class); private static final int TICKS_TO_OPEN = 10; - private static final ResourceLocation TOOLTIP_PHASE = AppEng.makeId("open_guide_for_item"); private static boolean newTick = true; diff --git a/src/main/java/appeng/core/AppEngClient.java b/src/main/java/appeng/core/AppEngClient.java index 5f208d8d555..c17ecbade6c 100644 --- a/src/main/java/appeng/core/AppEngClient.java +++ b/src/main/java/appeng/core/AppEngClient.java @@ -20,11 +20,13 @@ import java.util.Objects; +import com.mojang.blaze3d.platform.InputConstants; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; @@ -51,6 +53,7 @@ import net.neoforged.neoforge.client.event.RegisterDimensionSpecialEffectsEvent; import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; import net.neoforged.neoforge.client.event.RegisterParticleProvidersEvent; +import net.neoforged.neoforge.client.settings.KeyConflictContext; import net.neoforged.neoforge.common.NeoForge; import net.neoforged.neoforge.event.TickEvent; import net.neoforged.neoforge.event.server.ServerStartingEvent; @@ -98,7 +101,6 @@ import appeng.siteexport.SiteExporter; import appeng.spatial.SpatialStorageDimensionIds; import appeng.spatial.SpatialStorageSkyProperties; -import appeng.util.InteractionUtil; import appeng.util.Platform; /** @@ -116,6 +118,13 @@ public class AppEngClient extends AppEngBase { */ private CableRenderMode prevCableRenderMode = CableRenderMode.STANDARD; + /** + * This modifier key has to be held to activate mouse wheel items. + */ + private static final KeyMapping MOUSE_WHEEL_ITEM_MODIFIER = new KeyMapping( + "key.ae2.mouse_wheel_item_modifier", KeyConflictContext.IN_GAME, InputConstants.Type.KEYSYM, + InputConstants.KEY_LSHIFT, "key.ae2.category"); + private final Guide guide; public AppEngClient(IEventBus modEventBus) { @@ -217,6 +226,7 @@ private void registerHotkeys(RegisterKeyMappingsEvent e) { if (AEConfig.instance().isGuideHotkeyEnabled()) { e.register(OpenGuideHotkey.getHotkey()); } + e.register(MOUSE_WHEEL_ITEM_MODIFIER); Hotkeys.finalizeRegistration(e::register); } @@ -299,10 +309,10 @@ private void wheelEvent(final InputEvent.MouseScrollingEvent me) { final Minecraft mc = Minecraft.getInstance(); final Player player = mc.player; - if (InteractionUtil.isInAlternateUseMode(player)) { - final boolean mainHand = player.getItemInHand(InteractionHand.MAIN_HAND) + if (MOUSE_WHEEL_ITEM_MODIFIER.isDown()) { + var mainHand = player.getItemInHand(InteractionHand.MAIN_HAND) .getItem() instanceof IMouseWheelItem; - final boolean offHand = player.getItemInHand(InteractionHand.OFF_HAND).getItem() instanceof IMouseWheelItem; + var offHand = player.getItemInHand(InteractionHand.OFF_HAND).getItem() instanceof IMouseWheelItem; if (mainHand || offHand) { NetworkHandler.instance().sendToServer(new MouseWheelPacket(me.getScrollDeltaY() > 0)); diff --git a/src/main/java/appeng/datagen/providers/localization/LocalizationProvider.java b/src/main/java/appeng/datagen/providers/localization/LocalizationProvider.java index 26db9f484af..5ca30483507 100644 --- a/src/main/java/appeng/datagen/providers/localization/LocalizationProvider.java +++ b/src/main/java/appeng/datagen/providers/localization/LocalizationProvider.java @@ -127,6 +127,7 @@ private void generateLocalizations() { add("key.ae2.portable_item_cell", "Open Portable Item Cell"); add("key.ae2.wireless_terminal", "Open Wireless Terminal"); add("key.ae2.guide", "Open Guide for Items"); + add("key.ae2.mouse_wheel_item_modifier", "Modifier for Mouse-Wheel Items"); add("key.toggle_focus.desc", "Toggle search box focus"); add("stat.ae2.items_extracted", "Items extracted from ME Storage"); add("stat.ae2.items_inserted", "Items added to ME Storage");