aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/GregTech_API.java2
-rw-r--r--src/main/java/gregtech/api/interfaces/IGT_ItemWithMaterialRenderer.java68
-rw-r--r--src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java33
3 files changed, 95 insertions, 8 deletions
diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java
index 39a39d4f0f..30f8961d0b 100644
--- a/src/main/java/gregtech/api/GregTech_API.java
+++ b/src/main/java/gregtech/api/GregTech_API.java
@@ -280,7 +280,7 @@ public class GregTech_API {
sMachineWireFire = true, mOutputRF = false, mInputRF = false, meIOLoaded = false, mRFExplosions = false,
mServerStarted = false, mIC2Classic = false, mMagneticraft = false, mImmersiveEngineering = false,
mGTPlusPlus = false, mTranslocator = false, mTConstruct = false, mGalacticraft = false, mAE2 = false,
- mHodgepodge = false;
+ mHodgepodge = false, mEternalSingularity = false;
public static int mEUtoRF = 360, mRFtoEU = 20;
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()));
+ }
+ }
+}
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
index 3e81c102f4..32a46c8641 100644
--- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
+++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
@@ -30,6 +30,7 @@ import gregtech.api.enums.Materials;
import gregtech.api.enums.SubTag;
import gregtech.api.enums.TC_Aspects.TC_AspectStack;
import gregtech.api.interfaces.IFoodStat;
+import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.IItemBehaviour;
import gregtech.api.interfaces.IItemContainer;
@@ -56,7 +57,7 @@ import gregtech.common.render.items.GT_GeneratedMaterial_Renderer;
* Item.
*/
@Optional.Interface(iface = "squeek.applecore.api.food.IEdible", modid = MOD_ID_APC)
-public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements IEdible {
+public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements IGT_ItemWithMaterialRenderer, IEdible {
/**
* All instances of this Item Class are listed here. This gets used to register the Renderer to all Items of this
@@ -256,9 +257,7 @@ public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements
return true;
}
- /**
- * @return the Color Modulation the Material is going to be rendered with.
- */
+ @Override
public short[] getRGBa(ItemStack aStack) {
return Materials._NULL.getRGBA();
}
@@ -270,13 +269,33 @@ public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements
return null;
}
- /**
- * @return the Custom renderer of the Material with offset < 32000
- */
+ @Override
+ public IIcon getIcon(int aMetaData, int pass) {
+ IIconContainer iconContainer = getIconContainer(aMetaData);
+ return iconContainer != null ? iconContainer.getIcon() : null;
+ }
+
+ @Override
+ public IIcon getOverlayIcon(int aMetaData, int pass) {
+ IIconContainer iconContainer = getIconContainer(aMetaData);
+ return iconContainer != null ? iconContainer.getOverlayIcon() : null;
+ }
+
+ @Override
+ public boolean shouldUseCustomRenderer(int aMetaData) {
+ return true;
+ }
+
+ @Override
public GT_GeneratedMaterial_Renderer getMaterialRenderer(int aMetaData) {
return null;
}
+ @Override
+ public boolean allowMaterialRenderer(int aMetaData) {
+ return aMetaData < this.mOffset;
+ }
+
/* ---------- INTERNAL OVERRIDES ---------- */
@Override