From 34eca384e51803a3acc5717807552332612de86d Mon Sep 17 00:00:00 2001 From: HypherionMC Date: Sat, 6 Aug 2022 21:12:44 +0200 Subject: [PATCH] Implement CustomRenderLayer registration helper --- .../platform/services/LibClientHelper.java | 9 +++++++ .../craterlib/client/FabricClientHelper.java | 26 +++++++++++++++++++ .../craterlib/client/ForgeClientHelper.java | 15 +++++++++++ gradle.properties | 2 +- 4 files changed, 51 insertions(+), 1 deletion(-) 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 71959b1..5e0bc21 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,9 +1,13 @@ package me.hypherionmc.craterlib.platform.services; import me.hypherionmc.craterlib.common.item.BlockItemDyable; +import me.hypherionmc.craterlib.systems.reg.RegistryObject; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Block; +import java.util.Collection; import java.util.function.Supplier; /** @@ -16,4 +20,9 @@ public interface LibClientHelper { public void registerItemProperty(BlockItemDyable item, String property); + public void registerCustomRenderTypes( + Collection> blocks, + Collection> items + ); + } 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 aa42aba..868a9a1 100644 --- a/Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java +++ b/Fabric/src/main/java/me/hypherionmc/craterlib/client/FabricClientHelper.java @@ -1,16 +1,23 @@ package me.hypherionmc.craterlib.client; +import me.hypherionmc.craterlib.api.rendering.CustomRenderType; import me.hypherionmc.craterlib.common.item.BlockItemDyable; 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.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.Fluid; +import java.util.Collection; import java.util.function.Supplier; /** @@ -41,4 +48,23 @@ public class FabricClientHelper implements LibClientHelper { FabricModelPredicateProviderRegistry.register(item, new ResourceLocation(property), new ColorPropertyFunction(item)); } } + + @Override + public void registerCustomRenderTypes(Collection> blocks, Collection> items) { + 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()); + } + }); + } } 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 7edd0cc..fc0bb48 100644 --- a/Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java +++ b/Forge/src/main/java/me/hypherionmc/craterlib/client/ForgeClientHelper.java @@ -1,14 +1,20 @@ package me.hypherionmc.craterlib.client; +import me.hypherionmc.craterlib.api.rendering.CustomRenderType; import me.hypherionmc.craterlib.common.item.BlockItemDyable; import me.hypherionmc.craterlib.platform.services.LibClientHelper; +import me.hypherionmc.craterlib.systems.reg.RegistryObject; import me.hypherionmc.craterlib.util.ColorPropertyFunction; +import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Block; import net.minecraftforge.fml.loading.FMLEnvironment; +import java.util.Collection; import java.util.function.Supplier; /** @@ -42,4 +48,13 @@ public class ForgeClientHelper implements LibClientHelper { ItemProperties.register(item, new ResourceLocation(property), new ColorPropertyFunction(item)); } } + + @Override + public void registerCustomRenderTypes(Collection> blocks, Collection> items) { + blocks.forEach(blk -> { + if (blk.get() instanceof CustomRenderType type) { + ItemBlockRenderTypes.setRenderLayer(blk.get(), type.getCustomRenderType()); + } + }); + } } diff --git a/gradle.properties b/gradle.properties index 568716e..c265052 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ # Project version_major=1 version_minor=0 -version_patch=9d +version_patch=10d group=me.hypherionmc.craterlib # Common