From d76975ec6adbead06519dfc428392fe2c608a028 Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Tue, 12 May 2026 15:23:18 +0100 Subject: [PATCH 01/12] chore: update keybind registration We can do without PlatformClient#registerKeyMappingCategory on both Neo and Fabric, by using similar category gathering code on each side Also added API docs to PlatformClient --- .../platform/client/PlatformClient.java | 25 +++++++++++++++++-- .../client/FabricPlatformClientImpl.java | 12 +++++---- gradle.properties | 2 +- .../client/NeoPlatformClientImpl.java | 8 +++--- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java index 66780add..008052b7 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java @@ -8,6 +8,7 @@ import java.util.Map; import java.util.ServiceLoader; +/// This interface abstracts some common clientside actions which have differing NeoForge and Fabric implementations. public interface PlatformClient { PlatformClient INSTANCE = ServiceLoader.load(PlatformClient.class).findFirst().orElseThrow(); @@ -15,15 +16,35 @@ static PlatformClient get() { return INSTANCE; } + /// Send a network packet to the server. + /// + /// @param payload the packet to send void sendToServer(CustomPacketPayload payload); + /// Register one or more resource pack reload listeners, to be called when client-side resource packs reload. + /// + /// @param modId your mod's unique ID + /// @param listeners a map of unique listener ID's to the listeners to register void addResourcePackReloadListeners(String modId, Map listeners); + /// Register a resource pack reload listeneers, to be called when client-side resource packs reload. + /// + /// @param modId your mod's unique ID + /// @param id the reload listener's unique ID + /// @param listener the listener to register default void addResourcePackReloadListener(String modId, Identifier id, PreparableReloadListener listener) { addResourcePackReloadListeners(modId, Map.of(id, listener)); } - KeyMapping.Category registerKeyMappingCategory(Identifier id); - + /// Register one or more keymappings with vanilla. + /// + /// **IMPORTANT**: all keymappings for any single keymapping category _must_ be registered in a single call to this + /// method, or you will get a "Category is already registered" exception from vanilla. It is fine to call this method + /// multiple times, as long as the same category isn't passed to more than one invocation of this method. + /// + /// @param modId your mod's unique ID + /// @param keyMappings one or more keymapping objects + /// @throws IllegalArgumentException if the same category is passed to multiple cals of this method, or if the + /// method is called with no keymappings void registerKeyMapping(String modId, KeyMapping... keyMappings); } diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java index 8a47d39e..b0df7731 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java @@ -9,8 +9,11 @@ import net.minecraft.resources.Identifier; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.resources.PreparableReloadListener; +import org.apache.commons.lang3.Validate; +import java.util.HashSet; import java.util.Map; +import java.util.Set; public class FabricPlatformClientImpl implements PlatformClient { @Override @@ -24,15 +27,14 @@ public void addResourcePackReloadListeners(String modId, Map 0, "must provide at least one keymapping"); + Set cats = new HashSet<>(); for (var k : keyMappings) { + cats.add(k.getCategory()); KeyMappingHelper.registerKeyMapping(k); } + cats.forEach(c -> KeyMapping.Category.register(c.id())); } } diff --git a/gradle.properties b/gradle.properties index d8dff15c..508b5838 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.daemon=false # Mod mod_id=ftblibrary readable_name=FTB Library -mod_version=3 +mod_version=4 mod_author=FTB Team # Maven diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java index 90e75a53..2b166c99 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java @@ -11,6 +11,7 @@ import net.neoforged.neoforge.client.event.AddClientReloadListenersEvent; import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; import net.neoforged.neoforge.client.network.ClientPacketDistributor; +import org.apache.commons.lang3.Validate; import org.jspecify.annotations.NonNull; import java.util.HashSet; @@ -29,13 +30,10 @@ public void addResourcePackReloadListeners(String modId, Map 0, "must provide at least one keymapping"); + getModBusOrThrow(modId).addListener(RegisterKeyMappingsEvent.class, event -> { Set cats = new HashSet<>(); for (var k : keyMappings) { From cb4e9143693e2c7d8603b3958660cba873a77822 Mon Sep 17 00:00:00 2001 From: Michael Hillcox Date: Tue, 12 May 2026 17:03:10 +0100 Subject: [PATCH 02/12] Feature: Support key modifiers on NeoForge + Fabric within the shim (#190) * feat: key modifier support * feat: cleanup code dupe + contract mess * feat: helper methods * chore: improve api design a touch * fix: minor cleanup * fix: use record over pair * fix: key is defaulted, no need to check + throw --- .../platform/client/PlatformClient.java | 3 + .../platform/client/keys/KeyConflict.java | 7 + .../client/keys/KeyMappingConfig.java | 135 ++++++++++++++++++ .../platform/client/keys/KeyModifier.java | 9 ++ fabric/build.gradle | 15 ++ .../integrations/keys/AmecsKeyProvider.java | 29 ++++ .../fabric/integrations/keys/KeyProvider.java | 8 ++ .../integrations/keys/VanillaKeyProvider.java | 16 +++ .../client/FabricPlatformClientImpl.java | 22 +++ .../client/NeoPlatformClientImpl.java | 35 +++++ 10 files changed, 279 insertions(+) create mode 100644 common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyConflict.java create mode 100644 common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMappingConfig.java create mode 100644 common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyModifier.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java index 008052b7..3c046280 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java @@ -1,5 +1,6 @@ package dev.ftb.mods.ftblibrary.platform.client; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; import net.minecraft.client.KeyMapping; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.Identifier; @@ -47,4 +48,6 @@ default void addResourcePackReloadListener(String modId, Identifier id, Preparab /// @throws IllegalArgumentException if the same category is passed to multiple cals of this method, or if the /// method is called with no keymappings void registerKeyMapping(String modId, KeyMapping... keyMappings); + + KeyMapping createKeyBinding(KeyMappingConfig config); } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyConflict.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyConflict.java new file mode 100644 index 00000000..7152d013 --- /dev/null +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyConflict.java @@ -0,0 +1,7 @@ +package dev.ftb.mods.ftblibrary.platform.client.keys; + +public enum KeyConflict { + EVERYWHERE, + ANY_GUI, + IN_GAME +} diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMappingConfig.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMappingConfig.java new file mode 100644 index 00000000..45038471 --- /dev/null +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMappingConfig.java @@ -0,0 +1,135 @@ +package dev.ftb.mods.ftblibrary.platform.client.keys; + +import com.mojang.blaze3d.platform.InputConstants; +import net.minecraft.client.KeyMapping; +import org.jspecify.annotations.Nullable; + +public record KeyMappingConfig( + String id, + KeyMapping.Category category, + TypedKey key, + KeyModifier modifier, + @Nullable TypedKey noModifierFallbackKey, + KeyConflict conflictContext +) { + public String translationKey() { + return "key." + category.id().getNamespace() + "." + category.id().getPath() + "." + id; + } + + public InputConstants.Type type(boolean supportsModifiers) { + var selectedKey = !supportsModifiers && noModifierFallbackKey != null ? noModifierFallbackKey : key; + return selectedKey.type(); + } + + public int code(boolean supportsModifiers) { + var selectedKey = !supportsModifiers && noModifierFallbackKey != null ? noModifierFallbackKey : key; + return selectedKey.code(); + } + + public static Builder builder(String id, KeyMapping.Category category) { + return new Builder(id, category); + } + + public static class Builder { + private final String id; + private final KeyMapping.Category category; + + // We only support one modifier even though the Fabric library supports multiple because NeoForge's KeyModifier only supports one + // When on Vanilla / Fabric without a mod, this is completely ignored anyway. + private KeyModifier modifier = KeyModifier.NONE; + + private TypedKey key = TypedKey.fromKey(InputConstants.UNKNOWN); + + // If there is no modifier support on the current platform, this key will override the main key + // as there may be a case where a key with modifier makes sense but without the modifier, it doesn't and another key is preferred. + private @Nullable TypedKey noModifierFallbackKey = null; + + // This is ignored on Fabric even with the mod as this is a NeoForge concept. + private KeyConflict conflictContext = KeyConflict.EVERYWHERE; + + private Builder(String id, KeyMapping.Category category) { + this.id = id; + this.category = category; + } + + public Builder shift() { + return modifier(KeyModifier.SHIFT); + } + + public Builder control() { + return modifier(KeyModifier.CONTROL); + } + + public Builder superModifier() { + return modifier(KeyModifier.SUPER); + } + + public Builder alt() { + return modifier(KeyModifier.ALT); + } + + public Builder modifier(KeyModifier modifier) { + this.modifier = modifier; + return this; + } + + public Builder key(InputConstants.Type type, int code) { + this.key = new TypedKey(type, code); + return this; + } + + public Builder key(InputConstants.Key key) { + this.key = TypedKey.fromKey(key); + return this; + } + + public Builder keyboard(int keyCode) { + return key(InputConstants.Type.KEYSYM.getOrCreate(keyCode)); + } + + public Builder mouse(int buttonCode) { + return key(InputConstants.Type.MOUSE.getOrCreate(buttonCode)); + } + + public Builder scan(int buttonCode) { + return key(InputConstants.Type.SCANCODE.getOrCreate(buttonCode)); + } + + public Builder noModifierFallbackKey(InputConstants.Key noModifierFallbackKey) { + this.noModifierFallbackKey = TypedKey.fromKey(noModifierFallbackKey); + return this; + } + + public Builder noModifierFallbackKey(InputConstants.Type type, int code) { + this.noModifierFallbackKey = new TypedKey(type, code); + return this; + } + + public Builder noModifierFallbackKeyboard(int keyCode) { + return noModifierFallbackKey(InputConstants.Type.KEYSYM.getOrCreate(keyCode)); + } + + public Builder noModifierFallbackMouse(int buttonCode) { + return noModifierFallbackKey(InputConstants.Type.MOUSE.getOrCreate(buttonCode)); + } + + public Builder noModifierFallbackScan(int buttonCode) { + return noModifierFallbackKey(InputConstants.Type.SCANCODE.getOrCreate(buttonCode)); + } + + public Builder conflictContext(KeyConflict conflictContext) { + this.conflictContext = conflictContext; + return this; + } + + public KeyMappingConfig build() { + return new KeyMappingConfig(id, category, key, modifier, noModifierFallbackKey, conflictContext); + } + } + + public record TypedKey(InputConstants.Type type, int code) { + public static TypedKey fromKey(InputConstants.Key key) { + return new TypedKey(key.getType(), key.getValue()); + } + } +} diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyModifier.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyModifier.java new file mode 100644 index 00000000..a34b316c --- /dev/null +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyModifier.java @@ -0,0 +1,9 @@ +package dev.ftb.mods.ftblibrary.platform.client.keys; + +public enum KeyModifier { + NONE, + SHIFT, + CONTROL, + SUPER, + ALT, +} diff --git a/fabric/build.gradle b/fabric/build.gradle index e045fbaa..4c73e618 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -26,6 +26,16 @@ loom { apply from: "https://raw.githubusercontent.com/FTBTeam/mods-meta/main/gradle/extra-local-mods.gradle" +repositories { + maven { + url = uri("https://maven.siphalor.de/") + } + + maven { + url = "https://maven.terraformersmc.com/" + } +} + dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" @@ -35,5 +45,10 @@ dependencies { compileOnly("mezz.jei:jei-${minecraft_version}-fabric-api:${jei_version}") localRuntime("mezz.jei:jei-${minecraft_version}-fabric:${jei_version}") + compileOnly "de.siphalor.amecs.amecs-key-modifiers:amecs-key-modifiers-${amecs_key_modifiers_version}" + localRuntime "de.siphalor.amecs.amecs-bundle:amecs-bundle-${amecs_key_bundle_version}" + + localRuntime "com.terraformersmc:modmenu:${modmenu_version}" + include(api("de.marhali:json5-java:${json5_version}")) } diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java new file mode 100644 index 00000000..62f02790 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java @@ -0,0 +1,29 @@ +package dev.ftb.mods.ftblibrary.fabric.integrations.keys; + +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; +import de.siphalor.amecs.key_modifiers.api.AmecsKeyMappingWithKeyModifiers; +import de.siphalor.amecs.key_modifiers.api.AmecsKeyModifierCombination; +import net.minecraft.client.KeyMapping; + +public class AmecsKeyProvider implements KeyProvider { + @Override + public KeyMapping create(KeyMappingConfig config) { + return new AmecsKeyMappingWithKeyModifiers( + config.id(), + config.type(true), + config.code(true), + config.category(), + fromModifier(config.modifier()) + ); + } + + private AmecsKeyModifierCombination fromModifier(KeyModifier modifier) { + return new AmecsKeyModifierCombination( + modifier == KeyModifier.ALT, + // I don't think this is really the correct behaviour tbh. + modifier == KeyModifier.CONTROL || modifier == KeyModifier.SUPER, + modifier == KeyModifier.SHIFT + ); + } +} diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java new file mode 100644 index 00000000..63dcb738 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java @@ -0,0 +1,8 @@ +package dev.ftb.mods.ftblibrary.fabric.integrations.keys; + +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import net.minecraft.client.KeyMapping; + +public interface KeyProvider { + KeyMapping create(KeyMappingConfig config); +} diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java new file mode 100644 index 00000000..840b0e54 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java @@ -0,0 +1,16 @@ +package dev.ftb.mods.ftblibrary.fabric.integrations.keys; + +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import net.minecraft.client.KeyMapping; + +public class VanillaKeyProvider implements KeyProvider { + @Override + public KeyMapping create(KeyMappingConfig config) { + return new KeyMapping( + config.translationKey(), + config.type(false), + config.code(false), + config.category() + ); + } +} diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java index b0df7731..9aba283b 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java @@ -1,21 +1,30 @@ package dev.ftb.mods.ftblibrary.fabric.platform.client; +import dev.ftb.mods.ftblibrary.fabric.integrations.keys.AmecsKeyProvider; +import dev.ftb.mods.ftblibrary.fabric.integrations.keys.KeyProvider; +import dev.ftb.mods.ftblibrary.fabric.integrations.keys.VanillaKeyProvider; import dev.ftb.mods.ftblibrary.platform.client.PlatformClient; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.resource.v1.ResourceLoader; +import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.KeyMapping; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.Identifier; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.resources.PreparableReloadListener; import org.apache.commons.lang3.Validate; +import org.jspecify.annotations.Nullable; import java.util.HashSet; import java.util.Map; import java.util.Set; public class FabricPlatformClientImpl implements PlatformClient { + @Nullable + private KeyProvider keyProvider = null; + @Override public void sendToServer(CustomPacketPayload payload) { ClientPlayNetworking.send(payload); @@ -37,4 +46,17 @@ public void registerKeyMapping(String modId, KeyMapping... keyMappings) { } cats.forEach(c -> KeyMapping.Category.register(c.id())); } + + @Override + public KeyMapping createKeyBinding(KeyMappingConfig config) { + if (keyProvider == null) { + if (FabricLoader.getInstance().isModLoaded("amecs")) { + keyProvider = new AmecsKeyProvider(); + } else { + keyProvider = new VanillaKeyProvider(); + } + } + + return keyProvider.create(config); + } } diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java index 2b166c99..8efcfe4c 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java @@ -1,6 +1,9 @@ package dev.ftb.mods.ftblibrary.neoforge.platform.client; import dev.ftb.mods.ftblibrary.platform.client.PlatformClient; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyConflict; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; import net.minecraft.client.KeyMapping; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.Identifier; @@ -12,6 +15,8 @@ import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; import net.neoforged.neoforge.client.network.ClientPacketDistributor; import org.apache.commons.lang3.Validate; +import net.neoforged.neoforge.client.settings.IKeyConflictContext; +import net.neoforged.neoforge.client.settings.KeyConflictContext; import org.jspecify.annotations.NonNull; import java.util.HashSet; @@ -44,9 +49,39 @@ public void registerKeyMapping(String modId, KeyMapping... keyMappings) { }); } + @Override + public KeyMapping createKeyBinding(KeyMappingConfig config) { + return new KeyMapping( + config.translationKey(), + convertConflictContext(config.conflictContext()), + fromModifier(config.modifier()), + config.type(true), + config.code(true), + config.category() + ); + } + + private net.neoforged.neoforge.client.settings.KeyModifier fromModifier(KeyModifier modifier) { + return switch (modifier) { + case ALT -> net.neoforged.neoforge.client.settings.KeyModifier.ALT; + case SHIFT -> net.neoforged.neoforge.client.settings.KeyModifier.SHIFT; + case CONTROL -> net.neoforged.neoforge.client.settings.KeyModifier.CONTROL; + case SUPER -> net.neoforged.neoforge.client.settings.KeyModifier.CONTROL_OR_COMMAND; + case NONE -> net.neoforged.neoforge.client.settings.KeyModifier.NONE; + }; + } + private static @NonNull IEventBus getModBusOrThrow(String modId) { return ModList.get().getModContainerById(modId) .map(ModContainer::getEventBus) .orElseThrow(); } + + private IKeyConflictContext convertConflictContext(KeyConflict conflict) { + return switch (conflict) { + case IN_GAME -> KeyConflictContext.IN_GAME; + case ANY_GUI -> KeyConflictContext.GUI; + case EVERYWHERE -> KeyConflictContext.UNIVERSAL; + }; + } } From e51b55ee456f06b109d021f9c016fac27d4b5871 Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Thu, 14 May 2026 11:47:04 +0100 Subject: [PATCH 03/12] fix: EditStringConfigOverlay - ensure changes always applied --- .../ftblibrary/client/config/gui/EditStringConfigOverlay.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditStringConfigOverlay.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditStringConfigOverlay.java index a8a1c366..0b824848 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditStringConfigOverlay.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditStringConfigOverlay.java @@ -100,7 +100,8 @@ public void drawBackground(GuiGraphicsExtractor graphics, Theme theme, int x, in protected void onAccepted(Button btn, MouseButton mb) { if (textBox.isTextValid()) { - callback.save(config.updateValue(currentValue)); + config.updateValue(currentValue); + callback.save(true); getGui().popModalPanel(); } } From 7365da5a6d49354a73f84ab272323da85b9c55e8 Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Thu, 14 May 2026 13:41:13 +0100 Subject: [PATCH 04/12] chore: updated zh_cn translations to match 1.21.1 --- .../assets/ftblibrary/lang/zh_cn.json | 70 +++++++++++++++++-- 1 file changed, 65 insertions(+), 5 deletions(-) diff --git a/common/src/main/resources/assets/ftblibrary/lang/zh_cn.json b/common/src/main/resources/assets/ftblibrary/lang/zh_cn.json index 98d58d8f..7a4bcb8d 100644 --- a/common/src/main/resources/assets/ftblibrary/lang/zh_cn.json +++ b/common/src/main/resources/assets/ftblibrary/lang/zh_cn.json @@ -19,30 +19,39 @@ "gui.inactive": "未激活", "gui.settings": "设置", "gui.rename": "重命名", - "gui.search_box": "搜索中...", + "gui.search_box": "搜索中…", "gui.move": "移动", "gui.copy": "复制", "gui.paste": "粘贴", "gui.cut": "剪切", "gui.other": "其他", - "gui.server_forced": "服务器强制加载: %s", + "gui.server_forced": "服务器强制加载:%s", "gui.online": "在线", "gui.offline": "离线", "gui.whitelist": "白名单", "gui.blacklist": "黑名单", "gui.color": "颜色", - "gui.downloading": "下载中...", + "gui.downloading": "下载中…", "gui.infinite": "无限", "delete_item": "你想要删除“%s”么?", "lat_support": "喜欢这个Mod吗?点击支持我的项目!", "ftblibrary.select_fluid.gui": "选择流体", "ftblibrary.select_item.list_mode": "列出模式", "ftblibrary.select_item.list_mode.all": "所有物品", + "ftblibrary.select_fluid.list_mode.all": "所有流体", "ftblibrary.select_item.list_mode.inv": "物品栏", + "ftblibrary.select_item.list_mode.jei": "JEI", + "ftblibrary.select_item.list_mode.rei": "REI", + "ftblibrary.select_item.list_mode.emi": "EMI", "ftblibrary.select_item.count": "设置大小", "ftblibrary.select_item.nbt": "编辑NBT", "ftblibrary.select_item.caps": "编辑功能", "ftblibrary.select_item.display_name": "设置显示名称", + "ftblibrary.select_image.scanning": "正在扫描图像:这可能需要几秒钟…", + "ftblibrary.select_image.rescan": "重新扫描图像", + "ftblibrary.select_image.all_images": "所有图像", + "ftblibrary.select_entity.all_entities": "所有生物实体", + "ftblibrary.unsaved_changes": "放弃未保存的更改?", "config.group.value": "参数", "sidebar_button.ftblibrary.toggle.gamemode": "切换游戏模式", "sidebar_button.ftblibrary.toggle.gamemode.tooltip": "在生存模式和创造模式间切换", @@ -51,5 +60,56 @@ "sidebar_button.ftblibrary.toggle.day": "设置为白天", "sidebar_button.ftblibrary.toggle.day.tooltip": "设置为白天", "sidebar_button.ftblibrary.toggle.night": "设置为黑夜", - "sidebar_button.ftblibrary.toggle.night.tooltip": "设置为黑夜" -} + "sidebar_button.ftblibrary.toggle.night.tooltip": "设置为黑夜", + "sidebar_button.ftblibrary.config": "FTB库客户端配置", + "sidebar_button.ftblibrary.config.tooltip": "打开FTB客户端库配置", + "sidebar_button.ftblibrary.config.enter_edit_mode": "右键单击以编辑侧边栏按钮", + "item.ftblibrary.fluid_container": "流体容器", + "item.ftblibrary.fluid_container.use": "右击储罐以清空容器", + "ftblibrary.mb": "%d mB / %s", + "ftblibrary.empty": "空", + "ftblibrary.read_only": "只读", + "ftblibrary.gui.listSize1": "1个物品", + "ftblibrary.gui.listSize": "%d个物品", + "ftblibrary.gui.error": "错误!", + "ftblibrary.gui.search": "搜索…", + "ftblibrary.gui.nbt_copied": "NBT已复制到剪贴板", + "ftblibrary.gui.edit_tag_name": "编辑标签名称", + "ftblibrary.gui.edit_tag_value": "编辑标签值", + "ftblibrary.gui.no_selection": "未选择任何内容", + "ftblibrary.gui.key_reference": "关键参考", + "ftblibrary.gui.enabled": "启用", + "ftblibrary.gui.disabled": "禁用", + "ftblibrary.client_settings": "客户端配置", + "ftblibrary.client_settings.tooltips": "提示", + "ftblibrary.client_settings.tooltips.item_modname": "在物品选择界面显示模组名称", + "ftblibrary.client_settings.tooltips.fluid_modname": "在流体选择界面显示模组名称", + "ftblibrary.client_settings.tooltips.image_modname": "在图像选择界面显示模组名称", + "ftblibrary.client_settings.tooltips.entity_modname": "在实体面选择界面显示模组名称", + "ftblibrary.client_settings.sidebar": "侧边栏按钮", + "ftblibrary.client_settings.sidebar.enabled": "启用侧边栏按钮", + "ftblibrary.client_settings.sidebar.position": "侧边栏按钮位置", + "ftblibrary.palette.chat": "聊天颜色", + "ftblibrary.palette.dye": "染料颜色", + "ftblibrary.palette.nord": "Nord主题", + "ftblibrary.palette.reds": "红色", + "ftblibrary.palette.greens": "绿色", + "ftblibrary.palette.blues": "蓝色", + "ftblibrary.palette.recent": "最近使用的颜色", + "ftblibrary.panel.position.top_left": "左上", + "ftblibrary.panel.position.top": "上", + "ftblibrary.panel.position.top_right": "右上", + "ftblibrary.panel.position.left": "左", + "ftblibrary.panel.position.right": "右", + "ftblibrary.panel.position.bottom_left": "左下", + "ftblibrary.panel.position.bottom": "下", + "ftblibrary.panel.position.bottom_right": "右下", + "ftblibrary.server_settings": "服务端配置", + "dimension.minecraft.overworld": "主世界", + "dimension.minecraft.the_nether": "下界", + "dimension.minecraft.the_end": "末地", + "dimension.hyperbox.hyperbox": "Hyperbox", + "dimension.ae2.spatial_storage": "AE2空间存储", + "itemGroup.ftbsuite.creative_tab": "FTB套件", + "item.ftblibrary.icon_item": "FTB图标" +} \ No newline at end of file From 5054107f35069e81115bf29a09f06dc61cedc49a Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Thu, 14 May 2026 14:17:46 +0100 Subject: [PATCH 05/12] chore: changelog updated --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 578d122b..f680b74d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [26.1.2.4-beta] + +### Added +* Added an API abstraction for keybind registration + * Specifically to handle the differences in how key modifiers are handled via NeoForge (builtin) and Fabric (via AMECS mod, maybe others in future) + +### Fixed +* Fixed an issue with `EditStringConfigOverlay` causing `accepted` to be `false` on callbacks when value unchanged, even if Accept is pressed + ## [26.1.2.3-beta] ### Fixed From 9f0a284c8df50f26c70e0a1c87daa119235b257b Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Fri, 15 May 2026 16:50:56 +0100 Subject: [PATCH 06/12] feat: lots of work on keybinding API Improved the KeyReferenceScreen --- .../mods/ftblibrary/client/gui/input/Key.java | 12 ++- .../gui/screens/KeyReferenceScreen.java | 55 ++++++++---- .../platform/client/PlatformClient.java | 26 +++--- .../platform/client/keys/KeyMap.java | 34 ++++++++ .../integrations/keys/AmecsKeyProvider.java | 32 ++++++- .../fabric/integrations/keys/KeyProvider.java | 6 ++ .../integrations/keys/VanillaKeyProvider.java | 13 +++ .../platform/client/FabricKeyMapImpl.java | 55 ++++++++++++ .../client/FabricPlatformClientImpl.java | 44 ++-------- .../platform/client/NeoKeyMapImpl.java | 85 +++++++++++++++++++ .../client/NeoPlatformClientImpl.java | 65 ++------------ 11 files changed, 298 insertions(+), 129 deletions(-) create mode 100644 common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricKeyMapImpl.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/input/Key.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/input/Key.java index 50b2098f..189a5685 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/input/Key.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/input/Key.java @@ -1,7 +1,7 @@ package dev.ftb.mods.ftblibrary.client.gui.input; -import dev.ftb.mods.ftblibrary.platform.Platform; import com.mojang.blaze3d.platform.InputConstants; +import dev.ftb.mods.ftblibrary.platform.client.PlatformClient; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.input.KeyEvent; @@ -23,7 +23,7 @@ public boolean esc() { public boolean escOrInventory() { // arch expect //noinspection ConstantValue - return esc() || matchesWithoutConflicts(Minecraft.getInstance().options.keyInventory, getInputMapping()); + return esc() || matches(Minecraft.getInstance().options.keyInventory); } public boolean enter() { @@ -58,7 +58,11 @@ public KeyModifiers modifiers() { return new KeyModifiers(event.modifiers()); } - private static boolean matchesWithoutConflicts(KeyMapping keyBinding, InputConstants.Key keyCode) { - return Platform.get().misc().matchesWithoutConflicts(keyBinding, keyCode); + public boolean matches(KeyMapping keyMapping) { + return PlatformClient.get().keymap().matches(keyMapping, event); } + +// private static boolean matchesWithoutConflicts(KeyMapping keyBinding, InputConstants.Key keyCode) { +// return Platform.get().misc().matchesWithoutConflicts(keyBinding, keyCode); +// } } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/KeyReferenceScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/KeyReferenceScreen.java index ba9a7e54..43bd98bc 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/KeyReferenceScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/KeyReferenceScreen.java @@ -8,7 +8,9 @@ import dev.ftb.mods.ftblibrary.client.gui.widget.*; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icons; +import dev.ftb.mods.ftblibrary.platform.client.PlatformClient; import net.minecraft.ChatFormatting; +import net.minecraft.client.KeyMapping; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; @@ -24,10 +26,16 @@ public class KeyReferenceScreen extends BaseScreen { private final Panel textPanel; private final PanelScrollBar scrollBar; private final SimpleTextButton closeButton; - private final String[] translationKeys; + private final List> lines; + private int widestLeft = 0; + private int widestOverall = 0; public KeyReferenceScreen(String... translationKeys) { - this.translationKeys = translationKeys; + lines = buildText(translationKeys); + for (var line : lines) { + widestLeft = Math.max(widestLeft, getGui().getTheme().getStringWidth(line.getLeft())); + widestOverall = Math.max(widestOverall, widestLeft + getGui().getTheme().getStringWidth(line.getRight())); + } textPanel = new TextPanel(this); @@ -40,7 +48,7 @@ public void onClicked(MouseButton button) { scrollBar = new PanelScrollBar(this, textPanel); } - private static List> buildText(String... translationKeys) { + private List> buildText(String... translationKeys) { List> res = new ArrayList<>(); for (String translationKey : translationKeys) { for (String line : I18n.get(translationKey).split("\\n")) { @@ -50,7 +58,7 @@ private static List> buildText(String... translationK case 1 -> res.add(Pair.of(Component.literal(parts[0]).withStyle(ChatFormatting.YELLOW, ChatFormatting.UNDERLINE), Component.empty())); default -> - res.add(Pair.of(Component.literal(parts[0]), Component.literal(parts[1]).withStyle(ChatFormatting.GRAY))); + res.add(substituteKeyMapping(parts[0], parts[1])); } } res.add(Pair.of(Component.empty(), Component.empty())); @@ -58,9 +66,31 @@ private static List> buildText(String... translationK return res; } + private static Pair substituteKeyMapping(String part0, String part1) { + int s = part0.indexOf('{'); + int e = part0.indexOf('}'); + if (s >= 0 && e >= 0 && e > s + 1) { + String key = part0.substring(s + 1, e); + var keyMapping = KeyMapping.get(key); + if (keyMapping != null) { + var c0 = Component.literal(part0.substring(0, s)) + .append(PlatformClient.get().keymap().getKeyMappingDisplayName(keyMapping)) + .append(part0.substring(e + 1)); + Component c1 = part1.isEmpty() ? Component.translatable(keyMapping.getName()) : Component.literal(part1); + return Pair.of(c0, c1.copy().withStyle(ChatFormatting.GRAY)); + } + } + return Pair.of(Component.literal(part0), Component.literal(part1).withStyle(ChatFormatting.GRAY)); + } + @Override public boolean onInit() { - return setSizeProportional(0.75f, 0.8f); + boolean ok = setSizeProportional(0.75f, 0.8f); + + setWidth(Math.min(getWidth(), widestOverall + GUTTER_SIZE * 3 + 10)); + setHeight(Math.min(getHeight(), (getGui().getTheme().getFontHeight() + 2) * lines.size() + 10)); + + return ok; } @Override @@ -104,8 +134,7 @@ protected void drawTextBackground(GuiGraphicsExtractor graphics, Theme theme, in theme.drawPanelBackground(graphics, x, y, w, h); } - private static class TwoColumnList extends Widget { - private final int widestL; + private class TwoColumnList extends Widget { private final List> data; private final List> reflowed = new ArrayList<>(); @@ -113,10 +142,6 @@ public TwoColumnList(Panel p, List> data) { super(p); this.data = data; - this.widestL = data.stream() - .map(e -> getGui().getTheme().getStringWidth(e.getLeft())) - .max(Integer::compareTo) - .orElse(0); } @Override @@ -137,7 +162,7 @@ private void reflowText() { reflowed.add(Pair.of(entry.getLeft(), FormattedCharSequence.EMPTY)); h += theme.getFontHeight() + 3; } else { - var l = theme.getFont().split(entry.getRight(), maxWidth - 10 - widestL); + var l = theme.getFont().split(entry.getRight(), maxWidth - 10 - widestLeft); if (!l.isEmpty()) { reflowed.add(Pair.of(entry.getLeft(), l.getFirst())); for (int i = 1; i < l.size(); i++) { @@ -158,10 +183,10 @@ public void draw(GuiGraphicsExtractor graphics, Theme theme, int x, int y, int w for (var entry : reflowed) { boolean header = entry.getRight() == FormattedCharSequence.EMPTY; int leftWidth = theme.getStringWidth(entry.getLeft()); - int xOff = header ? (width - leftWidth) / 2 : widestL - leftWidth - 2; + int xOff = header ? (width - leftWidth) / 2 : widestLeft - leftWidth - 2; theme.drawString(graphics, entry.getLeft(), x + xOff, yPos); if (!header) { - theme.drawString(graphics, entry.getRight(), x + widestL + 10, yPos); + theme.drawString(graphics, entry.getRight(), x + widestLeft + 10, yPos); } yPos += theme.getFontHeight() + (header ? 3 : 1); } @@ -174,7 +199,7 @@ private class TextPanel extends Panel { public TextPanel(Panel panel) { super(panel); - textWidget = new TwoColumnList(this, buildText(translationKeys)); + textWidget = new TwoColumnList(this, lines); } @Override diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java index 3c046280..c25a43cc 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java @@ -1,6 +1,6 @@ package dev.ftb.mods.ftblibrary.platform.client; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; import net.minecraft.client.KeyMapping; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.Identifier; @@ -17,6 +17,8 @@ static PlatformClient get() { return INSTANCE; } + KeyMap keymap(); + /// Send a network packet to the server. /// /// @param payload the packet to send @@ -37,17 +39,13 @@ default void addResourcePackReloadListener(String modId, Identifier id, Preparab addResourcePackReloadListeners(modId, Map.of(id, listener)); } - /// Register one or more keymappings with vanilla. - /// - /// **IMPORTANT**: all keymappings for any single keymapping category _must_ be registered in a single call to this - /// method, or you will get a "Category is already registered" exception from vanilla. It is fine to call this method - /// multiple times, as long as the same category isn't passed to more than one invocation of this method. - /// - /// @param modId your mod's unique ID - /// @param keyMappings one or more keymapping objects - /// @throws IllegalArgumentException if the same category is passed to multiple cals of this method, or if the - /// method is called with no keymappings - void registerKeyMapping(String modId, KeyMapping... keyMappings); - - KeyMapping createKeyBinding(KeyMappingConfig config); + /** + * @param modId the mod + * @param keyMappings the mappings + * @deprecated use {@link KeyMap#registerKeyMapping(String, KeyMapping...)} + */ + @Deprecated(forRemoval = true) + default void registerKeyMapping(String modId, KeyMapping... keyMappings) { + keymap().registerKeyMapping(modId, keyMappings); + } } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java new file mode 100644 index 00000000..a3c727bc --- /dev/null +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java @@ -0,0 +1,34 @@ +package dev.ftb.mods.ftblibrary.platform.client.keys; + +import com.mojang.blaze3d.platform.Window; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.network.chat.Component; + +public interface KeyMap { + /// Register one or more keymappings with vanilla. + /// + /// **IMPORTANT**: all keymappings for any single keymapping category _must_ be registered in a single call to this + /// method, or you will get a "Category is already registered" exception from vanilla. It is fine to call this method + /// multiple times, as long as the same category isn't passed to more than one invocation of this method. + /// + /// @param modId your mod's unique ID + /// @param keyMappings one or more keymapping objects + /// @throws IllegalArgumentException if the same category is passed to multiple cals of this method, or if the + /// method is called with no keymappings + void registerKeyMapping(String modId, KeyMapping... keyMappings); + + /// Create a `KeyMapping` object in a platform-independent fashion. The returned object may be some subclass + /// or extension of the vanilla `KeyMapping` object, but can be used as one. + /// + /// @param config defines the setup for the keymapping object + /// @return a new keymapping object + KeyMapping createKeyBinding(KeyMappingConfig config); + + /// Get a displayable string for the key and possible modifiers for a {@code KeyMapping} object + /// + /// @param keyMapping the keymapping object + Component getKeyMappingDisplayName(KeyMapping keyMapping); + + boolean matches(KeyMapping mapping, KeyEvent event); +} diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java index 62f02790..531a8f30 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java @@ -1,16 +1,22 @@ package dev.ftb.mods.ftblibrary.fabric.integrations.keys; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; import de.siphalor.amecs.key_modifiers.api.AmecsKeyMappingWithKeyModifiers; import de.siphalor.amecs.key_modifiers.api.AmecsKeyModifierCombination; +import de.siphalor.amecs.key_modifiers.api.AmecsKeyModifiers; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; import net.minecraft.client.KeyMapping; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.network.chat.Component; + +import java.util.ArrayList; +import java.util.List; public class AmecsKeyProvider implements KeyProvider { @Override public KeyMapping create(KeyMappingConfig config) { return new AmecsKeyMappingWithKeyModifiers( - config.id(), + config.translationKey(), config.type(true), config.code(true), config.category(), @@ -18,6 +24,26 @@ public KeyMapping create(KeyMappingConfig config) { ); } + @Override + public Component getKeyMappingDisplayName(KeyMapping keyMapping) { + return keyMapping.getTranslatedKeyMessage(); + } + + @Override + public boolean matchModifier(KeyMapping mapping, KeyEvent event) { + var modifiers = asAmecsMapping(mapping).getDefaultAmecsKeyModifiers(); + return (event.hasAltDown() || !modifiers.getAlt()) + && (event.hasControlDown() || !modifiers.getControl()) + && (event.hasShiftDown() || !modifiers.getShift()); + } + + private AmecsKeyMappingWithKeyModifiers asAmecsMapping(KeyMapping keyMapping) { + if (keyMapping instanceof AmecsKeyMappingWithKeyModifiers amecs) { + return amecs; + } + throw new IllegalStateException("using AmecsKeyProvider but keymapping is " + keyMapping.getClass()); + } + private AmecsKeyModifierCombination fromModifier(KeyModifier modifier) { return new AmecsKeyModifierCombination( modifier == KeyModifier.ALT, diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java index 63dcb738..7c99df0e 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java @@ -2,7 +2,13 @@ import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; import net.minecraft.client.KeyMapping; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.network.chat.Component; public interface KeyProvider { KeyMapping create(KeyMappingConfig config); + + Component getKeyMappingDisplayName(KeyMapping keyMapping); + + boolean matchModifier(KeyMapping mapping, KeyEvent event); } diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java index 840b0e54..fd1e94e4 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java @@ -2,6 +2,8 @@ import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; import net.minecraft.client.KeyMapping; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.network.chat.Component; public class VanillaKeyProvider implements KeyProvider { @Override @@ -13,4 +15,15 @@ public KeyMapping create(KeyMappingConfig config) { config.category() ); } + + @Override + public Component getKeyMappingDisplayName(KeyMapping keyMapping) { + return keyMapping.getTranslatedKeyMessage(); + } + + @Override + public boolean matchModifier(KeyMapping mapping, KeyEvent event) { + // no modifiers supported by vanilla + return event.modifiers() == 0; + } } diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricKeyMapImpl.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricKeyMapImpl.java new file mode 100644 index 00000000..4bec29e7 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricKeyMapImpl.java @@ -0,0 +1,55 @@ +package dev.ftb.mods.ftblibrary.fabric.platform.client; + +import dev.ftb.mods.ftblibrary.fabric.integrations.keys.AmecsKeyProvider; +import dev.ftb.mods.ftblibrary.fabric.integrations.keys.KeyProvider; +import dev.ftb.mods.ftblibrary.fabric.integrations.keys.VanillaKeyProvider; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.util.Lazy; +import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.network.chat.Component; +import org.apache.commons.lang3.Validate; + +import java.util.HashSet; +import java.util.Set; + +public class FabricKeyMapImpl implements KeyMap { + private final Lazy keyProvider = Lazy.of(FabricKeyMapImpl::initKeyProvider); + + private static KeyProvider initKeyProvider() { + if (FabricLoader.getInstance().isModLoaded("amecs")) { + return new AmecsKeyProvider(); + } else { + return new VanillaKeyProvider(); + } + } + + @Override + public void registerKeyMapping(String modId, KeyMapping... keyMappings) { + Validate.isTrue(keyMappings.length > 0, "must provide at least one keymapping"); + Set cats = new HashSet<>(); + for (var k : keyMappings) { + cats.add(k.getCategory()); + KeyMappingHelper.registerKeyMapping(k); + } + cats.forEach(c -> KeyMapping.Category.register(c.id())); + } + + @Override + public KeyMapping createKeyBinding(KeyMappingConfig config) { + return keyProvider.get().create(config); + } + + @Override + public Component getKeyMappingDisplayName(KeyMapping keyMapping) { + return keyProvider.get().getKeyMappingDisplayName(keyMapping); + } + + @Override + public boolean matches(KeyMapping mapping, KeyEvent event) { + return mapping.matches(event) && keyProvider.get().matchModifier(mapping, event); + } +} diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java index 9aba283b..7bd65ba3 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java @@ -1,29 +1,23 @@ package dev.ftb.mods.ftblibrary.fabric.platform.client; -import dev.ftb.mods.ftblibrary.fabric.integrations.keys.AmecsKeyProvider; -import dev.ftb.mods.ftblibrary.fabric.integrations.keys.KeyProvider; -import dev.ftb.mods.ftblibrary.fabric.integrations.keys.VanillaKeyProvider; import dev.ftb.mods.ftblibrary.platform.client.PlatformClient; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; -import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.resource.v1.ResourceLoader; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.client.KeyMapping; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.Identifier; import net.minecraft.server.packs.PackType; import net.minecraft.server.packs.resources.PreparableReloadListener; -import org.apache.commons.lang3.Validate; -import org.jspecify.annotations.Nullable; -import java.util.HashSet; import java.util.Map; -import java.util.Set; public class FabricPlatformClientImpl implements PlatformClient { - @Nullable - private KeyProvider keyProvider = null; + private final KeyMap keyMap = new FabricKeyMapImpl(); + + @Override + public KeyMap keymap() { + return keyMap; + } @Override public void sendToServer(CustomPacketPayload payload) { @@ -35,28 +29,4 @@ public void addResourcePackReloadListeners(String modId, Map ResourceLoader.get(PackType.CLIENT_RESOURCES).registerReloadListener(id, listener)); } - - @Override - public void registerKeyMapping(String modId, KeyMapping... keyMappings) { - Validate.isTrue(keyMappings.length > 0, "must provide at least one keymapping"); - Set cats = new HashSet<>(); - for (var k : keyMappings) { - cats.add(k.getCategory()); - KeyMappingHelper.registerKeyMapping(k); - } - cats.forEach(c -> KeyMapping.Category.register(c.id())); - } - - @Override - public KeyMapping createKeyBinding(KeyMappingConfig config) { - if (keyProvider == null) { - if (FabricLoader.getInstance().isModLoaded("amecs")) { - keyProvider = new AmecsKeyProvider(); - } else { - keyProvider = new VanillaKeyProvider(); - } - } - - return keyProvider.create(config); - } } diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java new file mode 100644 index 00000000..9344a8ee --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java @@ -0,0 +1,85 @@ +package dev.ftb.mods.ftblibrary.neoforge.platform.client; + +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.Window; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyConflict; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.network.chat.Component; +import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; +import net.neoforged.neoforge.client.settings.IKeyConflictContext; +import net.neoforged.neoforge.client.settings.KeyConflictContext; +import org.apache.commons.lang3.Validate; + +import java.util.HashSet; +import java.util.Set; + +import static dev.ftb.mods.ftblibrary.neoforge.platform.client.NeoPlatformClientImpl.getModBusOrThrow; + +public class NeoKeyMapImpl implements KeyMap { + @Override + public void registerKeyMapping(String modId, KeyMapping... keyMappings) { + Validate.isTrue(keyMappings.length > 0, "must provide at least one keymapping"); + + getModBusOrThrow(modId).addListener(RegisterKeyMappingsEvent.class, event -> { + Set cats = new HashSet<>(); + for (var k : keyMappings) { + cats.add(k.getCategory()); + event.register(k); + } + cats.forEach(event::registerCategory); + }); + } + + @Override + public KeyMapping createKeyBinding(KeyMappingConfig config) { + return new KeyMapping( + config.translationKey(), + convertConflictContext(config.conflictContext()), + fromModifier(config.modifier()), + config.type(true), + config.code(true), + config.category() + ); + } + + @Override + public Component getKeyMappingDisplayName(KeyMapping keyMapping) { + return keyMapping.getKeyModifier().getCombinedName(keyMapping.getKey(), () -> keyMapping.getKey().getDisplayName()); + } + + @Override + public boolean matches(KeyMapping mapping, KeyEvent event) { + return mapping.matches(event) && matchModifier(mapping, event); + } + + private boolean matchModifier(KeyMapping mapping, KeyEvent event) { + return switch (mapping.getKeyModifier()) { + case CONTROL, CONTROL_OR_COMMAND -> event.hasControlDown(); + case SHIFT -> event.hasShiftDown(); + case ALT -> event.hasAltDown(); + case NONE -> event.modifiers() == 0; + }; + } + + private net.neoforged.neoforge.client.settings.KeyModifier fromModifier(KeyModifier modifier) { + return switch (modifier) { + case ALT -> net.neoforged.neoforge.client.settings.KeyModifier.ALT; + case SHIFT -> net.neoforged.neoforge.client.settings.KeyModifier.SHIFT; + case CONTROL -> net.neoforged.neoforge.client.settings.KeyModifier.CONTROL; + case SUPER -> net.neoforged.neoforge.client.settings.KeyModifier.CONTROL_OR_COMMAND; + case NONE -> net.neoforged.neoforge.client.settings.KeyModifier.NONE; + }; + } + + private IKeyConflictContext convertConflictContext(KeyConflict conflict) { + return switch (conflict) { + case IN_GAME -> KeyConflictContext.IN_GAME; + case ANY_GUI -> KeyConflictContext.GUI; + case EVERYWHERE -> KeyConflictContext.UNIVERSAL; + }; + } +} diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java index 8efcfe4c..bfd20660 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java @@ -1,10 +1,7 @@ package dev.ftb.mods.ftblibrary.neoforge.platform.client; import dev.ftb.mods.ftblibrary.platform.client.PlatformClient; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyConflict; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; -import net.minecraft.client.KeyMapping; +import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.PreparableReloadListener; @@ -12,18 +9,18 @@ import net.neoforged.fml.ModContainer; import net.neoforged.fml.ModList; import net.neoforged.neoforge.client.event.AddClientReloadListenersEvent; -import net.neoforged.neoforge.client.event.RegisterKeyMappingsEvent; import net.neoforged.neoforge.client.network.ClientPacketDistributor; -import org.apache.commons.lang3.Validate; -import net.neoforged.neoforge.client.settings.IKeyConflictContext; -import net.neoforged.neoforge.client.settings.KeyConflictContext; -import org.jspecify.annotations.NonNull; -import java.util.HashSet; import java.util.Map; -import java.util.Set; public class NeoPlatformClientImpl implements PlatformClient { + private final KeyMap keymap = new NeoKeyMapImpl(); + + @Override + public KeyMap keymap() { + return keymap; + } + @Override public void sendToServer(CustomPacketPayload payload) { ClientPacketDistributor.sendToServer(payload); @@ -35,53 +32,9 @@ public void addResourcePackReloadListeners(String modId, Map 0, "must provide at least one keymapping"); - - getModBusOrThrow(modId).addListener(RegisterKeyMappingsEvent.class, event -> { - Set cats = new HashSet<>(); - for (var k : keyMappings) { - cats.add(k.getCategory()); - event.register(k); - } - cats.forEach(event::registerCategory); - }); - } - - @Override - public KeyMapping createKeyBinding(KeyMappingConfig config) { - return new KeyMapping( - config.translationKey(), - convertConflictContext(config.conflictContext()), - fromModifier(config.modifier()), - config.type(true), - config.code(true), - config.category() - ); - } - - private net.neoforged.neoforge.client.settings.KeyModifier fromModifier(KeyModifier modifier) { - return switch (modifier) { - case ALT -> net.neoforged.neoforge.client.settings.KeyModifier.ALT; - case SHIFT -> net.neoforged.neoforge.client.settings.KeyModifier.SHIFT; - case CONTROL -> net.neoforged.neoforge.client.settings.KeyModifier.CONTROL; - case SUPER -> net.neoforged.neoforge.client.settings.KeyModifier.CONTROL_OR_COMMAND; - case NONE -> net.neoforged.neoforge.client.settings.KeyModifier.NONE; - }; - } - - private static @NonNull IEventBus getModBusOrThrow(String modId) { + static IEventBus getModBusOrThrow(String modId) { return ModList.get().getModContainerById(modId) .map(ModContainer::getEventBus) .orElseThrow(); } - - private IKeyConflictContext convertConflictContext(KeyConflict conflict) { - return switch (conflict) { - case IN_GAME -> KeyConflictContext.IN_GAME; - case ANY_GUI -> KeyConflictContext.GUI; - case EVERYWHERE -> KeyConflictContext.UNIVERSAL; - }; - } } From 5746692f5586ea11520597108042df7beffff620 Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Fri, 15 May 2026 16:51:09 +0100 Subject: [PATCH 07/12] chore: added a bunch of package-info.java files --- .../ftb/mods/ftblibrary/core/mixin/fabric/package-info.java | 4 ++++ .../java/dev/ftb/mods/ftblibrary/fabric/package-info.java | 4 ++++ .../mods/ftblibrary/fabric/platform/client/package-info.java | 4 ++++ .../ftblibrary/fabric/platform/networking/package-info.java | 4 ++++ .../dev/ftb/mods/ftblibrary/fabric/platform/package-info.java | 4 ++++ .../ftblibrary/fabric/platform/registry/package-info.java | 4 ++++ .../ftblibrary/fabric/platform/transfer/package-info.java | 4 ++++ .../fabric/platform/transfer/simple/package-info.java | 4 ++++ .../dev/ftb/mods/ftblibrary/util/fabric/package-info.java | 4 ++++ .../dev/ftb/mods/ftblibrary/api/neoforge/package-info.java | 4 ++++ .../neoforge/integrations/platform/package-info.java | 4 ++++ .../java/dev/ftb/mods/ftblibrary/neoforge/package-info.java | 4 ++++ .../ftblibrary/neoforge/platform/client/package-info.java | 4 ++++ .../ftblibrary/neoforge/platform/networking/package-info.java | 4 ++++ .../ftb/mods/ftblibrary/neoforge/platform/package-info.java | 4 ++++ .../ftblibrary/neoforge/platform/registry/package-info.java | 4 ++++ .../ftblibrary/neoforge/platform/transfer/package-info.java | 4 ++++ .../neoforge/platform/transfer/simple/package-info.java | 4 ++++ .../dev/ftb/mods/ftblibrary/util/neoforge/package-info.java | 4 ++++ 19 files changed, 76 insertions(+) create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/core/mixin/fabric/package-info.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/package-info.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/package-info.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/networking/package-info.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/package-info.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/registry/package-info.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/transfer/package-info.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/transfer/simple/package-info.java create mode 100644 fabric/src/main/java/dev/ftb/mods/ftblibrary/util/fabric/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/api/neoforge/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/integrations/platform/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/networking/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/registry/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/transfer/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/transfer/simple/package-info.java create mode 100644 neoforge/src/main/java/dev/ftb/mods/ftblibrary/util/neoforge/package-info.java diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/core/mixin/fabric/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/core/mixin/fabric/package-info.java new file mode 100644 index 00000000..85f43d31 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/core/mixin/fabric/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.core.mixin.fabric; + +import org.jspecify.annotations.NullMarked; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/package-info.java new file mode 100644 index 00000000..2269305a --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.fabric; + +import org.jspecify.annotations.NullMarked; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/package-info.java new file mode 100644 index 00000000..296bd850 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.fabric.platform.client; + +import org.jspecify.annotations.NullMarked; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/networking/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/networking/package-info.java new file mode 100644 index 00000000..1e09642e --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/networking/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.fabric.platform.networking; + +import org.jspecify.annotations.NullMarked; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/package-info.java new file mode 100644 index 00000000..717c78ff --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.fabric.platform; + +import org.jspecify.annotations.NullMarked; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/registry/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/registry/package-info.java new file mode 100644 index 00000000..87dcf1a3 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/registry/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.fabric.platform.registry; + +import org.jspecify.annotations.NullMarked; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/transfer/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/transfer/package-info.java new file mode 100644 index 00000000..adae3477 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/transfer/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.fabric.platform.transfer; + +import org.jspecify.annotations.NullMarked; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/transfer/simple/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/transfer/simple/package-info.java new file mode 100644 index 00000000..814b9a35 --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/transfer/simple/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.fabric.platform.transfer.simple; + +import org.jspecify.annotations.NullMarked; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/util/fabric/package-info.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/util/fabric/package-info.java new file mode 100644 index 00000000..f0ed85cf --- /dev/null +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/util/fabric/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.util.fabric; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/api/neoforge/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/api/neoforge/package-info.java new file mode 100644 index 00000000..aeadad4e --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/api/neoforge/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.api.neoforge; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/integrations/platform/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/integrations/platform/package-info.java new file mode 100644 index 00000000..1d647171 --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/integrations/platform/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.neoforge.integrations.platform; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/package-info.java new file mode 100644 index 00000000..cbb84ec4 --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.neoforge; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/package-info.java new file mode 100644 index 00000000..d01e770f --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.neoforge.platform.client; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/networking/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/networking/package-info.java new file mode 100644 index 00000000..5b742308 --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/networking/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.neoforge.platform.networking; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/package-info.java new file mode 100644 index 00000000..7949dc91 --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.neoforge.platform; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/registry/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/registry/package-info.java new file mode 100644 index 00000000..ca392702 --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/registry/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.neoforge.platform.registry; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/transfer/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/transfer/package-info.java new file mode 100644 index 00000000..b35c67bc --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/transfer/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.neoforge.platform.transfer; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/transfer/simple/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/transfer/simple/package-info.java new file mode 100644 index 00000000..85bf56ab --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/transfer/simple/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.neoforge.platform.transfer.simple; + +import org.jspecify.annotations.NullMarked; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/util/neoforge/package-info.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/util/neoforge/package-info.java new file mode 100644 index 00000000..349b5801 --- /dev/null +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/util/neoforge/package-info.java @@ -0,0 +1,4 @@ +@NullMarked +package dev.ftb.mods.ftblibrary.util.neoforge; + +import org.jspecify.annotations.NullMarked; From 17b59e9a7de6f8519733a4fcf03f6a0e1954015d Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Fri, 15 May 2026 16:51:48 +0100 Subject: [PATCH 08/12] chore: import cleanup --- .../main/java/dev/ftb/mods/ftblibrary/FTBLibrary.java | 2 +- .../dev/ftb/mods/ftblibrary/FTBLibraryCommands.java | 10 +++++----- .../client/config/editable/EditableColor.java | 3 +-- .../client/config/editable/EditableEntityFace.java | 2 +- .../client/config/editable/EditableImageResource.java | 2 +- .../client/config/editable/EditableItemStack.java | 2 +- .../client/config/editable/EditableNumber.java | 1 - .../config/editable/EditableStringifiedConfig.java | 2 +- .../client/config/editable/EditableVariantConfig.java | 2 +- .../client/config/gui/EditConfigListScreen.java | 2 +- .../ftblibrary/client/config/gui/EditConfigScreen.java | 2 +- .../client/config/gui/resource/FluidStackResource.java | 1 - .../gui/screens/AbstractGroupedButtonListScreen.java | 2 +- .../client/gui/screens/AbstractThreePanelScreen.java | 4 ++-- .../mods/ftblibrary/client/gui/widget/BaseScreen.java | 4 ++-- .../client/gui/widget/ColorSelectorPanel.java | 2 +- .../ftblibrary/client/gui/widget/MultilineTextBox.java | 2 +- .../ftb/mods/ftblibrary/client/gui/widget/Panel.java | 9 +++++++-- .../mods/ftblibrary/client/gui/widget/ScrollBar.java | 2 +- .../ftb/mods/ftblibrary/client/gui/widget/TextBox.java | 2 +- .../ftb/mods/ftblibrary/client/gui/widget/Widget.java | 2 +- .../ftblibrary/client/icon/BulletIconRenderer.java | 4 ++-- .../config/serializer/Json5ConfigSerializer.java | 4 ++-- .../dev/ftb/mods/ftblibrary/icon/EntityIconLoader.java | 8 ++++---- .../main/java/dev/ftb/mods/ftblibrary/icon/Icon.java | 4 ++-- .../ftb/mods/ftblibrary/nbtedit/NBTEditorScreen.java | 2 +- .../mods/ftblibrary/platform/client/keys/KeyMap.java | 1 - .../ftb/mods/ftblibrary/sidebar/SidebarButtonData.java | 1 - .../dev/ftb/mods/ftblibrary/util/NetworkHelper.java | 4 ++-- .../ftb/mods/ftblibrary/util/TextComponentParser.java | 2 +- .../ftb/mods/ftblibrary/fabric/FTBLibraryFabric.java | 2 -- .../mods/ftblibrary/fabric/FTBLibraryFabricEvents.java | 2 -- .../fabric/integrations/keys/AmecsKeyProvider.java | 4 ---- .../ftblibrary/fabric/platform/FabricMiscImpl.java | 2 +- .../src/main/resources/ftblibrary-fabric.mixins.json | 4 ++-- .../mods/ftblibrary/neoforge/FTBLibraryNeoForge.java | 1 - .../mods/ftblibrary/neoforge/platform/NeoMiscImpl.java | 2 +- .../neoforge/platform/client/NeoKeyMapImpl.java | 2 -- 38 files changed, 49 insertions(+), 60 deletions(-) diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/FTBLibrary.java b/common/src/main/java/dev/ftb/mods/ftblibrary/FTBLibrary.java index c0a5463f..c12eab4f 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/FTBLibrary.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/FTBLibrary.java @@ -1,5 +1,6 @@ package dev.ftb.mods.ftblibrary; +import com.mojang.brigadier.CommandDispatcher; import dev.ftb.mods.ftblibrary.config.FTBLibraryClientConfig; import dev.ftb.mods.ftblibrary.config.FTBLibraryServerConfig; import dev.ftb.mods.ftblibrary.config.FTBLibraryStartupConfig; @@ -15,7 +16,6 @@ import dev.ftb.mods.ftblibrary.util.ModUtils; import dev.ftb.mods.ftblibrary.util.text.ExtendableTextColor; import dev.ftb.mods.ftblibrary.util.text.RainbowTextColor; -import com.mojang.brigadier.CommandDispatcher; import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/FTBLibraryCommands.java b/common/src/main/java/dev/ftb/mods/ftblibrary/FTBLibraryCommands.java index f6205a61..3cea43f5 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/FTBLibraryCommands.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/FTBLibraryCommands.java @@ -1,5 +1,10 @@ package dev.ftb.mods.ftblibrary; +import com.mojang.brigadier.Command; +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.serialization.JsonOps; import dev.ftb.mods.ftblibrary.config.FTBLibraryClientConfig; import dev.ftb.mods.ftblibrary.config.FTBLibraryServerConfig; import dev.ftb.mods.ftblibrary.nbtedit.NBTEditResponseHandlers; @@ -11,11 +16,6 @@ import dev.ftb.mods.ftblibrary.platform.network.Server2PlayNetworking; import dev.ftb.mods.ftblibrary.util.ModUtils; import dev.ftb.mods.ftblibrary.util.RegistryHelper; -import com.mojang.brigadier.Command; -import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.context.CommandContext; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.serialization.JsonOps; import net.minecraft.ChatFormatting; import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableColor.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableColor.java index 6b10ef16..650611e7 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableColor.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableColor.java @@ -1,13 +1,12 @@ package dev.ftb.mods.ftblibrary.client.config.editable; import dev.ftb.mods.ftblibrary.client.config.ConfigCallback; +import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.client.gui.widget.ColorSelectorPanel; import dev.ftb.mods.ftblibrary.client.gui.widget.Widget; -import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icon; import net.minecraft.network.chat.Component; -import org.jspecify.annotations.Nullable; public class EditableColor extends EditableConfigValue { private boolean allowAlphaEdit = false; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableEntityFace.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableEntityFace.java index 2ea354c4..77d041c3 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableEntityFace.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableEntityFace.java @@ -4,9 +4,9 @@ import dev.ftb.mods.ftblibrary.client.config.gui.resource.EntityFaceResource; import dev.ftb.mods.ftblibrary.client.config.gui.resource.SelectEntityFaceScreen; import dev.ftb.mods.ftblibrary.client.config.gui.resource.SelectableResource; +import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.client.gui.widget.Widget; -import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.util.TooltipList; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableImageResource.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableImageResource.java index 5ceceafe..3675d7c5 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableImageResource.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableImageResource.java @@ -5,9 +5,9 @@ import dev.ftb.mods.ftblibrary.client.config.gui.resource.ImageResource; import dev.ftb.mods.ftblibrary.client.config.gui.resource.SelectImageResourceScreen; import dev.ftb.mods.ftblibrary.client.config.gui.resource.SelectableResource; +import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.client.gui.widget.Widget; -import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.icon.IResourceIcon; import dev.ftb.mods.ftblibrary.icon.Icon; import dev.ftb.mods.ftblibrary.util.TooltipList; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableItemStack.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableItemStack.java index 83ebacda..fb72c336 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableItemStack.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableItemStack.java @@ -3,8 +3,8 @@ import dev.ftb.mods.ftblibrary.client.config.ConfigCallback; import dev.ftb.mods.ftblibrary.client.config.gui.resource.SelectItemStackScreen; import dev.ftb.mods.ftblibrary.client.config.gui.resource.SelectableResource; -import dev.ftb.mods.ftblibrary.client.gui.widget.Widget; import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; +import dev.ftb.mods.ftblibrary.client.gui.widget.Widget; import net.minecraft.network.chat.Component; import net.minecraft.world.item.ItemStack; import org.apache.commons.lang3.Validate; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableNumber.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableNumber.java index 7d5a73c9..1d10ff28 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableNumber.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableNumber.java @@ -4,7 +4,6 @@ import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.util.StringUtils; import net.minecraft.network.chat.Component; -import org.jspecify.annotations.Nullable; public abstract class EditableNumber extends EditableStringifiedConfig { public static final Color4I COLOR = Color4I.rgb(0xAA5AE8); diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableStringifiedConfig.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableStringifiedConfig.java index 361ac7c4..64db4499 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableStringifiedConfig.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableStringifiedConfig.java @@ -2,9 +2,9 @@ import dev.ftb.mods.ftblibrary.client.config.ConfigCallback; import dev.ftb.mods.ftblibrary.client.config.gui.EditStringConfigOverlay; +import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.client.gui.widget.BaseScreen; import dev.ftb.mods.ftblibrary.client.gui.widget.Widget; -import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import net.minecraft.network.chat.Component; import org.jspecify.annotations.Nullable; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableVariantConfig.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableVariantConfig.java index 4ba4e7ce..1bb6b3c3 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableVariantConfig.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/editable/EditableVariantConfig.java @@ -1,8 +1,8 @@ package dev.ftb.mods.ftblibrary.client.config.editable; import dev.ftb.mods.ftblibrary.client.config.ConfigCallback; -import dev.ftb.mods.ftblibrary.client.gui.widget.Widget; import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; +import dev.ftb.mods.ftblibrary.client.gui.widget.Widget; /** * A config value with some well-defined options, which can be cycled through. diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditConfigListScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditConfigListScreen.java index ae779434..e1934f91 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditConfigListScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditConfigListScreen.java @@ -1,5 +1,6 @@ package dev.ftb.mods.ftblibrary.client.config.gui; +import com.mojang.blaze3d.platform.InputConstants; import dev.ftb.mods.ftblibrary.client.config.ConfigCallback; import dev.ftb.mods.ftblibrary.client.config.editable.EditableConfigValue; import dev.ftb.mods.ftblibrary.client.config.editable.EditableList; @@ -16,7 +17,6 @@ import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icons; import dev.ftb.mods.ftblibrary.util.TooltipList; -import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditConfigScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditConfigScreen.java index 45d2cdb6..5dea4259 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditConfigScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/EditConfigScreen.java @@ -1,5 +1,6 @@ package dev.ftb.mods.ftblibrary.client.config.gui; +import com.mojang.blaze3d.platform.InputConstants; import dev.ftb.mods.ftblibrary.client.config.EditableConfigGroup; import dev.ftb.mods.ftblibrary.client.config.editable.EditableConfigValue; import dev.ftb.mods.ftblibrary.client.gui.input.Key; @@ -12,7 +13,6 @@ import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icons; import dev.ftb.mods.ftblibrary.util.TooltipList; -import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.resources.language.I18n; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/resource/FluidStackResource.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/resource/FluidStackResource.java index b8a331a9..b3fd0adb 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/resource/FluidStackResource.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/config/gui/resource/FluidStackResource.java @@ -4,7 +4,6 @@ import dev.ftb.mods.ftblibrary.client.util.TextureAtlasSpriteRef; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icon; -import dev.ftb.mods.ftblibrary.icon.TextureAtlasSpriteIcon; import dev.ftb.mods.ftblibrary.platform.fluid.FluidStack; import net.minecraft.core.component.DataComponentMap; import net.minecraft.core.component.DataComponentPatch; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/AbstractGroupedButtonListScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/AbstractGroupedButtonListScreen.java index 4b69637a..5059f6e8 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/AbstractGroupedButtonListScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/AbstractGroupedButtonListScreen.java @@ -1,5 +1,6 @@ package dev.ftb.mods.ftblibrary.client.gui.screens; +import com.mojang.blaze3d.platform.InputConstants; import dev.ftb.mods.ftblibrary.client.gui.input.Key; import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; @@ -11,7 +12,6 @@ import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icons; import dev.ftb.mods.ftblibrary.util.Lazy; -import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/AbstractThreePanelScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/AbstractThreePanelScreen.java index 21ae11a7..3d66afbb 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/AbstractThreePanelScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/AbstractThreePanelScreen.java @@ -1,5 +1,7 @@ package dev.ftb.mods.ftblibrary.client.gui.screens; +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.datafixers.util.Pair; import dev.ftb.mods.ftblibrary.client.gui.input.Key; import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.client.gui.theme.ThemeManager; @@ -7,8 +9,6 @@ import dev.ftb.mods.ftblibrary.client.icon.IconHelper; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icons; -import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.datafixers.util.Pair; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/BaseScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/BaseScreen.java index 12f19f8a..423e8a2b 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/BaseScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/BaseScreen.java @@ -1,5 +1,7 @@ package dev.ftb.mods.ftblibrary.client.gui.widget; +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.Window; import dev.ftb.mods.ftblibrary.client.gui.CursorType; import dev.ftb.mods.ftblibrary.client.gui.WidgetType; import dev.ftb.mods.ftblibrary.client.gui.input.Key; @@ -11,8 +13,6 @@ import dev.ftb.mods.ftblibrary.client.util.ClientUtils; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.util.TooltipList; -import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.platform.Window; import it.unimi.dsi.fastutil.booleans.BooleanConsumer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/ColorSelectorPanel.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/ColorSelectorPanel.java index 543b7154..d2fc44a7 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/ColorSelectorPanel.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/ColorSelectorPanel.java @@ -1,5 +1,6 @@ package dev.ftb.mods.ftblibrary.client.gui.widget; +import com.google.common.primitives.Ints; import dev.ftb.mods.ftblibrary.FTBLibrary; import dev.ftb.mods.ftblibrary.client.config.ConfigCallback; import dev.ftb.mods.ftblibrary.client.config.editable.EditableColor; @@ -11,7 +12,6 @@ import dev.ftb.mods.ftblibrary.config.FTBLibraryClientConfig; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icon; -import com.google.common.primitives.Ints; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox.java index a050568a..8c774d27 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/MultilineTextBox.java @@ -4,8 +4,8 @@ import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.client.icon.IconHelper; -import dev.ftb.mods.ftblibrary.mixin.common.MultilineTextFieldAccess; import dev.ftb.mods.ftblibrary.icon.Color4I; +import dev.ftb.mods.ftblibrary.mixin.common.MultilineTextFieldAccess; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.components.MultilineTextField; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/Panel.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/Panel.java index f0c9e012..5a7eec5d 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/Panel.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/Panel.java @@ -1,6 +1,8 @@ package dev.ftb.mods.ftblibrary.client.gui.widget; -import dev.ftb.mods.ftblibrary.client.gui.*; +import dev.ftb.mods.ftblibrary.client.gui.CursorType; +import dev.ftb.mods.ftblibrary.client.gui.GuiHelper; +import dev.ftb.mods.ftblibrary.client.gui.MismatchingParentPanelException; import dev.ftb.mods.ftblibrary.client.gui.input.Key; import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; import dev.ftb.mods.ftblibrary.client.gui.layout.WidgetLayout; @@ -15,7 +17,10 @@ import net.minecraft.util.Mth; import org.jspecify.annotations.Nullable; -import java.util.*; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.List; +import java.util.Optional; import java.util.function.Supplier; import java.util.stream.Collectors; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/ScrollBar.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/ScrollBar.java index fd64155c..02c69db2 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/ScrollBar.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/ScrollBar.java @@ -1,8 +1,8 @@ package dev.ftb.mods.ftblibrary.client.gui.widget; -import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.client.gui.WidgetType; import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; +import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.math.MathUtils; import dev.ftb.mods.ftblibrary.util.TooltipList; import net.minecraft.ChatFormatting; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/TextBox.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/TextBox.java index e63e4307..df6c879b 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/TextBox.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/TextBox.java @@ -1,10 +1,10 @@ package dev.ftb.mods.ftblibrary.client.gui.widget; import dev.ftb.mods.ftblibrary.client.gui.CursorType; -import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.client.gui.WidgetType; import dev.ftb.mods.ftblibrary.client.gui.input.Key; import dev.ftb.mods.ftblibrary.client.gui.input.MouseButton; +import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.client.icon.IconHelper; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.Icon; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/Widget.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/Widget.java index 1750c007..aac93e7b 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/Widget.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/widget/Widget.java @@ -1,5 +1,6 @@ package dev.ftb.mods.ftblibrary.client.gui.widget; +import com.mojang.blaze3d.platform.Window; import dev.ftb.mods.ftblibrary.client.gui.CursorType; import dev.ftb.mods.ftblibrary.client.gui.GuiHelper; import dev.ftb.mods.ftblibrary.client.gui.IScreenWrapper; @@ -9,7 +10,6 @@ import dev.ftb.mods.ftblibrary.client.gui.theme.Theme; import dev.ftb.mods.ftblibrary.client.util.PositionedIngredient; import dev.ftb.mods.ftblibrary.util.TooltipList; -import com.mojang.blaze3d.platform.Window; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.input.CharacterEvent; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/icon/BulletIconRenderer.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/icon/BulletIconRenderer.java index 3ddc61a2..ed54ed69 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/icon/BulletIconRenderer.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/icon/BulletIconRenderer.java @@ -1,10 +1,10 @@ package dev.ftb.mods.ftblibrary.client.icon; +import com.mojang.blaze3d.pipeline.RenderPipeline; +import com.mojang.blaze3d.vertex.VertexConsumer; import dev.ftb.mods.ftblibrary.icon.BulletIcon; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.icon.MutableColor4I; -import com.mojang.blaze3d.pipeline.RenderPipeline; -import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.navigation.ScreenRectangle; import net.minecraft.client.gui.render.TextureSetup; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/serializer/Json5ConfigSerializer.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/serializer/Json5ConfigSerializer.java index dfe57740..f5848d6f 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/serializer/Json5ConfigSerializer.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/serializer/Json5ConfigSerializer.java @@ -1,11 +1,11 @@ package dev.ftb.mods.ftblibrary.config.serializer; +import com.mojang.serialization.Codec; +import de.marhali.json5.*; import dev.ftb.mods.ftblibrary.FTBLibrary; import dev.ftb.mods.ftblibrary.config.value.*; import dev.ftb.mods.ftblibrary.json5.Json5Ops; import dev.ftb.mods.ftblibrary.util.NameMap; -import com.mojang.serialization.Codec; -import de.marhali.json5.*; import net.minecraft.util.Util; import java.io.FileInputStream; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/icon/EntityIconLoader.java b/common/src/main/java/dev/ftb/mods/ftblibrary/icon/EntityIconLoader.java index 85aca412..0da58bfb 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/icon/EntityIconLoader.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/icon/EntityIconLoader.java @@ -1,9 +1,5 @@ package dev.ftb.mods.ftblibrary.icon; -import dev.ftb.mods.ftblibrary.FTBLibrary; -import dev.ftb.mods.ftblibrary.client.util.ClientUtils; -import dev.ftb.mods.ftblibrary.util.ModUtils; -import dev.ftb.mods.ftblibrary.util.RegistryHelper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; @@ -12,6 +8,10 @@ import com.mojang.serialization.DataResult; import com.mojang.serialization.JsonOps; import com.mojang.serialization.codecs.RecordCodecBuilder; +import dev.ftb.mods.ftblibrary.FTBLibrary; +import dev.ftb.mods.ftblibrary.client.util.ClientUtils; +import dev.ftb.mods.ftblibrary.util.ModUtils; +import dev.ftb.mods.ftblibrary.util.RegistryHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.LivingEntityRenderer; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/icon/Icon.java b/common/src/main/java/dev/ftb/mods/ftblibrary/icon/Icon.java index 576253b2..a339ea64 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/icon/Icon.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/icon/Icon.java @@ -1,11 +1,11 @@ package dev.ftb.mods.ftblibrary.icon; -import dev.ftb.mods.ftblibrary.client.config.editable.EditableImageResource; -import dev.ftb.mods.ftblibrary.client.icon.IconRenderer; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; +import dev.ftb.mods.ftblibrary.client.config.editable.EditableImageResource; +import dev.ftb.mods.ftblibrary.client.icon.IconRenderer; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.Identifier; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/nbtedit/NBTEditorScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/nbtedit/NBTEditorScreen.java index 751579bb..d68ce213 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/nbtedit/NBTEditorScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/nbtedit/NBTEditorScreen.java @@ -1,5 +1,6 @@ package dev.ftb.mods.ftblibrary.nbtedit; +import com.mojang.blaze3d.platform.InputConstants; import dev.ftb.mods.ftblibrary.FTBLibrary; import dev.ftb.mods.ftblibrary.client.config.editable.*; import dev.ftb.mods.ftblibrary.client.config.gui.EditStringConfigOverlay; @@ -20,7 +21,6 @@ import dev.ftb.mods.ftblibrary.util.SerializationUtil; import dev.ftb.mods.ftblibrary.util.StringUtils; import dev.ftb.mods.ftblibrary.util.TooltipList; -import com.mojang.blaze3d.platform.InputConstants; import it.unimi.dsi.fastutil.bytes.ByteArrayList; import it.unimi.dsi.fastutil.ints.IntArrayList; import net.minecraft.ChatFormatting; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java index a3c727bc..5f1cc2ee 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java @@ -1,6 +1,5 @@ package dev.ftb.mods.ftblibrary.platform.client.keys; -import com.mojang.blaze3d.platform.Window; import net.minecraft.client.KeyMapping; import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/sidebar/SidebarButtonData.java b/common/src/main/java/dev/ftb/mods/ftblibrary/sidebar/SidebarButtonData.java index 1a6fc76c..c6d67612 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/sidebar/SidebarButtonData.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/sidebar/SidebarButtonData.java @@ -5,7 +5,6 @@ import dev.ftb.mods.ftblibrary.icon.Icon; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentSerialization; -import org.jspecify.annotations.NonNull; import java.util.List; import java.util.Optional; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/util/NetworkHelper.java b/common/src/main/java/dev/ftb/mods/ftblibrary/util/NetworkHelper.java index fd4bb74a..1ddd6f54 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/util/NetworkHelper.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/util/NetworkHelper.java @@ -1,10 +1,10 @@ package dev.ftb.mods.ftblibrary.util; -import dev.ftb.mods.ftblibrary.platform.Platform; -import dev.ftb.mods.ftblibrary.platform.network.NetworkRegistry; import com.mojang.datafixers.util.Function7; import com.mojang.datafixers.util.Function8; import com.mojang.datafixers.util.Function9; +import dev.ftb.mods.ftblibrary.platform.Platform; +import dev.ftb.mods.ftblibrary.platform.network.NetworkRegistry; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/util/TextComponentParser.java b/common/src/main/java/dev/ftb/mods/ftblibrary/util/TextComponentParser.java index 14d50500..ce332023 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/util/TextComponentParser.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/util/TextComponentParser.java @@ -3,12 +3,12 @@ import dev.ftb.mods.ftblibrary.util.text.RainbowTextColor; import it.unimi.dsi.fastutil.chars.Char2ObjectOpenHashMap; import net.minecraft.ChatFormatting; -import net.minecraft.util.Util; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextColor; import net.minecraft.network.chat.contents.PlainTextContents; +import net.minecraft.util.Util; import org.jspecify.annotations.Nullable; import java.util.function.Function; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/FTBLibraryFabric.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/FTBLibraryFabric.java index b951b067..14b20dae 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/FTBLibraryFabric.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/FTBLibraryFabric.java @@ -8,10 +8,8 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.creativetab.v1.CreativeModeTabEvents; -import net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTabOutput; import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; -import net.minecraft.world.item.CreativeModeTab; public class FTBLibraryFabric implements ModInitializer { diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/FTBLibraryFabricEvents.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/FTBLibraryFabricEvents.java index 811cdf35..cef8bc3c 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/FTBLibraryFabricEvents.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/FTBLibraryFabricEvents.java @@ -6,8 +6,6 @@ import net.fabricmc.fabric.api.event.Event; import net.fabricmc.fabric.api.event.EventFactory; -import java.util.Arrays; - public class FTBLibraryFabricEvents { public static Event CUSTOM_CLICK = EventFactory.createArrayBacked(CustomClickEvent.class, callbacks -> data -> { diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java index 531a8f30..d1b80002 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java @@ -2,16 +2,12 @@ import de.siphalor.amecs.key_modifiers.api.AmecsKeyMappingWithKeyModifiers; import de.siphalor.amecs.key_modifiers.api.AmecsKeyModifierCombination; -import de.siphalor.amecs.key_modifiers.api.AmecsKeyModifiers; import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; import net.minecraft.client.KeyMapping; import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; -import java.util.ArrayList; -import java.util.List; - public class AmecsKeyProvider implements KeyProvider { @Override public KeyMapping create(KeyMappingConfig config) { diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/FabricMiscImpl.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/FabricMiscImpl.java index 4ac06ddc..0a011008 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/FabricMiscImpl.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/FabricMiscImpl.java @@ -1,10 +1,10 @@ package dev.ftb.mods.ftblibrary.fabric.platform; +import com.mojang.blaze3d.platform.InputConstants; import dev.ftb.mods.ftblibrary.core.mixin.fabric.KeyMappingAccess; import dev.ftb.mods.ftblibrary.core.mixin.fabric.PatchedDataComponentMapAccess; import dev.ftb.mods.ftblibrary.fabric.PlayerDisplayNameCache; import dev.ftb.mods.ftblibrary.platform.Misc; -import com.mojang.blaze3d.platform.InputConstants; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants; import net.minecraft.client.KeyMapping; import net.minecraft.core.BlockPos; diff --git a/fabric/src/main/resources/ftblibrary-fabric.mixins.json b/fabric/src/main/resources/ftblibrary-fabric.mixins.json index 6cf70372..49accd2b 100644 --- a/fabric/src/main/resources/ftblibrary-fabric.mixins.json +++ b/fabric/src/main/resources/ftblibrary-fabric.mixins.json @@ -3,8 +3,8 @@ "package": "dev.ftb.mods.ftblibrary.core.mixin.fabric", "compatibilityLevel": "JAVA_8", "mixins": [ - "PlayerMixin", - "PatchedDataComponentMapAccess" + "PatchedDataComponentMapAccess", + "PlayerMixin" ], "client": [ "KeyMappingAccess" diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/FTBLibraryNeoForge.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/FTBLibraryNeoForge.java index 1330300f..438b5a0f 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/FTBLibraryNeoForge.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/FTBLibraryNeoForge.java @@ -19,7 +19,6 @@ import net.neoforged.neoforge.event.entity.player.PlayerEvent; import net.neoforged.neoforge.event.server.ServerAboutToStartEvent; import net.neoforged.neoforge.event.server.ServerStartedEvent; -import net.neoforged.neoforge.event.server.ServerStartingEvent; import net.neoforged.neoforge.event.server.ServerStoppedEvent; import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; import net.neoforged.neoforge.network.registration.PayloadRegistrar; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/NeoMiscImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/NeoMiscImpl.java index 55764cf7..9de6ad7e 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/NeoMiscImpl.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/NeoMiscImpl.java @@ -1,7 +1,7 @@ package dev.ftb.mods.ftblibrary.neoforge.platform; -import dev.ftb.mods.ftblibrary.platform.Misc; import com.mojang.blaze3d.platform.InputConstants; +import dev.ftb.mods.ftblibrary.platform.Misc; import net.minecraft.client.KeyMapping; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java index 9344a8ee..ca3be882 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java @@ -1,7 +1,5 @@ package dev.ftb.mods.ftblibrary.neoforge.platform.client; -import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.platform.Window; import dev.ftb.mods.ftblibrary.platform.client.keys.KeyConflict; import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; From 9b8e891d2d9a80d9b34fa7f2eb9d77e0c069a89c Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Mon, 18 May 2026 09:36:48 +0100 Subject: [PATCH 09/12] chore: minor tweak to keyboard icon image (make cable more visible) --- .../ftblibrary/textures/icons/keyboard.png | Bin 179 -> 4409 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/common/src/main/resources/assets/ftblibrary/textures/icons/keyboard.png b/common/src/main/resources/assets/ftblibrary/textures/icons/keyboard.png index 12acb634dc01562422b8c4faa2645ee26dc43b0e..862d33808512f8dbb7e99ce1eeac476c32925c9c 100644 GIT binary patch literal 4409 zcmeHKdsGzH86PCFaf!qVMNq_HO=>jE&dl!YW9G0R?DE*a>Iy3n#Urybv&+ct&N4f= z3po*iW0ca0F)yShg_QPaTawtcF-D_2%xSBo#8)b{Huy+swU}7{(D-WaEbr5t)5AH< zf829sXYTj-ec$)H-@RvVqkUEGT;)O~1VMAHd6q)(o+m$#M}glZxBpFpS5J*&om5B% zVZSK2cn=3l)qW1bSV4=j=%v<^DjhpkCNJ7Sm% zoB9=hp<3d8o$5RPMCAJ4h|!mgpT>OeT!Xf&sG$08oUw5Jp&xvT-0x4je9eM54kvtV zioQ|0zxB~0?!?tS>1+P9Vc~gVe)8<+8uZ7u7r%ITD}AZ*rRK;t&kY@{z4G)2hh7Wi zwggkU%f7QHGA|?QOxCMq^P6+xp6pXBXeXMsKe%{yPAGCfQIgQN&VCYtBDV8pv)yVo zk5vO|*!SYg$MbtvCVjGLLw@#(`uMni>~5z9va^#azWaT9$~k2x)lzydx|Mipxq4T9 zMR)g-rnQO%?v0B}XJ>w;*jc;HxcsBM#?SMWh%?Q2v-ijg%}0XUj+byhA9w|F^l3B) zI(DCWSK0pjWBAT_ZzsIoa-hG_x$v#4HXT*Y6z8$UR<&B@V{!j4d#vUYUDk zuPuM*=;|bzv! zuI>5#+K8pUoweDXLT>#kZ51;z@^l4{qSC`&jdFk{u)1atGs6O+wS?qvpwFe(R`s34vFY4MivFgyg>F2sZOT4yVu7{RNiS;5Jv zLta1VI|xe42>EHIf|Fn;=jMGT)t5((t6-irsh-!_Fq_}ZmGgNuB3D$i%E8oBFeIzW zNLQwXC;;H)BpMERJ-z@HGO5D26!@0Ks0t37NEIg4I-4Cf3nB*-YC?@6*&%+5MwPCF z(?r%q6;0FvcT{ry#_1)gCqmRyG@D5tu4DJ*&l}lH*gX!0;>; z{-hZV=OkGSak(@GguodcLJ}l{xM)Vp;v|kS7(EHf>I+D;kKtq}0Iuc%js|lYXo7Si z7>APx!D1LfGA;w6Wf+zu^eo{rOomu3@}Mhe&*ZFRC>B652B$`+)ff?%&Y(vK(q%+Q z9f2c80>iX8$AOgaa5gMM;VJ+$Nk4klFr z@2d(;C>*?(E0SoLP26B0F(au3@%380!8l=5%!vWei83aRskQpBMqU;Q6a$E*JF%<<=y1Ry9nR(>L& z)_n;;sF19-Y{m82^A$-%Q_y4sqN`R*ro(uODQnX`)5$;FwEpb9C3~Aw`?Kb`cVq0bgoBM*r}nkDuAZ*0F0ArjL=+e=-G1X;JmLE0 zZl1+G|D65)&oHdJ;ADSaPurY>m(|AFuNRuL*2hGG(a_n1Du3AA*VP48*0sMA-&G6y4(?>_#e3Ywqi(INc<)!09}WI(*TB3)Me^IF5zRR*(bvz43Gshu?Rjr7 zzGv@_c4?MlS6y9QX5!|QXn@{(>4hh6-HT0ZJGEwCOjI%iEsE#=SoZ#BA}ANKX0Nim IlT}v#AKQ*FsQ>@~ delta 151 zcmV;I0BHZYBC`RIB!7BIL_t(|USnVw^uWTx;y(x@^O5E80(6ZeX$AqJG{8(I7lREr zdHNg}&zQFag(k#CF#trv1YtBWY_I_!4h)ypw8CjZY^*MDSoRl;vDt>rl^8CNjGF<* z=(eG=F$_Sr0UO4q4r~C-badO$F}h3O22g_0(-r*z0K$GvT@W`9<1hdK002ovPDHLk FV1mzaJ|6%8 From 36309e21818000ef9b4861cc63187b9e54308c07 Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Mon, 18 May 2026 09:45:47 +0100 Subject: [PATCH 10/12] chore: `KeyMap` class -> `Input`, `keys` pkg -> `input` --- .../ftb/mods/ftblibrary/client/gui/input/Key.java | 6 +----- .../client/gui/screens/KeyReferenceScreen.java | 2 +- .../java/dev/ftb/mods/ftblibrary/platform/Misc.java | 2 ++ .../ftblibrary/platform/client/PlatformClient.java | 8 ++++---- .../client/{keys/KeyMap.java => input/Input.java} | 13 +++++++++++-- .../client/{keys => input}/KeyConflict.java | 2 +- .../client/{keys => input}/KeyMappingConfig.java | 2 +- .../client/{keys => input}/KeyModifier.java | 2 +- .../fabric/integrations/keys/AmecsKeyProvider.java | 4 ++-- .../fabric/integrations/keys/KeyProvider.java | 2 +- .../integrations/keys/VanillaKeyProvider.java | 2 +- .../{FabricKeyMapImpl.java => FabricInputImpl.java} | 8 ++++---- .../platform/client/FabricPlatformClientImpl.java | 6 +++--- .../{NeoKeyMapImpl.java => NeoInputImpl.java} | 10 +++++----- .../platform/client/NeoPlatformClientImpl.java | 6 +++--- 15 files changed, 41 insertions(+), 34 deletions(-) rename common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/{keys/KeyMap.java => input/Input.java} (72%) rename common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/{keys => input}/KeyConflict.java (56%) rename common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/{keys => input}/KeyMappingConfig.java (98%) rename common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/{keys => input}/KeyModifier.java (60%) rename fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/{FabricKeyMapImpl.java => FabricInputImpl.java} (89%) rename neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/{NeoKeyMapImpl.java => NeoInputImpl.java} (91%) diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/input/Key.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/input/Key.java index 189a5685..bc2c66a3 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/input/Key.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/input/Key.java @@ -59,10 +59,6 @@ public KeyModifiers modifiers() { } public boolean matches(KeyMapping keyMapping) { - return PlatformClient.get().keymap().matches(keyMapping, event); + return PlatformClient.get().input().matches(keyMapping, event); } - -// private static boolean matchesWithoutConflicts(KeyMapping keyBinding, InputConstants.Key keyCode) { -// return Platform.get().misc().matchesWithoutConflicts(keyBinding, keyCode); -// } } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/KeyReferenceScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/KeyReferenceScreen.java index 43bd98bc..532791f9 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/KeyReferenceScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/client/gui/screens/KeyReferenceScreen.java @@ -74,7 +74,7 @@ private static Pair substituteKeyMapping(String part0, Stri var keyMapping = KeyMapping.get(key); if (keyMapping != null) { var c0 = Component.literal(part0.substring(0, s)) - .append(PlatformClient.get().keymap().getKeyMappingDisplayName(keyMapping)) + .append(PlatformClient.get().input().getKeyMappingDisplayName(keyMapping)) .append(part0.substring(e + 1)); Component c1 = part1.isEmpty() ? Component.translatable(keyMapping.getName()) : Component.literal(part1); return Pair.of(c0, c1.copy().withStyle(ChatFormatting.GRAY)); diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/Misc.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/Misc.java index 0aab2c93..c558291a 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/Misc.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/Misc.java @@ -12,6 +12,8 @@ import net.minecraft.world.level.material.MapColor; public interface Misc { + /// Use {@link dev.ftb.mods.ftblibrary.client.gui.input.Key#matches(KeyMapping)} + @Deprecated(forRemoval = true) boolean matchesWithoutConflicts(KeyMapping keyBinding, InputConstants.Key keyCode); Component componentWithLinks(String message); diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java index c25a43cc..3b8dea7f 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java @@ -1,6 +1,6 @@ package dev.ftb.mods.ftblibrary.platform.client; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; +import dev.ftb.mods.ftblibrary.platform.client.input.Input; import net.minecraft.client.KeyMapping; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.Identifier; @@ -17,7 +17,7 @@ static PlatformClient get() { return INSTANCE; } - KeyMap keymap(); + Input input(); /// Send a network packet to the server. /// @@ -42,10 +42,10 @@ default void addResourcePackReloadListener(String modId, Identifier id, Preparab /** * @param modId the mod * @param keyMappings the mappings - * @deprecated use {@link KeyMap#registerKeyMapping(String, KeyMapping...)} + * @deprecated use {@link Input#registerKeyMapping(String, KeyMapping...)} */ @Deprecated(forRemoval = true) default void registerKeyMapping(String modId, KeyMapping... keyMappings) { - keymap().registerKeyMapping(modId, keyMappings); + input().registerKeyMapping(modId, keyMappings); } } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/Input.java similarity index 72% rename from common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java rename to common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/Input.java index 5f1cc2ee..d21bb860 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMap.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/Input.java @@ -1,10 +1,10 @@ -package dev.ftb.mods.ftblibrary.platform.client.keys; +package dev.ftb.mods.ftblibrary.platform.client.input; import net.minecraft.client.KeyMapping; import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; -public interface KeyMap { +public interface Input { /// Register one or more keymappings with vanilla. /// /// **IMPORTANT**: all keymappings for any single keymapping category _must_ be registered in a single call to this @@ -29,5 +29,14 @@ public interface KeyMap { /// @param keyMapping the keymapping object Component getKeyMappingDisplayName(KeyMapping keyMapping); + /// Check if the key event matches the given key mapping. This differs from [KeyMapping#matches(KeyEvent)] + /// in that modifiers, if supported in the current environment, are also checked. + /// + /// @param mapping the KeyMapping to check + /// @param event the event representing a keypress with possible modifier + /// @return true if there's a match + /// + /// @implNote modifiers are supported if the platform is NeoForge, or if the platform is Fabric with the Amecs + /// mod installed boolean matches(KeyMapping mapping, KeyEvent event); } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyConflict.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyConflict.java similarity index 56% rename from common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyConflict.java rename to common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyConflict.java index 7152d013..301fdeab 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyConflict.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyConflict.java @@ -1,4 +1,4 @@ -package dev.ftb.mods.ftblibrary.platform.client.keys; +package dev.ftb.mods.ftblibrary.platform.client.input; public enum KeyConflict { EVERYWHERE, diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMappingConfig.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyMappingConfig.java similarity index 98% rename from common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMappingConfig.java rename to common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyMappingConfig.java index 45038471..fbc517aa 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyMappingConfig.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyMappingConfig.java @@ -1,4 +1,4 @@ -package dev.ftb.mods.ftblibrary.platform.client.keys; +package dev.ftb.mods.ftblibrary.platform.client.input; import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.client.KeyMapping; diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyModifier.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyModifier.java similarity index 60% rename from common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyModifier.java rename to common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyModifier.java index a34b316c..b94bc61b 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/keys/KeyModifier.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/KeyModifier.java @@ -1,4 +1,4 @@ -package dev.ftb.mods.ftblibrary.platform.client.keys; +package dev.ftb.mods.ftblibrary.platform.client.input; public enum KeyModifier { NONE, diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java index d1b80002..a3b5b6fa 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/AmecsKeyProvider.java @@ -2,8 +2,8 @@ import de.siphalor.amecs.key_modifiers.api.AmecsKeyMappingWithKeyModifiers; import de.siphalor.amecs.key_modifiers.api.AmecsKeyModifierCombination; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; +import dev.ftb.mods.ftblibrary.platform.client.input.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.input.KeyModifier; import net.minecraft.client.KeyMapping; import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java index 7c99df0e..c4a68fa3 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/KeyProvider.java @@ -1,6 +1,6 @@ package dev.ftb.mods.ftblibrary.fabric.integrations.keys; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.input.KeyMappingConfig; import net.minecraft.client.KeyMapping; import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java index fd1e94e4..695f97b7 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/integrations/keys/VanillaKeyProvider.java @@ -1,6 +1,6 @@ package dev.ftb.mods.ftblibrary.fabric.integrations.keys; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.input.KeyMappingConfig; import net.minecraft.client.KeyMapping; import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricKeyMapImpl.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricInputImpl.java similarity index 89% rename from fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricKeyMapImpl.java rename to fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricInputImpl.java index 4bec29e7..dc7918e6 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricKeyMapImpl.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricInputImpl.java @@ -3,8 +3,8 @@ import dev.ftb.mods.ftblibrary.fabric.integrations.keys.AmecsKeyProvider; import dev.ftb.mods.ftblibrary.fabric.integrations.keys.KeyProvider; import dev.ftb.mods.ftblibrary.fabric.integrations.keys.VanillaKeyProvider; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.input.Input; +import dev.ftb.mods.ftblibrary.platform.client.input.KeyMappingConfig; import dev.ftb.mods.ftblibrary.util.Lazy; import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper; import net.fabricmc.loader.api.FabricLoader; @@ -16,8 +16,8 @@ import java.util.HashSet; import java.util.Set; -public class FabricKeyMapImpl implements KeyMap { - private final Lazy keyProvider = Lazy.of(FabricKeyMapImpl::initKeyProvider); +public class FabricInputImpl implements Input { + private final Lazy keyProvider = Lazy.of(FabricInputImpl::initKeyProvider); private static KeyProvider initKeyProvider() { if (FabricLoader.getInstance().isModLoaded("amecs")) { diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java index 7bd65ba3..a0fcd54f 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricPlatformClientImpl.java @@ -1,7 +1,7 @@ package dev.ftb.mods.ftblibrary.fabric.platform.client; import dev.ftb.mods.ftblibrary.platform.client.PlatformClient; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; +import dev.ftb.mods.ftblibrary.platform.client.input.Input; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.resource.v1.ResourceLoader; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; @@ -12,10 +12,10 @@ import java.util.Map; public class FabricPlatformClientImpl implements PlatformClient { - private final KeyMap keyMap = new FabricKeyMapImpl(); + private final Input keyMap = new FabricInputImpl(); @Override - public KeyMap keymap() { + public Input input() { return keyMap; } diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoInputImpl.java similarity index 91% rename from neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java rename to neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoInputImpl.java index ca3be882..dafa4d24 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoKeyMapImpl.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoInputImpl.java @@ -1,9 +1,9 @@ package dev.ftb.mods.ftblibrary.neoforge.platform.client; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyConflict; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMappingConfig; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyModifier; +import dev.ftb.mods.ftblibrary.platform.client.input.KeyConflict; +import dev.ftb.mods.ftblibrary.platform.client.input.Input; +import dev.ftb.mods.ftblibrary.platform.client.input.KeyMappingConfig; +import dev.ftb.mods.ftblibrary.platform.client.input.KeyModifier; import net.minecraft.client.KeyMapping; import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; @@ -17,7 +17,7 @@ import static dev.ftb.mods.ftblibrary.neoforge.platform.client.NeoPlatformClientImpl.getModBusOrThrow; -public class NeoKeyMapImpl implements KeyMap { +public class NeoInputImpl implements Input { @Override public void registerKeyMapping(String modId, KeyMapping... keyMappings) { Validate.isTrue(keyMappings.length > 0, "must provide at least one keymapping"); diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java index bfd20660..500916e7 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoPlatformClientImpl.java @@ -1,7 +1,7 @@ package dev.ftb.mods.ftblibrary.neoforge.platform.client; import dev.ftb.mods.ftblibrary.platform.client.PlatformClient; -import dev.ftb.mods.ftblibrary.platform.client.keys.KeyMap; +import dev.ftb.mods.ftblibrary.platform.client.input.Input; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.Identifier; import net.minecraft.server.packs.resources.PreparableReloadListener; @@ -14,10 +14,10 @@ import java.util.Map; public class NeoPlatformClientImpl implements PlatformClient { - private final KeyMap keymap = new NeoKeyMapImpl(); + private final Input keymap = new NeoInputImpl(); @Override - public KeyMap keymap() { + public Input input() { return keymap; } From 6fcb6104a71eeb23ad0ae9d9b5d651616ae37e78 Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Mon, 18 May 2026 09:57:24 +0100 Subject: [PATCH 11/12] fix: javadoc typo fix --- .../dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java index 3b8dea7f..037768f9 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/PlatformClient.java @@ -30,7 +30,7 @@ static PlatformClient get() { /// @param listeners a map of unique listener ID's to the listeners to register void addResourcePackReloadListeners(String modId, Map listeners); - /// Register a resource pack reload listeneers, to be called when client-side resource packs reload. + /// Register a resource pack reload listener, to be called when client-side resource packs reload. /// /// @param modId your mod's unique ID /// @param id the reload listener's unique ID From b5a0308465c9f8b0e51bbc133370b9f71c66e851 Mon Sep 17 00:00:00 2001 From: Des Herriott Date: Mon, 18 May 2026 10:23:48 +0100 Subject: [PATCH 12/12] chore: createKeyBinding -> createKeyMapping renamed for consistency --- .../dev/ftb/mods/ftblibrary/platform/client/input/Input.java | 2 +- .../mods/ftblibrary/fabric/platform/client/FabricInputImpl.java | 2 +- .../mods/ftblibrary/neoforge/platform/client/NeoInputImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/Input.java b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/Input.java index d21bb860..0064ea5d 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/Input.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/platform/client/input/Input.java @@ -22,7 +22,7 @@ public interface Input { /// /// @param config defines the setup for the keymapping object /// @return a new keymapping object - KeyMapping createKeyBinding(KeyMappingConfig config); + KeyMapping createKeyMapping(KeyMappingConfig config); /// Get a displayable string for the key and possible modifiers for a {@code KeyMapping} object /// diff --git a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricInputImpl.java b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricInputImpl.java index dc7918e6..6270c38d 100644 --- a/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricInputImpl.java +++ b/fabric/src/main/java/dev/ftb/mods/ftblibrary/fabric/platform/client/FabricInputImpl.java @@ -39,7 +39,7 @@ public void registerKeyMapping(String modId, KeyMapping... keyMappings) { } @Override - public KeyMapping createKeyBinding(KeyMappingConfig config) { + public KeyMapping createKeyMapping(KeyMappingConfig config) { return keyProvider.get().create(config); } diff --git a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoInputImpl.java b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoInputImpl.java index dafa4d24..b4752555 100644 --- a/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoInputImpl.java +++ b/neoforge/src/main/java/dev/ftb/mods/ftblibrary/neoforge/platform/client/NeoInputImpl.java @@ -33,7 +33,7 @@ public void registerKeyMapping(String modId, KeyMapping... keyMappings) { } @Override - public KeyMapping createKeyBinding(KeyMappingConfig config) { + public KeyMapping createKeyMapping(KeyMappingConfig config) { return new KeyMapping( config.translationKey(), convertConflictContext(config.conflictContext()),