From 78bec96ae88d85f9cf4c73dce7d5802f7635b7fe Mon Sep 17 00:00:00 2001 From: HypherionMC Date: Fri, 2 Jun 2023 23:59:14 +0200 Subject: [PATCH] Some code cleanup and API changes --- .../creativetab/CraterCreativeModeTab.java | 5 ++- .../event/client/CraterClientTickEvent.java | 4 ++ ...EarlyInitEvent.java => LateInitEvent.java} | 4 +- .../client/registry/ClientRegistry.java | 2 +- .../FluidContainerBlockEntity.java | 1 - .../common/item/BlockItemDyable.java | 8 ++-- .../craterlib/core/event/CraterEventBus.java | 11 ++++- .../core/network/CraterNetworkHandler.java | 6 +-- .../core/platform/ClientPlatform.java | 40 +++++++++++++------ ...bCommonHelper.java => CommonPlatform.java} | 17 ++++++-- ...luidHelper.java => CraterFluidHelper.java} | 7 +++- .../craterlib/core/platform/Environment.java | 18 +++++++++ ...rHelper.java => ModloaderEnvironment.java} | 8 +++- .../craterlib/core/platform/Platform.java | 29 -------------- .../core/platform/services/Environment.java | 10 ----- .../platform/services/LibClientHelper.java | 40 ------------------- .../mixin/events/client/TutorialMixin.java | 4 +- .../craterlib/util/RenderUtils.java | 2 +- .../craterlib/util/ServiceUtil.java | 27 +++++++++++++ .../craterlib/CraterLibInitializer.java | 4 +- .../client/CraterLibClientInitializer.java | 30 +++++++++++++- ...tHelper.java => FabricClientPlatform.java} | 35 +++++----------- .../craterlib/client/FabricNetworkHelper.java | 2 - ...nHelper.java => FabricCommonPlatform.java} | 11 ++--- .../craterlib/common/FabricFluidHelper.java | 4 +- .../craterlib/common/FabricLoaderHelper.java | 6 +-- .../craterlib/mixin/FabricMinecraftMixin.java | 38 ------------------ .../impl/FabricClientNetworkHelper.java | 3 +- ...nmc.craterlib.core.platform.ClientPlatform | 1 + ...nmc.craterlib.core.platform.CommonPlatform | 1 + ...craterlib.core.platform.CraterFluidHelper} | 0 ...terlib.core.platform.ModloaderEnvironment} | 0 ...lib.core.platform.services.LibClientHelper | 1 - ...lib.core.platform.services.LibCommonHelper | 1 - .../resources/craterlib.fabric.mixins.json | 1 - 35 files changed, 183 insertions(+), 198 deletions(-) rename Common/src/main/java/com/hypherionmc/craterlib/api/event/client/{EarlyInitEvent.java => LateInitEvent.java} (82%) rename Common/src/main/java/com/hypherionmc/craterlib/core/platform/{services/LibCommonHelper.java => CommonPlatform.java} (66%) rename Common/src/main/java/com/hypherionmc/craterlib/core/platform/{services/LibFluidHelper.java => CraterFluidHelper.java} (83%) create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/platform/Environment.java rename Common/src/main/java/com/hypherionmc/craterlib/core/platform/{services/ILoaderHelper.java => ModloaderEnvironment.java} (60%) delete mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/platform/Platform.java delete mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/Environment.java delete mode 100644 Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibClientHelper.java create mode 100644 Common/src/main/java/com/hypherionmc/craterlib/util/ServiceUtil.java rename Fabric/src/main/java/com/hypherionmc/craterlib/client/{FabricClientHelper.java => FabricClientPlatform.java} (55%) delete mode 100644 Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricNetworkHelper.java rename Fabric/src/main/java/com/hypherionmc/craterlib/common/{FabricCommonHelper.java => FabricCommonPlatform.java} (87%) delete mode 100644 Fabric/src/main/java/com/hypherionmc/craterlib/mixin/FabricMinecraftMixin.java create mode 100644 Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.ClientPlatform create mode 100644 Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CommonPlatform rename Fabric/src/main/resources/META-INF/services/{com.hypherionmc.craterlib.core.platform.services.LibFluidHelper => com.hypherionmc.craterlib.core.platform.CraterFluidHelper} (100%) rename Fabric/src/main/resources/META-INF/services/{com.hypherionmc.craterlib.core.platform.services.ILoaderHelper => com.hypherionmc.craterlib.core.platform.ModloaderEnvironment} (100%) delete mode 100644 Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper delete mode 100644 Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/creativetab/CraterCreativeModeTab.java b/Common/src/main/java/com/hypherionmc/craterlib/api/creativetab/CraterCreativeModeTab.java index 7641296..9a72737 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/api/creativetab/CraterCreativeModeTab.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/creativetab/CraterCreativeModeTab.java @@ -10,6 +10,10 @@ import net.minecraft.world.item.ItemStack; import java.util.function.Supplier; +/** + * @author HypherionSA + * Helper class to create custom creative tabs from modules + */ public class CraterCreativeModeTab implements Supplier { private final ResourceLocation resourceLocation; @@ -69,7 +73,6 @@ public class CraterCreativeModeTab implements Supplier { public CraterCreativeModeTab build() { return new CraterCreativeModeTab(this); } - } @Override diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/CraterClientTickEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/CraterClientTickEvent.java index 0483218..1360d9d 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/CraterClientTickEvent.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/CraterClientTickEvent.java @@ -3,6 +3,10 @@ package com.hypherionmc.craterlib.api.event.client; import com.hypherionmc.craterlib.core.event.CraterEvent; import net.minecraft.client.multiplayer.ClientLevel; +/** + * @author HypherionSA + * Cross Modloader Client Tick Event. + */ public class CraterClientTickEvent extends CraterEvent { private final ClientLevel level; diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/EarlyInitEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/LateInitEvent.java similarity index 82% rename from Common/src/main/java/com/hypherionmc/craterlib/api/event/client/EarlyInitEvent.java rename to Common/src/main/java/com/hypherionmc/craterlib/api/event/client/LateInitEvent.java index 20d4cb8..726e0fb 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/EarlyInitEvent.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/client/LateInitEvent.java @@ -4,12 +4,12 @@ import com.hypherionmc.craterlib.core.event.CraterEvent; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; -public class EarlyInitEvent extends CraterEvent { +public class LateInitEvent extends CraterEvent { private final Minecraft minecraft; private final Options options; - public EarlyInitEvent(Minecraft minecraft, Options options) { + public LateInitEvent(Minecraft minecraft, Options options) { this.minecraft = minecraft; this.options = options; } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/client/registry/ClientRegistry.java b/Common/src/main/java/com/hypherionmc/craterlib/client/registry/ClientRegistry.java index f486070..3aee6c3 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/client/registry/ClientRegistry.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/registry/ClientRegistry.java @@ -54,7 +54,7 @@ public class ClientRegistry { * @param blockEntityRendererFactory The renderer factory */ public static void registerBlockEntityRenderer(@NotNull BlockEntityType blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory) { - ClientPlatform.CLIENT_HELPER.registerBlockEntityRenderer(blockEntityType, blockEntityRendererFactory); + ClientPlatform.INSTANCE.registerBlockEntityRenderer(blockEntityType, blockEntityRendererFactory); } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java b/Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java index e80d931..8640cd4 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/common/blockentity/FluidContainerBlockEntity.java @@ -1,7 +1,6 @@ package com.hypherionmc.craterlib.common.blockentity; import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; -import com.hypherionmc.craterlib.core.platform.Platform; import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/Common/src/main/java/com/hypherionmc/craterlib/common/item/BlockItemDyable.java b/Common/src/main/java/com/hypherionmc/craterlib/common/item/BlockItemDyable.java index c6afc26..12d08c5 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/common/item/BlockItemDyable.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/common/item/BlockItemDyable.java @@ -3,8 +3,8 @@ package com.hypherionmc.craterlib.common.item; import com.hypherionmc.craterlib.api.rendering.DyableBlock; import com.hypherionmc.craterlib.api.rendering.ItemDyable; import com.hypherionmc.craterlib.core.platform.ClientPlatform; -import com.hypherionmc.craterlib.core.platform.Platform; -import com.hypherionmc.craterlib.core.platform.services.Environment; +import com.hypherionmc.craterlib.core.platform.Environment; +import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.BlockItem; @@ -27,8 +27,8 @@ public class BlockItemDyable extends BlockItem implements ItemDyable { public BlockItemDyable(Block block, Properties properties) { super(block, properties); - if (Platform.LOADER.getEnvironment() == Environment.CLIENT) { - ClientPlatform.CLIENT_HELPER.registerItemProperty(this, "color"); + if (ModloaderEnvironment.INSTANCE.getEnvironment() == Environment.CLIENT) { + ClientPlatform.INSTANCE.registerItemProperty(this, "color"); } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventBus.java b/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventBus.java index 6251859..f2399b9 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventBus.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/event/CraterEventBus.java @@ -62,11 +62,11 @@ public final class CraterEventBus { for (Method m : c.getMethods()) { if (isClass && Modifier.isStatic(m.getModifiers())) { EventMethod em = EventMethod.tryCreateFrom(new AnalyzedMethod(m, c)); - if (em != null) l.add(em); + if ((em != null) && this.hasEventAnnotation(em)) l.add(em); } if (!isClass && !Modifier.isStatic(m.getModifiers())) { EventMethod em = EventMethod.tryCreateFrom(new AnalyzedMethod(m, objectOrClass)); - if (em != null) l.add(em); + if ((em != null) && this.hasEventAnnotation(em)) l.add(em); } } } @@ -76,6 +76,13 @@ public final class CraterEventBus { return l; } + private boolean hasEventAnnotation(EventMethod m) { + for (Annotation a : m.annotations) { + if (a instanceof CraterEventListener) return true; + } + return false; + } + public void registerListener(Consumer listener, Class eventType) { this.registerListener(listener, eventType, 0); } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java b/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java index f79717b..eb34a06 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/network/CraterNetworkHandler.java @@ -1,7 +1,7 @@ package com.hypherionmc.craterlib.core.network; import com.hypherionmc.craterlib.core.platform.ClientPlatform; -import com.hypherionmc.craterlib.core.platform.Platform; +import com.hypherionmc.craterlib.core.platform.CommonPlatform; import net.minecraft.network.protocol.Packet; import net.minecraft.server.level.ServerPlayer; @@ -19,7 +19,7 @@ public interface CraterNetworkHandler { Packet toClientBound(CraterPacket packet); default void sendToServer(CraterPacket packet) { - ClientPlatform.CLIENT_HELPER.getClientConnection().send(this.toServerBound(packet)); + ClientPlatform.INSTANCE.getClientConnection().send(this.toServerBound(packet)); } default void sendTo(CraterPacket packet, ServerPlayer player) { @@ -27,7 +27,7 @@ public interface CraterNetworkHandler { } default void sendToAll(CraterPacket packet) { - Platform.COMMON_HELPER.getMCServer().getPlayerList().broadcastAll(this.toClientBound(packet)); + CommonPlatform.INSTANCE.getMCServer().getPlayerList().broadcastAll(this.toClientBound(packet)); } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/ClientPlatform.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/ClientPlatform.java index d30f690..f536a7b 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/ClientPlatform.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/ClientPlatform.java @@ -1,23 +1,39 @@ package com.hypherionmc.craterlib.core.platform; -import com.hypherionmc.craterlib.CraterConstants; -import com.hypherionmc.craterlib.core.platform.services.LibClientHelper; +import com.hypherionmc.craterlib.common.item.BlockItemDyable; +import com.hypherionmc.craterlib.core.systems.reg.RegistryObject; +import com.hypherionmc.craterlib.util.ServiceUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.network.Connection; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import org.jetbrains.annotations.NotNull; -import java.util.ServiceLoader; +import java.util.Collection; /** * @author HypherionSA */ -public class ClientPlatform { +public interface ClientPlatform { - public static final LibClientHelper CLIENT_HELPER = load(LibClientHelper.class); + public final ClientPlatform INSTANCE = ServiceUtil.load(ClientPlatform.class); - public static T load(Class clazz) { + void registerItemProperty(@NotNull BlockItemDyable item, @NotNull String property); + + void registerCustomRenderTypes(@NotNull Collection> blocks); + + Minecraft getClientInstance(); + + Player getClientPlayer(); + + Level getClientLevel(); + + Connection getClientConnection(); + + void registerBlockEntityRenderer(@NotNull BlockEntityType blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory); - final T loadedService = ServiceLoader.load(clazz) - .findFirst() - .orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName())); - CraterConstants.LOG.debug("Loaded {} for service {}", loadedService, clazz); - return loadedService; - } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibCommonHelper.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CommonPlatform.java similarity index 66% rename from Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibCommonHelper.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/platform/CommonPlatform.java index 393f31b..d147ed5 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibCommonHelper.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CommonPlatform.java @@ -1,7 +1,8 @@ -package com.hypherionmc.craterlib.core.platform.services; +package com.hypherionmc.craterlib.core.platform; import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; +import com.hypherionmc.craterlib.util.ServiceUtil; import net.minecraft.core.Direction; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.MinecraftServer; @@ -20,12 +21,22 @@ import java.util.function.Consumer; /** * @author HypherionSA */ -public interface LibCommonHelper { +public interface CommonPlatform { - CraterNetworkHandler createPacketHandler(String modid); + public CommonPlatform INSTANCE = ServiceUtil.load(CommonPlatform.class); + + default CraterNetworkHandler createPacketHandler(String modid) { + return this.createPacketHandler(modid, true, true); + } + + CraterNetworkHandler createPacketHandler(String modid, boolean requiredClient, boolean requiredServer); MinecraftServer getMCServer(); + default void openMenu(ServerPlayer player, MenuProvider menuProvider) { + this.openMenu(player, menuProvider, null); + } + void openMenu(ServerPlayer player, MenuProvider menu, @Nullable Consumer initialData); MenuType createMenuType(TriFunction constructor); diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibFluidHelper.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CraterFluidHelper.java similarity index 83% rename from Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibFluidHelper.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/platform/CraterFluidHelper.java index 42c1308..a326b4a 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibFluidHelper.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/CraterFluidHelper.java @@ -1,8 +1,9 @@ -package com.hypherionmc.craterlib.core.platform.services; +package com.hypherionmc.craterlib.core.platform; import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; +import com.hypherionmc.craterlib.util.ServiceUtil; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -16,7 +17,9 @@ import org.jetbrains.annotations.Nullable; /** * @author HypherionSA */ -public interface LibFluidHelper { +public interface CraterFluidHelper { + + public CraterFluidHelper INSTANCE = ServiceUtil.load(CraterFluidHelper.class); CraterFluidTank createFluidTank(int capacity); diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/Environment.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/Environment.java new file mode 100644 index 0000000..bed6cc4 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/Environment.java @@ -0,0 +1,18 @@ +package com.hypherionmc.craterlib.core.platform; + +/** + * @author HypherionSA + */ +public enum Environment { + CLIENT, + SERVER, + UNKNOWN; + + public boolean isClient() { + return this == CLIENT; + } + + public boolean isServer() { + return this == SERVER; + } +} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/ILoaderHelper.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/ModloaderEnvironment.java similarity index 60% rename from Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/ILoaderHelper.java rename to Common/src/main/java/com/hypherionmc/craterlib/core/platform/ModloaderEnvironment.java index 1a66fea..1559170 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/ILoaderHelper.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/ModloaderEnvironment.java @@ -1,4 +1,6 @@ -package com.hypherionmc.craterlib.core.platform.services; +package com.hypherionmc.craterlib.core.platform; + +import com.hypherionmc.craterlib.util.ServiceUtil; import java.io.File; @@ -6,7 +8,9 @@ import java.io.File; * @author HypherionSA * Helper class to provide information about the ModLoader */ -public interface ILoaderHelper { +public interface ModloaderEnvironment { + + public final ModloaderEnvironment INSTANCE = ServiceUtil.load(ModloaderEnvironment.class); boolean isFabric(); String getGameVersion(); diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/Platform.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/Platform.java deleted file mode 100644 index e99a6e0..0000000 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/Platform.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.hypherionmc.craterlib.core.platform; - -import com.hypherionmc.craterlib.CraterConstants; -import com.hypherionmc.craterlib.core.platform.services.ILoaderHelper; -import com.hypherionmc.craterlib.core.platform.services.LibCommonHelper; -import com.hypherionmc.craterlib.core.platform.services.LibFluidHelper; - -import java.util.ServiceLoader; - -/** - * @author HypherionSA - */ -public class Platform { - - public static final ILoaderHelper LOADER = load(ILoaderHelper.class); - - public static final LibCommonHelper COMMON_HELPER = load(LibCommonHelper.class); - - public static final LibFluidHelper FLUID_HELPER = load(LibFluidHelper.class); - - public static T load(Class clazz) { - - final T loadedService = ServiceLoader.load(clazz) - .findFirst() - .orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName())); - CraterConstants.LOG.debug("Loaded {} for service {}", loadedService, clazz); - return loadedService; - } -} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/Environment.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/Environment.java deleted file mode 100644 index d837498..0000000 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/Environment.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hypherionmc.craterlib.core.platform.services; - -/** - * @author HypherionSA - */ -public enum Environment { - CLIENT, - SERVER, - UNKNOWN -} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibClientHelper.java b/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibClientHelper.java deleted file mode 100644 index d199a7b..0000000 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/platform/services/LibClientHelper.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.hypherionmc.craterlib.core.platform.services; - -import com.hypherionmc.craterlib.common.item.BlockItemDyable; -import com.hypherionmc.craterlib.core.systems.reg.RegistryObject; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.network.Connection; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; - -/** - * @author HypherionSA - */ -public interface LibClientHelper { - - void registerItemProperty(@NotNull BlockItemDyable item, @NotNull String property); - - void registerCustomRenderTypes( - @NotNull Collection> blocks, - @NotNull Collection> items - ); - - Minecraft getClientInstance(); - - Player getClientPlayer(); - - Level getClientLevel(); - - Connection getClientConnection(); - - void registerBlockEntityRenderer(@NotNull BlockEntityType blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory); - -} diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/client/TutorialMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/client/TutorialMixin.java index 260f836..6c24f86 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/client/TutorialMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/client/TutorialMixin.java @@ -1,6 +1,6 @@ package com.hypherionmc.craterlib.mixin.events.client; -import com.hypherionmc.craterlib.api.event.client.EarlyInitEvent; +import com.hypherionmc.craterlib.api.event.client.LateInitEvent; import com.hypherionmc.craterlib.core.event.CraterEventBus; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; @@ -15,7 +15,7 @@ public class TutorialMixin { @Inject(method = "", at = @At("RETURN")) private void injectEarlyInitEvent(Minecraft minecraft, Options options, CallbackInfo ci) { - EarlyInitEvent event = new EarlyInitEvent(minecraft, options); + LateInitEvent event = new LateInitEvent(minecraft, options); CraterEventBus.INSTANCE.postEvent(event); } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java index 67c9568..a5c9729 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java @@ -25,7 +25,7 @@ public class RenderUtils { public static Component getFluidAmount(long amount, long capacity) { amount = amount / 81; capacity = capacity / 81; - String text = "" + (int) (((float) amount / capacity) * 100); + String text = String.valueOf((int) (((float) amount / capacity) * 100)); return amount > 0 ? Component.literal(ChatFormatting.AQUA + text + "%") : Component.literal(text + "%"); } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/util/ServiceUtil.java b/Common/src/main/java/com/hypherionmc/craterlib/util/ServiceUtil.java new file mode 100644 index 0000000..a10a563 --- /dev/null +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/ServiceUtil.java @@ -0,0 +1,27 @@ +package com.hypherionmc.craterlib.util; + +import com.hypherionmc.craterlib.CraterConstants; + +import java.util.ServiceLoader; + +/** + * @author HypherionSA + * Utility class to handle SPI loading + */ +public class ServiceUtil { + + /** + * Try to load a service + * @param clazz The service class type to load + * @return The loaded class + */ + public static T load(Class clazz) { + + final T loadedService = ServiceLoader.load(clazz) + .findFirst() + .orElseThrow(() -> new NullPointerException("Failed to load service for " + clazz.getName())); + CraterConstants.LOG.debug("Loaded {} for service {}", loadedService, clazz); + return loadedService; + } + +} diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java index aa8b109..4d32ff1 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java @@ -1,6 +1,6 @@ package com.hypherionmc.craterlib; -import com.hypherionmc.craterlib.common.FabricCommonHelper; +import com.hypherionmc.craterlib.common.FabricCommonPlatform; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; @@ -8,6 +8,6 @@ public class CraterLibInitializer implements ModInitializer { @Override public void onInitialize() { - ServerLifecycleEvents.SERVER_STARTING.register(server -> FabricCommonHelper.server = server); + ServerLifecycleEvents.SERVER_STARTING.register(server -> FabricCommonPlatform.server = server); } } diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/client/CraterLibClientInitializer.java b/Fabric/src/main/java/com/hypherionmc/craterlib/client/CraterLibClientInitializer.java index fbc7dd2..2ab960a 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/client/CraterLibClientInitializer.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/client/CraterLibClientInitializer.java @@ -1,20 +1,46 @@ package com.hypherionmc.craterlib.client; import com.hypherionmc.craterlib.api.event.client.CraterClientTickEvent; +import com.hypherionmc.craterlib.api.event.client.LateInitEvent; import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.hypherionmc.craterlib.core.event.annot.CraterEventListener; +import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import org.apache.commons.lang3.tuple.Pair; public class CraterLibClientInitializer implements ClientModInitializer { @Override public void onInitializeClient() { - ItemGroupEvents.MODIFY_ENTRIES_ALL.register(FabricClientHelper::registerCreativeItems); - ClientTickEvents.START_CLIENT_TICK.register((listener) -> { CraterClientTickEvent event = new CraterClientTickEvent(listener.level); CraterEventBus.INSTANCE.postEvent(event); }); + + CraterEventBus.INSTANCE.registerEventListener(CraterLibClientInitializer.class); + } + + @CraterEventListener + public static void lateInitEvent(LateInitEvent event) { + CreativeTabRegistry.getTabs().forEach(tab -> { + CreativeModeTab finalTab = FabricItemGroup.builder() + .title(Component.translatable("itemGroup." + + tab.getResourceLocation().toString().replace(":", ".") + )) + .icon(tab.getIcon()) + .build(); + + tab.setTab(finalTab); + + ItemGroupEvents.modifyEntriesEvent(tab.getResourceKey()).register(entries -> CreativeTabRegistry + .getTabItems() + .stream().filter(t -> t.getLeft().get() == finalTab && t.getRight() != null) + .map(Pair::getRight).forEach(itm -> entries.accept(itm.get()))); + }); } } diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientPlatform.java similarity index 55% rename from Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientHelper.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientPlatform.java index 6da47f5..f222d83 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricClientPlatform.java @@ -2,58 +2,47 @@ package com.hypherionmc.craterlib.client; import com.hypherionmc.craterlib.api.rendering.CustomRenderType; import com.hypherionmc.craterlib.common.item.BlockItemDyable; -import com.hypherionmc.craterlib.core.platform.services.LibClientHelper; +import com.hypherionmc.craterlib.core.platform.ClientPlatform; import com.hypherionmc.craterlib.core.systems.reg.RegistryObject; import com.hypherionmc.craterlib.util.ColorPropertyFunction; import net.fabricmc.api.EnvType; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; -import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; -import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries; -import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; +import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.network.Connection; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; +import org.jetbrains.annotations.NotNull; import java.util.Collection; /** * @author HypherionSA */ -public class FabricClientHelper implements LibClientHelper { +public class FabricClientPlatform implements ClientPlatform { @Override - public void registerItemProperty(BlockItemDyable item, String property) { + public void registerItemProperty(@NotNull BlockItemDyable item, @NotNull String property) { if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { - FabricModelPredicateProviderRegistry.register(item, new ResourceLocation(property), new ColorPropertyFunction(item)); + ItemProperties.register(item, new ResourceLocation(property), new ColorPropertyFunction(item)); } } @Override - public void registerCustomRenderTypes(Collection> blocks, Collection> items) { + public void registerCustomRenderTypes(Collection> blocks) { blocks.forEach(blk -> { if (blk.get() instanceof CustomRenderType type) { BlockRenderLayerMap.INSTANCE.putBlock(blk.get(), type.getCustomRenderType()); } }); - - items.forEach(itm -> { - if (itm.get() instanceof BlockItemDyable dyable && dyable.getBlock() instanceof CustomRenderType customRenderType) { - BlockRenderLayerMap.INSTANCE.putItem(itm.get(), customRenderType.getCustomRenderType()); - } - - if (itm.get() instanceof CustomRenderType customRenderType) { - BlockRenderLayerMap.INSTANCE.putItem(itm.get(), customRenderType.getCustomRenderType()); - } - }); } @Override @@ -76,12 +65,8 @@ public class FabricClientHelper implements LibClientHelper { return Minecraft.getInstance().getConnection().getConnection(); } - public static void registerCreativeItems(CreativeModeTab tab, FabricItemGroupEntries entries) { - - } - @Override - public void registerBlockEntityRenderer(BlockEntityType blockEntityType, BlockEntityRendererProvider blockEntityRendererFactory) { - BlockEntityRendererRegistry.register(blockEntityType, blockEntityRendererFactory); + public void registerBlockEntityRenderer(@NotNull BlockEntityType blockEntityType, @NotNull BlockEntityRendererProvider blockEntityRendererFactory) { + BlockEntityRenderers.register(blockEntityType, blockEntityRendererFactory); } } diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricNetworkHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricNetworkHelper.java deleted file mode 100644 index 316c2c8..0000000 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/client/FabricNetworkHelper.java +++ /dev/null @@ -1,2 +0,0 @@ -package com.hypherionmc.craterlib.client;public class FabricNetworkHelper { -} diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonPlatform.java similarity index 87% rename from Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonHelper.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonPlatform.java index 1fb5124..408879c 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricCommonPlatform.java @@ -3,7 +3,7 @@ package com.hypherionmc.craterlib.common; import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler; import com.hypherionmc.craterlib.api.blockentity.caps.ICraterCapProvider; import com.hypherionmc.craterlib.core.network.CraterNetworkHandler; -import com.hypherionmc.craterlib.core.platform.services.LibCommonHelper; +import com.hypherionmc.craterlib.core.platform.CommonPlatform; import com.hypherionmc.craterlib.network.FabricNetworkHandler; import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory; import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType; @@ -19,6 +19,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MenuType; import net.minecraft.world.level.block.entity.BlockEntity; import org.apache.commons.lang3.function.TriFunction; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Optional; @@ -27,12 +28,12 @@ import java.util.function.Consumer; /** * @author HypherionSA */ -public class FabricCommonHelper implements LibCommonHelper { +public class FabricCommonPlatform implements CommonPlatform { public static MinecraftServer server; @Override - public CraterNetworkHandler createPacketHandler(String modid) { + public CraterNetworkHandler createPacketHandler(String modid, boolean requireClient, boolean requireServer) { return FabricNetworkHandler.of(modid); } @@ -50,13 +51,13 @@ public class FabricCommonHelper implements LibCommonHelper { } @Override - public Component getDisplayName() { + public @NotNull Component getDisplayName() { return menu.getDisplayName(); } @Nullable @Override - public AbstractContainerMenu createMenu(int i, Inventory inventory, Player player) { + public AbstractContainerMenu createMenu(int i, @NotNull Inventory inventory, @NotNull Player player) { return menu.createMenu(i, inventory, player); } }; diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricFluidHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricFluidHelper.java index 06914bc..37a2327 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricFluidHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricFluidHelper.java @@ -1,6 +1,6 @@ package com.hypherionmc.craterlib.common; -import com.hypherionmc.craterlib.core.platform.services.LibFluidHelper; +import com.hypherionmc.craterlib.core.platform.CraterFluidHelper; import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank; import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder; import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler; @@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Arrays; -public class FabricFluidHelper implements LibFluidHelper { +public class FabricFluidHelper implements CraterFluidHelper { @Override public CraterFluidTank createFluidTank(int capacity) { diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricLoaderHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricLoaderHelper.java index 1362bca..95f5c42 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricLoaderHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/common/FabricLoaderHelper.java @@ -1,7 +1,7 @@ package com.hypherionmc.craterlib.common; -import com.hypherionmc.craterlib.core.platform.services.Environment; -import com.hypherionmc.craterlib.core.platform.services.ILoaderHelper; +import com.hypherionmc.craterlib.core.platform.Environment; +import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; @@ -12,7 +12,7 @@ import java.io.File; * @author HypherionSA * @date 07/08/2022 */ -public class FabricLoaderHelper implements ILoaderHelper { +public class FabricLoaderHelper implements ModloaderEnvironment { @Override public boolean isFabric() { diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/FabricMinecraftMixin.java b/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/FabricMinecraftMixin.java deleted file mode 100644 index 7ff7d30..0000000 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/FabricMinecraftMixin.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.hypherionmc.craterlib.mixin; - -import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry; -import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; -import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; -import net.minecraft.client.Minecraft; -import net.minecraft.client.main.GameConfig; -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.CreativeModeTab; -import org.apache.commons.lang3.tuple.Pair; -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.CallbackInfo; - -@Mixin(Minecraft.class) -public class FabricMinecraftMixin { - - @Inject(method = "", at = @At("RETURN")) - private void injectCraterLateInit(GameConfig gameConfig, CallbackInfo ci) { - CreativeTabRegistry.getTabs().forEach(tab -> { - CreativeModeTab finalTab = FabricItemGroup.builder() - .title(Component.translatable("itemGroup." + - tab.getResourceLocation().toString().replace(":", ".") - )) - .icon(tab.getIcon()) - .build(); - - tab.setTab(finalTab); - - ItemGroupEvents.modifyEntriesEvent(tab.getResourceKey()).register(entries -> CreativeTabRegistry - .getTabItems() - .stream().filter(t -> t.getLeft().get() == finalTab && t.getRight() != null) - .map(Pair::getRight).forEach(itm -> entries.accept(itm.get()))); - }); - } - -} diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricClientNetworkHelper.java b/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricClientNetworkHelper.java index df95b99..3ead56b 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricClientNetworkHelper.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/network/impl/FabricClientNetworkHelper.java @@ -8,13 +8,14 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; import java.util.function.Function; public class FabricClientNetworkHelper implements FabricNetworkHelper { @Override - public void registerClientReceiver(ResourceLocation channelName, Function> factory) { + public void registerClientReceiver(@NotNull ResourceLocation channelName, @NotNull Function> factory) { ClientPlayNetworking.registerGlobalReceiver(channelName, (Minecraft client, ClientPacketListener handler, FriendlyByteBuf buf, PacketSender responseSender) -> { CraterPacket packet = factory.apply(buf); client.execute(() -> packet.handle(client.player, client)); diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.ClientPlatform b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.ClientPlatform new file mode 100644 index 0000000..a78d9e5 --- /dev/null +++ b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.ClientPlatform @@ -0,0 +1 @@ +com.hypherionmc.craterlib.client.FabricClientPlatform diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CommonPlatform b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CommonPlatform new file mode 100644 index 0000000..9a2fdb0 --- /dev/null +++ b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CommonPlatform @@ -0,0 +1 @@ +com.hypherionmc.craterlib.common.FabricCommonPlatform diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CraterFluidHelper similarity index 100% rename from Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibFluidHelper rename to Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.CraterFluidHelper diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.ModloaderEnvironment similarity index 100% rename from Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.ILoaderHelper rename to Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.ModloaderEnvironment diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper deleted file mode 100644 index 412f0fd..0000000 --- a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibClientHelper +++ /dev/null @@ -1 +0,0 @@ -com.hypherionmc.craterlib.client.FabricClientHelper diff --git a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper b/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper deleted file mode 100644 index 30fe0fa..0000000 --- a/Fabric/src/main/resources/META-INF/services/com.hypherionmc.craterlib.core.platform.services.LibCommonHelper +++ /dev/null @@ -1 +0,0 @@ -com.hypherionmc.craterlib.common.FabricCommonHelper diff --git a/Fabric/src/main/resources/craterlib.fabric.mixins.json b/Fabric/src/main/resources/craterlib.fabric.mixins.json index a036cb2..a7e308c 100644 --- a/Fabric/src/main/resources/craterlib.fabric.mixins.json +++ b/Fabric/src/main/resources/craterlib.fabric.mixins.json @@ -6,7 +6,6 @@ "mixins": [ ], "client": [ - "FabricMinecraftMixin" ], "server": [ ],