From c252872cf651a1f3c40f0223596be2ba060bc0b9 Mon Sep 17 00:00:00 2001 From: Jamalam Date: Mon, 30 Mar 2026 13:12:03 +0100 Subject: [PATCH 01/16] feat: add platform methods --- .../jamlib/client/JamLibClient.java | 11 +-- .../client/config/gui/ConfigScreen.java | 5 +- .../client/config/gui/SelectConfigScreen.java | 6 +- .../io/github/jamalam360/jamlib/JamLib.java | 12 +-- .../jamalam360/jamlib/JamLibPlatform.java | 57 ------------- .../jamlib/config/ConfigManager.java | 2 +- .../jamalam360/jamlib/platform/ModInfo.java | 7 ++ .../jamalam360/jamlib/platform/ModLoader.java | 45 ++++++++++ .../jamalam360/jamlib/platform/Platform.java | 84 +++++++++++++++++++ .../jamlib/platform/fabric/PlatformImpl.java | 35 ++++++++ .../platform/neoforge/PlatformImpl.java | 38 +++++++++ .../io/github/jamalam360/testmod/TestMod.java | 5 +- 12 files changed, 231 insertions(+), 76 deletions(-) delete mode 100644 common/src/main/java/io/github/jamalam360/jamlib/JamLibPlatform.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/platform/ModInfo.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/platform/ModLoader.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/platform/Platform.java create mode 100644 fabric/src/main/java/io/github/jamalam360/jamlib/platform/fabric/PlatformImpl.java create mode 100644 neoforge/src/main/java/io/github/jamalam360/jamlib/platform/neoforge/PlatformImpl.java diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/JamLibClient.java b/common/src/client/java/io/github/jamalam360/jamlib/client/JamLibClient.java index 6fe5960..852e0d3 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/JamLibClient.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/JamLibClient.java @@ -2,7 +2,7 @@ import static io.github.jamalam360.jamlib.JamLib.JAR_RENAMING_CHECKER; -import dev.architectury.event.events.client.ClientPlayerEvent; +import io.github.jamalam360.jamlib.events.client.ClientPlayLifecycleEvents; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -12,14 +12,11 @@ public class JamLibClient { @ApiStatus.Internal public static void init() { - ClientPlayerEvent.CLIENT_PLAYER_JOIN.register(JamLibClient::onPlayerJoin); + ClientPlayLifecycleEvents.JOIN.register(JamLibClient::onPlayerJoin); } - private static void onPlayerJoin(LocalPlayer player) { - if (player != Minecraft.getInstance().player) { - return; - } - + private static void onPlayerJoin(Minecraft minecraft) { + LocalPlayer player = minecraft.player; if (JAR_RENAMING_CHECKER.getSuspiciousJarsToNotifyAbout().isEmpty()) { return; } diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/ConfigScreen.java b/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/ConfigScreen.java index a79f7c4..bdafb6d 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/ConfigScreen.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/ConfigScreen.java @@ -1,12 +1,13 @@ package io.github.jamalam360.jamlib.client.config.gui; -import dev.architectury.platform.Platform; import io.github.jamalam360.jamlib.JamLib; import io.github.jamalam360.jamlib.client.config.gui.entry.ConfigEntry; import io.github.jamalam360.jamlib.client.gui.WidgetList; import io.github.jamalam360.jamlib.config.ConfigExtensions; import io.github.jamalam360.jamlib.config.ConfigManager; import io.github.jamalam360.jamlib.config.HiddenInGui; +import io.github.jamalam360.jamlib.platform.ModInfo; +import io.github.jamalam360.jamlib.platform.Platform; import net.minecraft.util.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; @@ -58,7 +59,7 @@ protected static Component createTitle(ConfigManager manager) { if (I18n.exists(translationKey)) { return Component.translatable(translationKey); } else { - return Component.literal(Platform.getMod(manager.getModId()).getName()); + return Component.literal(Platform.getMod(manager.getModId()).map(ModInfo::modName).orElse("Unknown")); } } diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectConfigScreen.java b/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectConfigScreen.java index e205bab..bcd19c1 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectConfigScreen.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectConfigScreen.java @@ -1,9 +1,11 @@ package io.github.jamalam360.jamlib.client.config.gui; -import dev.architectury.platform.Platform; import io.github.jamalam360.jamlib.config.ConfigManager; import java.util.List; import java.util.Objects; + +import io.github.jamalam360.jamlib.platform.ModInfo; +import io.github.jamalam360.jamlib.platform.Platform; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; @@ -31,7 +33,7 @@ private static Component createTitle(String modId) { if (I18n.exists(translationKey)) { return Component.translatable(translationKey); } else { - return Component.translatable("config.jamlib.selection_screen_title", Platform.getMod(modId).getName()); + return Component.translatable("config.jamlib.selection_screen_title", Platform.getMod(modId).map(ModInfo::modName).orElse("Unknown")); } } diff --git a/common/src/main/java/io/github/jamalam360/jamlib/JamLib.java b/common/src/main/java/io/github/jamalam360/jamlib/JamLib.java index baefa75..7a1469b 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/JamLib.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/JamLib.java @@ -1,9 +1,6 @@ package io.github.jamalam360.jamlib; -import dev.architectury.event.events.client.ClientPlayerEvent; -import dev.architectury.platform.Platform; -import dev.architectury.utils.EnvExecutor; -import net.fabricmc.api.EnvType; +import io.github.jamalam360.jamlib.platform.Platform; import net.minecraft.resources.Identifier; import org.jetbrains.annotations.ApiStatus; import org.slf4j.Logger; @@ -19,7 +16,7 @@ public class JamLib { @ApiStatus.Internal public static void init() { - LOGGER.info("Initializing JamLib on {}", JamLibPlatform.getPlatform()); + LOGGER.info("Initializing JamLib on {}", Platform.getModLoader()); checkForJarRenaming(JamLib.class); } @@ -41,4 +38,9 @@ public static void checkForJarRenaming(Class anyModClass) { public static Identifier id(String path) { return Identifier.fromNamespaceAndPath(MOD_ID, path); } + + @ApiStatus.Internal + public static T expectPlatform() { + throw new AssertionError("Expected platform-specific implementation"); + } } diff --git a/common/src/main/java/io/github/jamalam360/jamlib/JamLibPlatform.java b/common/src/main/java/io/github/jamalam360/jamlib/JamLibPlatform.java deleted file mode 100644 index 9643665..0000000 --- a/common/src/main/java/io/github/jamalam360/jamlib/JamLibPlatform.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.github.jamalam360.jamlib; - - -/** - * Provides common platform agnostic methods. - * - * @see dev.architectury.platform.Platform - */ -public class JamLibPlatform { - - /** - * @return The current mod loader. - */ - public static Platform getPlatform() { - if (dev.architectury.platform.Platform.isModLoaded("quilt_loader")) { - return Platform.QUILT; - } else if (dev.architectury.platform.Platform.isNeoForge()) { - return Platform.NEOFORGE; - } else { - return Platform.FABRIC; - } - } - - /** - * A mod loader. - */ - public enum Platform { - FABRIC, - NEOFORGE, - QUILT; - - public boolean isFabric() { - return this == FABRIC; - } - - public boolean isNeoForge() { - return this == NEOFORGE; - } - - public boolean isQuilt() { - return this == QUILT; - } - - public boolean isFabricLike() { - return this == FABRIC || this == QUILT; - } - - @Override - public String toString() { - return switch (this) { - case FABRIC -> "Fabric"; - case NEOFORGE -> "NeoForge"; - case QUILT -> "Quilt"; - }; - } - } -} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/config/ConfigManager.java b/common/src/main/java/io/github/jamalam360/jamlib/config/ConfigManager.java index 0342b6b..de94829 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/config/ConfigManager.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/config/ConfigManager.java @@ -4,8 +4,8 @@ import blue.endless.jankson.JsonElement; import blue.endless.jankson.JsonGrammar; import blue.endless.jankson.JsonObject; -import dev.architectury.platform.Platform; import io.github.jamalam360.jamlib.JamLib; +import io.github.jamalam360.jamlib.platform.Platform; import org.jetbrains.annotations.ApiStatus; import java.io.IOException; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/platform/ModInfo.java b/common/src/main/java/io/github/jamalam360/jamlib/platform/ModInfo.java new file mode 100644 index 0000000..b09cb1c --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/platform/ModInfo.java @@ -0,0 +1,7 @@ +package io.github.jamalam360.jamlib.platform; + +/** + * A basic platform-independent representation of a mod. + */ +public record ModInfo(String modId, String modName, String version) { +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/platform/ModLoader.java b/common/src/main/java/io/github/jamalam360/jamlib/platform/ModLoader.java new file mode 100644 index 0000000..4900a23 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/platform/ModLoader.java @@ -0,0 +1,45 @@ +package io.github.jamalam360.jamlib.platform; + +/** + * A mod loader. + */ +public enum ModLoader { + FABRIC, + QUILT, + FORGE, + NEOFORGE; + + public boolean isFabric() { + return this == FABRIC; + } + + public boolean isQuilt() { + return this == QUILT; + } + + public boolean isForge() { + return this == FORGE; + } + + public boolean isNeoForge() { + return this == NEOFORGE; + } + + public boolean isFabricLike() { + return this.isFabric() || this.isQuilt(); + } + + public boolean isForgeLike() { + return this.isForge() || this.isNeoForge(); + } + + @Override + public String toString() { + return switch (this) { + case FABRIC -> "Fabric"; + case QUILT -> "Quilt"; + case FORGE -> "Forge"; + case NEOFORGE -> "NeoForge"; + }; + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/platform/Platform.java b/common/src/main/java/io/github/jamalam360/jamlib/platform/Platform.java new file mode 100644 index 0000000..15b8670 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/platform/Platform.java @@ -0,0 +1,84 @@ +package io.github.jamalam360.jamlib.platform; + +import dev.architectury.injectables.annotations.ExpectPlatform; +import io.github.jamalam360.jamlib.JamLib; + +import java.nio.file.Path; +import java.util.Optional; + +/** + * Provides common platform-agnostic methods. + */ +public class Platform { + /** + * @return Information about the mod with the given ID, if it is loaded. + */ + @ExpectPlatform + public static Optional getMod(String modId) { + return JamLib.expectPlatform(); + } + + /** + * @return Whether the mod with the given ID is loaded. + */ + public static boolean isModLoaded(String modId) { + return getMod(modId).isPresent(); + } + + /** + * @return Whether the current platform is Forge. + */ + @ExpectPlatform + public static boolean isForge() { + return JamLib.expectPlatform(); + } + + /** + * @return Whether the current platform is NeoForge. + */ + @ExpectPlatform + public static boolean isNeoForge() { + return JamLib.expectPlatform(); + } + + /** + * @return The current mod loader. + */ + public static ModLoader getModLoader() { + if (isModLoaded("fabricloader")) { + return ModLoader.FABRIC; + } else if (isModLoaded("quilt_loader")) { + return ModLoader.QUILT; + } else if (isForge()) { + return ModLoader.FORGE; + } else if (isNeoForge()){ + return ModLoader.FABRIC; + } + + throw new IllegalStateException("Could not determine mod loader"); + } + + /** + * @return Whether the game is currently running in a development environment. + */ + @ExpectPlatform + public static boolean isDevelopmentEnvironment() { + return JamLib.expectPlatform(); + } + + /** + * @return The path to the root game folder (e.g. .minecraft). + */ + @ExpectPlatform + public static Path getGameFolder() { + return JamLib.expectPlatform(); + } + + /** + * @return The path to the config folder. + */ + @ExpectPlatform + public static Path getConfigFolder() { + return JamLib.expectPlatform(); + } +} diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/platform/fabric/PlatformImpl.java b/fabric/src/main/java/io/github/jamalam360/jamlib/platform/fabric/PlatformImpl.java new file mode 100644 index 0000000..8413c08 --- /dev/null +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/platform/fabric/PlatformImpl.java @@ -0,0 +1,35 @@ +package io.github.jamalam360.jamlib.platform.fabric; + +import io.github.jamalam360.jamlib.platform.ModInfo; +import net.fabricmc.loader.api.FabricLoader; + +import java.nio.file.Path; +import java.util.Optional; + +public class PlatformImpl { + public static Optional getMod(String modId) { + return FabricLoader.getInstance() + .getModContainer(modId) + .map(m -> new ModInfo(m.getMetadata().getId(), m.getMetadata().getName(), m.getMetadata().getVersion().getFriendlyString())); + } + + public static boolean isForge() { + return false; + } + + public static boolean isNeoForge() { + return false; + } + + public static boolean isDevelopmentEnvironment() { + return FabricLoader.getInstance().isDevelopmentEnvironment(); + } + + public static Path getGameFolder() { + return FabricLoader.getInstance().getGameDir().toAbsolutePath(); + } + + public static Path getConfigFolder() { + return FabricLoader.getInstance().getConfigDir().toAbsolutePath(); + } +} diff --git a/neoforge/src/main/java/io/github/jamalam360/jamlib/platform/neoforge/PlatformImpl.java b/neoforge/src/main/java/io/github/jamalam360/jamlib/platform/neoforge/PlatformImpl.java new file mode 100644 index 0000000..005693a --- /dev/null +++ b/neoforge/src/main/java/io/github/jamalam360/jamlib/platform/neoforge/PlatformImpl.java @@ -0,0 +1,38 @@ +package io.github.jamalam360.jamlib.platform.neoforge; + +import io.github.jamalam360.jamlib.JamLib; +import io.github.jamalam360.jamlib.platform.ModInfo; +import net.neoforged.fml.ModList; +import net.neoforged.fml.loading.FMLEnvironment; +import net.neoforged.fml.loading.FMLPaths; + +import java.nio.file.Path; +import java.util.Optional; + +public class PlatformImpl { + public static Optional getMod(String modId) { + return ModList.get() + .getModContainerById(modId) + .map(m -> new ModInfo(m.getModId(), m.getModInfo().getDisplayName(), m.getModInfo().getVersion().toString())); + } + + public static boolean isForge() { + return false; + } + + public static boolean isNeoForge() { + return true; + } + + public static boolean isDevelopmentEnvironment() { + return !FMLEnvironment.isProduction(); + } + + public static Path getGameFolder() { + return FMLPaths.GAMEDIR.get().toAbsolutePath(); + } + + public static Path getConfigFolder() { + return FMLPaths.CONFIGDIR.get().toAbsolutePath(); + } +} diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java index 7512cb1..9c562ba 100644 --- a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java @@ -1,6 +1,6 @@ package io.github.jamalam360.testmod; -import io.github.jamalam360.jamlib.JamLibPlatform; +import io.github.jamalam360.jamlib.platform.Platform; import io.github.jamalam360.jamlib.config.ConfigManager; import io.github.jamalam360.jamlib.events.client.ClientPlayLifecycleEvents; import io.github.jamalam360.testmod.config.NestedConfigChild; @@ -20,7 +20,8 @@ public class TestMod { public static final ConfigManager NESTED_CONFIG = new ConfigManager<>(MOD_ID, "nested", NestedConfigChild.class); public static void init() { - LOGGER.info("Initializing JamLib Test Mod on {}", JamLibPlatform.getPlatform()); + LOGGER.info("Initializing JamLib Test Mod on {}", Platform.getModLoader()); + LOGGER.info("Fabric Loader: {}", Platform.getMod("fabricloader")); System.out.println(CONFIG_MANAGER.get()); System.out.println(QCB_CONFIG.get()); From 1f7bb7c47168f2272be41d2a9f22e39cbf1e1fb7 Mon Sep 17 00:00:00 2001 From: Jamalam Date: Mon, 30 Mar 2026 14:24:04 +0100 Subject: [PATCH 02/16] feat: package reorganization and networking api --- .../client/ClientPlayLifecycleEvents.java | 2 +- .../{client => api}/gui/WidgetList.java | 2 +- .../client/config/gui/entry/package-info.java | 7 -- .../client/mixin/ImageWidget$SpriteMixin.java | 2 +- .../event/ClientPacketListenerMixin.java | 4 +- .../client/mixin/event/ConnectionMixin.java | 2 +- .../jamlib/{client => impl}/JamLibClient.java | 4 +- .../config/client}/ConfigScreen.java | 16 ++-- .../config/client}/SelectConfigScreen.java | 8 +- .../config/client}/SelectionList.java | 2 +- .../config/client}/SelectionListEntry.java | 2 +- .../client}/entry/BooleanConfigEntry.java | 3 +- .../config/client}/entry/ConfigEntry.java | 10 +-- .../config/client}/entry/ConfigField.java | 4 +- .../config/client}/entry/EnumButton.java | 2 +- .../config/client}/entry/EnumConfigEntry.java | 4 +- .../client}/entry/FieldConfigField.java | 4 +- .../config/client}/entry/ListConfigEntry.java | 10 +-- .../client}/entry/ListMemberConfigField.java | 4 +- .../client}/entry/NumberConfigEntry.java | 6 +- .../config/client}/entry/SliderButton.java | 2 +- .../client}/entry/StringConfigEntry.java | 3 +- .../MutableSpriteImageWidget$Sprite.java | 2 +- .../io/github/jamalam360/jamlib/JamLib.java | 3 +- .../{ => api}/config/ConfigExtensions.java | 2 +- .../{ => api}/config/ConfigManager.java | 4 +- .../jamlib/{ => api}/config/HiddenInGui.java | 4 +- .../jamlib/{ => api}/config/MatchesRegex.java | 2 +- .../{ => api}/config/RequiresRestart.java | 2 +- .../jamlib/{ => api}/config/Slider.java | 2 +- .../jamlib/{ => api}/config/WithinRange.java | 2 +- .../jamlib/api/network/Network.java | 83 +++++++++++++++++++ .../jamlib/api/network/NetworkContext.java | 6 ++ .../api/network/NetworkPayloadHandler.java | 6 ++ .../api/network/NetworkPayloadType.java | 18 ++++ .../jamlib/api/network/PayloadType.java | 6 ++ .../StreamCodecNetworkPayloadType.java | 18 ++++ .../jamlib/{ => api}/platform/ModInfo.java | 2 +- .../jamlib/{ => api}/platform/ModLoader.java | 2 +- .../jamlib/{ => api}/platform/Platform.java | 2 +- .../jamlib/{ => impl}/JarRenamingChecker.java | 6 +- .../jamlib/impl/network/JamLibPacket.java | 29 +++++++ .../jamlib/impl/network/PlatformNetwork.java | 19 +++++ .../jamalam360/jamlib/impl/package-info.java | 4 + .../platform/fabric/PlatformImpl.java | 4 +- .../jamlib/fabric/JamLibClientFabric.java | 11 --- .../jamlib/fabric/JamLibFabric.java | 12 --- .../jamlib/impl/JamLibClientFabric.java | 15 ++++ .../jamalam360/jamlib/impl/JamLibFabric.java | 20 +++++ .../config/ModMenuCompatibility.java | 8 +- .../network/fabric/PlatformNetworkImpl.java | 32 +++++++ fabric/src/main/resources/fabric.mod.json | 6 +- .../platform/neoforge/PlatformImpl.java | 5 +- .../{neoforge => impl}/JamLibNeoForge.java | 2 +- .../JamLibNeoForgeClient.java | 9 +- .../io/github/jamalam360/testmod/TestMod.java | 26 +++++- .../jamalam360/testmod/TestModClient.java | 12 +++ .../QuickerConnectButtonTestConfig.java | 6 +- .../jamalam360/testmod/config/TestConfig.java | 14 ++-- .../testmod/item/PacketPotatoItem.java | 31 +++++++ .../testmod/network/PotatoPacket.java | 22 +++++ .../testmod/fabric/TestModClientFabric.java | 11 +++ .../src/main/resources/fabric.mod.json | 3 + 63 files changed, 446 insertions(+), 130 deletions(-) rename common/src/client/java/io/github/jamalam360/jamlib/{ => api}/events/client/ClientPlayLifecycleEvents.java (92%) rename common/src/client/java/io/github/jamalam360/jamlib/{client => api}/gui/WidgetList.java (98%) delete mode 100644 common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/package-info.java rename common/src/client/java/io/github/jamalam360/jamlib/{client => impl}/JamLibClient.java (93%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/ConfigScreen.java (92%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/SelectConfigScreen.java (93%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/SelectionList.java (93%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/SelectionListEntry.java (98%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/BooleanConfigEntry.java (91%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/ConfigEntry.java (95%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/ConfigField.java (77%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/EnumButton.java (94%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/EnumConfigEntry.java (92%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/FieldConfigField.java (91%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/ListConfigEntry.java (93%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/ListMemberConfigField.java (93%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/NumberConfigEntry.java (94%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/SliderButton.java (95%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/config/gui => impl/config/client}/entry/StringConfigEntry.java (90%) rename common/src/client/java/io/github/jamalam360/jamlib/{client => impl}/mixinsupport/MutableSpriteImageWidget$Sprite.java (70%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/config/ConfigExtensions.java (99%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/config/ConfigManager.java (98%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/config/HiddenInGui.java (75%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/config/MatchesRegex.java (89%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/config/RequiresRestart.java (90%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/config/Slider.java (91%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/config/WithinRange.java (90%) create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkContext.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadHandler.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadType.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/network/PayloadType.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/network/StreamCodecNetworkPayloadType.java rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/platform/ModInfo.java (73%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/platform/ModLoader.java (93%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/platform/Platform.java (97%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => impl}/JarRenamingChecker.java (97%) create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/impl/network/JamLibPacket.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/impl/network/PlatformNetwork.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/impl/package-info.java rename fabric/src/main/java/io/github/jamalam360/jamlib/{ => api}/platform/fabric/PlatformImpl.java (88%) delete mode 100644 fabric/src/main/java/io/github/jamalam360/jamlib/fabric/JamLibClientFabric.java delete mode 100644 fabric/src/main/java/io/github/jamalam360/jamlib/fabric/JamLibFabric.java create mode 100644 fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibClientFabric.java create mode 100644 fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibFabric.java rename fabric/src/main/java/io/github/jamalam360/jamlib/{fabric => impl}/config/ModMenuCompatibility.java (83%) create mode 100644 fabric/src/main/java/io/github/jamalam360/jamlib/impl/network/fabric/PlatformNetworkImpl.java rename neoforge/src/main/java/io/github/jamalam360/jamlib/{ => api}/platform/neoforge/PlatformImpl.java (85%) rename neoforge/src/main/java/io/github/jamalam360/jamlib/{neoforge => impl}/JamLibNeoForge.java (79%) rename neoforge/src/main/java/io/github/jamalam360/jamlib/{neoforge => impl}/JamLibNeoForgeClient.java (82%) create mode 100644 testmod-common/src/main/java/io/github/jamalam360/testmod/TestModClient.java create mode 100644 testmod-common/src/main/java/io/github/jamalam360/testmod/item/PacketPotatoItem.java create mode 100644 testmod-common/src/main/java/io/github/jamalam360/testmod/network/PotatoPacket.java create mode 100644 testmod-fabric/src/main/java/io/github/jamalam360/testmod/fabric/TestModClientFabric.java diff --git a/common/src/client/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java b/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java similarity index 92% rename from common/src/client/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java rename to common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java index 540f5b2..f4e1ce3 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.events.client; +package io.github.jamalam360.jamlib.api.events.client; import dev.architectury.event.Event; import dev.architectury.event.EventFactory; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/gui/WidgetList.java b/common/src/client/java/io/github/jamalam360/jamlib/api/gui/WidgetList.java similarity index 98% rename from common/src/client/java/io/github/jamalam360/jamlib/client/gui/WidgetList.java rename to common/src/client/java/io/github/jamalam360/jamlib/api/gui/WidgetList.java index 06f3464..7fed2f5 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/gui/WidgetList.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/api/gui/WidgetList.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.gui; +package io.github.jamalam360.jamlib.api.gui; import com.google.common.collect.ImmutableList; import net.minecraft.client.Minecraft; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/package-info.java b/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/package-info.java deleted file mode 100644 index 2ba9aeb..0000000 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * All classes in this package are internal. - */ -@ApiStatus.Internal -package io.github.jamalam360.jamlib.client.config.gui.entry; - -import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/ImageWidget$SpriteMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/ImageWidget$SpriteMixin.java index fbb7ba6..917cd5c 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/ImageWidget$SpriteMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/ImageWidget$SpriteMixin.java @@ -1,6 +1,6 @@ package io.github.jamalam360.jamlib.client.mixin; -import io.github.jamalam360.jamlib.client.mixinsupport.MutableSpriteImageWidget$Sprite; +import io.github.jamalam360.jamlib.impl.mixinsupport.MutableSpriteImageWidget$Sprite; import net.minecraft.resources.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java index 6079aec..3c658b3 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java @@ -1,8 +1,6 @@ package io.github.jamalam360.jamlib.client.mixin.event; -import io.github.jamalam360.jamlib.events.client.ClientPlayLifecycleEvents; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; +import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.network.protocol.game.ClientboundLoginPacket; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java index 7d82d5d..a7415e7 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java @@ -1,6 +1,6 @@ package io.github.jamalam360.jamlib.client.mixin.event; -import io.github.jamalam360.jamlib.events.client.ClientPlayLifecycleEvents; +import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; import io.netty.channel.ChannelHandlerContext; import net.minecraft.client.Minecraft; import net.minecraft.network.Connection; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/JamLibClient.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java similarity index 93% rename from common/src/client/java/io/github/jamalam360/jamlib/client/JamLibClient.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java index 852e0d3..8383f85 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/JamLibClient.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java @@ -1,8 +1,8 @@ -package io.github.jamalam360.jamlib.client; +package io.github.jamalam360.jamlib.impl; import static io.github.jamalam360.jamlib.JamLib.JAR_RENAMING_CHECKER; -import io.github.jamalam360.jamlib.events.client.ClientPlayLifecycleEvents; +import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/ConfigScreen.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/ConfigScreen.java similarity index 92% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/ConfigScreen.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/ConfigScreen.java index bdafb6d..e2fc5a8 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/ConfigScreen.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/ConfigScreen.java @@ -1,13 +1,13 @@ -package io.github.jamalam360.jamlib.client.config.gui; +package io.github.jamalam360.jamlib.impl.config.client; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.client.config.gui.entry.ConfigEntry; -import io.github.jamalam360.jamlib.client.gui.WidgetList; -import io.github.jamalam360.jamlib.config.ConfigExtensions; -import io.github.jamalam360.jamlib.config.ConfigManager; -import io.github.jamalam360.jamlib.config.HiddenInGui; -import io.github.jamalam360.jamlib.platform.ModInfo; -import io.github.jamalam360.jamlib.platform.Platform; +import io.github.jamalam360.jamlib.impl.config.client.entry.ConfigEntry; +import io.github.jamalam360.jamlib.api.gui.WidgetList; +import io.github.jamalam360.jamlib.api.config.ConfigExtensions; +import io.github.jamalam360.jamlib.api.config.ConfigManager; +import io.github.jamalam360.jamlib.api.config.HiddenInGui; +import io.github.jamalam360.jamlib.api.platform.ModInfo; +import io.github.jamalam360.jamlib.api.platform.Platform; import net.minecraft.util.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectConfigScreen.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectConfigScreen.java similarity index 93% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectConfigScreen.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectConfigScreen.java index bcd19c1..c9b2192 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectConfigScreen.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectConfigScreen.java @@ -1,11 +1,11 @@ -package io.github.jamalam360.jamlib.client.config.gui; +package io.github.jamalam360.jamlib.impl.config.client; -import io.github.jamalam360.jamlib.config.ConfigManager; +import io.github.jamalam360.jamlib.api.config.ConfigManager; import java.util.List; import java.util.Objects; -import io.github.jamalam360.jamlib.platform.ModInfo; -import io.github.jamalam360.jamlib.platform.Platform; +import io.github.jamalam360.jamlib.api.platform.ModInfo; +import io.github.jamalam360.jamlib.api.platform.Platform; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectionList.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionList.java similarity index 93% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectionList.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionList.java index d99becd..b1a7219 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectionList.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionList.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.config.gui; +package io.github.jamalam360.jamlib.impl.config.client; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectionListEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionListEntry.java similarity index 98% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectionListEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionListEntry.java index 44e1978..8719f47 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/SelectionListEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionListEntry.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.config.gui; +package io.github.jamalam360.jamlib.impl.config.client; import java.util.List; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/BooleanConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/BooleanConfigEntry.java similarity index 91% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/BooleanConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/BooleanConfigEntry.java index 2d5ed8e..f102a11 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/BooleanConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/BooleanConfigEntry.java @@ -1,10 +1,9 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.Component; -import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; import java.util.List; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigEntry.java similarity index 95% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigEntry.java index 3cff140..b9638a2 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigEntry.java @@ -1,11 +1,11 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; import com.google.gson.Gson; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.client.config.gui.ConfigScreen; -import io.github.jamalam360.jamlib.client.mixinsupport.MutableSpriteImageWidget$Sprite; -import io.github.jamalam360.jamlib.config.ConfigExtensions; -import io.github.jamalam360.jamlib.config.ConfigManager; +import io.github.jamalam360.jamlib.impl.config.client.ConfigScreen; +import io.github.jamalam360.jamlib.impl.mixinsupport.MutableSpriteImageWidget$Sprite; +import io.github.jamalam360.jamlib.api.config.ConfigExtensions; +import io.github.jamalam360.jamlib.api.config.ConfigManager; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.ImageWidget; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ConfigField.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigField.java similarity index 77% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ConfigField.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigField.java index 314d560..6bb567d 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ConfigField.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigField.java @@ -1,6 +1,6 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; -import io.github.jamalam360.jamlib.config.ConfigManager; +import io.github.jamalam360.jamlib.api.config.ConfigManager; import java.lang.annotation.Annotation; import java.lang.reflect.Field; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/EnumButton.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumButton.java similarity index 94% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/EnumButton.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumButton.java index 4625239..17094de 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/EnumButton.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumButton.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.CommonComponents; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/EnumConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumConfigEntry.java similarity index 92% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/EnumConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumConfigEntry.java index 2df7af5..74da60f 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/EnumConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumConfigEntry.java @@ -1,6 +1,6 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; -import io.github.jamalam360.jamlib.client.config.gui.ConfigScreen; +import io.github.jamalam360.jamlib.impl.config.client.ConfigScreen; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.CommonComponents; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/FieldConfigField.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/FieldConfigField.java similarity index 91% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/FieldConfigField.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/FieldConfigField.java index 2930e55..01252b1 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/FieldConfigField.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/FieldConfigField.java @@ -1,7 +1,7 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.config.ConfigManager; +import io.github.jamalam360.jamlib.api.config.ConfigManager; import java.lang.annotation.Annotation; import java.lang.reflect.Field; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ListConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListConfigEntry.java similarity index 93% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ListConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListConfigEntry.java index 9c03c00..3fc3557 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ListConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListConfigEntry.java @@ -1,19 +1,15 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; -import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.client.gui.WidgetList; -import io.github.jamalam360.jamlib.config.ConfigExtensions; +import io.github.jamalam360.jamlib.api.gui.WidgetList; +import io.github.jamalam360.jamlib.api.config.ConfigExtensions; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; -import net.minecraft.client.gui.components.ImageWidget; -import net.minecraft.client.gui.components.Tooltip; import net.minecraft.network.chat.Component; import java.lang.reflect.ParameterizedType; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.function.Predicate; public class ListConfigEntry extends ConfigEntry> { private List> listMembers; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ListMemberConfigField.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListMemberConfigField.java similarity index 93% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ListMemberConfigField.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListMemberConfigField.java index 2db249e..2586722 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/ListMemberConfigField.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListMemberConfigField.java @@ -1,7 +1,7 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.config.ConfigManager; +import io.github.jamalam360.jamlib.api.config.ConfigManager; import java.lang.annotation.Annotation; import java.lang.reflect.Field; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/NumberConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/NumberConfigEntry.java similarity index 94% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/NumberConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/NumberConfigEntry.java index f777c5b..fb8ca1e 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/NumberConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/NumberConfigEntry.java @@ -1,7 +1,7 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; -import io.github.jamalam360.jamlib.config.Slider; -import io.github.jamalam360.jamlib.config.WithinRange; +import io.github.jamalam360.jamlib.api.config.Slider; +import io.github.jamalam360.jamlib.api.config.WithinRange; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.EditBox; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/SliderButton.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/SliderButton.java similarity index 95% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/SliderButton.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/SliderButton.java index e29b18c..9c9dbac 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/SliderButton.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/SliderButton.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; import net.minecraft.client.gui.components.AbstractSliderButton; import net.minecraft.network.chat.Component; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/StringConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/StringConfigEntry.java similarity index 90% rename from common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/StringConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/StringConfigEntry.java index d21bdf1..344c09d 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/config/gui/entry/StringConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/StringConfigEntry.java @@ -1,10 +1,9 @@ -package io.github.jamalam360.jamlib.client.config.gui.entry; +package io.github.jamalam360.jamlib.impl.config.client.entry; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.CommonComponents; -import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; import java.util.List; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixinsupport/MutableSpriteImageWidget$Sprite.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java similarity index 70% rename from common/src/client/java/io/github/jamalam360/jamlib/client/mixinsupport/MutableSpriteImageWidget$Sprite.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java index 083fc3d..41590ed 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixinsupport/MutableSpriteImageWidget$Sprite.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.mixinsupport; +package io.github.jamalam360.jamlib.impl.mixinsupport; import net.minecraft.resources.Identifier; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/JamLib.java b/common/src/main/java/io/github/jamalam360/jamlib/JamLib.java index 7a1469b..7e555e1 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/JamLib.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/JamLib.java @@ -1,6 +1,7 @@ package io.github.jamalam360.jamlib; -import io.github.jamalam360.jamlib.platform.Platform; +import io.github.jamalam360.jamlib.api.platform.Platform; +import io.github.jamalam360.jamlib.impl.JarRenamingChecker; import net.minecraft.resources.Identifier; import org.jetbrains.annotations.ApiStatus; import org.slf4j.Logger; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/config/ConfigExtensions.java b/common/src/main/java/io/github/jamalam360/jamlib/api/config/ConfigExtensions.java similarity index 99% rename from common/src/main/java/io/github/jamalam360/jamlib/config/ConfigExtensions.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/config/ConfigExtensions.java index 0f1a3b4..590b0a3 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/config/ConfigExtensions.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/config/ConfigExtensions.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.config; +package io.github.jamalam360.jamlib.api.config; import io.github.jamalam360.jamlib.JamLib; import net.minecraft.network.chat.Component; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/config/ConfigManager.java b/common/src/main/java/io/github/jamalam360/jamlib/api/config/ConfigManager.java similarity index 98% rename from common/src/main/java/io/github/jamalam360/jamlib/config/ConfigManager.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/config/ConfigManager.java index de94829..381a379 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/config/ConfigManager.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/config/ConfigManager.java @@ -1,11 +1,11 @@ -package io.github.jamalam360.jamlib.config; +package io.github.jamalam360.jamlib.api.config; import blue.endless.jankson.Jankson; import blue.endless.jankson.JsonElement; import blue.endless.jankson.JsonGrammar; import blue.endless.jankson.JsonObject; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.platform.Platform; +import io.github.jamalam360.jamlib.api.platform.Platform; import org.jetbrains.annotations.ApiStatus; import java.io.IOException; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/config/HiddenInGui.java b/common/src/main/java/io/github/jamalam360/jamlib/api/config/HiddenInGui.java similarity index 75% rename from common/src/main/java/io/github/jamalam360/jamlib/config/HiddenInGui.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/config/HiddenInGui.java index 6350c01..53a7ce0 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/config/HiddenInGui.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/config/HiddenInGui.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.config; +package io.github.jamalam360.jamlib.api.config; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -6,7 +6,7 @@ import java.lang.annotation.Target; /** - * Applying this to a config field will cause it to not show in the {@link io.github.jamalam360.jamlib.client.config.gui.ConfigScreen}. + * Applying this to a config field will cause it to not show in the config screen. * * @see ConfigManager */ diff --git a/common/src/main/java/io/github/jamalam360/jamlib/config/MatchesRegex.java b/common/src/main/java/io/github/jamalam360/jamlib/api/config/MatchesRegex.java similarity index 89% rename from common/src/main/java/io/github/jamalam360/jamlib/config/MatchesRegex.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/config/MatchesRegex.java index 44773b4..e74c6af 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/config/MatchesRegex.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/config/MatchesRegex.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.config; +package io.github.jamalam360.jamlib.api.config; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/config/RequiresRestart.java b/common/src/main/java/io/github/jamalam360/jamlib/api/config/RequiresRestart.java similarity index 90% rename from common/src/main/java/io/github/jamalam360/jamlib/config/RequiresRestart.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/config/RequiresRestart.java index 7cb5224..81b18a2 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/config/RequiresRestart.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/config/RequiresRestart.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.config; +package io.github.jamalam360.jamlib.api.config; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/config/Slider.java b/common/src/main/java/io/github/jamalam360/jamlib/api/config/Slider.java similarity index 91% rename from common/src/main/java/io/github/jamalam360/jamlib/config/Slider.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/config/Slider.java index 67456e4..eaa1bdc 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/config/Slider.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/config/Slider.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.config; +package io.github.jamalam360.jamlib.api.config; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/config/WithinRange.java b/common/src/main/java/io/github/jamalam360/jamlib/api/config/WithinRange.java similarity index 90% rename from common/src/main/java/io/github/jamalam360/jamlib/config/WithinRange.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/config/WithinRange.java index fb65314..544d093 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/config/WithinRange.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/config/WithinRange.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.config; +package io.github.jamalam360.jamlib.api.config; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java new file mode 100644 index 0000000..1b35fc7 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java @@ -0,0 +1,83 @@ +package io.github.jamalam360.jamlib.api.network; + +import io.github.jamalam360.jamlib.JamLib; +import io.github.jamalam360.jamlib.impl.network.JamLibPacket; +import io.github.jamalam360.jamlib.impl.network.PlatformNetwork; +import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.ApiStatus; + +import java.util.*; + +public class Network { + private static final Map, NetworkPayloadType> types = new HashMap<>(); + private static final Map, NetworkPayloadHandler> clientBoundHandlers = new HashMap<>(); + private static final Map, NetworkPayloadHandler> serverBoundHandlers = new HashMap<>(); + + public static void registerHandler(Direction direction, PayloadType id, NetworkPayloadHandler handler) { + Map, NetworkPayloadHandler> handlers = switch (direction) { + case CLIENT_BOUND -> clientBoundHandlers; + case SERVER_BOUND -> serverBoundHandlers; + }; + + if (handlers.containsKey(id)) { + throw new IllegalArgumentException("A handler for the payload type with the id " + id + " is already registered"); + } + + handlers.put(id, handler); + } + + public static void registerPayloadType(PayloadType id, NetworkPayloadType type) { + if (types.containsKey(id)) { + throw new IllegalArgumentException("A payload type with the id " + id + " is already registered"); + } + + types.put(id, type); + JamLib.LOGGER.info("Registered network payload type {}", id.id()); + } + + @SuppressWarnings("unchecked") + public static void sendToServer(PayloadType id, T payload) { + if (!types.containsKey(id)) { + throw new IllegalArgumentException("No payload type with the id " + id + " is registered"); + } + + NetworkPayloadType type = (NetworkPayloadType) types.get(id); + PlatformNetwork.sendToServer(id, type.getSerializer(), payload); + } + + @SuppressWarnings("unchecked") + public static void sendToClient(ServerPlayer player, PayloadType id, T payload) { + if (!types.containsKey(id)) { + throw new IllegalArgumentException("No payload type with the id " + id + " is registered"); + } + + NetworkPayloadType type = (NetworkPayloadType) types.get(id); + PlatformNetwork.sendToClient(player, id, type.getSerializer(), payload); + } + + @SuppressWarnings("unchecked") + @ApiStatus.Internal + public static void receive(Direction direction, NetworkContext context, JamLibPacket packet) { + Map, NetworkPayloadHandler> handlers = switch (direction) { + case CLIENT_BOUND -> clientBoundHandlers; + case SERVER_BOUND -> serverBoundHandlers; + }; + + if (!types.containsKey(packet.payloadType())) { + throw new IllegalArgumentException("No payload type with the id " + packet.payloadType() + " is registered"); + } + + if (!handlers.containsKey(packet.payloadType())) { + throw new IllegalStateException("Received a packet with the id " + packet.payloadType() + " for which no handler is registered"); + } + + NetworkPayloadType type = (NetworkPayloadType) types.get(packet.payloadType()); + NetworkPayloadHandler handler = (NetworkPayloadHandler) handlers.get(packet.payloadType()); + handler.handle(context, type.getDeserializer().deserialize(packet.payload())); + } + + public enum Direction { + CLIENT_BOUND, + SERVER_BOUND + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkContext.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkContext.java new file mode 100644 index 0000000..4e5e318 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkContext.java @@ -0,0 +1,6 @@ +package io.github.jamalam360.jamlib.api.network; + +import net.minecraft.world.entity.player.Player; + +public record NetworkContext(Player player) { +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadHandler.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadHandler.java new file mode 100644 index 0000000..eca5247 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadHandler.java @@ -0,0 +1,6 @@ +package io.github.jamalam360.jamlib.api.network; + +@FunctionalInterface +public interface NetworkPayloadHandler { + void handle(NetworkContext ctx, T payload); +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadType.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadType.java new file mode 100644 index 0000000..c3778bb --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadType.java @@ -0,0 +1,18 @@ +package io.github.jamalam360.jamlib.api.network; + +import net.minecraft.network.RegistryFriendlyByteBuf; + +public interface NetworkPayloadType { + Serializer getSerializer(); + Deserializer getDeserializer(); + + @FunctionalInterface + interface Serializer { + void serialize(T object, RegistryFriendlyByteBuf buf); + } + + @FunctionalInterface + interface Deserializer { + T deserialize(RegistryFriendlyByteBuf buf); + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/PayloadType.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/PayloadType.java new file mode 100644 index 0000000..1117d8d --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/PayloadType.java @@ -0,0 +1,6 @@ +package io.github.jamalam360.jamlib.api.network; + +import net.minecraft.resources.Identifier; + +public record PayloadType(Identifier id) { +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/StreamCodecNetworkPayloadType.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/StreamCodecNetworkPayloadType.java new file mode 100644 index 0000000..885ea5a --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/StreamCodecNetworkPayloadType.java @@ -0,0 +1,18 @@ +package io.github.jamalam360.jamlib.api.network; + +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; + +public interface StreamCodecNetworkPayloadType extends NetworkPayloadType { + StreamCodec getStreamCodec(); + + @Override + default Serializer getSerializer() { + return (object, buf) -> getStreamCodec().encode(buf, object); + } + + @Override + default Deserializer getDeserializer() { + return buf -> getStreamCodec().decode(buf); + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/platform/ModInfo.java b/common/src/main/java/io/github/jamalam360/jamlib/api/platform/ModInfo.java similarity index 73% rename from common/src/main/java/io/github/jamalam360/jamlib/platform/ModInfo.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/platform/ModInfo.java index b09cb1c..abd67b6 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/platform/ModInfo.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/platform/ModInfo.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.platform; +package io.github.jamalam360.jamlib.api.platform; /** * A basic platform-independent representation of a mod. diff --git a/common/src/main/java/io/github/jamalam360/jamlib/platform/ModLoader.java b/common/src/main/java/io/github/jamalam360/jamlib/api/platform/ModLoader.java similarity index 93% rename from common/src/main/java/io/github/jamalam360/jamlib/platform/ModLoader.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/platform/ModLoader.java index 4900a23..fcde5ed 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/platform/ModLoader.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/platform/ModLoader.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.platform; +package io.github.jamalam360.jamlib.api.platform; /** * A mod loader. diff --git a/common/src/main/java/io/github/jamalam360/jamlib/platform/Platform.java b/common/src/main/java/io/github/jamalam360/jamlib/api/platform/Platform.java similarity index 97% rename from common/src/main/java/io/github/jamalam360/jamlib/platform/Platform.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/platform/Platform.java index 15b8670..5fab62d 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/platform/Platform.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/platform/Platform.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.platform; +package io.github.jamalam360.jamlib.api.platform; import dev.architectury.injectables.annotations.ExpectPlatform; import io.github.jamalam360.jamlib.JamLib; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/JarRenamingChecker.java b/common/src/main/java/io/github/jamalam360/jamlib/impl/JarRenamingChecker.java similarity index 97% rename from common/src/main/java/io/github/jamalam360/jamlib/JarRenamingChecker.java rename to common/src/main/java/io/github/jamalam360/jamlib/impl/JarRenamingChecker.java index 297dad8..6edde7e 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/JarRenamingChecker.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/impl/JarRenamingChecker.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib; +package io.github.jamalam360.jamlib.impl; import com.google.common.io.Files; import java.io.File; @@ -8,13 +8,13 @@ import java.util.ArrayList; import java.util.List; import java.util.jar.Manifest; -import org.jetbrains.annotations.ApiStatus; + +import io.github.jamalam360.jamlib.JamLib; import org.jetbrains.annotations.Nullable; // 9minecraft and related sites often rename jars. // This class checks the manifest of a given class to see if it has been renamed. // For this to work, the jar's manifest file has to have a "JamLib-File-Name" attribute. -@ApiStatus.Internal public class JarRenamingChecker { private final List suspiciousJars = new ArrayList<>(); diff --git a/common/src/main/java/io/github/jamalam360/jamlib/impl/network/JamLibPacket.java b/common/src/main/java/io/github/jamalam360/jamlib/impl/network/JamLibPacket.java new file mode 100644 index 0000000..5639e6f --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/impl/network/JamLibPacket.java @@ -0,0 +1,29 @@ +package io.github.jamalam360.jamlib.impl.network; + +import io.github.jamalam360.jamlib.JamLib; +import io.github.jamalam360.jamlib.api.network.PayloadType; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.Identifier; + +public record JamLibPacket(PayloadType payloadType, RegistryFriendlyByteBuf payload) implements CustomPacketPayload { + public static final Identifier JAMLIB_PACKET_ID = JamLib.id("packet"); + public static final CustomPacketPayload.Type TYPE = new CustomPacketPayload.Type<>(JAMLIB_PACKET_ID); + public static final StreamCodec CODEC = StreamCodec.of( + (buf, packet) -> { + buf.writeIdentifier(packet.payloadType().id()); + buf.writeBytes(packet.payload()); + }, + (buf) -> { + Identifier payloadType = buf.readIdentifier(); + RegistryFriendlyByteBuf payload = new RegistryFriendlyByteBuf(buf.readBytes(buf.readableBytes()), buf.registryAccess()); + return new JamLibPacket(new PayloadType<>(payloadType), payload); + } + ); + + @Override + public Type type() { + return TYPE; + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/impl/network/PlatformNetwork.java b/common/src/main/java/io/github/jamalam360/jamlib/impl/network/PlatformNetwork.java new file mode 100644 index 0000000..b1c77e2 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/impl/network/PlatformNetwork.java @@ -0,0 +1,19 @@ +package io.github.jamalam360.jamlib.impl.network; + +import dev.architectury.injectables.annotations.ExpectPlatform; +import io.github.jamalam360.jamlib.JamLib; +import io.github.jamalam360.jamlib.api.network.NetworkPayloadType; +import io.github.jamalam360.jamlib.api.network.PayloadType; +import net.minecraft.server.level.ServerPlayer; + +public class PlatformNetwork { + @ExpectPlatform + public static void sendToServer(PayloadType payloadType, NetworkPayloadType.Serializer serializer, T payload) { + JamLib.expectPlatform(); + } + + @ExpectPlatform + public static void sendToClient(ServerPlayer target, PayloadType payloadType, NetworkPayloadType.Serializer serializer, T payload) { + JamLib.expectPlatform(); + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/impl/package-info.java b/common/src/main/java/io/github/jamalam360/jamlib/impl/package-info.java new file mode 100644 index 0000000..b398e33 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/impl/package-info.java @@ -0,0 +1,4 @@ +@ApiStatus.Internal +package io.github.jamalam360.jamlib.impl; + +import org.jetbrains.annotations.ApiStatus; diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/platform/fabric/PlatformImpl.java b/fabric/src/main/java/io/github/jamalam360/jamlib/api/platform/fabric/PlatformImpl.java similarity index 88% rename from fabric/src/main/java/io/github/jamalam360/jamlib/platform/fabric/PlatformImpl.java rename to fabric/src/main/java/io/github/jamalam360/jamlib/api/platform/fabric/PlatformImpl.java index 8413c08..9cfe109 100644 --- a/fabric/src/main/java/io/github/jamalam360/jamlib/platform/fabric/PlatformImpl.java +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/api/platform/fabric/PlatformImpl.java @@ -1,6 +1,6 @@ -package io.github.jamalam360.jamlib.platform.fabric; +package io.github.jamalam360.jamlib.api.platform.fabric; -import io.github.jamalam360.jamlib.platform.ModInfo; +import io.github.jamalam360.jamlib.api.platform.ModInfo; import net.fabricmc.loader.api.FabricLoader; import java.nio.file.Path; diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/fabric/JamLibClientFabric.java b/fabric/src/main/java/io/github/jamalam360/jamlib/fabric/JamLibClientFabric.java deleted file mode 100644 index e4c25e8..0000000 --- a/fabric/src/main/java/io/github/jamalam360/jamlib/fabric/JamLibClientFabric.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.github.jamalam360.jamlib.fabric; - -import io.github.jamalam360.jamlib.client.JamLibClient; -import net.fabricmc.api.ClientModInitializer; - -public class JamLibClientFabric implements ClientModInitializer { - @Override - public void onInitializeClient() { - JamLibClient.init(); - } -} diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/fabric/JamLibFabric.java b/fabric/src/main/java/io/github/jamalam360/jamlib/fabric/JamLibFabric.java deleted file mode 100644 index 4e3a148..0000000 --- a/fabric/src/main/java/io/github/jamalam360/jamlib/fabric/JamLibFabric.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.github.jamalam360.jamlib.fabric; - -import io.github.jamalam360.jamlib.JamLib; -import net.fabricmc.api.ModInitializer; - -public class JamLibFabric implements ModInitializer { - - @Override - public void onInitialize() { - JamLib.init(); - } -} diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibClientFabric.java b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibClientFabric.java new file mode 100644 index 0000000..5756315 --- /dev/null +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibClientFabric.java @@ -0,0 +1,15 @@ +package io.github.jamalam360.jamlib.impl; + +import io.github.jamalam360.jamlib.api.network.Network; +import io.github.jamalam360.jamlib.api.network.NetworkContext; +import io.github.jamalam360.jamlib.impl.network.JamLibPacket; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; + +public class JamLibClientFabric implements ClientModInitializer { + @Override + public void onInitializeClient() { + JamLibClient.init(); + ClientPlayNetworking.registerGlobalReceiver(JamLibPacket.TYPE, (payload, ctx) -> Network.receive(Network.Direction.CLIENT_BOUND, new NetworkContext(ctx.player()), payload)); + } +} diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibFabric.java b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibFabric.java new file mode 100644 index 0000000..3d87497 --- /dev/null +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibFabric.java @@ -0,0 +1,20 @@ +package io.github.jamalam360.jamlib.impl; + +import io.github.jamalam360.jamlib.JamLib; +import io.github.jamalam360.jamlib.api.network.Network; +import io.github.jamalam360.jamlib.api.network.NetworkContext; +import io.github.jamalam360.jamlib.impl.network.JamLibPacket; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; + +public class JamLibFabric implements ModInitializer { + + @Override + public void onInitialize() { + JamLib.init(); + PayloadTypeRegistry.playC2S().register(JamLibPacket.TYPE, JamLibPacket.CODEC); + PayloadTypeRegistry.playS2C().register(JamLibPacket.TYPE, JamLibPacket.CODEC); + ServerPlayNetworking.registerGlobalReceiver(JamLibPacket.TYPE, (payload, ctx) -> Network.receive(Network.Direction.SERVER_BOUND, new NetworkContext(ctx.player()), payload)); + } +} diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/fabric/config/ModMenuCompatibility.java b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/config/ModMenuCompatibility.java similarity index 83% rename from fabric/src/main/java/io/github/jamalam360/jamlib/fabric/config/ModMenuCompatibility.java rename to fabric/src/main/java/io/github/jamalam360/jamlib/impl/config/ModMenuCompatibility.java index d8fa8d1..b33784d 100644 --- a/fabric/src/main/java/io/github/jamalam360/jamlib/fabric/config/ModMenuCompatibility.java +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/config/ModMenuCompatibility.java @@ -1,11 +1,11 @@ -package io.github.jamalam360.jamlib.fabric.config; +package io.github.jamalam360.jamlib.impl.config; import com.mojang.datafixers.util.Pair; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; -import io.github.jamalam360.jamlib.config.ConfigManager; -import io.github.jamalam360.jamlib.client.config.gui.ConfigScreen; -import io.github.jamalam360.jamlib.client.config.gui.SelectConfigScreen; +import io.github.jamalam360.jamlib.api.config.ConfigManager; +import io.github.jamalam360.jamlib.impl.config.client.ConfigScreen; +import io.github.jamalam360.jamlib.impl.config.client.SelectConfigScreen; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/network/fabric/PlatformNetworkImpl.java b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/network/fabric/PlatformNetworkImpl.java new file mode 100644 index 0000000..5ddcf24 --- /dev/null +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/network/fabric/PlatformNetworkImpl.java @@ -0,0 +1,32 @@ +package io.github.jamalam360.jamlib.impl.network.fabric; + +import io.github.jamalam360.jamlib.api.network.NetworkPayloadType; +import io.github.jamalam360.jamlib.api.network.PayloadType; +import io.github.jamalam360.jamlib.impl.network.JamLibPacket; +import io.netty.buffer.Unpooled; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.client.Minecraft; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.server.level.ServerPlayer; + +public class PlatformNetworkImpl { + public static void sendToServer(PayloadType payloadType, NetworkPayloadType.Serializer serializer, T payload) { + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.level == null) { + throw new IllegalStateException("Attempted to send a play phase packet before a level exists"); + } + + RegistryFriendlyByteBuf payloadData = new RegistryFriendlyByteBuf(Unpooled.buffer(), minecraft.level.registryAccess()); + serializer.serialize(payload, payloadData); + JamLibPacket packet = new JamLibPacket(payloadType, payloadData); + ClientPlayNetworking.send(packet); + } + + public static void sendToClient(ServerPlayer target, PayloadType payloadType, NetworkPayloadType.Serializer serializer, T payload) { + RegistryFriendlyByteBuf payloadData = new RegistryFriendlyByteBuf(Unpooled.buffer(), target.level().registryAccess()); + serializer.serialize(payload, payloadData); + JamLibPacket packet = new JamLibPacket(payloadType, payloadData); + ServerPlayNetworking.send(target, packet); + } +} diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 5b908fd..972221f 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -17,13 +17,13 @@ "environment": "*", "entrypoints": { "main": [ - "io.github.jamalam360.jamlib.fabric.JamLibFabric" + "io.github.jamalam360.jamlib.impl.JamLibFabric" ], "client": [ - "io.github.jamalam360.jamlib.fabric.JamLibClientFabric" + "io.github.jamalam360.jamlib.impl.JamLibClientFabric" ], "modmenu": [ - "io.github.jamalam360.jamlib.fabric.config.ModMenuCompatibility" + "io.github.jamalam360.jamlib.impl.config.ModMenuCompatibility" ] }, "mixins": [ diff --git a/neoforge/src/main/java/io/github/jamalam360/jamlib/platform/neoforge/PlatformImpl.java b/neoforge/src/main/java/io/github/jamalam360/jamlib/api/platform/neoforge/PlatformImpl.java similarity index 85% rename from neoforge/src/main/java/io/github/jamalam360/jamlib/platform/neoforge/PlatformImpl.java rename to neoforge/src/main/java/io/github/jamalam360/jamlib/api/platform/neoforge/PlatformImpl.java index 005693a..6dbc67d 100644 --- a/neoforge/src/main/java/io/github/jamalam360/jamlib/platform/neoforge/PlatformImpl.java +++ b/neoforge/src/main/java/io/github/jamalam360/jamlib/api/platform/neoforge/PlatformImpl.java @@ -1,7 +1,6 @@ -package io.github.jamalam360.jamlib.platform.neoforge; +package io.github.jamalam360.jamlib.api.platform.neoforge; -import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.platform.ModInfo; +import io.github.jamalam360.jamlib.api.platform.ModInfo; import net.neoforged.fml.ModList; import net.neoforged.fml.loading.FMLEnvironment; import net.neoforged.fml.loading.FMLPaths; diff --git a/neoforge/src/main/java/io/github/jamalam360/jamlib/neoforge/JamLibNeoForge.java b/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForge.java similarity index 79% rename from neoforge/src/main/java/io/github/jamalam360/jamlib/neoforge/JamLibNeoForge.java rename to neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForge.java index 1616adc..40d48e4 100644 --- a/neoforge/src/main/java/io/github/jamalam360/jamlib/neoforge/JamLibNeoForge.java +++ b/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForge.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.neoforge; +package io.github.jamalam360.jamlib.impl; import io.github.jamalam360.jamlib.JamLib; import net.neoforged.fml.common.Mod; diff --git a/neoforge/src/main/java/io/github/jamalam360/jamlib/neoforge/JamLibNeoForgeClient.java b/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForgeClient.java similarity index 82% rename from neoforge/src/main/java/io/github/jamalam360/jamlib/neoforge/JamLibNeoForgeClient.java rename to neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForgeClient.java index 0669728..f001b75 100644 --- a/neoforge/src/main/java/io/github/jamalam360/jamlib/neoforge/JamLibNeoForgeClient.java +++ b/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForgeClient.java @@ -1,10 +1,9 @@ -package io.github.jamalam360.jamlib.neoforge; +package io.github.jamalam360.jamlib.impl; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.client.JamLibClient; -import io.github.jamalam360.jamlib.config.ConfigManager; -import io.github.jamalam360.jamlib.client.config.gui.ConfigScreen; -import io.github.jamalam360.jamlib.client.config.gui.SelectConfigScreen; +import io.github.jamalam360.jamlib.api.config.ConfigManager; +import io.github.jamalam360.jamlib.impl.config.client.ConfigScreen; +import io.github.jamalam360.jamlib.impl.config.client.SelectConfigScreen; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.ModList; diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java index 9c562ba..9031cfe 100644 --- a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java @@ -1,11 +1,19 @@ package io.github.jamalam360.testmod; -import io.github.jamalam360.jamlib.platform.Platform; -import io.github.jamalam360.jamlib.config.ConfigManager; -import io.github.jamalam360.jamlib.events.client.ClientPlayLifecycleEvents; +import dev.architectury.registry.registries.DeferredRegister; +import io.github.jamalam360.jamlib.api.network.Network; +import io.github.jamalam360.jamlib.api.platform.Platform; +import io.github.jamalam360.jamlib.api.config.ConfigManager; +import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; import io.github.jamalam360.testmod.config.NestedConfigChild; import io.github.jamalam360.testmod.config.QuickerConnectButtonTestConfig; import io.github.jamalam360.testmod.config.TestConfig; +import io.github.jamalam360.testmod.item.PacketPotatoItem; +import io.github.jamalam360.testmod.network.PotatoPacket; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.Item; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,5 +35,17 @@ public static void init() { ClientPlayLifecycleEvents.JOIN.register(client -> LOGGER.info("Joined server!")); ClientPlayLifecycleEvents.DISCONNECT.register(client -> LOGGER.info("Left server!")); + + Network.registerPayloadType(PotatoPacket.TYPE, PotatoPacket.INSTANCE); + + DeferredRegister reg = DeferredRegister.create(MOD_ID, Registries.ITEM); + reg.register(id("potato"), () -> new PacketPotatoItem(new Item.Properties().setId( + ResourceKey.create(Registries.ITEM, id("potato")) + ))); + reg.register(); + } + + public static Identifier id(String path) { + return Identifier.fromNamespaceAndPath(MOD_ID, path); } } diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestModClient.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestModClient.java new file mode 100644 index 0000000..8360dd5 --- /dev/null +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestModClient.java @@ -0,0 +1,12 @@ +package io.github.jamalam360.testmod; + +import io.github.jamalam360.jamlib.api.network.Network; +import io.github.jamalam360.testmod.network.PotatoPacket; + +public class TestModClient { + public static void init() { + Network.registerHandler(Network.Direction.CLIENT_BOUND, PotatoPacket.TYPE, (ctx, payload) -> { + TestMod.LOGGER.info("Received potato packet with random: {}", payload.random()); + }); + } +} diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/config/QuickerConnectButtonTestConfig.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/config/QuickerConnectButtonTestConfig.java index 151fdd8..50e1a79 100644 --- a/testmod-common/src/main/java/io/github/jamalam360/testmod/config/QuickerConnectButtonTestConfig.java +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/config/QuickerConnectButtonTestConfig.java @@ -1,9 +1,9 @@ package io.github.jamalam360.testmod.config; import blue.endless.jankson.Comment; -import io.github.jamalam360.jamlib.config.ConfigExtensions; -import io.github.jamalam360.jamlib.config.MatchesRegex; -import io.github.jamalam360.jamlib.config.WithinRange; +import io.github.jamalam360.jamlib.api.config.ConfigExtensions; +import io.github.jamalam360.jamlib.api.config.MatchesRegex; +import io.github.jamalam360.jamlib.api.config.WithinRange; import java.util.List; import net.minecraft.network.chat.Component; diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/config/TestConfig.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/config/TestConfig.java index 7af2f33..ecd0eda 100644 --- a/testmod-common/src/main/java/io/github/jamalam360/testmod/config/TestConfig.java +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/config/TestConfig.java @@ -1,13 +1,13 @@ package io.github.jamalam360.testmod.config; import blue.endless.jankson.Comment; -import io.github.jamalam360.jamlib.config.ConfigExtensions; -import io.github.jamalam360.jamlib.config.ConfigManager; -import io.github.jamalam360.jamlib.config.HiddenInGui; -import io.github.jamalam360.jamlib.config.MatchesRegex; -import io.github.jamalam360.jamlib.config.RequiresRestart; -import io.github.jamalam360.jamlib.config.Slider; -import io.github.jamalam360.jamlib.config.WithinRange; +import io.github.jamalam360.jamlib.api.config.ConfigExtensions; +import io.github.jamalam360.jamlib.api.config.ConfigManager; +import io.github.jamalam360.jamlib.api.config.HiddenInGui; +import io.github.jamalam360.jamlib.api.config.MatchesRegex; +import io.github.jamalam360.jamlib.api.config.RequiresRestart; +import io.github.jamalam360.jamlib.api.config.Slider; +import io.github.jamalam360.jamlib.api.config.WithinRange; import java.util.ArrayList; import java.util.List; diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/item/PacketPotatoItem.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/item/PacketPotatoItem.java new file mode 100644 index 0000000..4449107 --- /dev/null +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/item/PacketPotatoItem.java @@ -0,0 +1,31 @@ +package io.github.jamalam360.testmod.item; + +import io.github.jamalam360.jamlib.api.network.Network; +import io.github.jamalam360.testmod.TestMod; +import io.github.jamalam360.testmod.network.PotatoPacket; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.Level; + +import java.util.Random; + +public class PacketPotatoItem extends Item { + public PacketPotatoItem(Properties properties) { + super(properties); + } + + @Override + public InteractionResult use(Level level, Player player, InteractionHand hand) { + if (level.isClientSide()) { + return InteractionResult.PASS; + } + + int random = new Random().nextInt(3, 10); + TestMod.LOGGER.info("On client: {}", random); + Network.sendToClient((ServerPlayer) player, PotatoPacket.TYPE, new PotatoPacket.Payload(random)); + return InteractionResult.SUCCESS; + } +} diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/network/PotatoPacket.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/network/PotatoPacket.java new file mode 100644 index 0000000..ab3dfd8 --- /dev/null +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/network/PotatoPacket.java @@ -0,0 +1,22 @@ +package io.github.jamalam360.testmod.network; + +import io.github.jamalam360.jamlib.api.network.PayloadType; +import io.github.jamalam360.jamlib.api.network.StreamCodecNetworkPayloadType; +import io.github.jamalam360.testmod.TestMod; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; + +public class PotatoPacket implements StreamCodecNetworkPayloadType { + public static final PotatoPacket INSTANCE = new PotatoPacket(); + public static final PayloadType TYPE = new PayloadType<>(TestMod.id("potato")); + + @Override + public StreamCodec getStreamCodec() { + return StreamCodec.of( + (buf, payload) -> buf.writeInt(payload.random()), + (buf) -> new Payload(buf.readInt()) + ); + } + + public record Payload(int random) {} +} diff --git a/testmod-fabric/src/main/java/io/github/jamalam360/testmod/fabric/TestModClientFabric.java b/testmod-fabric/src/main/java/io/github/jamalam360/testmod/fabric/TestModClientFabric.java new file mode 100644 index 0000000..b18d521 --- /dev/null +++ b/testmod-fabric/src/main/java/io/github/jamalam360/testmod/fabric/TestModClientFabric.java @@ -0,0 +1,11 @@ +package io.github.jamalam360.testmod.fabric; + +import io.github.jamalam360.testmod.TestModClient; +import net.fabricmc.api.ClientModInitializer; + +public class TestModClientFabric implements ClientModInitializer { + @Override + public void onInitializeClient() { + TestModClient.init(); + } +} diff --git a/testmod-fabric/src/main/resources/fabric.mod.json b/testmod-fabric/src/main/resources/fabric.mod.json index 6a54dc5..52bcffc 100644 --- a/testmod-fabric/src/main/resources/fabric.mod.json +++ b/testmod-fabric/src/main/resources/fabric.mod.json @@ -18,6 +18,9 @@ "entrypoints": { "main": [ "io.github.jamalam360.testmod.fabric.TestModFabric" + ], + "client": [ + "io.github.jamalam360.testmod.fabric.TestModClientFabric" ] }, "mixins": [ From 54462a2238fd0ee762be2ae55544ce1cc623df31 Mon Sep 17 00:00:00 2001 From: Jamalam Date: Thu, 2 Apr 2026 20:17:41 +0100 Subject: [PATCH 03/16] feat: foundations of an event system --- .../client/ClientPlayLifecycleEvents.java | 7 ++-- .../event/ClientPacketListenerMixin.java | 2 +- .../client/mixin/event/ConnectionMixin.java | 4 +-- .../jamalam360/jamlib/impl/JamLibClient.java | 2 +- .../jamlib/events/CancellableEvent.java | 19 ++++++++++ .../jamalam360/jamlib/events/Event.java | 35 +++++++++++++++++++ .../jamalam360/jamlib/events/EventResult.java | 31 ++++++++++++++++ .../io/github/jamalam360/testmod/TestMod.java | 4 +-- 8 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/events/CancellableEvent.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/events/Event.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/events/EventResult.java diff --git a/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java b/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java index f4e1ce3..1f271e9 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java @@ -1,7 +1,6 @@ package io.github.jamalam360.jamlib.api.events.client; -import dev.architectury.event.Event; -import dev.architectury.event.EventFactory; +import io.github.jamalam360.jamlib.events.Event; import net.minecraft.client.Minecraft; /** @@ -11,11 +10,11 @@ public class ClientPlayLifecycleEvents { /** * Called when the local player has joined a logical server. */ - public static final Event JOIN = EventFactory.createLoop(Join.class); + public static final Event JOIN = new Event<>(); /** * Called when the local player leaves a logical server. */ - public static final Event DISCONNECT = EventFactory.createLoop(Leave.class); + public static final Event DISCONNECT = new Event<>(); @FunctionalInterface public interface Join { diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java index 3c658b3..a01cd62 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java @@ -19,6 +19,6 @@ public class ClientPacketListenerMixin { at = @At("RETURN") ) private void jamlib$joinServer(ClientboundLoginPacket packet, CallbackInfo ci) { - ClientPlayLifecycleEvents.JOIN.invoker().onJoin(Minecraft.getInstance()); + ClientPlayLifecycleEvents.JOIN.invoke((listener) -> listener.onJoin(Minecraft.getInstance())); } } diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java index a7415e7..ca06146 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java @@ -16,7 +16,7 @@ public class ConnectionMixin { at = @At("HEAD") ) private void jamlib$callDisconnectEvent(ChannelHandlerContext channelHandlerContext, CallbackInfo ci) { - ClientPlayLifecycleEvents.DISCONNECT.invoker().onLeave(Minecraft.getInstance()); + ClientPlayLifecycleEvents.DISCONNECT.invoke((listener) -> listener.onLeave(Minecraft.getInstance())); } @Inject( @@ -27,6 +27,6 @@ public class ConnectionMixin { ) ) private void jamlib$callDisconnectEvent(CallbackInfo ci) { - ClientPlayLifecycleEvents.DISCONNECT.invoker().onLeave(Minecraft.getInstance()); + ClientPlayLifecycleEvents.DISCONNECT.invoke((listener) -> listener.onLeave(Minecraft.getInstance())); } } diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java index 8383f85..051aef7 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java @@ -12,7 +12,7 @@ public class JamLibClient { @ApiStatus.Internal public static void init() { - ClientPlayLifecycleEvents.JOIN.register(JamLibClient::onPlayerJoin); + ClientPlayLifecycleEvents.JOIN.listen(JamLibClient::onPlayerJoin); } private static void onPlayerJoin(Minecraft minecraft) { diff --git a/common/src/main/java/io/github/jamalam360/jamlib/events/CancellableEvent.java b/common/src/main/java/io/github/jamalam360/jamlib/events/CancellableEvent.java new file mode 100644 index 0000000..96a7d65 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/events/CancellableEvent.java @@ -0,0 +1,19 @@ +package io.github.jamalam360.jamlib.events; + +import java.util.function.Function; + +public class CancellableEvent extends Event { + public EventResult invokeCancellable(Function> invoker) { + for (int priority : this.getListeners().keySet()) { + for (L listener : this.getListeners().get(priority)) { + EventResult result = invoker.apply(listener); + + if (result.wasCancelled()) { + return result; + } + } + } + + return EventResult.pass(); + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/events/Event.java b/common/src/main/java/io/github/jamalam360/jamlib/events/Event.java new file mode 100644 index 0000000..e78610b --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/events/Event.java @@ -0,0 +1,35 @@ +package io.github.jamalam360.jamlib.events; + +import com.google.common.collect.Ordering; +import com.google.common.collect.TreeMultimap; + +import java.util.function.Consumer; + +public class Event { + public static final int DEFAULT_PRIORITY = 1000; + private final TreeMultimap listeners; + + public Event() { + this.listeners = TreeMultimap.create(Ordering.natural().reverse(), Ordering.arbitrary()); + } + + public void listen(L listener) { + this.listen(DEFAULT_PRIORITY, listener); + } + + public void listen(int priority, L listener) { + this.listeners.put(priority, listener); + } + + public void invoke(Consumer invoker) { + for (int priority : this.listeners.keySet()) { + for (L listener : this.listeners.get(priority)) { + invoker.accept(listener); + } + } + } + + protected TreeMultimap getListeners() { + return this.listeners; + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/events/EventResult.java b/common/src/main/java/io/github/jamalam360/jamlib/events/EventResult.java new file mode 100644 index 0000000..a8cd296 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/events/EventResult.java @@ -0,0 +1,31 @@ +package io.github.jamalam360.jamlib.events; + +import org.jetbrains.annotations.Nullable; + +public class EventResult { + private final boolean cancelled; + @Nullable + private final T result; + + private EventResult(boolean cancelled, @Nullable T result) { + this.cancelled = cancelled; + this.result = result; + } + + public static EventResult pass() { + return new EventResult<>(false, null); + } + + public static EventResult cancel(T result) { + return new EventResult<>(true, result); + } + + public boolean wasCancelled() { + return this.cancelled; + } + + @Nullable + public T getResult() { + return this.result; + } +} diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java index 9031cfe..7625f23 100644 --- a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java @@ -33,8 +33,8 @@ public static void init() { System.out.println(CONFIG_MANAGER.get()); System.out.println(QCB_CONFIG.get()); - ClientPlayLifecycleEvents.JOIN.register(client -> LOGGER.info("Joined server!")); - ClientPlayLifecycleEvents.DISCONNECT.register(client -> LOGGER.info("Left server!")); + ClientPlayLifecycleEvents.JOIN.listen(client -> LOGGER.info("Joined server!")); + ClientPlayLifecycleEvents.DISCONNECT.listen(client -> LOGGER.info("Left server!")); Network.registerPayloadType(PotatoPacket.TYPE, PotatoPacket.INSTANCE); From 53b45f8bce1ad14d11c3c6977636ee892a72d72e Mon Sep 17 00:00:00 2001 From: Jamalam Date: Thu, 2 Apr 2026 20:41:20 +0100 Subject: [PATCH 04/16] feat: javadocing --- .../client/ClientPlayLifecycleEvents.java | 2 +- .../{ => api}/events/CancellableEvent.java | 12 ++++- .../jamlib/{ => api}/events/Event.java | 19 ++++++- .../jamlib/api/events/EventResult.java | 50 +++++++++++++++++++ .../jamlib/api/network/Network.java | 23 +++++++++ .../jamlib/api/network/NetworkContext.java | 4 ++ .../api/network/NetworkPayloadHandler.java | 8 +++ .../api/network/NetworkPayloadType.java | 28 +++++++++++ .../jamlib/api/network/PayloadType.java | 4 ++ .../StreamCodecNetworkPayloadType.java | 3 ++ .../jamalam360/jamlib/events/EventResult.java | 31 ------------ 11 files changed, 150 insertions(+), 34 deletions(-) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/events/CancellableEvent.java (51%) rename common/src/main/java/io/github/jamalam360/jamlib/{ => api}/events/Event.java (61%) create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/events/EventResult.java delete mode 100644 common/src/main/java/io/github/jamalam360/jamlib/events/EventResult.java diff --git a/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java b/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java index 1f271e9..1499889 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java @@ -1,6 +1,6 @@ package io.github.jamalam360.jamlib.api.events.client; -import io.github.jamalam360.jamlib.events.Event; +import io.github.jamalam360.jamlib.api.events.Event; import net.minecraft.client.Minecraft; /** diff --git a/common/src/main/java/io/github/jamalam360/jamlib/events/CancellableEvent.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/CancellableEvent.java similarity index 51% rename from common/src/main/java/io/github/jamalam360/jamlib/events/CancellableEvent.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/events/CancellableEvent.java index 96a7d65..0a572e1 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/events/CancellableEvent.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/CancellableEvent.java @@ -1,8 +1,18 @@ -package io.github.jamalam360.jamlib.events; +package io.github.jamalam360.jamlib.api.events; import java.util.function.Function; +/** + * A {@link Event} that can be canceled. + * @param The listener type. + * @param The return type. + */ public class CancellableEvent extends Event { + /** + * Invokes all listeners for this event. + * @param invoker The listener invoker. + * @return The result of the first listener to return a non-passing {@link EventResult}, or a passing {@link EventResult} if all listeners pass. + */ public EventResult invokeCancellable(Function> invoker) { for (int priority : this.getListeners().keySet()) { for (L listener : this.getListeners().get(priority)) { diff --git a/common/src/main/java/io/github/jamalam360/jamlib/events/Event.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/Event.java similarity index 61% rename from common/src/main/java/io/github/jamalam360/jamlib/events/Event.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/events/Event.java index e78610b..366bdf0 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/events/Event.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/Event.java @@ -1,10 +1,14 @@ -package io.github.jamalam360.jamlib.events; +package io.github.jamalam360.jamlib.api.events; import com.google.common.collect.Ordering; import com.google.common.collect.TreeMultimap; import java.util.function.Consumer; +/** + * A listenable event. + * @param The listener type. + */ public class Event { public static final int DEFAULT_PRIORITY = 1000; private final TreeMultimap listeners; @@ -13,14 +17,27 @@ public Event() { this.listeners = TreeMultimap.create(Ordering.natural().reverse(), Ordering.arbitrary()); } + /** + * Listens for this event, using the default priority of 1000. + * @param listener The listener. + */ public void listen(L listener) { this.listen(DEFAULT_PRIORITY, listener); } + /** + * Listens for this event. + * @param priority The priority of the listener - higher numbers are executed first. + * @param listener The listener. + */ public void listen(int priority, L listener) { this.listeners.put(priority, listener); } + /** + * Invokes all listeners for this event. + * @param invoker The listener invoker. + */ public void invoke(Consumer invoker) { for (int priority : this.listeners.keySet()) { for (L listener : this.listeners.get(priority)) { diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/events/EventResult.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/EventResult.java new file mode 100644 index 0000000..6f4ff02 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/EventResult.java @@ -0,0 +1,50 @@ +package io.github.jamalam360.jamlib.api.events; + +import org.jetbrains.annotations.Nullable; + +/** + * The result of a {@link CancellableEvent}. Either passes or returns a value. + * @param The returned value type. + */ +public class EventResult { + private final boolean cancelled; + @Nullable + private final T result; + + private EventResult(boolean cancelled, @Nullable T result) { + this.cancelled = cancelled; + this.result = result; + } + + /** + * Create a passing {@link EventResult}. + * @return A passing {@link EventResult}. + */ + public static EventResult pass() { + return new EventResult<>(false, null); + } + + /** + * Create a cancelling {@link EventResult} with a result. + * @param result The result. + * @return A cancelling {@link EventResult} with the given result. + */ + public static EventResult cancel(T result) { + return new EventResult<>(true, result); + } + + /** + * @return Whether this {@link EventResult} indicates a cancellation. + */ + public boolean wasCancelled() { + return this.cancelled; + } + + /** + * @return The result of this {@link EventResult}, or null if it was not canceled. + */ + @Nullable + public T getResult() { + return this.result; + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java index 1b35fc7..9176af5 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java @@ -8,11 +8,20 @@ import java.util.*; +/** + * A platform-agnostic packet sending system. + */ public class Network { private static final Map, NetworkPayloadType> types = new HashMap<>(); private static final Map, NetworkPayloadHandler> clientBoundHandlers = new HashMap<>(); private static final Map, NetworkPayloadHandler> serverBoundHandlers = new HashMap<>(); + /** + * Registers a handler for a payload type. + * @param direction The direction the handler should be registered for. + * @param id The ID of the payload the handler handles. + * @param handler The handler. + */ public static void registerHandler(Direction direction, PayloadType id, NetworkPayloadHandler handler) { Map, NetworkPayloadHandler> handlers = switch (direction) { case CLIENT_BOUND -> clientBoundHandlers; @@ -26,6 +35,10 @@ public static void registerHandler(Direction direction, PayloadType id, N handlers.put(id, handler); } + /** + * @param id The ID of the payload type. + * @param type The type of the payload. + */ public static void registerPayloadType(PayloadType id, NetworkPayloadType type) { if (types.containsKey(id)) { throw new IllegalArgumentException("A payload type with the id " + id + " is already registered"); @@ -35,6 +48,11 @@ public static void registerPayloadType(PayloadType id, NetworkPayloadType JamLib.LOGGER.info("Registered network payload type {}", id.id()); } + /** + * Sends a payload to the server. + * @param id The ID of the payload type. + * @param payload The payload. + */ @SuppressWarnings("unchecked") public static void sendToServer(PayloadType id, T payload) { if (!types.containsKey(id)) { @@ -45,6 +63,11 @@ public static void sendToServer(PayloadType id, T payload) { PlatformNetwork.sendToServer(id, type.getSerializer(), payload); } + /** + * Sends a payload to the client. + * @param id The ID of the payload type. + * @param payload The payload. + */ @SuppressWarnings("unchecked") public static void sendToClient(ServerPlayer player, PayloadType id, T payload) { if (!types.containsKey(id)) { diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkContext.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkContext.java index 4e5e318..ef9857d 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkContext.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkContext.java @@ -2,5 +2,9 @@ import net.minecraft.world.entity.player.Player; +/** + * Context passed to a {@link NetworkPayloadHandler}. + * @param player The player who received or sent the packet. + */ public record NetworkContext(Player player) { } diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadHandler.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadHandler.java index eca5247..e40692f 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadHandler.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadHandler.java @@ -1,6 +1,14 @@ package io.github.jamalam360.jamlib.api.network; +/** + * A handler for network payloads. + */ @FunctionalInterface public interface NetworkPayloadHandler { + /** + * Handle an incoming network payload. + * @param ctx The network context. + * @param payload The payload. + */ void handle(NetworkContext ctx, T payload); } diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadType.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadType.java index c3778bb..2f62efc 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadType.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/NetworkPayloadType.java @@ -2,17 +2,45 @@ import net.minecraft.network.RegistryFriendlyByteBuf; +/** + * A payload that can be sent over the network. + * @param The type of the payload, usually a record. + */ public interface NetworkPayloadType { + /** + * @return A serializer instance for the payload type. + */ Serializer getSerializer(); + + /** + * @return A deserializer instance for the payload type. + */ Deserializer getDeserializer(); + /** + * A serializer for a payload. + */ @FunctionalInterface interface Serializer { + + /** + * Serializes a payload to a buffer. + * @param object The payload to serialize. + * @param buf The buffer to write to. + */ void serialize(T object, RegistryFriendlyByteBuf buf); } + /** + * A deserializer for a payload. + */ @FunctionalInterface interface Deserializer { + /** + * Deserializes a payload from a buffer. + * @param buf The buffer to read from. + * @return The deserialized payload. + */ T deserialize(RegistryFriendlyByteBuf buf); } } diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/PayloadType.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/PayloadType.java index 1117d8d..ceb22b0 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/network/PayloadType.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/PayloadType.java @@ -2,5 +2,9 @@ import net.minecraft.resources.Identifier; +/** + * Uniquely identifies a {@link NetworkPayloadType}. + * @param id A unique identifier for the payload type. + */ public record PayloadType(Identifier id) { } diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/StreamCodecNetworkPayloadType.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/StreamCodecNetworkPayloadType.java index 885ea5a..14f7c3d 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/network/StreamCodecNetworkPayloadType.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/StreamCodecNetworkPayloadType.java @@ -3,6 +3,9 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; +/** + * A {@link NetworkPayloadType} that uses a {@link StreamCodec} to encode and decode the payload. + */ public interface StreamCodecNetworkPayloadType extends NetworkPayloadType { StreamCodec getStreamCodec(); diff --git a/common/src/main/java/io/github/jamalam360/jamlib/events/EventResult.java b/common/src/main/java/io/github/jamalam360/jamlib/events/EventResult.java deleted file mode 100644 index a8cd296..0000000 --- a/common/src/main/java/io/github/jamalam360/jamlib/events/EventResult.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.github.jamalam360.jamlib.events; - -import org.jetbrains.annotations.Nullable; - -public class EventResult { - private final boolean cancelled; - @Nullable - private final T result; - - private EventResult(boolean cancelled, @Nullable T result) { - this.cancelled = cancelled; - this.result = result; - } - - public static EventResult pass() { - return new EventResult<>(false, null); - } - - public static EventResult cancel(T result) { - return new EventResult<>(true, result); - } - - public boolean wasCancelled() { - return this.cancelled; - } - - @Nullable - public T getResult() { - return this.result; - } -} From ba06776da4c728cb7bcf20956937a35b712a9cbc Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 13:38:20 +0100 Subject: [PATCH 05/16] feat: interaction events --- .../client/ClientPlayLifecycleEvents.java | 2 +- .../mixinclient}/ImageWidget$SpriteMixin.java | 4 +- .../event/ClientPacketListenerMixin.java | 4 +- .../mixinclient}/event/ConnectionMixin.java | 4 +- .../event/MultiPlayerGameModeMixin.java | 48 +++++++++++++++++++ .../resources/jamlib.client.mixins.json | 5 +- .../jamlib/api/events/InteractionEvent.java | 24 ++++++++++ .../events/{ => core}/CancellableEvent.java | 4 ++ .../jamlib/api/events/{ => core}/Event.java | 4 ++ .../jamlib/api/events/core/EventResult.java | 31 ++++++++++++ .../event/ServerPlayerGameModeMixin.java | 31 ++++++++++++ common/src/main/resources/jamlib.mixins.json | 3 +- .../io/github/jamalam360/testmod/TestMod.java | 13 +++++ 13 files changed, 167 insertions(+), 10 deletions(-) rename common/src/client/java/io/github/jamalam360/jamlib/{client/mixin => impl/mixinclient}/ImageWidget$SpriteMixin.java (76%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/mixin => impl/mixinclient}/event/ClientPacketListenerMixin.java (89%) rename common/src/client/java/io/github/jamalam360/jamlib/{client/mixin => impl/mixinclient}/event/ConnectionMixin.java (91%) create mode 100644 common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/MultiPlayerGameModeMixin.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/events/InteractionEvent.java rename common/src/main/java/io/github/jamalam360/jamlib/api/events/{ => core}/CancellableEvent.java (74%) rename common/src/main/java/io/github/jamalam360/jamlib/api/events/{ => core}/Event.java (83%) create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/events/core/EventResult.java create mode 100644 common/src/main/java/io/github/jamalam360/jamlib/impl/mixin/event/ServerPlayerGameModeMixin.java diff --git a/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java b/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java index 1499889..d5236ca 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java @@ -1,6 +1,6 @@ package io.github.jamalam360.jamlib.api.events.client; -import io.github.jamalam360.jamlib.api.events.Event; +import io.github.jamalam360.jamlib.api.events.core.Event; import net.minecraft.client.Minecraft; /** diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/ImageWidget$SpriteMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/ImageWidget$SpriteMixin.java similarity index 76% rename from common/src/client/java/io/github/jamalam360/jamlib/client/mixin/ImageWidget$SpriteMixin.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/ImageWidget$SpriteMixin.java index 917cd5c..09d65ab 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/ImageWidget$SpriteMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/ImageWidget$SpriteMixin.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.mixin; +package io.github.jamalam360.jamlib.impl.mixinclient; import io.github.jamalam360.jamlib.impl.mixinsupport.MutableSpriteImageWidget$Sprite; import net.minecraft.resources.Identifier; @@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.Shadow; @Mixin(targets = "net.minecraft.client.gui.components.ImageWidget$Sprite") -public class ImageWidget$SpriteMixin implements MutableSpriteImageWidget$Sprite { +public abstract class ImageWidget$SpriteMixin implements MutableSpriteImageWidget$Sprite { @Mutable @Shadow private Identifier sprite; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ClientPacketListenerMixin.java similarity index 89% rename from common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ClientPacketListenerMixin.java index a01cd62..f08694d 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ClientPacketListenerMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ClientPacketListenerMixin.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.mixin.event; +package io.github.jamalam360.jamlib.impl.mixinclient.event; import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; import net.minecraft.client.Minecraft; @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ClientPacketListener.class) -public class ClientPacketListenerMixin { +public abstract class ClientPacketListenerMixin { /** * Injection point taken from Fabric API - ... */ diff --git a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ConnectionMixin.java similarity index 91% rename from common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java rename to common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ConnectionMixin.java index ca06146..fbd15fa 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/client/mixin/event/ConnectionMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ConnectionMixin.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.client.mixin.event; +package io.github.jamalam360.jamlib.impl.mixinclient.event; import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; import io.netty.channel.ChannelHandlerContext; @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Connection.class) -public class ConnectionMixin { +public abstract class ConnectionMixin { @Inject( method = "channelInactive", at = @At("HEAD") diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/MultiPlayerGameModeMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/MultiPlayerGameModeMixin.java new file mode 100644 index 0000000..98e23f1 --- /dev/null +++ b/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/MultiPlayerGameModeMixin.java @@ -0,0 +1,48 @@ +package io.github.jamalam360.jamlib.impl.mixinclient.event; + +import io.github.jamalam360.jamlib.api.events.InteractionEvent; +import io.github.jamalam360.jamlib.api.events.core.EventResult; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.client.multiplayer.prediction.PredictiveAction; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.protocol.game.ServerboundUseItemOnPacket; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.phys.BlockHitResult; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +// Injection point credit to Fabric API: https://github.com/FabricMC/fabric-api/blob/05ed2daee8dab2367d68aacd75bf86d2277ec177/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MultiPlayerGameModeMixin.java#L99 +@Mixin(MultiPlayerGameMode.class) +public abstract class MultiPlayerGameModeMixin { + @Shadow + protected abstract void startPrediction(ClientLevel level, PredictiveAction action); + + @Inject( + method = "useItemOn", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;startPrediction(Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/client/multiplayer/prediction/PredictiveAction;)V" + ), + cancellable = true + ) + private void jamlib$onInteractBlock(LocalPlayer player, InteractionHand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { + if (player.isSpectator()) { + return; + } + + EventResult result = InteractionEvent.USE_BLOCK.invokeCancellable((ev) -> ev.onUseBlock(player, hand, hitResult.getBlockPos(), hitResult.getDirection())); + + if (result.wasCancelled()) { + if (result.getResult() != null && result.getResult().consumesAction()) { + startPrediction((ClientLevel) player.level(), id -> new ServerboundUseItemOnPacket(hand, hitResult, id)); + } + + cir.setReturnValue(result.getResult()); + } + } +} diff --git a/common/src/client/resources/jamlib.client.mixins.json b/common/src/client/resources/jamlib.client.mixins.json index 0e4cf32..594a7b9 100644 --- a/common/src/client/resources/jamlib.client.mixins.json +++ b/common/src/client/resources/jamlib.client.mixins.json @@ -1,14 +1,15 @@ { "required": true, "minVersion": "0.8", - "package": "io.github.jamalam360.jamlib.client.mixin", + "package": "io.github.jamalam360.jamlib.impl.mixinclient", "compatibilityLevel": "JAVA_17", "mixins": [ ], "client": [ "ImageWidget$SpriteMixin", "event.ClientPacketListenerMixin", - "event.ConnectionMixin" + "event.ConnectionMixin", + "event.MultiPlayerGameModeMixin" ], "server": [ ], diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/events/InteractionEvent.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/InteractionEvent.java new file mode 100644 index 0000000..616eb58 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/InteractionEvent.java @@ -0,0 +1,24 @@ +package io.github.jamalam360.jamlib.api.events; + +import io.github.jamalam360.jamlib.api.events.core.CancellableEvent; +import io.github.jamalam360.jamlib.api.events.core.EventResult; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; + +/** + * Events related to player interactions. + */ +public class InteractionEvent { + /** + * Called when a player interacts with a block. + */ + public static final CancellableEvent USE_BLOCK = new CancellableEvent<>(); + + @FunctionalInterface + public interface UseBlock { + EventResult onUseBlock(Player player, InteractionHand hand, BlockPos pos, Direction direction); + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/events/CancellableEvent.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java similarity index 74% rename from common/src/main/java/io/github/jamalam360/jamlib/api/events/CancellableEvent.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java index 0a572e1..64e464e 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/events/CancellableEvent.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java @@ -1,4 +1,8 @@ +<<<<<<<< HEAD:common/src/main/java/io/github/jamalam360/jamlib/api/events/CancellableEvent.java package io.github.jamalam360.jamlib.api.events; +======== +package io.github.jamalam360.jamlib.api.events.core; +>>>>>>>> 2fca7fd (feat: interaction events):common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java import java.util.function.Function; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/events/Event.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java similarity index 83% rename from common/src/main/java/io/github/jamalam360/jamlib/api/events/Event.java rename to common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java index 366bdf0..fa6126c 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/events/Event.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java @@ -1,4 +1,8 @@ +<<<<<<<< HEAD:common/src/main/java/io/github/jamalam360/jamlib/api/events/Event.java package io.github.jamalam360.jamlib.api.events; +======== +package io.github.jamalam360.jamlib.api.events.core; +>>>>>>>> 2fca7fd (feat: interaction events):common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java import com.google.common.collect.Ordering; import com.google.common.collect.TreeMultimap; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/EventResult.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/EventResult.java new file mode 100644 index 0000000..a667d7e --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/EventResult.java @@ -0,0 +1,31 @@ +package io.github.jamalam360.jamlib.api.events.core; + +import org.jetbrains.annotations.Nullable; + +public class EventResult { + private final boolean cancelled; + @Nullable + private final T result; + + private EventResult(boolean cancelled, @Nullable T result) { + this.cancelled = cancelled; + this.result = result; + } + + public static EventResult pass() { + return new EventResult<>(false, null); + } + + public static EventResult cancel(T result) { + return new EventResult<>(true, result); + } + + public boolean wasCancelled() { + return this.cancelled; + } + + @Nullable + public T getResult() { + return this.result; + } +} diff --git a/common/src/main/java/io/github/jamalam360/jamlib/impl/mixin/event/ServerPlayerGameModeMixin.java b/common/src/main/java/io/github/jamalam360/jamlib/impl/mixin/event/ServerPlayerGameModeMixin.java new file mode 100644 index 0000000..d5c9735 --- /dev/null +++ b/common/src/main/java/io/github/jamalam360/jamlib/impl/mixin/event/ServerPlayerGameModeMixin.java @@ -0,0 +1,31 @@ +package io.github.jamalam360.jamlib.impl.mixin.event; + +import io.github.jamalam360.jamlib.api.events.InteractionEvent; +import io.github.jamalam360.jamlib.api.events.core.EventResult; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.ServerPlayerGameMode; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ServerPlayerGameMode.class) +public abstract class ServerPlayerGameModeMixin { + @Inject( + method = "useItemOn", + at = @At("HEAD"), + cancellable = true + ) + private void jamlib$onInteractBlock(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { + EventResult result = InteractionEvent.USE_BLOCK.invokeCancellable((ev) -> ev.onUseBlock(player, hand, hitResult.getBlockPos(), hitResult.getDirection())); + + if (result.wasCancelled()) { + cir.setReturnValue(result.getResult()); + } + } +} diff --git a/common/src/main/resources/jamlib.mixins.json b/common/src/main/resources/jamlib.mixins.json index dd9baf5..b1a8d79 100644 --- a/common/src/main/resources/jamlib.mixins.json +++ b/common/src/main/resources/jamlib.mixins.json @@ -1,9 +1,10 @@ { "required": true, "minVersion": "0.8", - "package": "io.github.jamalam360.jamlib.mixin", + "package": "io.github.jamalam360.jamlib.impl.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "event.ServerPlayerGameModeMixin" ], "client": [ ], diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java index 7625f23..a1ce1a0 100644 --- a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java @@ -1,6 +1,8 @@ package io.github.jamalam360.testmod; import dev.architectury.registry.registries.DeferredRegister; +import io.github.jamalam360.jamlib.api.events.InteractionEvent; +import io.github.jamalam360.jamlib.api.events.core.EventResult; import io.github.jamalam360.jamlib.api.network.Network; import io.github.jamalam360.jamlib.api.platform.Platform; import io.github.jamalam360.jamlib.api.config.ConfigManager; @@ -13,6 +15,7 @@ import net.minecraft.core.registries.Registries; import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; +import net.minecraft.world.InteractionResult; import net.minecraft.world.item.Item; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,6 +38,16 @@ public static void init() { ClientPlayLifecycleEvents.JOIN.listen(client -> LOGGER.info("Joined server!")); ClientPlayLifecycleEvents.DISCONNECT.listen(client -> LOGGER.info("Left server!")); + InteractionEvent.USE_BLOCK.listen(((player, hand, pos, direction) -> { + LOGGER.info("Used block!"); + + if (player.getRandom().nextBoolean() && !player.level().isClientSide()) { + LOGGER.info("Cancelling interaction"); + return EventResult.cancel(InteractionResult.PASS); + } else { + return EventResult.pass(); + } + })); Network.registerPayloadType(PotatoPacket.TYPE, PotatoPacket.INSTANCE); From 6782e5535f72ac9cf2ba72baba02ea5a8fcf07e8 Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 14:34:41 +0100 Subject: [PATCH 06/16] chore: update readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b2ef9cf..88dc938 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,9 @@ JamLib provides: - Platform abstractions +- Events - A JSON5 config API +- Networking - A mod repost (9minecraft etc.) checker Comprehensive documentation can be found [here](https://docs.jamalam.tech/jamlib/getting-started/). From c1014341912a325b46dadeb7c6697273abdc7b8a Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 14:51:37 +0100 Subject: [PATCH 07/16] Bump version and resolve merge conflicts --- CHANGELOG.md | 4 ---- .../jamalam360/jamlib/api/events/core/CancellableEvent.java | 4 ---- .../io/github/jamalam360/jamlib/api/events/core/Event.java | 4 ---- gradle.properties | 2 +- 4 files changed, 1 insertion(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d84793..e69de29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +0,0 @@ -- Remove redundant escape characters from string config field default comments. -- Add comments to lists of enums stating what values they can take (#23). -- Use system dependant line endings. -- Give each config its own Jankson instance to fix multithreading issues on Neoforge (#22). diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java index 64e464e..af0b22c 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java @@ -1,8 +1,4 @@ -<<<<<<<< HEAD:common/src/main/java/io/github/jamalam360/jamlib/api/events/CancellableEvent.java -package io.github.jamalam360.jamlib.api.events; -======== package io.github.jamalam360.jamlib.api.events.core; ->>>>>>>> 2fca7fd (feat: interaction events):common/src/main/java/io/github/jamalam360/jamlib/api/events/core/CancellableEvent.java import java.util.function.Function; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java index fa6126c..0f42c50 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java @@ -1,8 +1,4 @@ -<<<<<<<< HEAD:common/src/main/java/io/github/jamalam360/jamlib/api/events/Event.java -package io.github.jamalam360.jamlib.api.events; -======== package io.github.jamalam360.jamlib.api.events.core; ->>>>>>>> 2fca7fd (feat: interaction events):common/src/main/java/io/github/jamalam360/jamlib/api/events/core/Event.java import com.google.common.collect.Ordering; import com.google.common.collect.TreeMultimap; diff --git a/gradle.properties b/gradle.properties index 98e11e8..bc430fb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false org.gradle.parallel=true -version=1.3.6+1.21.11 +version=2.0.0+1.21.11 minecraft_version=1.21.11 additional_minecraft_versions= From 6c644480b31b2653e39b5d15df283b1f64658e4c Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 14:55:28 +0100 Subject: [PATCH 08/16] feat: remove architectury api dependency --- common/build.gradle | 1 - fabric/build.gradle | 7 ------- fabric/src/main/resources/fabric.mod.json | 3 +-- gradle.properties | 1 - libs.versions.toml | 7 ------- neoforge/build.gradle | 10 ---------- .../src/main/resources/META-INF/neoforge.mods.toml | 7 ------- testmod-common/build.gradle | 1 - testmod-fabric/build.gradle | 1 - testmod-fabric/src/main/resources/fabric.mod.json | 3 +-- testmod-neoforge/build.gradle | 1 - .../src/main/resources/META-INF/neoforge.mods.toml | 6 ------ 12 files changed, 2 insertions(+), 46 deletions(-) diff --git a/common/build.gradle b/common/build.gradle index f314a78..eee3ec1 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -15,7 +15,6 @@ loom { dependencies { modImplementation libs.fabric.loader - modImplementation libs.architectury.common api libs.jankson } diff --git a/fabric/build.gradle b/fabric/build.gradle index 63d8cc3..02b6fc2 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -23,7 +23,6 @@ configurations { dependencies { modImplementation libs.fabric.loader modImplementation libs.fabric.api - modImplementation libs.architectury.fabric modImplementation libs.modmenu api libs.jankson include libs.jankson @@ -48,11 +47,6 @@ if (System.getenv("CURSEFORGE_API_KEY") != null && System.getenv("MODRINTH_API_K curseforge = "fabric-api" modrinth = "fabric-api" } - - depends { - curseforge = "architectury-api" - modrinth = "architectury-api" - } } @@ -95,7 +89,6 @@ processResources { "version" : project.version, "minecraft_version" : project.minimum_minecraft_version, "fabric_api_version" : project.minimum_fabric_api_version, - "architectury_version": project.minimum_architectury_api_version ] filesMatching("fabric.mod.json") { diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 972221f..9feb9bf 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -32,7 +32,6 @@ ], "depends": { "fabric-api": ">=${fabric_api_version}", - "minecraft": ">=${minecraft_version}", - "architectury": ">=${architectury_version}" + "minecraft": ">=${minecraft_version}" } } diff --git a/gradle.properties b/gradle.properties index bc430fb..db25b35 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,6 @@ minecraft_version=1.21.11 additional_minecraft_versions= minimum_minecraft_version=1.21.11 -minimum_architectury_api_version=19.0.1 minimum_fabric_api_version=0.134.0+1.21.9 branch=main diff --git a/libs.versions.toml b/libs.versions.toml index 6daf1e0..264c634 100644 --- a/libs.versions.toml +++ b/libs.versions.toml @@ -1,7 +1,4 @@ [versions] -# https://modrinth.com/mod/architectury-api/versions -architectury = "19.0.1" - # https://parchmentmc.org/docs/getting-started parchment-minecraft = "1.21.11" parchment = "2025.12.20" @@ -20,10 +17,6 @@ modmenu = "17.0.0-beta.1" jankson = "1.2.3" [libraries] -architectury-common = { module = "dev.architectury:architectury", version.ref = "architectury" } -architectury-fabric = { module = "dev.architectury:architectury-fabric", version.ref = "architectury" } -architectury-neoforge = { module = "dev.architectury:architectury-neoforge", version.ref = "architectury" } - neoforge = { module = "net.neoforged:neoforge", version.ref = "neoforge" } fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric-loader" } diff --git a/neoforge/build.gradle b/neoforge/build.gradle index fe22033..cce2d76 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -29,7 +29,6 @@ repositories { dependencies { neoForge libs.neoforge - modImplementation libs.architectury.neoforge api libs.jankson include libs.jankson forgeRuntimeLibrary libs.jankson @@ -49,14 +48,6 @@ if (System.getenv("CURSEFORGE_API_KEY") != null && System.getenv("MODRINTH_API_K mainPublication tasks.remapJar - relations { - depends { - curseforge = "architectury-api" - modrinth = "architectury-api" - } - } - - curseforge { token = System.getenv("CURSEFORGE_API_KEY") id = "623764" @@ -96,7 +87,6 @@ processResources { "version" : project.version, "minecraft_version" : project.minimum_minecraft_version, "neoforge_version" : project.minimum_minecraft_version.substring(2), - "architectury_version": project.minimum_architectury_api_version ] filesMatching("META-INF/neoforge.mods.toml") { diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index 0ca5ebd..79ba673 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -26,13 +26,6 @@ versionRange = "[${minecraft_version},)" ordering = "NONE" side = "BOTH" -[[dependencies.jamlib]] -modId = "architectury" -type = "required" -versionRange = "[${architectury_version},)" -ordering = "AFTER" -side = "BOTH" - [[mixins]] config = "jamlib.mixins.json" diff --git a/testmod-common/build.gradle b/testmod-common/build.gradle index 91e4cb0..ea808a8 100644 --- a/testmod-common/build.gradle +++ b/testmod-common/build.gradle @@ -1,6 +1,5 @@ dependencies { modImplementation libs.fabric.loader - modImplementation libs.architectury.common implementation project(path: ":common", configuration: "namedElements") } diff --git a/testmod-fabric/build.gradle b/testmod-fabric/build.gradle index 0a155db..f162b7e 100644 --- a/testmod-fabric/build.gradle +++ b/testmod-fabric/build.gradle @@ -22,7 +22,6 @@ configurations { dependencies { modImplementation libs.fabric.loader modImplementation libs.fabric.api - modImplementation libs.architectury.fabric modRuntimeOnly libs.modmenu implementation project(path: ":fabric", configuration: "namedElements") diff --git a/testmod-fabric/src/main/resources/fabric.mod.json b/testmod-fabric/src/main/resources/fabric.mod.json index 52bcffc..a9da59c 100644 --- a/testmod-fabric/src/main/resources/fabric.mod.json +++ b/testmod-fabric/src/main/resources/fabric.mod.json @@ -29,7 +29,6 @@ "fabricloader": ">=0.14", "fabric": "*", "minecraft": ">=1.20", - "java": ">=17", - "architectury": ">=9.1.12" + "java": ">=17" } } diff --git a/testmod-neoforge/build.gradle b/testmod-neoforge/build.gradle index f29996f..a032885 100644 --- a/testmod-neoforge/build.gradle +++ b/testmod-neoforge/build.gradle @@ -32,7 +32,6 @@ repositories { dependencies { neoForge libs.neoforge - modImplementation libs.architectury.neoforge forgeRuntimeLibrary libs.jankson implementation project(path: ":neoforge", configuration: "namedElements") diff --git a/testmod-neoforge/src/main/resources/META-INF/neoforge.mods.toml b/testmod-neoforge/src/main/resources/META-INF/neoforge.mods.toml index eadb15b..a58dd74 100644 --- a/testmod-neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/testmod-neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -26,9 +26,3 @@ versionRange = "[1.20.2,)" ordering = "NONE" side = "BOTH" -[[dependencies.testmod]] -modId = "architectury" -type = "required" -versionRange = "[9.1.12,)" -ordering = "AFTER" -side = "BOTH" From 1126d087f33cec011fc3d6cd66cd76e112453f0b Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 16:03:40 +0100 Subject: [PATCH 09/16] feat: re-add deprecated classes --- common/build.gradle | 26 ++++++ .../jamalam360/jamlib/JamLibPlatform.java | 44 +++++++++ .../jamlib/config/ConfigExtensions.java | 92 +++++++++++++++++++ .../jamlib/config/ConfigManager.java | 41 +++++++++ .../jamalam360/jamlib/config/HiddenInGui.java | 12 +++ .../jamlib/config/MatchesRegex.java | 13 +++ .../jamlib/config/RequiresRestart.java | 12 +++ .../jamalam360/jamlib/config/Slider.java | 12 +++ .../jamalam360/jamlib/config/WithinRange.java | 14 +++ .../client/ClientPlayLifecycleEvents.java | 32 +++++++ libs.versions.toml | 5 + 11 files changed, 303 insertions(+) create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/JamLibPlatform.java create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/config/ConfigExtensions.java create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/config/ConfigManager.java create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/config/HiddenInGui.java create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/config/MatchesRegex.java create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/config/RequiresRestart.java create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/config/Slider.java create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/config/WithinRange.java create mode 100644 common/src/deprecated/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java diff --git a/common/build.gradle b/common/build.gradle index eee3ec1..c7e943b 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -2,6 +2,14 @@ architectury { common(rootProject.enabled_platforms.split(",")) } +sourceSets { + deprecated { + java { + srcDir "src/deprecated/java" + } + } +} + loom { splitEnvironmentSourceSets() @@ -9,13 +17,31 @@ loom { jamlib { sourceSet sourceSets.main sourceSet sourceSets.client + sourceSet sourceSets.deprecated } } } +loom.createRemapConfigurations(sourceSets.deprecated) +configurations { + deprecatedImplementation.extendsFrom implementation + deprecatedRuntimeOnly.extendsFrom runtimeOnly + modDeprecatedImplementation.extendsFrom modImplementation + deprecatedCompileClasspath.extendsFrom clientCompileClasspath + modDeprecatedImplementation.extendsFrom modClientImplementation +} + dependencies { modImplementation libs.fabric.loader api libs.jankson + + deprecatedImplementation libs.architectury.common + deprecatedImplementation sourceSets.main.output + deprecatedImplementation sourceSets.client.output +} + +tasks.named('jar', Jar) { + from sourceSets.deprecated.output } publishing { diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/JamLibPlatform.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/JamLibPlatform.java new file mode 100644 index 0000000..dd00128 --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/JamLibPlatform.java @@ -0,0 +1,44 @@ +package io.github.jamalam360.jamlib; + +@Deprecated(forRemoval = true) +public class JamLibPlatform { + public static Platform getPlatform() { + return switch (io.github.jamalam360.jamlib.api.platform.Platform.getModLoader()) { + case FABRIC -> Platform.FABRIC; + case QUILT -> Platform.QUILT; + case FORGE -> throw new IllegalStateException("Forge is not supported past 1.20.1"); + case NEOFORGE -> Platform.NEOFORGE; + }; + } + + public enum Platform { + FABRIC, + NEOFORGE, + QUILT; + + public boolean isFabric() { + return this == FABRIC; + } + + public boolean isNeoForge() { + return this == NEOFORGE; + } + + public boolean isQuilt() { + return this == QUILT; + } + + public boolean isFabricLike() { + return this == FABRIC || this == QUILT; + } + + @Override + public String toString() { + return switch (this) { + case FABRIC -> "Fabric"; + case NEOFORGE -> "NeoForge"; + case QUILT -> "Quilt"; + }; + } + } +} diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/config/ConfigExtensions.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/ConfigExtensions.java new file mode 100644 index 0000000..259fed2 --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/ConfigExtensions.java @@ -0,0 +1,92 @@ +package io.github.jamalam360.jamlib.config; + +import io.github.jamalam360.jamlib.JamLib; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; + +import java.lang.reflect.Field; +import java.net.URI; +import java.net.URL; +import java.util.List; + +@Deprecated(forRemoval = true) +public interface ConfigExtensions { + default List getLinks() { + return List.of(); + } + + default void afterSave() { } + + default List getValidationErrors(ConfigManager manager, FieldValidationInfo info) { + return List.of(); + } + + @Deprecated(forRemoval = true) + class Link { + @Deprecated(forRemoval = true) + public static final Identifier DISCORD = JamLib.id("link_discord"); + @Deprecated(forRemoval = true) + public static final Identifier GENERIC_LINK = JamLib.id("link_generic"); + @Deprecated(forRemoval = true) + public static final Identifier GITHUB = JamLib.id("link_github"); + + private final Identifier texture; + private final URL url; + private final Component tooltip; + + public Link(Identifier texture, String url, Component tooltip) { + this.texture = texture; + + try { + this.url = new URI(url).toURL(); + } catch (Exception e) { + JamLib.LOGGER.error("Malformed URL for config screen link: {}", url); + throw new RuntimeException(e); + } + + this.tooltip = tooltip; + } + + public Link(Identifier texture, URL url, Component tooltip) { + this.texture = texture; + this.url = url; + this.tooltip = tooltip; + } + + public Identifier getTexture() { + return this.texture; + } + + public URL getUrl() { + return this.url; + } + + public Component getTooltip() { + return this.tooltip; + } + } + + @Deprecated(forRemoval = true) + record ValidationError(Type type, FieldValidationInfo field, Component message) { + + @Deprecated(forRemoval = true) + public enum Type { + WARNING, + ERROR; + + private final Identifier texture; + + Type() { + this.texture = JamLib.id("validation_" + this.name().toLowerCase()); + } + + public Identifier getTexture() { + return this.texture; + } + } + } + + @Deprecated(forRemoval = true) + record FieldValidationInfo(String name, Object value, Object initialValue, Field backingField) { + } +} diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/config/ConfigManager.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/ConfigManager.java new file mode 100644 index 0000000..9bc624b --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/ConfigManager.java @@ -0,0 +1,41 @@ +package io.github.jamalam360.jamlib.config; + +@Deprecated(forRemoval = true) +public class ConfigManager { + private final io.github.jamalam360.jamlib.api.config.ConfigManager delegate; + + public ConfigManager(String modId, Class configClass) { + this(modId, modId, configClass); + } + + public ConfigManager(String modId, String configName, Class configClass) { + this.delegate = new io.github.jamalam360.jamlib.api.config.ConfigManager<>(modId, configName, configClass); + } + + public T get() { + return this.delegate.get(); + } + + public String getConfigName() { + return this.delegate.getConfigName(); + } + + public Class getConfigClass() { + return this.delegate.getConfigClass(); + } + + public String getModId() { + return this.delegate.getModId(); + } + + public void save() { + this.delegate.save(); + } + + public void reloadFromDisk() { + this.delegate.reloadFromDisk(); + } + + public record Key(String modId, String configName) { + } +} diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/config/HiddenInGui.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/HiddenInGui.java new file mode 100644 index 0000000..f12a2cb --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/HiddenInGui.java @@ -0,0 +1,12 @@ +package io.github.jamalam360.jamlib.config; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Deprecated(forRemoval = true) +public @interface HiddenInGui { +} diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/config/MatchesRegex.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/MatchesRegex.java new file mode 100644 index 0000000..55a2f77 --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/MatchesRegex.java @@ -0,0 +1,13 @@ +package io.github.jamalam360.jamlib.config; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Deprecated(forRemoval = true) +public @interface MatchesRegex { + String value(); +} diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/config/RequiresRestart.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/RequiresRestart.java new file mode 100644 index 0000000..63c179c --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/RequiresRestart.java @@ -0,0 +1,12 @@ +package io.github.jamalam360.jamlib.config; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Deprecated(forRemoval = true) +public @interface RequiresRestart { +} diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/config/Slider.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/Slider.java new file mode 100644 index 0000000..0c63b80 --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/Slider.java @@ -0,0 +1,12 @@ +package io.github.jamalam360.jamlib.config; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Deprecated(forRemoval = true) +public @interface Slider { +} diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/config/WithinRange.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/WithinRange.java new file mode 100644 index 0000000..58e2882 --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/config/WithinRange.java @@ -0,0 +1,14 @@ +package io.github.jamalam360.jamlib.config; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Deprecated(forRemoval = true) +public @interface WithinRange { + double min(); + double max(); +} diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java new file mode 100644 index 0000000..c996bd3 --- /dev/null +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java @@ -0,0 +1,32 @@ +package io.github.jamalam360.jamlib.events.client; + +import dev.architectury.event.Event; +import dev.architectury.event.EventFactory; +import net.minecraft.client.Minecraft; + +@Deprecated(forRemoval = true) +public class ClientPlayLifecycleEvents { + /** + * Called when the local player has joined a logical server. + */ + public static final Event JOIN = EventFactory.createLoop(Join.class); + /** + * Called when the local player leaves a logical server. + */ + public static final Event DISCONNECT = EventFactory.createLoop(Leave.class); + + static { + io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents.JOIN.listen((minecraft) -> JOIN.invoker().onJoin(minecraft)); + io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents.DISCONNECT.listen((minecraft) -> DISCONNECT.invoker().onLeave(minecraft)); + } + + @FunctionalInterface + public interface Join { + void onJoin(Minecraft client); + } + + @FunctionalInterface + public interface Leave { + void onLeave(Minecraft client); + } +} diff --git a/libs.versions.toml b/libs.versions.toml index 264c634..df1d205 100644 --- a/libs.versions.toml +++ b/libs.versions.toml @@ -1,4 +1,7 @@ [versions] +# https://modrinth.com/mod/architectury-api/versions +architectury = "19.0.1" + # https://parchmentmc.org/docs/getting-started parchment-minecraft = "1.21.11" parchment = "2025.12.20" @@ -17,6 +20,8 @@ modmenu = "17.0.0-beta.1" jankson = "1.2.3" [libraries] +architectury-common = { module = "dev.architectury:architectury", version.ref = "architectury" } + neoforge = { module = "net.neoforged:neoforge", version.ref = "neoforge" } fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric-loader" } From a45ca467194a55baad050e7839430c8ba561d266 Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 16:04:18 +0100 Subject: [PATCH 10/16] chore: comment out registration --- .../java/io/github/jamalam360/testmod/TestMod.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java index a1ce1a0..4acf45b 100644 --- a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java @@ -1,6 +1,5 @@ package io.github.jamalam360.testmod; -import dev.architectury.registry.registries.DeferredRegister; import io.github.jamalam360.jamlib.api.events.InteractionEvent; import io.github.jamalam360.jamlib.api.events.core.EventResult; import io.github.jamalam360.jamlib.api.network.Network; @@ -51,11 +50,11 @@ public static void init() { Network.registerPayloadType(PotatoPacket.TYPE, PotatoPacket.INSTANCE); - DeferredRegister reg = DeferredRegister.create(MOD_ID, Registries.ITEM); - reg.register(id("potato"), () -> new PacketPotatoItem(new Item.Properties().setId( - ResourceKey.create(Registries.ITEM, id("potato")) - ))); - reg.register(); +// DeferredRegister reg = DeferredRegister.create(MOD_ID, Registries.ITEM); +// reg.register(id("potato"), () -> new PacketPotatoItem(new Item.Properties().setId( +// ResourceKey.create(Registries.ITEM, id("potato")) +// ))); +// reg.register(); } public static Identifier id(String path) { From 8259854634e0d8e008906fb1ba2221c7db2dad42 Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 18:44:11 +0100 Subject: [PATCH 11/16] chore: changelog --- CHANGELOG.md | 3 +++ common/build.gradle | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29..8d77555 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +Add more APIs in order to remove Architectury dependency. + +Should be a backwards compatible update - please get in touch if you run into issues. diff --git a/common/build.gradle b/common/build.gradle index c7e943b..9b53860 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -26,9 +26,7 @@ loom.createRemapConfigurations(sourceSets.deprecated) configurations { deprecatedImplementation.extendsFrom implementation deprecatedRuntimeOnly.extendsFrom runtimeOnly - modDeprecatedImplementation.extendsFrom modImplementation deprecatedCompileClasspath.extendsFrom clientCompileClasspath - modDeprecatedImplementation.extendsFrom modClientImplementation } dependencies { From 255f1d4dbc0084fc94eed10887ccaaa3c0f5b82b Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 20:10:18 +0100 Subject: [PATCH 12/16] feat: fix jpms issues on neoforge --- common/build.gradle | 4 ++++ .../api/events}/ClientPlayLifecycleEvents.java | 2 +- .../jamalam360/jamlib/{ => client}/api/gui/WidgetList.java | 2 +- .../jamalam360/jamlib/{ => client}/impl/JamLibClient.java | 4 ++-- .../config/client => client/impl/config}/ConfigScreen.java | 6 +++--- .../client => client/impl/config}/SelectConfigScreen.java | 2 +- .../client => client/impl/config}/SelectionList.java | 2 +- .../client => client/impl/config}/SelectionListEntry.java | 2 +- .../impl/config}/entry/BooleanConfigEntry.java | 2 +- .../client => client/impl/config}/entry/ConfigEntry.java | 6 +++--- .../client => client/impl/config}/entry/ConfigField.java | 2 +- .../client => client/impl/config}/entry/EnumButton.java | 2 +- .../impl/config}/entry/EnumConfigEntry.java | 4 ++-- .../impl/config}/entry/FieldConfigField.java | 2 +- .../impl/config}/entry/ListConfigEntry.java | 4 ++-- .../impl/config}/entry/ListMemberConfigField.java | 2 +- .../impl/config}/entry/NumberConfigEntry.java | 2 +- .../client => client/impl/config}/entry/SliderButton.java | 2 +- .../impl/config}/entry/StringConfigEntry.java | 2 +- .../impl/mixin}/ImageWidget$SpriteMixin.java | 4 ++-- .../impl/mixin}/event/ClientPacketListenerMixin.java | 4 ++-- .../impl/mixin}/event/ConnectionMixin.java | 4 ++-- .../impl/mixin}/event/MultiPlayerGameModeMixin.java | 2 +- .../impl/mixinsupport/MutableSpriteImageWidget$Sprite.java | 2 +- common/src/client/resources/jamlib.client.mixins.json | 2 +- .../jamlib/events/client/ClientPlayLifecycleEvents.java | 4 ++-- .../io/github/jamalam360/jamlib/api/network/Network.java | 4 ++-- .../jamlib/impl/{ => fabric}/network/JamLibPacket.java | 2 +- .../jamlib/impl/{ => fabric}/network/PlatformNetwork.java | 2 +- .../jamlib/impl/{ => fabric}/JamLibClientFabric.java | 5 +++-- .../jamalam360/jamlib/impl/{ => fabric}/JamLibFabric.java | 4 ++-- .../impl/{ => fabric}/config/ModMenuCompatibility.java | 6 +++--- .../{ => fabric}/network/fabric/PlatformNetworkImpl.java | 4 ++-- fabric/src/main/resources/fabric.mod.json | 4 ++-- .../jamlib/impl/{ => neoforge}/JamLibNeoForge.java | 2 +- .../jamlib/impl/{ => neoforge}/JamLibNeoForgeClient.java | 7 ++++--- .../main/java/io/github/jamalam360/testmod/TestMod.java | 6 +----- 37 files changed, 62 insertions(+), 60 deletions(-) rename common/src/client/java/io/github/jamalam360/jamlib/{api/events/client => client/api/events}/ClientPlayLifecycleEvents.java (91%) rename common/src/client/java/io/github/jamalam360/jamlib/{ => client}/api/gui/WidgetList.java (98%) rename common/src/client/java/io/github/jamalam360/jamlib/{ => client}/impl/JamLibClient.java (94%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/ConfigScreen.java (97%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/SelectConfigScreen.java (98%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/SelectionList.java (93%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/SelectionListEntry.java (98%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/BooleanConfigEntry.java (95%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/ConfigEntry.java (97%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/ConfigField.java (88%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/EnumButton.java (94%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/EnumConfigEntry.java (92%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/FieldConfigField.java (95%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/ListConfigEntry.java (97%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/ListMemberConfigField.java (96%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/NumberConfigEntry.java (98%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/SliderButton.java (95%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/config/client => client/impl/config}/entry/StringConfigEntry.java (94%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/mixinclient => client/impl/mixin}/ImageWidget$SpriteMixin.java (76%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/mixinclient => client/impl/mixin}/event/ClientPacketListenerMixin.java (88%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/mixinclient => client/impl/mixin}/event/ConnectionMixin.java (89%) rename common/src/client/java/io/github/jamalam360/jamlib/{impl/mixinclient => client/impl/mixin}/event/MultiPlayerGameModeMixin.java (97%) rename common/src/client/java/io/github/jamalam360/jamlib/{ => client}/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java (68%) rename common/src/main/java/io/github/jamalam360/jamlib/impl/{ => fabric}/network/JamLibPacket.java (95%) rename common/src/main/java/io/github/jamalam360/jamlib/impl/{ => fabric}/network/PlatformNetwork.java (92%) rename fabric/src/main/java/io/github/jamalam360/jamlib/impl/{ => fabric}/JamLibClientFabric.java (75%) rename fabric/src/main/java/io/github/jamalam360/jamlib/impl/{ => fabric}/JamLibFabric.java (87%) rename fabric/src/main/java/io/github/jamalam360/jamlib/impl/{ => fabric}/config/ModMenuCompatibility.java (87%) rename fabric/src/main/java/io/github/jamalam360/jamlib/impl/{ => fabric}/network/fabric/PlatformNetworkImpl.java (91%) rename neoforge/src/main/java/io/github/jamalam360/jamlib/impl/{ => neoforge}/JamLibNeoForge.java (78%) rename neoforge/src/main/java/io/github/jamalam360/jamlib/impl/{ => neoforge}/JamLibNeoForgeClient.java (86%) diff --git a/common/build.gradle b/common/build.gradle index 9b53860..7a49bd3 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -26,7 +26,10 @@ loom.createRemapConfigurations(sourceSets.deprecated) configurations { deprecatedImplementation.extendsFrom implementation deprecatedRuntimeOnly.extendsFrom runtimeOnly + modDeprecatedImplementation.extendsFrom modImplementation deprecatedCompileClasspath.extendsFrom clientCompileClasspath + modDeprecatedImplementation.extendsFrom modClientImplementation + deprecatedImplementation.extendsFrom clientImplementation } dependencies { @@ -40,6 +43,7 @@ dependencies { tasks.named('jar', Jar) { from sourceSets.deprecated.output + duplicatesStrategy = DuplicatesStrategy.EXCLUDE } publishing { diff --git a/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java b/common/src/client/java/io/github/jamalam360/jamlib/client/api/events/ClientPlayLifecycleEvents.java similarity index 91% rename from common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/api/events/ClientPlayLifecycleEvents.java index d5236ca..570ccc5 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/api/events/client/ClientPlayLifecycleEvents.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/api/events/ClientPlayLifecycleEvents.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.api.events.client; +package io.github.jamalam360.jamlib.client.api.events; import io.github.jamalam360.jamlib.api.events.core.Event; import net.minecraft.client.Minecraft; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/api/gui/WidgetList.java b/common/src/client/java/io/github/jamalam360/jamlib/client/api/gui/WidgetList.java similarity index 98% rename from common/src/client/java/io/github/jamalam360/jamlib/api/gui/WidgetList.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/api/gui/WidgetList.java index 7fed2f5..8a25cda 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/api/gui/WidgetList.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/api/gui/WidgetList.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.api.gui; +package io.github.jamalam360.jamlib.client.api.gui; import com.google.common.collect.ImmutableList; import net.minecraft.client.Minecraft; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/JamLibClient.java similarity index 94% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/JamLibClient.java index 051aef7..9f90014 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/JamLibClient.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/JamLibClient.java @@ -1,8 +1,8 @@ -package io.github.jamalam360.jamlib.impl; +package io.github.jamalam360.jamlib.client.impl; import static io.github.jamalam360.jamlib.JamLib.JAR_RENAMING_CHECKER; -import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; +import io.github.jamalam360.jamlib.client.api.events.ClientPlayLifecycleEvents; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/ConfigScreen.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/ConfigScreen.java similarity index 97% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/ConfigScreen.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/ConfigScreen.java index e2fc5a8..73b7a33 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/ConfigScreen.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/ConfigScreen.java @@ -1,8 +1,8 @@ -package io.github.jamalam360.jamlib.impl.config.client; +package io.github.jamalam360.jamlib.client.impl.config; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.impl.config.client.entry.ConfigEntry; -import io.github.jamalam360.jamlib.api.gui.WidgetList; +import io.github.jamalam360.jamlib.client.impl.config.entry.ConfigEntry; +import io.github.jamalam360.jamlib.client.api.gui.WidgetList; import io.github.jamalam360.jamlib.api.config.ConfigExtensions; import io.github.jamalam360.jamlib.api.config.ConfigManager; import io.github.jamalam360.jamlib.api.config.HiddenInGui; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectConfigScreen.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectConfigScreen.java similarity index 98% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectConfigScreen.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectConfigScreen.java index c9b2192..b06697f 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectConfigScreen.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectConfigScreen.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client; +package io.github.jamalam360.jamlib.client.impl.config; import io.github.jamalam360.jamlib.api.config.ConfigManager; import java.util.List; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionList.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectionList.java similarity index 93% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionList.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectionList.java index b1a7219..ff8cec6 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionList.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectionList.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client; +package io.github.jamalam360.jamlib.client.impl.config; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionListEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectionListEntry.java similarity index 98% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionListEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectionListEntry.java index 8719f47..113c812 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/SelectionListEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/SelectionListEntry.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client; +package io.github.jamalam360.jamlib.client.impl.config; import java.util.List; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/BooleanConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/BooleanConfigEntry.java similarity index 95% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/BooleanConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/BooleanConfigEntry.java index f102a11..8522642 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/BooleanConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/BooleanConfigEntry.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.AbstractWidget; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ConfigEntry.java similarity index 97% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ConfigEntry.java index b9638a2..d9ca215 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ConfigEntry.java @@ -1,9 +1,9 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import com.google.gson.Gson; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.impl.config.client.ConfigScreen; -import io.github.jamalam360.jamlib.impl.mixinsupport.MutableSpriteImageWidget$Sprite; +import io.github.jamalam360.jamlib.client.impl.config.ConfigScreen; +import io.github.jamalam360.jamlib.client.impl.mixinsupport.MutableSpriteImageWidget$Sprite; import io.github.jamalam360.jamlib.api.config.ConfigExtensions; import io.github.jamalam360.jamlib.api.config.ConfigManager; import net.minecraft.client.Minecraft; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigField.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ConfigField.java similarity index 88% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigField.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ConfigField.java index 6bb567d..ec2b83a 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ConfigField.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ConfigField.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import io.github.jamalam360.jamlib.api.config.ConfigManager; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumButton.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/EnumButton.java similarity index 94% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumButton.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/EnumButton.java index 17094de..c21e666 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumButton.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/EnumButton.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.CommonComponents; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/EnumConfigEntry.java similarity index 92% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/EnumConfigEntry.java index 74da60f..be4d6b9 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/EnumConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/EnumConfigEntry.java @@ -1,6 +1,6 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; -import io.github.jamalam360.jamlib.impl.config.client.ConfigScreen; +import io.github.jamalam360.jamlib.client.impl.config.ConfigScreen; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.CommonComponents; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/FieldConfigField.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/FieldConfigField.java similarity index 95% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/FieldConfigField.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/FieldConfigField.java index 01252b1..9dc8dc5 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/FieldConfigField.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/FieldConfigField.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import io.github.jamalam360.jamlib.JamLib; import io.github.jamalam360.jamlib.api.config.ConfigManager; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ListConfigEntry.java similarity index 97% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ListConfigEntry.java index 3fc3557..c70a0d3 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ListConfigEntry.java @@ -1,6 +1,6 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; -import io.github.jamalam360.jamlib.api.gui.WidgetList; +import io.github.jamalam360.jamlib.client.api.gui.WidgetList; import io.github.jamalam360.jamlib.api.config.ConfigExtensions; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.components.Button; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListMemberConfigField.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ListMemberConfigField.java similarity index 96% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListMemberConfigField.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ListMemberConfigField.java index 2586722..a938f96 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/ListMemberConfigField.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/ListMemberConfigField.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import io.github.jamalam360.jamlib.JamLib; import io.github.jamalam360.jamlib.api.config.ConfigManager; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/NumberConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/NumberConfigEntry.java similarity index 98% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/NumberConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/NumberConfigEntry.java index fb8ca1e..225228b 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/NumberConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/NumberConfigEntry.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import io.github.jamalam360.jamlib.api.config.Slider; import io.github.jamalam360.jamlib.api.config.WithinRange; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/SliderButton.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/SliderButton.java similarity index 95% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/SliderButton.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/SliderButton.java index 9c9dbac..ddace34 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/SliderButton.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/SliderButton.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import net.minecraft.client.gui.components.AbstractSliderButton; import net.minecraft.network.chat.Component; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/StringConfigEntry.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/StringConfigEntry.java similarity index 94% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/StringConfigEntry.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/StringConfigEntry.java index 344c09d..4d1458e 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/config/client/entry/StringConfigEntry.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/config/entry/StringConfigEntry.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.config.client.entry; +package io.github.jamalam360.jamlib.client.impl.config.entry; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.AbstractWidget; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/ImageWidget$SpriteMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/ImageWidget$SpriteMixin.java similarity index 76% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/ImageWidget$SpriteMixin.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/ImageWidget$SpriteMixin.java index 09d65ab..95c63cf 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/ImageWidget$SpriteMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/ImageWidget$SpriteMixin.java @@ -1,6 +1,6 @@ -package io.github.jamalam360.jamlib.impl.mixinclient; +package io.github.jamalam360.jamlib.client.impl.mixin; -import io.github.jamalam360.jamlib.impl.mixinsupport.MutableSpriteImageWidget$Sprite; +import io.github.jamalam360.jamlib.client.impl.mixinsupport.MutableSpriteImageWidget$Sprite; import net.minecraft.resources.Identifier; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ClientPacketListenerMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/ClientPacketListenerMixin.java similarity index 88% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ClientPacketListenerMixin.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/ClientPacketListenerMixin.java index f08694d..1fd43e7 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ClientPacketListenerMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/ClientPacketListenerMixin.java @@ -1,6 +1,6 @@ -package io.github.jamalam360.jamlib.impl.mixinclient.event; +package io.github.jamalam360.jamlib.client.impl.mixin.event; -import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; +import io.github.jamalam360.jamlib.client.api.events.ClientPlayLifecycleEvents; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.network.protocol.game.ClientboundLoginPacket; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ConnectionMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/ConnectionMixin.java similarity index 89% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ConnectionMixin.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/ConnectionMixin.java index fbd15fa..f63f63d 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/ConnectionMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/ConnectionMixin.java @@ -1,6 +1,6 @@ -package io.github.jamalam360.jamlib.impl.mixinclient.event; +package io.github.jamalam360.jamlib.client.impl.mixin.event; -import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; +import io.github.jamalam360.jamlib.client.api.events.ClientPlayLifecycleEvents; import io.netty.channel.ChannelHandlerContext; import net.minecraft.client.Minecraft; import net.minecraft.network.Connection; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/MultiPlayerGameModeMixin.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/MultiPlayerGameModeMixin.java similarity index 97% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/MultiPlayerGameModeMixin.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/MultiPlayerGameModeMixin.java index 98e23f1..3b1c800 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinclient/event/MultiPlayerGameModeMixin.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixin/event/MultiPlayerGameModeMixin.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.mixinclient.event; +package io.github.jamalam360.jamlib.client.impl.mixin.event; import io.github.jamalam360.jamlib.api.events.InteractionEvent; import io.github.jamalam360.jamlib.api.events.core.EventResult; diff --git a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java similarity index 68% rename from common/src/client/java/io/github/jamalam360/jamlib/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java rename to common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java index 41590ed..54c8d39 100644 --- a/common/src/client/java/io/github/jamalam360/jamlib/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java +++ b/common/src/client/java/io/github/jamalam360/jamlib/client/impl/mixinsupport/MutableSpriteImageWidget$Sprite.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.mixinsupport; +package io.github.jamalam360.jamlib.client.impl.mixinsupport; import net.minecraft.resources.Identifier; diff --git a/common/src/client/resources/jamlib.client.mixins.json b/common/src/client/resources/jamlib.client.mixins.json index 594a7b9..6c63876 100644 --- a/common/src/client/resources/jamlib.client.mixins.json +++ b/common/src/client/resources/jamlib.client.mixins.json @@ -1,7 +1,7 @@ { "required": true, "minVersion": "0.8", - "package": "io.github.jamalam360.jamlib.impl.mixinclient", + "package": "io.github.jamalam360.jamlib.client.impl.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ ], diff --git a/common/src/deprecated/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java b/common/src/deprecated/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java index c996bd3..9844978 100644 --- a/common/src/deprecated/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java +++ b/common/src/deprecated/java/io/github/jamalam360/jamlib/events/client/ClientPlayLifecycleEvents.java @@ -16,8 +16,8 @@ public class ClientPlayLifecycleEvents { public static final Event DISCONNECT = EventFactory.createLoop(Leave.class); static { - io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents.JOIN.listen((minecraft) -> JOIN.invoker().onJoin(minecraft)); - io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents.DISCONNECT.listen((minecraft) -> DISCONNECT.invoker().onLeave(minecraft)); + io.github.jamalam360.jamlib.client.api.events.ClientPlayLifecycleEvents.JOIN.listen((minecraft) -> JOIN.invoker().onJoin(minecraft)); + io.github.jamalam360.jamlib.client.api.events.ClientPlayLifecycleEvents.DISCONNECT.listen((minecraft) -> DISCONNECT.invoker().onLeave(minecraft)); } @FunctionalInterface diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java b/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java index 9176af5..d835097 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/network/Network.java @@ -1,8 +1,8 @@ package io.github.jamalam360.jamlib.api.network; import io.github.jamalam360.jamlib.JamLib; -import io.github.jamalam360.jamlib.impl.network.JamLibPacket; -import io.github.jamalam360.jamlib.impl.network.PlatformNetwork; +import io.github.jamalam360.jamlib.impl.fabric.network.JamLibPacket; +import io.github.jamalam360.jamlib.impl.fabric.network.PlatformNetwork; import net.minecraft.server.level.ServerPlayer; import org.jetbrains.annotations.ApiStatus; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/impl/network/JamLibPacket.java b/common/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/JamLibPacket.java similarity index 95% rename from common/src/main/java/io/github/jamalam360/jamlib/impl/network/JamLibPacket.java rename to common/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/JamLibPacket.java index 5639e6f..ad6f524 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/impl/network/JamLibPacket.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/JamLibPacket.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.network; +package io.github.jamalam360.jamlib.impl.fabric.network; import io.github.jamalam360.jamlib.JamLib; import io.github.jamalam360.jamlib.api.network.PayloadType; diff --git a/common/src/main/java/io/github/jamalam360/jamlib/impl/network/PlatformNetwork.java b/common/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/PlatformNetwork.java similarity index 92% rename from common/src/main/java/io/github/jamalam360/jamlib/impl/network/PlatformNetwork.java rename to common/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/PlatformNetwork.java index b1c77e2..45a72ac 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/impl/network/PlatformNetwork.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/PlatformNetwork.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl.network; +package io.github.jamalam360.jamlib.impl.fabric.network; import dev.architectury.injectables.annotations.ExpectPlatform; import io.github.jamalam360.jamlib.JamLib; diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibClientFabric.java b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/JamLibClientFabric.java similarity index 75% rename from fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibClientFabric.java rename to fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/JamLibClientFabric.java index 5756315..d879e75 100644 --- a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibClientFabric.java +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/JamLibClientFabric.java @@ -1,8 +1,9 @@ -package io.github.jamalam360.jamlib.impl; +package io.github.jamalam360.jamlib.impl.fabric; import io.github.jamalam360.jamlib.api.network.Network; import io.github.jamalam360.jamlib.api.network.NetworkContext; -import io.github.jamalam360.jamlib.impl.network.JamLibPacket; +import io.github.jamalam360.jamlib.client.impl.JamLibClient; +import io.github.jamalam360.jamlib.impl.fabric.network.JamLibPacket; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibFabric.java b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/JamLibFabric.java similarity index 87% rename from fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibFabric.java rename to fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/JamLibFabric.java index 3d87497..79478aa 100644 --- a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/JamLibFabric.java +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/JamLibFabric.java @@ -1,9 +1,9 @@ -package io.github.jamalam360.jamlib.impl; +package io.github.jamalam360.jamlib.impl.fabric; import io.github.jamalam360.jamlib.JamLib; import io.github.jamalam360.jamlib.api.network.Network; import io.github.jamalam360.jamlib.api.network.NetworkContext; -import io.github.jamalam360.jamlib.impl.network.JamLibPacket; +import io.github.jamalam360.jamlib.impl.fabric.network.JamLibPacket; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/config/ModMenuCompatibility.java b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/config/ModMenuCompatibility.java similarity index 87% rename from fabric/src/main/java/io/github/jamalam360/jamlib/impl/config/ModMenuCompatibility.java rename to fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/config/ModMenuCompatibility.java index b33784d..65aac63 100644 --- a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/config/ModMenuCompatibility.java +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/config/ModMenuCompatibility.java @@ -1,11 +1,11 @@ -package io.github.jamalam360.jamlib.impl.config; +package io.github.jamalam360.jamlib.impl.fabric.config; import com.mojang.datafixers.util.Pair; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; import io.github.jamalam360.jamlib.api.config.ConfigManager; -import io.github.jamalam360.jamlib.impl.config.client.ConfigScreen; -import io.github.jamalam360.jamlib.impl.config.client.SelectConfigScreen; +import io.github.jamalam360.jamlib.client.impl.config.ConfigScreen; +import io.github.jamalam360.jamlib.client.impl.config.SelectConfigScreen; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/network/fabric/PlatformNetworkImpl.java b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/fabric/PlatformNetworkImpl.java similarity index 91% rename from fabric/src/main/java/io/github/jamalam360/jamlib/impl/network/fabric/PlatformNetworkImpl.java rename to fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/fabric/PlatformNetworkImpl.java index 5ddcf24..4fff80b 100644 --- a/fabric/src/main/java/io/github/jamalam360/jamlib/impl/network/fabric/PlatformNetworkImpl.java +++ b/fabric/src/main/java/io/github/jamalam360/jamlib/impl/fabric/network/fabric/PlatformNetworkImpl.java @@ -1,8 +1,8 @@ -package io.github.jamalam360.jamlib.impl.network.fabric; +package io.github.jamalam360.jamlib.impl.fabric.network.fabric; import io.github.jamalam360.jamlib.api.network.NetworkPayloadType; import io.github.jamalam360.jamlib.api.network.PayloadType; -import io.github.jamalam360.jamlib.impl.network.JamLibPacket; +import io.github.jamalam360.jamlib.impl.fabric.network.JamLibPacket; import io.netty.buffer.Unpooled; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 9feb9bf..ca3c05d 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -17,10 +17,10 @@ "environment": "*", "entrypoints": { "main": [ - "io.github.jamalam360.jamlib.impl.JamLibFabric" + "io.github.jamalam360.jamlib.impl.fabric.JamLibFabric" ], "client": [ - "io.github.jamalam360.jamlib.impl.JamLibClientFabric" + "io.github.jamalam360.jamlib.impl.fabric.JamLibClientFabric" ], "modmenu": [ "io.github.jamalam360.jamlib.impl.config.ModMenuCompatibility" diff --git a/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForge.java b/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/neoforge/JamLibNeoForge.java similarity index 78% rename from neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForge.java rename to neoforge/src/main/java/io/github/jamalam360/jamlib/impl/neoforge/JamLibNeoForge.java index 40d48e4..947c3cc 100644 --- a/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForge.java +++ b/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/neoforge/JamLibNeoForge.java @@ -1,4 +1,4 @@ -package io.github.jamalam360.jamlib.impl; +package io.github.jamalam360.jamlib.impl.neoforge; import io.github.jamalam360.jamlib.JamLib; import net.neoforged.fml.common.Mod; diff --git a/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForgeClient.java b/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/neoforge/JamLibNeoForgeClient.java similarity index 86% rename from neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForgeClient.java rename to neoforge/src/main/java/io/github/jamalam360/jamlib/impl/neoforge/JamLibNeoForgeClient.java index f001b75..fb2b143 100644 --- a/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/JamLibNeoForgeClient.java +++ b/neoforge/src/main/java/io/github/jamalam360/jamlib/impl/neoforge/JamLibNeoForgeClient.java @@ -1,9 +1,10 @@ -package io.github.jamalam360.jamlib.impl; +package io.github.jamalam360.jamlib.impl.neoforge; import io.github.jamalam360.jamlib.JamLib; import io.github.jamalam360.jamlib.api.config.ConfigManager; -import io.github.jamalam360.jamlib.impl.config.client.ConfigScreen; -import io.github.jamalam360.jamlib.impl.config.client.SelectConfigScreen; +import io.github.jamalam360.jamlib.client.impl.JamLibClient; +import io.github.jamalam360.jamlib.client.impl.config.ConfigScreen; +import io.github.jamalam360.jamlib.client.impl.config.SelectConfigScreen; import net.neoforged.api.distmarker.Dist; import net.neoforged.bus.api.IEventBus; import net.neoforged.fml.ModList; diff --git a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java index 4acf45b..d2a1d09 100644 --- a/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java +++ b/testmod-common/src/main/java/io/github/jamalam360/testmod/TestMod.java @@ -5,17 +5,13 @@ import io.github.jamalam360.jamlib.api.network.Network; import io.github.jamalam360.jamlib.api.platform.Platform; import io.github.jamalam360.jamlib.api.config.ConfigManager; -import io.github.jamalam360.jamlib.api.events.client.ClientPlayLifecycleEvents; +import io.github.jamalam360.jamlib.client.api.events.ClientPlayLifecycleEvents; import io.github.jamalam360.testmod.config.NestedConfigChild; import io.github.jamalam360.testmod.config.QuickerConnectButtonTestConfig; import io.github.jamalam360.testmod.config.TestConfig; -import io.github.jamalam360.testmod.item.PacketPotatoItem; import io.github.jamalam360.testmod.network.PotatoPacket; -import net.minecraft.core.registries.Registries; import net.minecraft.resources.Identifier; -import net.minecraft.resources.ResourceKey; import net.minecraft.world.InteractionResult; -import net.minecraft.world.item.Item; import org.slf4j.Logger; import org.slf4j.LoggerFactory; From 9e667b9376db1671749c1294540e72e4355715e1 Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 20:14:14 +0100 Subject: [PATCH 13/16] fix: change modmenu compatibility entrypoint path --- fabric/src/main/resources/fabric.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index ca3c05d..9a0af5b 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -23,7 +23,7 @@ "io.github.jamalam360.jamlib.impl.fabric.JamLibClientFabric" ], "modmenu": [ - "io.github.jamalam360.jamlib.impl.config.ModMenuCompatibility" + "io.github.jamalam360.jamlib.impl.fabric.config.ModMenuCompatibility" ] }, "mixins": [ From 392689e7fa17eb157e1f3cfe63d946bb04c88fa0 Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 20:16:50 +0100 Subject: [PATCH 14/16] chore: update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d77555..0fe6975 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,3 @@ Add more APIs in order to remove Architectury dependency. -Should be a backwards compatible update - please get in touch if you run into issues. +This is a backwards compatible update. Mods which still use 1.x.x versions of JamLib are able to coexist with JamLib 2.x.x and mods using it. Please get in touch if you run into issues. From 7522746e247f1f4a2099b4e97171030ef9a4db6c Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 20:28:26 +0100 Subject: [PATCH 15/16] fix: remove duplicate class --- .../jamlib/api/events/EventResult.java | 50 ------------------- 1 file changed, 50 deletions(-) delete mode 100644 common/src/main/java/io/github/jamalam360/jamlib/api/events/EventResult.java diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/events/EventResult.java b/common/src/main/java/io/github/jamalam360/jamlib/api/events/EventResult.java deleted file mode 100644 index 6f4ff02..0000000 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/events/EventResult.java +++ /dev/null @@ -1,50 +0,0 @@ -package io.github.jamalam360.jamlib.api.events; - -import org.jetbrains.annotations.Nullable; - -/** - * The result of a {@link CancellableEvent}. Either passes or returns a value. - * @param The returned value type. - */ -public class EventResult { - private final boolean cancelled; - @Nullable - private final T result; - - private EventResult(boolean cancelled, @Nullable T result) { - this.cancelled = cancelled; - this.result = result; - } - - /** - * Create a passing {@link EventResult}. - * @return A passing {@link EventResult}. - */ - public static EventResult pass() { - return new EventResult<>(false, null); - } - - /** - * Create a cancelling {@link EventResult} with a result. - * @param result The result. - * @return A cancelling {@link EventResult} with the given result. - */ - public static EventResult cancel(T result) { - return new EventResult<>(true, result); - } - - /** - * @return Whether this {@link EventResult} indicates a cancellation. - */ - public boolean wasCancelled() { - return this.cancelled; - } - - /** - * @return The result of this {@link EventResult}, or null if it was not canceled. - */ - @Nullable - public T getResult() { - return this.result; - } -} From d6d6b0d6c37a11a79fd3004117b16ce7e915e20b Mon Sep 17 00:00:00 2001 From: Jamalam Date: Sun, 26 Apr 2026 20:29:22 +0100 Subject: [PATCH 16/16] fix: neoforge typo --- .../java/io/github/jamalam360/jamlib/api/platform/Platform.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/main/java/io/github/jamalam360/jamlib/api/platform/Platform.java b/common/src/main/java/io/github/jamalam360/jamlib/api/platform/Platform.java index 5fab62d..0eac368 100644 --- a/common/src/main/java/io/github/jamalam360/jamlib/api/platform/Platform.java +++ b/common/src/main/java/io/github/jamalam360/jamlib/api/platform/Platform.java @@ -52,7 +52,7 @@ public static ModLoader getModLoader() { } else if (isForge()) { return ModLoader.FORGE; } else if (isNeoForge()){ - return ModLoader.FABRIC; + return ModLoader.NEOFORGE; } throw new IllegalStateException("Could not determine mod loader");