diff options
author | miozune <miozune@gmail.com> | 2023-02-19 19:00:32 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-19 11:00:32 +0100 |
commit | 0a8f536e279897630cb5a938c7eeb9bf162dab7f (patch) | |
tree | 981fd1491e1b10c5db475c4381cfe2173677f285 /src/main/java/gregtech/api/interfaces | |
parent | e64166c670b7f4e2c37e3cfffb3b4d0a0e7b9f79 (diff) | |
download | GT5-Unofficial-0a8f536e279897630cb5a938c7eeb9bf162dab7f.tar.gz GT5-Unofficial-0a8f536e279897630cb5a938c7eeb9bf162dab7f.tar.bz2 GT5-Unofficial-0a8f536e279897630cb5a938c7eeb9bf162dab7f.zip |
Make material renderer available for arbitrary item (#1753)
* Make material renderer available for arbitrary item
* pass render pass
Diffstat (limited to 'src/main/java/gregtech/api/interfaces')
-rw-r--r-- | src/main/java/gregtech/api/interfaces/IGT_ItemWithMaterialRenderer.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/interfaces/IGT_ItemWithMaterialRenderer.java b/src/main/java/gregtech/api/interfaces/IGT_ItemWithMaterialRenderer.java new file mode 100644 index 0000000000..4bf0311544 --- /dev/null +++ b/src/main/java/gregtech/api/interfaces/IGT_ItemWithMaterialRenderer.java @@ -0,0 +1,68 @@ +package gregtech.api.interfaces; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.common.render.items.GT_GeneratedMaterial_Renderer; + +public interface IGT_ItemWithMaterialRenderer { + + /** + * @return If allow using {@link gregtech.common.render.items.GT_MetaGenerated_Item_Renderer} to render item + */ + boolean shouldUseCustomRenderer(int aMetaData); + + /** + * @return Custom renderer of the Material with offset < 32000 + */ + GT_GeneratedMaterial_Renderer getMaterialRenderer(int aMetaData); + + /** + * If this returns false, renderer falls back to {@link gregtech.common.render.items.GT_GeneratedItem_Renderer} + */ + boolean allowMaterialRenderer(int aMetaData); + + /** + * @return Icon the Material is going to be rendered with + */ + IIcon getIcon(int aMetaData, int pass); + + /** + * @return Icon of the Overlay (or null if there is no Icon) + */ + IIcon getOverlayIcon(int aMetaData, int pass); + + /** + * @return Color Modulation the Material is going to be rendered with. + */ + short[] getRGBa(ItemStack aStack); + + @SideOnly(Side.CLIENT) + default int getSpriteNumber() { + if (this instanceof Item) { + return ((Item) this).getSpriteNumber(); + } else { + throw new RuntimeException(String.format("Class %s does not extend Item!", getClass())); + } + } + + @SideOnly(Side.CLIENT) + default boolean requiresMultipleRenderPasses() { + if (this instanceof Item) { + return ((Item) this).requiresMultipleRenderPasses(); + } else { + throw new RuntimeException(String.format("Class %s does not extend Item!", getClass())); + } + } + + default int getRenderPasses(int metadata) { + if (this instanceof Item) { + return ((Item) this).getRenderPasses(metadata); + } else { + throw new RuntimeException(String.format("Class %s does not extend Item!", getClass())); + } + } +} |