aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlkalus <Draknyte1@hotmail.com>2020-05-26 22:42:43 +0100
committerAlkalus <Draknyte1@hotmail.com>2020-05-26 22:42:43 +0100
commitc5970457e812661b3b8cb6ffe0054df797197679 (patch)
treee268fa535f902a270e1836db6a88c024bb8c1952 /src
parent0b64ce224c2e3dc93d13d968a9094ebcb4903de6 (diff)
downloadGT5-Unofficial-c5970457e812661b3b8cb6ffe0054df797197679.tar.gz
GT5-Unofficial-c5970457e812661b3b8cb6ffe0054df797197679.tar.bz2
GT5-Unofficial-c5970457e812661b3b8cb6ffe0054df797197679.zip
+ Added custom Flask Renderer.
+ Added ability for the Volumetric Flask Configurator to handle the new Flasks. % Made 64k Flask have a capacity of 32k instead. (Technical limitation involving Short data types)
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/core/item/ModItems.java4
-rw-r--r--src/Java/gtPlusPlus/core/proxy/ClientProxy.java6
-rw-r--r--src/Java/gtPlusPlus/core/tileentities/general/TileEntityVolumetricFlaskSetter.java81
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/helpers/VolumetricFlaskHelper.java23
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_FlaskRenderer.java94
-rw-r--r--src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_32k.png (renamed from src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_64k.png)bin1013 -> 1013 bytes
-rw-r--r--src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_32k.window.png (renamed from src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_64k.window.png)bin399 -> 399 bytes
8 files changed, 173 insertions, 37 deletions
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java
index bc9cb4bc5e..963d6203cc 100644
--- a/src/Java/gtPlusPlus/core/item/ModItems.java
+++ b/src/Java/gtPlusPlus/core/item/ModItems.java
@@ -983,9 +983,9 @@ public final class ModItems {
if (Meta_GT_Proxy.sDoesVolumetricFlaskExist) {
Item a8kFlask = VolumetricFlaskHelper.generateNewFlask("Volumetric_Flask_8k", "Large Volumetric Flask", 8000);
- Item a64kFlask = VolumetricFlaskHelper.generateNewFlask("Volumetric_Flask_64k", "Gigantic Volumetric Flask", 64000);
+ Item a64kFlask = VolumetricFlaskHelper.generateNewFlask("Volumetric_Flask_32k", "Gigantic Volumetric Flask", 32000);
GregtechItemList.VOLUMETRIC_FLASK_8k.set(a8kFlask);
- GregtechItemList.VOLUMETRIC_FLASK_64k.set(a64kFlask);
+ GregtechItemList.VOLUMETRIC_FLASK_32k.set(a64kFlask);
}
itemBoilerChassis = new ItemBoilerChassis();
diff --git a/src/Java/gtPlusPlus/core/proxy/ClientProxy.java b/src/Java/gtPlusPlus/core/proxy/ClientProxy.java
index 1cef8a789a..5a0c0f4ea3 100644
--- a/src/Java/gtPlusPlus/core/proxy/ClientProxy.java
+++ b/src/Java/gtPlusPlus/core/proxy/ClientProxy.java
@@ -32,7 +32,9 @@ import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.tileentities.general.TileEntityDecayablesChest;
import gtPlusPlus.core.tileentities.general.TileEntityFirepit;
import gtPlusPlus.core.util.minecraft.particles.EntityParticleFXMysterious;
+import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
import gtPlusPlus.xmod.gregtech.common.render.GTPP_CapeRenderer;
+import gtPlusPlus.xmod.gregtech.common.render.GTPP_FlaskRenderer;
import gtPlusPlus.xmod.gregtech.common.render.GTPP_Render_MachineBlock;
import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.EntityFX;
@@ -94,6 +96,10 @@ public class ClientProxy extends CommonProxy implements Runnable{
new CustomItemBlockRenderer();
new GTPP_Render_MachineBlock();
+ if (Meta_GT_Proxy.sDoesVolumetricFlaskExist) {
+ new GTPP_FlaskRenderer();
+ }
+
super.init(e);
}
diff --git a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityVolumetricFlaskSetter.java b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityVolumetricFlaskSetter.java
index 1aede47096..fb2a7843aa 100644
--- a/src/Java/gtPlusPlus/core/tileentities/general/TileEntityVolumetricFlaskSetter.java
+++ b/src/Java/gtPlusPlus/core/tileentities/general/TileEntityVolumetricFlaskSetter.java
@@ -72,6 +72,41 @@ public class TileEntityVolumetricFlaskSetter extends TileEntity implements ISide
public Inventory_VolumetricFlaskSetter getInventory() {
return this.inventoryContents;
}
+
+ private int getFlaskType(ItemStack aStack) {
+ if (VolumetricFlaskHelper.isNormalVolumetricFlask(aStack)) {
+ return 1;
+ }
+ else if (VolumetricFlaskHelper.isLargeVolumetricFlask(aStack)) {
+ return 2;
+ }
+ else if (VolumetricFlaskHelper.isGiganticVolumetricFlask(aStack)) {
+ return 3;
+ }
+ return 0;
+ }
+
+ private int getCapacityForSlot(int aSlot) {
+ switch (aSlot) {
+ case 0: //16
+ return 16;
+ case 1: //36
+ return 36;
+ case 2: //144
+ return 144;
+ case 3: //432
+ return 432;
+ case 4: //576
+ return 576;
+ case 5: //720
+ return 720;
+ case 6: //864
+ return 864;
+ case 7: //Custom
+ return getCustomValue();
+ }
+ return 0;
+ }
public boolean addOutput() {
ItemStack[] aInputs = this.getInventory().getInventory().clone();
@@ -93,8 +128,8 @@ public class TileEntityVolumetricFlaskSetter extends TileEntity implements ISide
ItemStack g = this.getStackInSlot(e);
int aSize = 0;
ItemStack aInputStack = null;
- int aTypeInSlot = 0;
- if (aTypeInSlot >= 0 && g != null) {
+ int aTypeInSlot = getFlaskType(g);
+ if (aTypeInSlot > 0 && g != null) {
// No Existing Output
if (!hasOutput) {
aSize = g.stackSize;
@@ -103,10 +138,10 @@ public class TileEntityVolumetricFlaskSetter extends TileEntity implements ISide
// Existing Output
else {
ItemStack f = this.getStackInSlot(8);
- int aTypeInCheckedSlot = 0;
+ int aTypeInCheckedSlot = getFlaskType(f);
// Check that the Circuit in the Output slot is not null and the same type as the circuit input.
- if (aTypeInCheckedSlot >= 0 && (aTypeInSlot == aTypeInCheckedSlot) && f != null) {
- if (g.getItem() == f.getItem() && f.getItemDamage() == e) {
+ if (aTypeInCheckedSlot > 0 && (aTypeInSlot == aTypeInCheckedSlot) && f != null) {
+ if (g.getItem() == f.getItem() && VolumetricFlaskHelper.getFlaskCapacity(f) == getCapacityForSlot(e)) {
aSize = f.stackSize + g.stackSize;
if (aSize > 64) {
aInputStack = g.copy();
@@ -119,41 +154,21 @@ public class TileEntityVolumetricFlaskSetter extends TileEntity implements ISide
if (doAdd) {
// Check Circuit Type
ItemStack aOutput;
- if (aTypeInSlot == 0) {
+ if (aTypeInSlot == 1) {
aOutput = VolumetricFlaskHelper.getVolumetricFlask(1);
}
+ else if (aTypeInSlot == 2) {
+ aOutput = VolumetricFlaskHelper.getLargeVolumetricFlask(1);
+ }
+ else if (aTypeInSlot == 3) {
+ aOutput = VolumetricFlaskHelper.getGiganticVolumetricFlask(1);
+ }
else {
aOutput = null;
}
if (aOutput != null) {
aOutput.stackSize = aSize;
- switch (e) {
- case 0: //16
- VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, 16);
- break;
- case 1: //36
- VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, 36);
- break;
- case 2: //144
- VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, 144);
- break;
- case 3: //432
- VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, 432);
- break;
- case 4: //576
- VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, 576);
- break;
- case 5: //720
- VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, 720);
- break;
- case 6: //864
- VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, 864);
- break;
- case 7: //Custom
- VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, getCustomValue());
- break;
- }
-
+ VolumetricFlaskHelper.setNewFlaskCapacity(aOutput, getCapacityForSlot(e));
this.setInventorySlotContents(e, aInputStack);
this.setInventorySlotContents(Container_VolumetricFlaskSetter.SLOT_OUTPUT, aOutput);
return true;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index 7d3476d48b..7d76082aee 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -97,7 +97,7 @@ public enum GregtechItemList implements GregtechItemContainer {
// Larger Volumetric Flasks
VOLUMETRIC_FLASK_8k,
- VOLUMETRIC_FLASK_64k,
+ VOLUMETRIC_FLASK_32k,
//RTG Fuels
Pellet_RTG_PU238, Pellet_RTG_SR90,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/VolumetricFlaskHelper.java b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/VolumetricFlaskHelper.java
index a169419fea..61d0797ccf 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/VolumetricFlaskHelper.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/helpers/VolumetricFlaskHelper.java
@@ -39,11 +39,18 @@ public class VolumetricFlaskHelper {
}
public static ItemStack getGiganticVolumetricFlask(int aAmount) {
- ItemStack aFlask = GregtechItemList.VOLUMETRIC_FLASK_64k.get(aAmount);
+ ItemStack aFlask = GregtechItemList.VOLUMETRIC_FLASK_32k.get(aAmount);
return aFlask;
}
public static boolean isVolumetricFlask(ItemStack aStack) {
+ if (isNormalVolumetricFlask(aStack) || isLargeVolumetricFlask(aStack) || isGiganticVolumetricFlask(aStack)) {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isNormalVolumetricFlask(ItemStack aStack) {
if (mFlask == null) {
ItemStack aFlask = ItemUtils.getValueOfItemList("VOLUMETRIC_FLASK", 1, (ItemStack) null);
if (aFlask != null) {
@@ -56,6 +63,20 @@ public class VolumetricFlaskHelper {
return false;
}
+ public static boolean isLargeVolumetricFlask(ItemStack aStack) {
+ if (GregtechItemList.VOLUMETRIC_FLASK_8k.getItem() == aStack.getItem()) {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isGiganticVolumetricFlask(ItemStack aStack) {
+ if (GregtechItemList.VOLUMETRIC_FLASK_32k.getItem() == aStack.getItem()) {
+ return true;
+ }
+ return false;
+ }
+
public static int getMaxFlaskCapacity(ItemStack aStack) {
if (aStack != null && sMethodGetFlaskMaxCapacity != null) {
Item aItem = aStack.getItem();
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_FlaskRenderer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_FlaskRenderer.java
new file mode 100644
index 0000000000..1561ba9f73
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_FlaskRenderer.java
@@ -0,0 +1,94 @@
+package gtPlusPlus.xmod.gregtech.common.render;
+
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.enums.ItemList;
+import gregtech.common.items.GT_VolumetricFlask;
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import ic2.core.util.DrawUtil;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.ItemRenderer;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.texture.TextureMap;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraftforge.client.IItemRenderer;
+import net.minecraftforge.client.MinecraftForgeClient;
+import net.minecraftforge.fluids.FluidStack;
+import org.lwjgl.opengl.GL11;
+
+@SideOnly(cpw.mods.fml.relauncher.Side.CLIENT)
+public final class GTPP_FlaskRenderer implements net.minecraftforge.client.IItemRenderer {
+
+ public GTPP_FlaskRenderer() {
+ MinecraftForgeClient.registerItemRenderer(GregtechItemList.VOLUMETRIC_FLASK_8k.getItem(), this);
+ MinecraftForgeClient.registerItemRenderer(GregtechItemList.VOLUMETRIC_FLASK_32k.getItem(), this);
+ }
+
+ public boolean handleRenderType(ItemStack item, ItemRenderType type) {
+ return type != ItemRenderType.FIRST_PERSON_MAP;
+ }
+
+
+ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, IItemRenderer.ItemRendererHelper helper) {
+ return type == ItemRenderType.ENTITY;
+ }
+
+ public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
+ GT_VolumetricFlask cell = (GT_VolumetricFlask) item.getItem();
+
+ int aType = cell.getMaxCapacity() == 8000 ? 0 : 1;
+ IIcon icon = item.getIconIndex();
+ GL11.glEnable(3042);
+ GL11.glEnable(3008);
+ if (type.equals(ItemRenderType.ENTITY)) {
+ GL11.glRotated(180.0D, 0.0D, 0.0D, 1.0D);
+ GL11.glRotated(90.0D, 0.0D, 1.0D, 0.0D);
+ GL11.glTranslated(-0.5D, -0.6D, 0.0D);
+ } else if (type.equals(ItemRenderType.EQUIPPED_FIRST_PERSON)) {
+ GL11.glTranslated(1.0D, 1.0D, 0.0D);
+ GL11.glRotated(180.0D, 0.0D, 0.0D, 1.0D);
+ } else if (type.equals(ItemRenderType.EQUIPPED)) {
+ GL11.glRotated(180.0D, 0.0D, 0.0D, 1.0D);
+ GL11.glTranslated(-1.0D, -1.0D, 0.0D);
+ }
+
+ FluidStack fs = cell.getFluid(item);
+ if (fs != null) {
+ IIcon iconWindow = cell.iconWindow;
+ IIcon fluidicon = fs.getFluid().getIcon(fs);
+ int fluidColor = fs.getFluid().getColor(fs);
+ Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture);
+ GL11.glBlendFunc(0, 1);
+ if (type.equals(ItemRenderType.INVENTORY)) {
+ DrawUtil.renderIcon(iconWindow, 16.0D, 0.0D, 0.0F, 0.0F, -1.0F);
+ } else {
+ DrawUtil.renderIcon(iconWindow, 1.0D, -0.001D, 0.0F, 0.0F, 1.0F);
+ DrawUtil.renderIcon(iconWindow, 1.0D, -0.0615D, 0.0F, 0.0F, -1.0F);
+ }
+
+ Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture);
+ GL11.glBlendFunc(770, 771);
+ GL11.glDepthFunc(514);
+ GL11.glColor3ub((byte) (fluidColor >> 16), (byte) (fluidColor >> 8), (byte) fluidColor);
+ if (type.equals(ItemRenderType.INVENTORY)) {
+ DrawUtil.renderIcon(fluidicon, 16.0D, 0.0D, 0.0F, 0.0F, -1.0F);
+ } else {
+ DrawUtil.renderIcon(fluidicon, 1.0D, -0.001D, 0.0F, 0.0F, 1.0F);
+ DrawUtil.renderIcon(fluidicon, 1.0D, -0.0615D, 0.0F, 0.0F, -1.0F);
+ }
+
+ GL11.glColor3ub((byte) -1, (byte) -1, (byte) -1);
+ GL11.glDepthFunc(515);
+ }
+
+ Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture);
+ GL11.glBlendFunc(770, 771);
+ if (type.equals(ItemRenderType.INVENTORY)) {
+ DrawUtil.renderIcon(icon, 16.0D, 0.001D, 0.0F, 0.0F, -1.0F);
+ } else {
+ ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
+ }
+ GL11.glDisable(3008);
+ GL11.glDisable(3042);
+ }
+} \ No newline at end of file
diff --git a/src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_64k.png b/src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_32k.png
index 13b37c999d..13b37c999d 100644
--- a/src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_64k.png
+++ b/src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_32k.png
Binary files differ
diff --git a/src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_64k.window.png b/src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_32k.window.png
index 3fd5382926..3fd5382926 100644
--- a/src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_64k.window.png
+++ b/src/resources/assets/gregtech/textures/items/gt.Volumetric_Flask_32k.window.png
Binary files differ