From 0df62abebd7b4af911e3a3735f75a5784cd02fd1 Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Fri, 26 Aug 2016 01:20:41 +0200 Subject: [PATCH] Adds the ability to force a block to use a custom item model. --- .../bootstrap/BlockDefinitionBuilder.java | 18 ++++++++++++++++++ .../java/appeng/bootstrap/IBlockBuilder.java | 7 ++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java b/src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java index 69f702498..51ec86bde 100644 --- a/src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java +++ b/src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java @@ -10,9 +10,11 @@ import java.util.function.Function; import java.util.function.Supplier; import net.minecraft.block.Block; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -119,6 +121,22 @@ class BlockDefinitionBuilder implements IBlockBuilder return this; } + @Override + public IBlockBuilder useCustomItemModel() + { + rendering( new BlockRenderingCustomizer() + { + @Override + @SideOnly( Side.CLIENT ) + public void customize( IBlockRendering rendering, IItemRendering itemRendering ) + { + itemRendering.model( new ModelResourceLocation( new ResourceLocation( AppEng.MOD_ID, registryName ), "inventory" ) ); + } + } ); + + return this; + } + @Override public IBlockBuilder item( Function factory ) { diff --git a/src/main/java/appeng/bootstrap/IBlockBuilder.java b/src/main/java/appeng/bootstrap/IBlockBuilder.java index d6455329e..d629aab80 100644 --- a/src/main/java/appeng/bootstrap/IBlockBuilder.java +++ b/src/main/java/appeng/bootstrap/IBlockBuilder.java @@ -27,8 +27,13 @@ public interface IBlockBuilder IBlockBuilder rendering( BlockRenderingCustomizer callback ); + /** + * Forces this block's item to uses a custom model, instead of using the default block state as the item model. + * The model has the same name as the registry name. + */ + IBlockBuilder useCustomItemModel(); + IBlockBuilder item( Function factory ); T build(); - }