diff options
author | Alkalus <Draknyte1@hotmail.com> | 2020-05-26 22:42:43 +0100 |
---|---|---|
committer | Alkalus <Draknyte1@hotmail.com> | 2020-05-26 22:42:43 +0100 |
commit | c5970457e812661b3b8cb6ffe0054df797197679 (patch) | |
tree | e268fa535f902a270e1836db6a88c024bb8c1952 /src | |
parent | 0b64ce224c2e3dc93d13d968a9094ebcb4903de6 (diff) | |
download | GT5-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.java | 4 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/proxy/ClientProxy.java | 6 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/tileentities/general/TileEntityVolumetricFlaskSetter.java | 81 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java | 2 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/common/helpers/VolumetricFlaskHelper.java | 23 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/xmod/gregtech/common/render/GTPP_FlaskRenderer.java | 94 | ||||
-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) | bin | 1013 -> 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) | bin | 399 -> 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 Binary files differindex 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 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 Binary files differindex 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 |