aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
diff options
context:
space:
mode:
authorGlodBlock <1356392126@qq.com>2021-11-21 21:44:24 +0800
committerGlodBlock <1356392126@qq.com>2021-11-21 21:44:24 +0800
commit875afd0dc22915795ec74279f1708d79cab0cac8 (patch)
treedfc0ce33dd8603f5c5cf588de5e791b51accfe6c /src/main/java/gregtech/common/blocks/GT_Item_Machines.java
parent81f0b4801dfb0bd2d2a863e7a60f27af0daba463 (diff)
downloadGT5-Unofficial-875afd0dc22915795ec74279f1708d79cab0cac8.tar.gz
GT5-Unofficial-875afd0dc22915795ec74279f1708d79cab0cac8.tar.bz2
GT5-Unofficial-875afd0dc22915795ec74279f1708d79cab0cac8.zip
add info display for filled tank and fluid container feature
Diffstat (limited to 'src/main/java/gregtech/common/blocks/GT_Item_Machines.java')
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Item_Machines.java91
1 files changed, 90 insertions, 1 deletions
diff --git a/src/main/java/gregtech/common/blocks/GT_Item_Machines.java b/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
index 55743f445d..b59dd1d848 100644
--- a/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
+++ b/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
@@ -30,10 +30,12 @@ import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
+import net.minecraftforge.fluids.FluidStack;
+import net.minecraftforge.fluids.IFluidContainerItem;
import java.util.List;
-public class GT_Item_Machines extends ItemBlock {
+public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem {
private static final String[] directionNames = {"Bottom", "Top", "North", "South", "West", "East"};
@@ -89,6 +91,15 @@ public class GT_Item_Machines extends ItemBlock {
}
aList.add(GT_LanguageManager.addStringLocalization("TileEntity_EUp_STORE", "Capacity: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.BLUE + GT_Utility.formatNumbers(tTileEntity.getEUCapacity()) + EnumChatFormatting.GRAY);
}
+ if (GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_QuantumTank || GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_SuperTank) {
+ if (aStack.hasTagCompound() && aStack.stackTagCompound.hasKey("mFluid")) {
+ FluidStack tContents = FluidStack.loadFluidStackFromNBT(aStack.stackTagCompound.getCompoundTag("mFluid"));
+ if (tContents != null && tContents.amount > 0) {
+ aList.add(GT_LanguageManager.addStringLocalization("TileEntity_TANK_INFO", "Contains Fluid: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.YELLOW + tContents.getLocalizedName() + EnumChatFormatting.GRAY);
+ aList.add(GT_LanguageManager.addStringLocalization("TileEntity_TANK_AMOUNT", "Fluid Amount: ", !GregTech_API.sPostloadFinished ) + EnumChatFormatting.GREEN + GT_Utility.formatNumbers(tContents.amount) + " L" + EnumChatFormatting.GRAY);
+ }
+ }
+ }
}
NBTTagCompound aNBT = aStack.getTagCompound();
if (aNBT != null) {
@@ -240,4 +251,82 @@ public class GT_Item_Machines extends ItemBlock {
}
}
}
+
+ @Override
+ public FluidStack getFluid(ItemStack container) {
+ if (container != null) {
+ NBTTagCompound tNBT = container.stackTagCompound;
+ if (tNBT != null && tNBT.hasKey("mFluid", 10)) {
+ return FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("mFluid"));
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public int getCapacity(ItemStack container) {
+ if (container != null) {
+ int tDamage = container.getItemDamage();
+ IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage];
+ if (tMetaTile != null)
+ return tMetaTile.getCapacity();
+ }
+ return 0;
+ }
+
+ @Override
+ public int fill(ItemStack container, FluidStack resource, boolean doFill) {
+ if (container != null && resource != null) {
+ int tDamage = container.getItemDamage();
+ IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage];
+ if (!(tMetaTile instanceof GT_MetaTileEntity_QuantumTank || tMetaTile instanceof GT_MetaTileEntity_SuperTank)) {
+ return 0;
+ }
+ if (container.stackTagCompound == null) container.stackTagCompound = new NBTTagCompound();
+ FluidStack tStoredFluid = getFluid(container);
+ int tCapacity = getCapacity(container);
+ if (tCapacity <= 0) return 0;
+ if (tStoredFluid != null && tStoredFluid.isFluidEqual(resource)) {
+ int tAmount = Math.min(tCapacity - tStoredFluid.amount, resource.amount);
+ if (doFill) {
+ FluidStack tNewFluid = new FluidStack(tStoredFluid, tAmount + tStoredFluid.amount);
+ container.stackTagCompound.setTag("mFluid", tNewFluid.writeToNBT(new NBTTagCompound()));
+ }
+ return tAmount;
+ }
+ if (tStoredFluid == null) {
+ int tAmount = Math.min(tCapacity, resource.amount);
+ if (doFill) {
+ FluidStack tNewFluid = new FluidStack(resource, tAmount);
+ container.stackTagCompound.setTag("mFluid", tNewFluid.writeToNBT(new NBTTagCompound()));
+ }
+ return tAmount;
+ }
+ }
+ return 0;
+ }
+
+ @Override
+ public FluidStack drain(ItemStack container, int maxDrain, boolean doDrain) {
+ if (container != null) {
+ int tDamage = container.getItemDamage();
+ IMetaTileEntity tMetaTile = GregTech_API.METATILEENTITIES[tDamage];
+ if (!(tMetaTile instanceof GT_MetaTileEntity_QuantumTank || tMetaTile instanceof GT_MetaTileEntity_SuperTank)) {
+ return null;
+ }
+ if (container.stackTagCompound == null) container.stackTagCompound = new NBTTagCompound();
+ FluidStack tStoredFluid = getFluid(container);
+ if (tStoredFluid != null) {
+ int tAmount = Math.min(maxDrain, tStoredFluid.amount);
+ FluidStack tNewFluid = new FluidStack(tStoredFluid, tStoredFluid.amount - tAmount);
+ FluidStack tOutputFluid = new FluidStack(tStoredFluid, tAmount);
+ if (doDrain) {
+ if (tNewFluid.amount <= 0) container.stackTagCompound.removeTag("mFluid");
+ else container.stackTagCompound.setTag("mFluid", tNewFluid.writeToNBT(new NBTTagCompound()));
+ }
+ return tOutputFluid;
+ }
+ }
+ return null;
+ }
}