diff --git a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/tabs/CreativeTabBuilder.java b/Common/src/main/java/me/hypherionmc/craterlib/client/gui/tabs/CreativeTabBuilder.java index 6595a1a..14c6ee6 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/client/gui/tabs/CreativeTabBuilder.java +++ b/Common/src/main/java/me/hypherionmc/craterlib/client/gui/tabs/CreativeTabBuilder.java @@ -40,7 +40,7 @@ public class CreativeTabBuilder { } public CreativeModeTab build() { - return Platform.CLIENT_HELPER.tabBuilder(this.modid, this.tabid, this.tabIcon, this.backgroundPrefix); + return Platform.COMMON_HELPER.tabBuilder(this.modid, this.tabid, this.tabIcon, this.backgroundPrefix); } } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/common/item/BlockItemDyable.java b/Common/src/main/java/me/hypherionmc/craterlib/common/item/BlockItemDyable.java index 474da57..3643849 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/common/item/BlockItemDyable.java +++ b/Common/src/main/java/me/hypherionmc/craterlib/common/item/BlockItemDyable.java @@ -2,7 +2,9 @@ package me.hypherionmc.craterlib.common.item; import me.hypherionmc.craterlib.api.rendering.DyableBlock; import me.hypherionmc.craterlib.api.rendering.ItemDyable; +import me.hypherionmc.craterlib.platform.ClientPlatform; import me.hypherionmc.craterlib.platform.Platform; +import me.hypherionmc.craterlib.platform.services.Environment; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.item.BlockItem; @@ -23,7 +25,10 @@ public class BlockItemDyable extends BlockItem implements ItemDyable { public BlockItemDyable(Block block, Properties properties) { super(block, properties); - Platform.CLIENT_HELPER.registerItemProperty(this, "color"); + + if (Platform.LOADER.getEnvironment() == Environment.CLIENT) { + ClientPlatform.CLIENT_HELPER.registerItemProperty(this, "color"); + } } /** diff --git a/Common/src/main/java/me/hypherionmc/craterlib/network/CraterNetworkHandler.java b/Common/src/main/java/me/hypherionmc/craterlib/network/CraterNetworkHandler.java index 4f631b6..bf0c527 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/network/CraterNetworkHandler.java +++ b/Common/src/main/java/me/hypherionmc/craterlib/network/CraterNetworkHandler.java @@ -1,5 +1,6 @@ package me.hypherionmc.craterlib.network; +import me.hypherionmc.craterlib.platform.ClientPlatform; import me.hypherionmc.craterlib.platform.Platform; import net.minecraft.network.protocol.Packet; import net.minecraft.server.level.ServerPlayer; @@ -19,7 +20,7 @@ public interface CraterNetworkHandler { Packet toClientBound(CraterPacket packet); default void sendToServer(CraterPacket packet) { - Platform.COMMON_HELPER.getClientConnection().send(this.toServerBound(packet)); + ClientPlatform.CLIENT_HELPER.getClientConnection().send(this.toServerBound(packet)); } default void sendTo(CraterPacket packet, ServerPlayer player) { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/ClientPlatform.java b/Common/src/main/java/me/hypherionmc/craterlib/platform/ClientPlatform.java new file mode 100644 index 0000000..3265b6e --- /dev/null +++ b/Common/src/main/java/me/hypherionmc/craterlib/platform/ClientPlatform.java @@ -0,0 +1,24 @@ +package me.hypherionmc.craterlib.platform; + +import me.hypherionmc.craterlib.CraterConstants; +import me.hypherionmc.craterlib.platform.services.LibClientHelper; + +import java.util.ServiceLoader; + +/** + * @author HypherionSA + * @date 25/09/2022 + */ +public class ClientPlatform { + + public static final LibClientHelper CLIENT_HELPER = load(LibClientHelper.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/me/hypherionmc/craterlib/platform/Platform.java b/Common/src/main/java/me/hypherionmc/craterlib/platform/Platform.java index a1503bf..c20402c 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/Platform.java +++ b/Common/src/main/java/me/hypherionmc/craterlib/platform/Platform.java @@ -2,7 +2,6 @@ package me.hypherionmc.craterlib.platform; import me.hypherionmc.craterlib.CraterConstants; import me.hypherionmc.craterlib.platform.services.ILoaderHelper; -import me.hypherionmc.craterlib.platform.services.LibClientHelper; import me.hypherionmc.craterlib.platform.services.LibCommonHelper; import java.util.ServiceLoader; @@ -11,8 +10,6 @@ public class Platform { public static final ILoaderHelper LOADER = load(ILoaderHelper.class); - public static final LibClientHelper CLIENT_HELPER = load(LibClientHelper.class); - public static final LibCommonHelper COMMON_HELPER = load(LibCommonHelper.class); public static T load(Class clazz) { diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibClientHelper.java b/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibClientHelper.java index 5e0bc21..4b487fb 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibClientHelper.java +++ b/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibClientHelper.java @@ -1,14 +1,19 @@ package me.hypherionmc.craterlib.platform.services; import me.hypherionmc.craterlib.common.item.BlockItemDyable; +import me.hypherionmc.craterlib.network.CraterPacket; import me.hypherionmc.craterlib.systems.reg.RegistryObject; -import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.client.Minecraft; +import net.minecraft.network.Connection; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import java.util.Collection; -import java.util.function.Supplier; +import java.util.function.Function; /** * @author HypherionSA @@ -16,8 +21,6 @@ import java.util.function.Supplier; */ public interface LibClientHelper { - public CreativeModeTab tabBuilder(String modid, String tabid, Supplier icon, String backgroundSuf); - public void registerItemProperty(BlockItemDyable item, String property); public void registerCustomRenderTypes( @@ -25,4 +28,14 @@ public interface LibClientHelper { Collection> items ); + public Minecraft getClientInstance(); + + public Player getClientPlayer(); + + public Level getClientLevel(); + + public Connection getClientConnection(); + + public void registerClientReceiver(ResourceLocation channelName, Function> factory); + } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibCommonHelper.java b/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibCommonHelper.java index 3340afd..a6377f7 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibCommonHelper.java +++ b/Common/src/main/java/me/hypherionmc/craterlib/platform/services/LibCommonHelper.java @@ -2,23 +2,22 @@ package me.hypherionmc.craterlib.platform.services; import me.hypherionmc.craterlib.network.CraterNetworkHandler; import me.hypherionmc.craterlib.network.CraterPacket; -import net.minecraft.client.Minecraft; -import net.minecraft.network.Connection; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.level.Level; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; import org.apache.commons.lang3.function.TriFunction; import javax.annotation.Nullable; import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.Supplier; /** * @author HypherionSA @@ -28,14 +27,6 @@ public interface LibCommonHelper { public CraterNetworkHandler createPacketHandler(String modid); - public Minecraft getClientInstance(); - - public Player getClientPlayer(); - - public Level getClientLevel(); - - public Connection getClientConnection(); - public MinecraftServer getMCServer(); public void openMenu(ServerPlayer player, MenuProvider menu, @Nullable Consumer initialData); @@ -43,6 +34,7 @@ public interface LibCommonHelper { public MenuType createMenuType(TriFunction constructor); /* FABRIC ONLY */ - public void registerClientReceiver(ResourceLocation channelName, Function> factory); public void registerServerReceiver(ResourceLocation channelName, Function> factory); + + public CreativeModeTab tabBuilder(String modid, String tabid, Supplier icon, String backgroundSuf); } diff --git a/Common/src/main/java/me/hypherionmc/craterlib/systems/SimpleInventory.java b/Common/src/main/java/me/hypherionmc/craterlib/systems/SimpleInventory.java index 8731c6c..fb1ad6f 100644 --- a/Common/src/main/java/me/hypherionmc/craterlib/systems/SimpleInventory.java +++ b/Common/src/main/java/me/hypherionmc/craterlib/systems/SimpleInventory.java @@ -7,7 +7,6 @@ import net.minecraft.world.Clearable; import net.minecraft.world.Container; import net.minecraft.world.ContainerHelper; import net.minecraft.world.SimpleContainer; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; /** diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java b/Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java index 868a9a1..e969149 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java +++ b/Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java @@ -2,23 +2,28 @@ package me.hypherionmc.craterlib.client; import me.hypherionmc.craterlib.api.rendering.CustomRenderType; import me.hypherionmc.craterlib.common.item.BlockItemDyable; +import me.hypherionmc.craterlib.network.CraterPacket; import me.hypherionmc.craterlib.platform.services.LibClientHelper; import me.hypherionmc.craterlib.systems.reg.RegistryObject; import me.hypherionmc.craterlib.util.ColorPropertyFunction; import net.fabricmc.api.EnvType; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; -import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.networking.v1.PacketSender; 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.multiplayer.ClientPacketListener; +import net.minecraft.network.Connection; +import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.material.Fluid; import java.util.Collection; -import java.util.function.Supplier; +import java.util.function.Function; /** * @author HypherionSA @@ -26,22 +31,6 @@ import java.util.function.Supplier; */ public class FabricClientHelper implements LibClientHelper { - @Override - public CreativeModeTab tabBuilder(String modid, String tabid, Supplier icon, String backgroundSuf) { - FabricItemGroupBuilder tab = FabricItemGroupBuilder.create(new ResourceLocation(modid, tabid)); - - if (icon != null) { - tab.icon(icon); - } - - CreativeModeTab tab1 = tab.build(); - - if (backgroundSuf != null && !backgroundSuf.isEmpty()) { - tab1.setBackgroundSuffix(backgroundSuf); - } - return tab1; - } - @Override public void registerItemProperty(BlockItemDyable item, String property) { if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) { @@ -67,4 +56,32 @@ public class FabricClientHelper implements LibClientHelper { } }); } + + @Override + public Minecraft getClientInstance() { + return Minecraft.getInstance(); + } + + @Override + public Player getClientPlayer() { + return Minecraft.getInstance().player; + } + + @Override + public Level getClientLevel() { + return Minecraft.getInstance().level; + } + + @Override + public Connection getClientConnection() { + return Minecraft.getInstance().getConnection().getConnection(); + } + + @Override + public void registerClientReceiver(ResourceLocation channelName, 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/java/me/hypherionmc/craterlib/common/FabricCommonHelper.java b/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricCommonHelper.java index 8bf0d99..f57c61e 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricCommonHelper.java +++ b/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricCommonHelper.java @@ -4,14 +4,11 @@ import me.hypherionmc.craterlib.network.CraterNetworkHandler; import me.hypherionmc.craterlib.network.CraterPacket; import me.hypherionmc.craterlib.network.FabricNetworkHandler; import me.hypherionmc.craterlib.platform.services.LibCommonHelper; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.fabricmc.fabric.api.client.itemgroup.FabricItemGroupBuilder; import net.fabricmc.fabric.api.networking.v1.PacketSender; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory; import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerType; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.ClientPacketListener; -import net.minecraft.network.Connection; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -23,12 +20,14 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.level.Level; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; import org.apache.commons.lang3.function.TriFunction; import org.jetbrains.annotations.Nullable; import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.Supplier; /** * @author HypherionSA @@ -43,39 +42,11 @@ public class FabricCommonHelper implements LibCommonHelper { return FabricNetworkHandler.of(modid); } - @Override - public Minecraft getClientInstance() { - return Minecraft.getInstance(); - } - - @Override - public Player getClientPlayer() { - return Minecraft.getInstance().player; - } - - @Override - public Level getClientLevel() { - return Minecraft.getInstance().level; - } - - @Override - public Connection getClientConnection() { - return Minecraft.getInstance().getConnection().getConnection(); - } - @Override public MinecraftServer getMCServer() { return server; } - @Override - public void registerClientReceiver(ResourceLocation channelName, 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)); - }); - } - @Override public void registerServerReceiver(ResourceLocation channelName, Function> factory) { ServerPlayNetworking.registerGlobalReceiver(channelName, (MinecraftServer server, ServerPlayer player, ServerGamePacketListenerImpl handler, FriendlyByteBuf buf, PacketSender responseSender) -> { @@ -111,4 +82,20 @@ public class FabricCommonHelper implements LibCommonHelper { public MenuType createMenuType(TriFunction constructor) { return new ExtendedScreenHandlerType<>(constructor::apply); } + + @Override + public CreativeModeTab tabBuilder(String modid, String tabid, Supplier icon, String backgroundSuf) { + FabricItemGroupBuilder tab = FabricItemGroupBuilder.create(new ResourceLocation(modid, tabid)); + + if (icon != null) { + tab.icon(icon); + } + + CreativeModeTab tab1 = tab.build(); + + if (backgroundSuf != null && !backgroundSuf.isEmpty()) { + tab1.setBackgroundSuffix(backgroundSuf); + } + return tab1; + } } diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricLoaderHelper.java b/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricLoaderHelper.java index e59150d..81d4aa9 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricLoaderHelper.java +++ b/Fabric/src/main/java/me/hypherionmc/craterlib/common/FabricLoaderHelper.java @@ -7,8 +7,6 @@ import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; /** * @author HypherionSA diff --git a/Fabric/src/main/java/me/hypherionmc/craterlib/network/FabricNetworkHandler.java b/Fabric/src/main/java/me/hypherionmc/craterlib/network/FabricNetworkHandler.java index b45db30..4a9dddf 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/network/FabricNetworkHandler.java +++ b/Fabric/src/main/java/me/hypherionmc/craterlib/network/FabricNetworkHandler.java @@ -1,6 +1,7 @@ package me.hypherionmc.craterlib.network; import com.google.common.collect.Maps; +import me.hypherionmc.craterlib.platform.ClientPlatform; import me.hypherionmc.craterlib.platform.Platform; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; @@ -40,7 +41,7 @@ public class FabricNetworkHandler implements CraterNetworkHandler { final Function> decoder = buf -> Util.make(supplier.get(), message -> message.read(buf)); switch (packetDirection) { - case TO_CLIENT -> Platform.COMMON_HELPER.registerClientReceiver(channelName, decoder); + case TO_CLIENT -> ClientPlatform.CLIENT_HELPER.registerClientReceiver(channelName, decoder); case TO_SERVER -> Platform.COMMON_HELPER.registerServerReceiver(channelName, decoder); } } diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java b/Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java index fc0bb48..6beadb4 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java +++ b/Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java @@ -2,20 +2,25 @@ package me.hypherionmc.craterlib.client; import me.hypherionmc.craterlib.api.rendering.CustomRenderType; import me.hypherionmc.craterlib.common.item.BlockItemDyable; +import me.hypherionmc.craterlib.network.CraterPacket; import me.hypherionmc.craterlib.platform.services.LibClientHelper; import me.hypherionmc.craterlib.systems.reg.RegistryObject; import me.hypherionmc.craterlib.util.ColorPropertyFunction; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.item.ItemProperties; +import net.minecraft.network.Connection; +import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraftforge.fml.loading.FMLEnvironment; import java.util.Collection; -import java.util.function.Supplier; +import java.util.Objects; +import java.util.function.Function; /** * @author HypherionSA @@ -23,24 +28,7 @@ import java.util.function.Supplier; */ public class ForgeClientHelper implements LibClientHelper { - @Override - public CreativeModeTab tabBuilder(String modid, String tabid, Supplier icon, String backgroundSuf) { - CreativeModeTab tab = new CreativeModeTab(modid + "." + tabid) { - @Override - public ItemStack makeIcon() { - if (icon != null) { - return icon.get(); - } else { - return ItemStack.EMPTY; - } - } - }; - - if (backgroundSuf != null && !backgroundSuf.isEmpty()) { - tab.setBackgroundSuffix(backgroundSuf); - } - return tab; - } + public ForgeClientHelper() {} @Override public void registerItemProperty(BlockItemDyable item, String property) { @@ -57,4 +45,30 @@ public class ForgeClientHelper implements LibClientHelper { } }); } + + @Override + public Minecraft getClientInstance() { + return Minecraft.getInstance(); + } + + @Override + public Player getClientPlayer() { + return Minecraft.getInstance().player; + } + + @Override + public Level getClientLevel() { + return Minecraft.getInstance().level; + } + + @Override + public Connection getClientConnection() { + Objects.requireNonNull(Minecraft.getInstance().getConnection(), "Cannot send packets when not in game!"); + return Minecraft.getInstance().getConnection().getConnection(); + } + + @Override + public void registerClientReceiver(ResourceLocation channelName, Function> factory) { + // UNUSED + } } diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonHelper.java b/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonHelper.java index 35c0e4f..e1393ad 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonHelper.java +++ b/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeCommonHelper.java @@ -4,27 +4,25 @@ import me.hypherionmc.craterlib.network.CraterNetworkHandler; import me.hypherionmc.craterlib.network.CraterPacket; import me.hypherionmc.craterlib.network.ForgeNetworkHandler; import me.hypherionmc.craterlib.platform.services.LibCommonHelper; -import net.minecraft.client.Minecraft; -import net.minecraft.network.Connection; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.level.Level; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.extensions.IForgeMenuType; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.server.ServerLifecycleHooks; import org.apache.commons.lang3.function.TriFunction; import org.jetbrains.annotations.Nullable; -import java.util.Objects; import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.Supplier; /** * @author HypherionSA @@ -32,42 +30,18 @@ import java.util.function.Function; */ public class ForgeCommonHelper implements LibCommonHelper { + public ForgeCommonHelper() {} + @Override public CraterNetworkHandler createPacketHandler(String modid) { return ForgeNetworkHandler.of(modid, true, true); } - @Override - public Minecraft getClientInstance() { - return Minecraft.getInstance(); - } - - @Override - public Player getClientPlayer() { - return Minecraft.getInstance().player; - } - - @Override - public Level getClientLevel() { - return Minecraft.getInstance().level; - } - - @Override - public Connection getClientConnection() { - Objects.requireNonNull(Minecraft.getInstance().getConnection(), "Cannot send packets when not in game!"); - return Minecraft.getInstance().getConnection().getConnection(); - } - @Override public MinecraftServer getMCServer() { return ServerLifecycleHooks.getCurrentServer(); } - @Override - public void registerClientReceiver(ResourceLocation channelName, Function> factory) { - // UNUSED - } - @Override public void registerServerReceiver(ResourceLocation channelName, Function> factory) { // UNUSED @@ -86,4 +60,23 @@ public class ForgeCommonHelper implements LibCommonHelper { public MenuType createMenuType(TriFunction constructor) { return IForgeMenuType.create(constructor::apply); } + + @Override + public CreativeModeTab tabBuilder(String modid, String tabid, Supplier icon, String backgroundSuf) { + CreativeModeTab tab = new CreativeModeTab(modid + "." + tabid) { + @Override + public ItemStack makeIcon() { + if (icon != null) { + return icon.get(); + } else { + return ItemStack.EMPTY; + } + } + }; + + if (backgroundSuf != null && !backgroundSuf.isEmpty()) { + tab.setBackgroundSuffix(backgroundSuf); + } + return tab; + } } diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeLoaderHelper.java b/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeLoaderHelper.java index c5f26dc..e407b9a 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeLoaderHelper.java +++ b/Forge/src/main/java/me/hypherionmc/craterlib/common/ForgeLoaderHelper.java @@ -4,7 +4,6 @@ import me.hypherionmc.craterlib.platform.services.Environment; import me.hypherionmc.craterlib.platform.services.ILoaderHelper; import net.minecraft.SharedConstants; import net.minecraft.client.Minecraft; -import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.loading.FMLLoader; import net.minecraftforge.fml.loading.FMLPaths; @@ -17,6 +16,8 @@ import java.io.File; */ public class ForgeLoaderHelper implements ILoaderHelper { + public ForgeLoaderHelper() {} + @Override public boolean isFabric() { return false; diff --git a/Forge/src/main/java/me/hypherionmc/craterlib/network/ForgeNetworkHandler.java b/Forge/src/main/java/me/hypherionmc/craterlib/network/ForgeNetworkHandler.java index f4f2b8e..dfd2d0b 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/network/ForgeNetworkHandler.java +++ b/Forge/src/main/java/me/hypherionmc/craterlib/network/ForgeNetworkHandler.java @@ -1,7 +1,7 @@ package me.hypherionmc.craterlib.network; import com.google.common.collect.Maps; -import me.hypherionmc.craterlib.platform.Platform; +import me.hypherionmc.craterlib.platform.ClientPlatform; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.Packet; import net.minecraft.resources.ResourceLocation; @@ -64,7 +64,7 @@ public class ForgeNetworkHandler implements CraterNetworkHandler { context.enqueueWork(() -> { Player player; if (packetDirection == PacketDirection.TO_CLIENT) { - player = Platform.COMMON_HELPER.getClientPlayer(); + player = ClientPlatform.CLIENT_HELPER.getClientPlayer(); } else { player = context.getSender(); } diff --git a/gradle.properties b/gradle.properties index a4f83a0..88b6725 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ # Project version_major=0 version_minor=0 -version_patch=3d +version_patch=5d group=me.hypherionmc.craterlib # Common