aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/GT_Mod.java4
-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
-rw-r--r--src/main/java/gregtech/common/GT_Client.java12
-rw-r--r--src/main/java/gregtech/common/items/CombType.java20
-rw-r--r--src/main/java/gregtech/common/items/ItemComb.java40
-rw-r--r--src/main/java/gregtech/common/render/GT_RenderUtil.java6
-rw-r--r--src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java7
-rw-r--r--src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java1
-rw-r--r--src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java91
-rw-r--r--src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java24
-rw-r--r--src/main/java/gregtech/common/render/items/InfinityRenderer.java67
-rw-r--r--src/main/java/gregtech/common/render/items/UniversiumRenderer.java82
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_PreLoad.java1
15 files changed, 297 insertions, 161 deletions
diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java
index 33c02f37dd..7a8236c7b3 100644
--- a/src/main/java/gregtech/GT_Mod.java
+++ b/src/main/java/gregtech/GT_Mod.java
@@ -329,7 +329,9 @@ public class GT_Mod implements IGT_Mod {
gregtechproxy.registerUnificationEntries();
new GT_FuelLoader().run();
}
- Waila.init();
+ if (Loader.isModLoaded("Waila")) {
+ Waila.init();
+ }
IMCForNEI.IMCSender();
GregTech_API.sLoadFinished = true;
GT_Log.out.println("GT_Mod: Load-Phase finished!");
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
diff --git a/src/main/java/gregtech/common/GT_Client.java b/src/main/java/gregtech/common/GT_Client.java
index 327aeb5b23..e7189811a0 100644
--- a/src/main/java/gregtech/common/GT_Client.java
+++ b/src/main/java/gregtech/common/GT_Client.java
@@ -49,6 +49,7 @@ import com.gtnewhorizon.structurelib.alignment.IAlignmentProvider;
import cpw.mods.fml.client.event.ConfigChangedEvent;
import cpw.mods.fml.client.registry.RenderingRegistry;
+import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent;
@@ -60,6 +61,7 @@ import gregtech.api.interfaces.IHasFluidDisplayItem;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.ITurnable;
+import gregtech.api.items.GT_MetaGenerated_Item;
import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.net.GT_Packet_ClientPreference;
import gregtech.api.objects.GT_ItemStack;
@@ -80,6 +82,7 @@ import gregtech.common.render.*;
import gregtech.common.render.items.GT_MetaGenerated_Item_Renderer;
import gregtech.common.tileentities.debug.GT_MetaTileEntity_AdvDebugStructureWriter;
import gregtech.loaders.ExtraIcons;
+import gregtech.loaders.misc.GT_Bees;
import gregtech.loaders.preload.GT_PreLoad;
import ic2.api.tile.IWrenchable;
@@ -162,6 +165,7 @@ public class GT_Client extends GT_Proxy implements Runnable {
public static final int ROTATION_MARKER_RESOLUTION = 120;
private int mReloadCount;
private float renderTickTime;
+ public static GT_MetaGenerated_Item_Renderer metaGeneratedItemRenderer;
public GT_Client() {
mCapeRenderer = new GT_CapeRenderer(mCapeList);
@@ -553,7 +557,13 @@ public class GT_Client extends GT_Proxy implements Runnable {
public void onLoad() {
super.onLoad();
new GT_Renderer_Block();
- new GT_MetaGenerated_Item_Renderer();
+ metaGeneratedItemRenderer = new GT_MetaGenerated_Item_Renderer();
+ for (GT_MetaGenerated_Item item : GT_MetaGenerated_Item.sInstances.values()) {
+ metaGeneratedItemRenderer.registerItem(item);
+ }
+ if (Loader.isModLoaded(GT_Values.MOD_ID_FR)) {
+ metaGeneratedItemRenderer.registerItem(GT_Bees.combs);
+ }
new GT_MetaGenerated_Tool_Renderer();
new GT_Renderer_Entity_Arrow(GT_Entity_Arrow.class, "arrow");
new GT_Renderer_Entity_Arrow(GT_Entity_Arrow_Potion.class, "arrow_potions");
diff --git a/src/main/java/gregtech/common/items/CombType.java b/src/main/java/gregtech/common/items/CombType.java
index ff08fde695..479f6fe82f 100644
--- a/src/main/java/gregtech/common/items/CombType.java
+++ b/src/main/java/gregtech/common/items/CombType.java
@@ -149,9 +149,11 @@ public enum CombType {
VEGA(116, "vega", true, Materials._NULL, 10, 0x1A2036, 0xB5C0DE, ItemComb.Voltage.ZPM),
// Infinity
- COSMICNEUTRONIUM(117, "cosmicneutronium", true, Materials._NULL, 5, 0x484848, 0x323232, ItemComb.Voltage.UV),
- INFINITYCATALYST(118, "infinitycatalyst", true, Materials._NULL, 2, 0xFFFFFF, 0xFFFFFF, ItemComb.Voltage.UHV),
- INFINITY(119, "infinity", true, Materials._NULL, 1, 0xFFFFFF, 0xFFFFFF, ItemComb.Voltage.UEV),
+ COSMICNEUTRONIUM(117, "cosmicneutronium", true, Materials.CosmicNeutronium, 5, 0x484848, 0x323232,
+ ItemComb.Voltage.UV),
+ INFINITYCATALYST(118, "infinitycatalyst", true, Materials.InfinityCatalyst, 2, 0xFFFFFF, 0xFFFFFF,
+ ItemComb.Voltage.UHV),
+ INFINITY(119, "infinity", true, Materials.Infinity, 1, 0xFFFFFF, 0xFFFFFF, ItemComb.Voltage.UEV),
// HEE
ENDDUST(120, "enddust", true, Materials._NULL, 50, 0x003A7D, 0xCC00FA, ItemComb.Voltage.HV),
@@ -219,17 +221,7 @@ public enum CombType {
private final int[] color;
CombType(int id, String pName, boolean show, Materials material, int chance, int color1, int color2) {
- if (id < 0 && !"INVALIDCOMB".equals(pName)) throw new IllegalArgumentException();
- this.id = id;
- this.name = pName;
- this.voltage = null;
- this.material = material;
- this.chance = chance;
- this.showInList = show;
- this.color = new int[] { color1, color2 };
- this.localizedName = GT_LanguageManager.addStringLocalization(
- "comb." + this.name,
- this.name.substring(0, 1).toUpperCase() + this.name.substring(1) + " Comb");
+ this(id, pName, show, material, chance, color1, color2, null);
}
CombType(int id, String pName, boolean show, Materials material, int chance, int color1, int color2,
diff --git a/src/main/java/gregtech/common/items/ItemComb.java b/src/main/java/gregtech/common/items/ItemComb.java
index 29e206d5b9..d7f009dd38 100644
--- a/src/main/java/gregtech/common/items/ItemComb.java
+++ b/src/main/java/gregtech/common/items/ItemComb.java
@@ -27,13 +27,15 @@ import gregtech.GT_Mod;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
+import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
+import gregtech.common.render.items.GT_GeneratedMaterial_Renderer;
import gregtech.loaders.materialprocessing.ProcessingModSupport;
import gregtech.loaders.misc.GT_Bees;
-public class ItemComb extends Item {
+public class ItemComb extends Item implements IGT_ItemWithMaterialRenderer {
@SideOnly(Side.CLIENT)
private IIcon secondIcon;
@@ -99,6 +101,36 @@ public class ItemComb extends Item {
return CombType.valueOf(stack.getItemDamage()).getName();
}
+ @Override
+ public boolean shouldUseCustomRenderer(int aMetaData) {
+ return CombType.valueOf(aMetaData).material.renderer != null;
+ }
+
+ @Override
+ public GT_GeneratedMaterial_Renderer getMaterialRenderer(int aMetaData) {
+ return CombType.valueOf(aMetaData).material.renderer;
+ }
+
+ @Override
+ public boolean allowMaterialRenderer(int aMetaData) {
+ return true;
+ }
+
+ @Override
+ public IIcon getIcon(int aMetaData, int pass) {
+ return (pass == 0) ? itemIcon : secondIcon;
+ }
+
+ @Override
+ public IIcon getOverlayIcon(int aMetaData, int pass) {
+ return null;
+ }
+
+ @Override
+ public short[] getRGBa(ItemStack aStack) {
+ return CombType.valueOf(aStack.getItemDamage()).material.mRGBa;
+ }
+
public void initCombsRecipes() {
// Organic
@@ -1538,7 +1570,7 @@ public class ItemComb extends Item {
/**
* Currently only used for CombType.MOLYBDENUM
- *
+ *
* @param circuitNumber should not conflict with addProcessGT
*
**/
@@ -1569,7 +1601,7 @@ public class ItemComb extends Item {
/**
* this only adds Chemical and AutoClave process. If you need Centrifuge recipe. use addCentrifugeToMaterial or
* addCentrifugeToItemStack
- *
+ *
* @param volt This determine the required Tier of process for this recipes. This decide the required aEU/t,
* progress time, required additional UU-Matter, requirement of cleanRoom, needed fluid stack for
* Chemical.
@@ -1644,7 +1676,7 @@ public class ItemComb extends Item {
/**
* this method only adds Centrifuge based on Material. If volt is lower than MV than it will also adds forestry
* centrifuge recipe.
- *
+ *
* @param comb BeeComb
* @param aMaterial resulting Material of processing. can be more than 6. but over 6 will be ignored in Gregtech
* Centrifuge.
diff --git a/src/main/java/gregtech/common/render/GT_RenderUtil.java b/src/main/java/gregtech/common/render/GT_RenderUtil.java
index be0e0ac0b6..ffa6e359d8 100644
--- a/src/main/java/gregtech/common/render/GT_RenderUtil.java
+++ b/src/main/java/gregtech/common/render/GT_RenderUtil.java
@@ -8,13 +8,13 @@ import net.minecraft.util.IIcon;
import org.lwjgl.opengl.GL11;
-import gregtech.api.items.GT_MetaGenerated_Item;
+import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
public class GT_RenderUtil {
public static void colorGTItem(ItemStack aStack) {
- if (aStack.getItem() instanceof GT_MetaGenerated_Item) {
- GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) aStack.getItem();
+ if (aStack.getItem() instanceof IGT_ItemWithMaterialRenderer) {
+ IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem();
short[] tModulation = aItem.getRGBa(aStack);
GL11.glColor4f(tModulation[0] / 255.0F, tModulation[1] / 255.0F, tModulation[2] / 255.0F, 255.0f);
diff --git a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java
index 125c692353..c4d82efda3 100644
--- a/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java
+++ b/src/main/java/gregtech/common/render/items/CosmicNeutroniumRenderer.java
@@ -66,8 +66,7 @@ public class CosmicNeutroniumRenderer extends GT_GeneratedMaterial_Renderer {
}
@Override
- public void renderRegularItem(ItemRenderType type, ItemStack item, IIcon icon, boolean shouldModulateColor) {
-
+ public void renderRegularItem(ItemRenderType type, ItemStack item, IIcon icon, boolean shouldModulateColor, int pass) {
RenderItem r = RenderItem.getInstance();
GL11.glPushMatrix();
@@ -79,7 +78,9 @@ public class CosmicNeutroniumRenderer extends GT_GeneratedMaterial_Renderer {
GL11.glDisable(GL11.GL_DEPTH_TEST);
}
- drawHalo(type);
+ if (pass == 0) {
+ drawHalo(type);
+ }
//spotless:on
{
diff --git a/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java b/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java
index 436b9c4422..2484cf1c1f 100644
--- a/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java
+++ b/src/main/java/gregtech/common/render/items/GT_GeneratedItem_Renderer.java
@@ -43,6 +43,7 @@ public class GT_GeneratedItem_Renderer implements IItemRenderer {
@Override
public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) {
short aMetaData = (short) aStack.getItemDamage();
+ if (!(aStack.getItem() instanceof GT_MetaGenerated_Item)) return;
GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) aStack.getItem();
GL11.glEnable(GL11.GL_BLEND);
diff --git a/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java b/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java
index e0ff69e216..e01df95f05 100644
--- a/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java
+++ b/src/main/java/gregtech/common/render/items/GT_GeneratedMaterial_Renderer.java
@@ -15,8 +15,7 @@ import codechicken.lib.render.TextureUtils;
import com.mitchej123.hodgepodge.textures.IPatchedTextureAtlasSprite;
import gregtech.api.GregTech_API;
-import gregtech.api.interfaces.IIconContainer;
-import gregtech.api.items.GT_MetaGenerated_Item;
+import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
import gregtech.api.util.GT_Utility;
import gregtech.common.render.GT_RenderUtil;
@@ -50,60 +49,68 @@ public class GT_GeneratedMaterial_Renderer implements IItemRenderer {
@Override
public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) {
short aMetaData = (short) aStack.getItemDamage();
- GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) aStack.getItem();
+ if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer)) return;
+ IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem();
- IIconContainer aIconContainer = aItem.getIconContainer(aMetaData);
-
- if (aIconContainer == null) {
- return;
+ int passes = 1;
+ if (aItem.requiresMultipleRenderPasses()) {
+ passes = aItem.getRenderPasses(aMetaData);
}
- IIcon tIcon = aIconContainer.getIcon();
- IIcon tOverlay = aIconContainer.getOverlayIcon();
- FluidStack aFluid = GT_Utility.getFluidForFilledItem(aStack, true);
+ for (int pass = 0; pass < passes; pass++) {
+ IIcon tIcon = aItem.getIcon(aMetaData, pass);
+ IIcon tOverlay = aItem.getOverlayIcon(aMetaData, pass);
+ FluidStack aFluid = GT_Utility.getFluidForFilledItem(aStack, true);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GL11.glEnable(GL11.GL_ALPHA_TEST);
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GL11.glEnable(GL11.GL_ALPHA_TEST);
- if (tIcon != null) {
- markNeedsAnimationUpdate(tIcon);
- renderRegularItem(type, aStack, tIcon, aFluid == null);
- }
+ if (tIcon != null) {
+ markNeedsAnimationUpdate(tIcon);
+ renderRegularItem(type, aStack, tIcon, aFluid == null, pass);
+ }
- if (tOverlay != null && aFluid != null && aFluid.getFluid() != null) {
- IIcon fluidIcon = aFluid.getFluid().getIcon(aFluid);
- if (fluidIcon != null) {
- markNeedsAnimationUpdate(fluidIcon);
- // Adds colour to a cells fluid. Does not colour full fluid icons as shown in NEI etc.
- renderContainedFluid(type, aFluid, fluidIcon);
+ if (tOverlay != null && aFluid != null && aFluid.getFluid() != null) {
+ IIcon fluidIcon = aFluid.getFluid().getIcon(aFluid);
+ if (fluidIcon != null) {
+ markNeedsAnimationUpdate(fluidIcon);
+ // Adds colour to a cells fluid. Does not colour full fluid icons as shown in NEI etc.
+ renderContainedFluid(type, aFluid, fluidIcon);
+ }
}
- }
- if (tOverlay != null) {
- GL11.glColor3f(1.0F, 1.0F, 1.0F);
- TextureUtils.bindAtlas(aItem.getSpriteNumber());
- markNeedsAnimationUpdate(tOverlay);
- if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
- GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F);
- } else {
- ItemRenderer.renderItemIn2D(
- Tessellator.instance,
- tOverlay.getMaxU(),
- tOverlay.getMinV(),
- tOverlay.getMinU(),
- tOverlay.getMaxV(),
- tOverlay.getIconWidth(),
- tOverlay.getIconHeight(),
- 0.0625F);
+ if (tOverlay != null) {
+ GL11.glColor3f(1.0F, 1.0F, 1.0F);
+ TextureUtils.bindAtlas(aItem.getSpriteNumber());
+ markNeedsAnimationUpdate(tOverlay);
+ if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
+ GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F);
+ } else {
+ ItemRenderer.renderItemIn2D(
+ Tessellator.instance,
+ tOverlay.getMaxU(),
+ tOverlay.getMinV(),
+ tOverlay.getMinU(),
+ tOverlay.getMaxV(),
+ tOverlay.getIconWidth(),
+ tOverlay.getIconHeight(),
+ 0.0625F);
+ }
}
+
+ GL11.glDisable(GL11.GL_BLEND);
}
+ }
- GL11.glDisable(GL11.GL_BLEND);
+ public void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor,
+ int pass) {
+ renderRegularItem(type, aStack, icon, shouldModulateColor);
}
public void renderRegularItem(ItemRenderType type, ItemStack aStack, IIcon icon, boolean shouldModulateColor) {
- GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) aStack.getItem();
+ if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer)) return;
+ IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem();
if (shouldModulateColor) {
short[] tModulation = aItem.getRGBa(aStack);
diff --git a/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java b/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java
index 19b14e7d6d..8dac142cb1 100644
--- a/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java
+++ b/src/main/java/gregtech/common/render/items/GT_MetaGenerated_Item_Renderer.java
@@ -1,8 +1,7 @@
package gregtech.common.render.items;
-import static gregtech.api.util.GT_OreDictUnificator.getAssociation;
-
import net.minecraft.client.renderer.entity.RenderItem;
+import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.MinecraftForgeClient;
@@ -10,8 +9,9 @@ import net.minecraftforge.client.MinecraftForgeClient;
import org.lwjgl.opengl.GL11;
import gregtech.api.enums.Materials;
-import gregtech.api.items.GT_MetaGenerated_Item;
+import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
import gregtech.api.objects.ItemData;
+import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
public class GT_MetaGenerated_Item_Renderer implements IItemRenderer {
@@ -19,15 +19,17 @@ public class GT_MetaGenerated_Item_Renderer implements IItemRenderer {
private final IItemRenderer mItemRenderer = new GT_GeneratedItem_Renderer();
private final IItemRenderer mMaterialRenderer = new GT_GeneratedMaterial_Renderer();
- public GT_MetaGenerated_Item_Renderer() {
- for (GT_MetaGenerated_Item item : GT_MetaGenerated_Item.sInstances.values()) {
- MinecraftForgeClient.registerItemRenderer(item, this);
- }
+ public GT_MetaGenerated_Item_Renderer() {}
+
+ public <T extends Item & IGT_ItemWithMaterialRenderer> void registerItem(T item) {
+ MinecraftForgeClient.registerItemRenderer(item, this);
}
@Override
public boolean handleRenderType(ItemStack aStack, ItemRenderType aType) {
- if ((GT_Utility.isStackInvalid(aStack)) || (aStack.getItemDamage() < 0)) {
+ if ((GT_Utility.isStackInvalid(aStack)) || (aStack.getItemDamage() < 0)
+ || !(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer)
+ || !((IGT_ItemWithMaterialRenderer) aStack.getItem()).shouldUseCustomRenderer(aStack.getItemDamage())) {
return false;
}
return getRendererForItemStack(aStack).handleRenderType(aStack, aType);
@@ -59,14 +61,14 @@ public class GT_MetaGenerated_Item_Renderer implements IItemRenderer {
private IItemRenderer getRendererForItemStack(ItemStack aStack) {
short aMetaData = (short) aStack.getItemDamage();
- GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) aStack.getItem();
+ IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem();
- if (aMetaData < aItem.mOffset) {
+ if (aItem != null && aItem.allowMaterialRenderer(aMetaData)) {
IItemRenderer aMaterialRenderer = aItem.getMaterialRenderer(aMetaData);
// Handle fluid rendering.
if (aMaterialRenderer == null) {
- ItemData itemData = getAssociation(aStack);
+ ItemData itemData = GT_OreDictUnificator.getAssociation(aStack);
if (itemData != null) {
Materials material = itemData.mMaterial.mMaterial;
if (material.renderer != null) {
diff --git a/src/main/java/gregtech/common/render/items/InfinityRenderer.java b/src/main/java/gregtech/common/render/items/InfinityRenderer.java
index 5733501d95..6a5bea393d 100644
--- a/src/main/java/gregtech/common/render/items/InfinityRenderer.java
+++ b/src/main/java/gregtech/common/render/items/InfinityRenderer.java
@@ -17,8 +17,7 @@ import org.lwjgl.opengl.GL12;
import codechicken.lib.render.TextureUtils;
import gregtech.api.enums.Textures;
-import gregtech.api.interfaces.IIconContainer;
-import gregtech.api.items.GT_MetaGenerated_Item;
+import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
import gregtech.api.util.GT_Utility;
import gregtech.common.render.GT_RenderUtil;
@@ -34,43 +33,47 @@ public class InfinityRenderer extends GT_GeneratedMaterial_Renderer {
@Override
public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) {
short aMetaData = (short) aStack.getItemDamage();
- GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) aStack.getItem();
+ if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer)) return;
+ IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem();
- IIconContainer aIconContainer = aItem.getIconContainer(aMetaData);
-
- if (aIconContainer == null) {
- return;
+ int passes = 1;
+ if (aItem.requiresMultipleRenderPasses()) {
+ passes = aItem.getRenderPasses(aMetaData);
}
- IIcon tIcon = aIconContainer.getIcon();
- IIcon tOverlay = aIconContainer.getOverlayIcon();
- FluidStack aFluid = GT_Utility.getFluidForFilledItem(aStack, true);
+ for (int pass = 0; pass < passes; pass++) {
+ IIcon tIcon = aItem.getIcon(aMetaData, pass);
+ IIcon tOverlay = aItem.getOverlayIcon(aMetaData, pass);
+ FluidStack aFluid = GT_Utility.getFluidForFilledItem(aStack, true);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GL11.glEnable(GL11.GL_ALPHA_TEST);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GL11.glEnable(GL11.GL_ALPHA_TEST);
- renderHalo();
-
- if (tOverlay != null) {
- GL11.glColor3f(1.0F, 1.0F, 1.0F);
- TextureUtils.bindAtlas(aItem.getSpriteNumber());
- if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
- GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F);
- } else {
- ItemRenderer.renderItemIn2D(
- Tessellator.instance,
- tOverlay.getMaxU(),
- tOverlay.getMinV(),
- tOverlay.getMinU(),
- tOverlay.getMaxV(),
- tOverlay.getIconWidth(),
- tOverlay.getIconHeight(),
- 0.0625F);
+ if (pass == 0) {
+ renderHalo();
+ }
+
+ if (tOverlay != null) {
+ GL11.glColor3f(1.0F, 1.0F, 1.0F);
+ TextureUtils.bindAtlas(aItem.getSpriteNumber());
+ if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
+ GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F);
+ } else {
+ ItemRenderer.renderItemIn2D(
+ Tessellator.instance,
+ tOverlay.getMaxU(),
+ tOverlay.getMinV(),
+ tOverlay.getMinU(),
+ tOverlay.getMaxV(),
+ tOverlay.getIconWidth(),
+ tOverlay.getIconHeight(),
+ 0.0625F);
+ }
}
- }
- if (tIcon != null) {
- renderRegularItem(type, aStack, tIcon, aFluid == null);
+ if (tIcon != null) {
+ renderRegularItem(type, aStack, tIcon, aFluid == null);
+ }
}
}
diff --git a/src/main/java/gregtech/common/render/items/UniversiumRenderer.java b/src/main/java/gregtech/common/render/items/UniversiumRenderer.java
index ff5171b998..8a88e580eb 100644
--- a/src/main/java/gregtech/common/render/items/UniversiumRenderer.java
+++ b/src/main/java/gregtech/common/render/items/UniversiumRenderer.java
@@ -18,9 +18,9 @@ import org.lwjgl.opengl.GL12;
import singulariteam.eternalsingularity.render.CosmicRenderStuffs;
import codechicken.lib.render.TextureUtils;
+import gregtech.api.GregTech_API;
import gregtech.api.enums.ItemList;
-import gregtech.api.interfaces.IIconContainer;
-import gregtech.api.items.GT_MetaGenerated_Item;
+import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
import gregtech.common.render.GT_RenderUtil;
public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer {
@@ -50,47 +50,50 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer {
@Override
public void renderItem(ItemRenderType type, ItemStack aStack, Object... data) {
short aMetaData = (short) aStack.getItemDamage();
- GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) aStack.getItem();
+ if (!(aStack.getItem() instanceof IGT_ItemWithMaterialRenderer)) return;
+ IGT_ItemWithMaterialRenderer aItem = (IGT_ItemWithMaterialRenderer) aStack.getItem();
- IIconContainer aIconContainer = aItem.getIconContainer(aMetaData);
-
- if (aIconContainer == null) {
- return;
+ int passes = 1;
+ if (aItem.requiresMultipleRenderPasses()) {
+ passes = aItem.getRenderPasses(aMetaData);
}
- IIcon tIcon = aIconContainer.getIcon();
- IIcon tOverlay = aIconContainer.getOverlayIcon();
-
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GL11.glEnable(GL11.GL_ALPHA_TEST);
-
- if (tOverlay != null) {
- GL11.glColor3f(1.0F, 1.0F, 1.0F);
- TextureUtils.bindAtlas(aItem.getSpriteNumber());
- if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
- GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F);
- } else {
- ItemRenderer.renderItemIn2D(
- Tessellator.instance,
- tOverlay.getMaxU(),
- tOverlay.getMinV(),
- tOverlay.getMinU(),
- tOverlay.getMaxV(),
- tOverlay.getIconWidth(),
- tOverlay.getIconHeight(),
- 0.0625F);
+ for (int pass = 0; pass < passes; pass++) {
+ IIcon tIcon = aItem.getIcon(aMetaData, pass);
+ IIcon tOverlay = aItem.getOverlayIcon(aMetaData, pass);
+
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GL11.glEnable(GL11.GL_ALPHA_TEST);
+
+ if (tOverlay != null) {
+ GL11.glColor3f(1.0F, 1.0F, 1.0F);
+ TextureUtils.bindAtlas(aItem.getSpriteNumber());
+ if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
+ GT_RenderUtil.renderItemIcon(tOverlay, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F);
+ } else {
+ ItemRenderer.renderItemIn2D(
+ Tessellator.instance,
+ tOverlay.getMaxU(),
+ tOverlay.getMinV(),
+ tOverlay.getMinU(),
+ tOverlay.getMaxV(),
+ tOverlay.getIconWidth(),
+ tOverlay.getIconHeight(),
+ 0.0625F);
+ }
}
- }
- GL11.glDisable(GL11.GL_BLEND);
+ GL11.glDisable(GL11.GL_BLEND);
- if (tIcon != null) {
- magicRenderMethod(type, aStack, getTrueIcon(aStack), data);
+ if (tIcon != null) {
+ magicRenderMethod(type, aStack, getTrueIcon(aStack), data);
+ }
}
}
private void magicRenderMethod(ItemRenderType type, ItemStack tmpItem, IIcon tIcon, Object... data) {
+ if (!GregTech_API.mEternalSingularity) return;
RenderItem r = RenderItem.getInstance();
Minecraft mc = Minecraft.getMinecraft();
@@ -201,7 +204,7 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer {
float scale = 1F / 16F;
for (int i = 0; i < passes; i++) {
- icon = this.getStackIcon(item, player);
+ icon = this.getTrueIcon(item, i);
f = icon.getMinU();
f1 = icon.getMaxU();
@@ -289,16 +292,11 @@ public class UniversiumRenderer extends GT_GeneratedMaterial_Renderer {
}
}
- public IIcon getStackIcon(ItemStack stack, EntityPlayer player) {
- return getTrueIcon(stack);
+ public IIcon getTrueIcon(ItemStack stack, int pass) {
+ return ((IGT_ItemWithMaterialRenderer) stack.getItem()).getIcon(stack.getItemDamage(), pass);
}
public IIcon getTrueIcon(ItemStack stack) {
- short aMetaData = (short) stack.getItemDamage();
- GT_MetaGenerated_Item aItem = (GT_MetaGenerated_Item) stack.getItem();
-
- IIconContainer aIconContainer = aItem.getIconContainer(aMetaData);
-
- return aIconContainer.getIcon();
+ return getTrueIcon(stack, 0);
}
}
diff --git a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
index 0c813d002a..a9e6f80da7 100644
--- a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
+++ b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
@@ -126,6 +126,7 @@ public class GT_PreLoad {
GregTech_API.mGalacticraft = Loader.isModLoaded("GalacticraftCore");
GregTech_API.mAE2 = Loader.isModLoaded(MOD_ID_AE);
GregTech_API.mHodgepodge = Loader.isModLoaded("hodgepodge");
+ GregTech_API.mEternalSingularity = Loader.isModLoaded("eternalsingularity");
}
public static void createLogFiles(File parentFile, Configuration tMainConfig) {