diff --git a/common/src/main/java/li/cil/tis3d/common/item/ModCreativeTabs.java b/common/src/main/java/li/cil/tis3d/common/item/ModCreativeTabs.java index 2a6e39e6..dfce4f5a 100644 --- a/common/src/main/java/li/cil/tis3d/common/item/ModCreativeTabs.java +++ b/common/src/main/java/li/cil/tis3d/common/item/ModCreativeTabs.java @@ -1,10 +1,12 @@ package li.cil.tis3d.common.item; +import dev.architectury.injectables.annotations.ExpectPlatform; import dev.architectury.registry.CreativeTabRegistry; import li.cil.tis3d.api.API; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import java.util.Map; @@ -19,9 +21,15 @@ public final class ModCreativeTabs { BuiltInRegistries.ITEM.entrySet().stream() .filter(entry -> entry.getKey().location().getNamespace().equals(API.MOD_ID)) .map(Map.Entry::getValue) + .filter(ModCreativeTabs::isItemEnabled) .forEach(item -> output.accept(new ItemStack(item))); })); public static void initialize() { } + + @ExpectPlatform + private static boolean isItemEnabled(final Item item) { + throw new AssertionError(); + } } diff --git a/fabric/build.gradle b/fabric/build.gradle index d377ff9b..47af167b 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -49,11 +49,12 @@ dependencies { modImplementation "fuzs.forgeconfigapiport:forgeconfigapiport-fabric:5.0.3" modImplementation "curse.maven:markdownmanual-502485:4306715" - - modRuntimeOnly "curse.maven:tooltipfix-411557:4167237" - modRuntimeOnly("me.shedaniel:RoughlyEnoughItems-fabric:10.0.581") { + modImplementation("me.shedaniel:RoughlyEnoughItems-fabric:10.0.581") { exclude(group: "net.fabricmc.fabric-api") } + + modRuntimeOnly "curse.maven:tooltipfix-411557:4167237" + modRuntimeOnly "curse.maven:sodium-394468:4291859" } processResources { diff --git a/fabric/src/main/java/li/cil/tis3d/client/fabric/ClientBootstrapFabric.java b/fabric/src/main/java/li/cil/tis3d/client/fabric/ClientBootstrapFabric.java index 91dc04dc..c0b2aeb9 100644 --- a/fabric/src/main/java/li/cil/tis3d/client/fabric/ClientBootstrapFabric.java +++ b/fabric/src/main/java/li/cil/tis3d/client/fabric/ClientBootstrapFabric.java @@ -10,12 +10,17 @@ import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientChunkEvents; import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; import net.fabricmc.fabric.api.event.client.player.ClientPickBlockGatherCallback; +import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.impl.entrypoint.EntrypointUtils; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.phys.BlockHitResult; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public final class ClientBootstrapFabric implements ClientModInitializer { + private static final Logger LOGGER = LogManager.getLogger(); + @Override public void onInitializeClient() { ClientBootstrap.run(); @@ -45,6 +50,10 @@ public void onInitializeClient() { return ItemStack.EMPTY; }); - ModelLoadingRegistry.INSTANCE.registerResourceProvider(rm -> new ModuleModelLoader()); + if (FabricLoader.getInstance().isModLoaded("sodium")) { + LOGGER.warn("Sodium detected, disabling modules that need custom block model rendering. See https://github.com/MightyPirates/TIS-3D/issues/171"); + } else { + ModelLoadingRegistry.INSTANCE.registerResourceProvider(rm -> new ModuleModelLoader()); + } } } diff --git a/fabric/src/main/java/li/cil/tis3d/client/integration/roughlyenoughitems/ModREIClientPlugin.java b/fabric/src/main/java/li/cil/tis3d/client/integration/roughlyenoughitems/ModREIClientPlugin.java new file mode 100644 index 00000000..897d8416 --- /dev/null +++ b/fabric/src/main/java/li/cil/tis3d/client/integration/roughlyenoughitems/ModREIClientPlugin.java @@ -0,0 +1,18 @@ +package li.cil.tis3d.client.integration.roughlyenoughitems; + +import li.cil.tis3d.common.item.Items; +import me.shedaniel.rei.api.client.entry.filtering.base.BasicFilteringRule; +import me.shedaniel.rei.api.client.plugins.REIClientPlugin; +import me.shedaniel.rei.api.common.util.EntryStacks; +import net.fabricmc.loader.api.FabricLoader; + +import java.util.Collections; + +public final class ModREIClientPlugin implements REIClientPlugin { + @Override + public void registerBasicEntryFiltering(final BasicFilteringRule rule) { + if (FabricLoader.getInstance().isModLoaded("sodium")) { + rule.hide(() -> Collections.singleton(EntryStacks.of(Items.FACADE_MODULE.get()))); + } + } +} diff --git a/fabric/src/main/java/li/cil/tis3d/client/integration/roughlyenoughitems/package-info.java b/fabric/src/main/java/li/cil/tis3d/client/integration/roughlyenoughitems/package-info.java new file mode 100644 index 00000000..b1dbcb59 --- /dev/null +++ b/fabric/src/main/java/li/cil/tis3d/client/integration/roughlyenoughitems/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package li.cil.tis3d.client.integration.roughlyenoughitems; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/fabric/src/main/java/li/cil/tis3d/common/item/fabric/ModCreativeTabsImpl.java b/fabric/src/main/java/li/cil/tis3d/common/item/fabric/ModCreativeTabsImpl.java new file mode 100644 index 00000000..034267e2 --- /dev/null +++ b/fabric/src/main/java/li/cil/tis3d/common/item/fabric/ModCreativeTabsImpl.java @@ -0,0 +1,14 @@ +package li.cil.tis3d.common.item.fabric; + +import li.cil.tis3d.common.item.Items; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.world.item.Item; + +public final class ModCreativeTabsImpl { + public static boolean isItemEnabled(final Item item) { + if (FabricLoader.getInstance().isModLoaded("sodium") && item == Items.FACADE_MODULE.get()) { + return false; + } + return true; + } +} diff --git a/fabric/src/main/java/li/cil/tis3d/common/item/fabric/package-info.java b/fabric/src/main/java/li/cil/tis3d/common/item/fabric/package-info.java new file mode 100644 index 00000000..0c3a0b2c --- /dev/null +++ b/fabric/src/main/java/li/cil/tis3d/common/item/fabric/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package li.cil.tis3d.common.item.fabric; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault; diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 6aa3cd59..36b75a14 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -29,6 +29,9 @@ ], "markdown_manual:registration": [ "li.cil.tis3d.client.fabric.ManualInitializer" + ], + "rei_client": [ + "li.cil.tis3d.client.integration.roughlyenoughitems.ModREIClientPlugin" ] }, "depends": { diff --git a/forge/src/main/java/li/cil/tis3d/common/item/forge/ModCreativeTabsImpl.java b/forge/src/main/java/li/cil/tis3d/common/item/forge/ModCreativeTabsImpl.java new file mode 100644 index 00000000..ff295eff --- /dev/null +++ b/forge/src/main/java/li/cil/tis3d/common/item/forge/ModCreativeTabsImpl.java @@ -0,0 +1,9 @@ +package li.cil.tis3d.common.item.forge; + +import net.minecraft.world.item.Item; + +public final class ModCreativeTabsImpl { + public static boolean isItemEnabled(final Item item) { + return true; + } +} diff --git a/forge/src/main/java/li/cil/tis3d/common/item/forge/package-info.java b/forge/src/main/java/li/cil/tis3d/common/item/forge/package-info.java new file mode 100644 index 00000000..c0a5f0eb --- /dev/null +++ b/forge/src/main/java/li/cil/tis3d/common/item/forge/package-info.java @@ -0,0 +1,7 @@ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package li.cil.tis3d.common.item.forge; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault;