aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/interfaces/IGT_ItemWithMaterialRenderer.java
blob: 4bf0311544c489ab2551071ae5b9a5b5439e5cda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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()));
        }
    }
}