aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2022-10-09 18:17:10 +0800
committerGitHub <noreply@github.com>2022-10-09 12:17:10 +0200
commiteedb84e125cac3f9fade78ab1ec31e256ba3449f (patch)
treeb68628174d97e2f736f44e145268b01c1120ee4d /src/main
parent7e3b2f926c6ccf6a38b9f541aa9da371b4898bd4 (diff)
downloadGT5-Unofficial-eedb84e125cac3f9fade78ab1ec31e256ba3449f.tar.gz
GT5-Unofficial-eedb84e125cac3f9fade78ab1ec31e256ba3449f.tar.bz2
GT5-Unofficial-eedb84e125cac3f9fade78ab1ec31e256ba3449f.zip
digital chests improvements (#1450)
* unify super chest and quantum chest code base * add item info to waila * add an input filter to digital chests
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Machines.java4
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Item_Machines.java17
-rw-r--r--src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java3
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java58
-rw-r--r--src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperChest.java54
-rw-r--r--src/main/resources/assets/gregtech/lang/en_US.lang2
6 files changed, 69 insertions, 69 deletions
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
index b497ccaa8e..7a1ae279c1 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
@@ -25,7 +25,6 @@ import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_Utility;
import gregtech.common.render.GT_Renderer_Block;
import gregtech.common.tileentities.storage.GT_MetaTileEntity_QuantumChest;
-import gregtech.common.tileentities.storage.GT_MetaTileEntity_SuperChest;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -412,8 +411,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
if (tTileEntity instanceof IGregTechTileEntity) {
final IGregTechTileEntity tGregTechTileEntity = (IGregTechTileEntity) tTileEntity;
mTemporaryTileEntity.set(tGregTechTileEntity);
- if (!(tGregTechTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_SuperChest
- || tGregTechTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_QuantumChest)) {
+ if (!(tGregTechTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_QuantumChest)) {
for (int i = 0; i < tGregTechTileEntity.getSizeInventory(); i++) {
final ItemStack tItem = tGregTechTileEntity.getStackInSlot(i);
if ((tItem != null) && (tItem.stackSize > 0) && (tGregTechTileEntity.isValidSlot(i))) {
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 95de8da0c2..6ee2db6b6e 100644
--- a/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
+++ b/src/main/java/gregtech/common/blocks/GT_Item_Machines.java
@@ -328,8 +328,7 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem {
super.onUpdate(aStack, aWorld, aPlayer, aTimer, aIsInHand);
final short tDamage = (short) getDamage(aStack);
final EntityLivingBase tPlayer = (EntityPlayer) aPlayer;
- if (GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_SuperChest
- || GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_QuantumChest
+ if (GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_QuantumChest
|| GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_SuperTank
|| GregTech_API.METATILEENTITIES[tDamage] instanceof GT_MetaTileEntity_QuantumTank) {
final NBTTagCompound tNBT = aStack.stackTagCompound;
@@ -342,19 +341,19 @@ public class GT_Item_Machines extends ItemBlock implements IFluidContainerItem {
|| (tNBT.hasKey("mFluid")
&& FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("mFluid")).amount > 64000)) {
final FluidStack tFluid = FluidStack.loadFluidStackFromNBT(tNBT.getCompoundTag("mFluid"));
- int tLasing = 1200;
+ int tEffectDuration = 1200;
if (tFluid != null) {
final double tFluidAmount = tFluid.amount;
final double tMiddlePoint = 4096000;
final double tSmoothingCoefficient = 2000000;
- final int tMaxLastingTime = 12000;
+ final int tMaxDuration = 12000;
final double tmp = (tFluidAmount - tMiddlePoint) / tSmoothingCoefficient;
- tLasing = (int) (Math.exp(tmp) / (Math.exp(tmp) + Math.exp(-tmp)) * tMaxLastingTime);
+ tEffectDuration = (int) (Math.exp(tmp) / (Math.exp(tmp) + Math.exp(-tmp)) * tMaxDuration);
}
- tPlayer.addPotionEffect(new PotionEffect(Potion.hunger.id, tLasing, 1));
- tPlayer.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, tLasing, 1));
- tPlayer.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, tLasing, 1));
- tPlayer.addPotionEffect(new PotionEffect(Potion.weakness.id, tLasing, 1));
+ tPlayer.addPotionEffect(new PotionEffect(Potion.hunger.id, tEffectDuration, 1));
+ tPlayer.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, tEffectDuration, 1));
+ tPlayer.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, tEffectDuration, 1));
+ tPlayer.addPotionEffect(new PotionEffect(Potion.weakness.id, tEffectDuration, 1));
}
}
}
diff --git a/src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java b/src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java
index 731db03613..a072017d08 100644
--- a/src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java
+++ b/src/main/java/gregtech/common/gui/GT_Container_QuantumChest.java
@@ -7,7 +7,6 @@ import gregtech.api.gui.GT_Slot_Output;
import gregtech.api.gui.GT_Slot_Render;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.common.tileentities.storage.GT_MetaTileEntity_QuantumChest;
-import gregtech.common.tileentities.storage.GT_MetaTileEntity_SuperChest;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.Slot;
@@ -34,8 +33,6 @@ public class GT_Container_QuantumChest extends GT_ContainerMetaTile_Machine {
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
if (mTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_QuantumChest) {
mContent = ((GT_MetaTileEntity_QuantumChest) mTileEntity.getMetaTileEntity()).mItemCount;
- } else if (mTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_SuperChest) {
- mContent = ((GT_MetaTileEntity_SuperChest) mTileEntity.getMetaTileEntity()).mItemCount;
} else {
mContent = 0;
}
diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
index cb8c57cc5a..28ff39315e 100644
--- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
+++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_DigitalChestBase.java
@@ -16,18 +16,26 @@ import gregtech.api.util.GT_Utility;
import gregtech.common.gui.GT_Container_QuantumChest;
import gregtech.common.gui.GT_GUIContainer_QuantumChest;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import mcp.mobius.waila.api.IWailaConfigHandler;
+import mcp.mobius.waila.api.IWailaDataAccessor;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.Constants;
@Optional.Interface(iface = "appeng.api.storage.IMEMonitor", modid = "appliedenergistics2", striprefs = true)
public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEntity_TieredMachineBlock
implements appeng.api.storage.IMEMonitor<appeng.api.storage.data.IAEItemStack> {
protected boolean mVoidOverflow = false;
+ protected boolean mDisableFilter;
public boolean voidBreak;
private Map<appeng.api.storage.IMEMonitorHandlerReceiver<appeng.api.storage.data.IAEItemStack>, Object> listeners =
null;
@@ -283,6 +291,20 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti
}
@Override
+ public boolean onSolderingToolRightClick(
+ byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
+ if (super.onSolderingToolRightClick(aSide, aWrenchingSide, aPlayer, aX, aY, aZ)) return true;
+ mDisableFilter = !mDisableFilter;
+ GT_Utility.sendChatToPlayer(
+ aPlayer,
+ StatCollector.translateToLocal(
+ mDisableFilter
+ ? "GT5U.machines.digitalchest.inputfilter.disabled"
+ : "GT5U.machines.digitalchest.inputfilter.enabled"));
+ return true;
+ }
+
+ @Override
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTimer) {
if (getBaseMetaTileEntity().isServerSide() && getBaseMetaTileEntity().isAllowedToWork()) {
@@ -450,6 +472,7 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti
aNBT.setInteger("mItemCount", getItemCount());
if (getItemStack() != null) aNBT.setTag("mItemStack", getItemStack().writeToNBT(new NBTTagCompound()));
aNBT.setBoolean("mVoidOverflow", mVoidOverflow);
+ aNBT.setBoolean("mDisableFilter", mDisableFilter);
}
@Override
@@ -458,6 +481,7 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti
if (aNBT.hasKey("mItemStack"))
setItemStack(ItemStack.loadItemStackFromNBT((NBTTagCompound) aNBT.getTag("mItemStack")));
mVoidOverflow = aNBT.getBoolean("mVoidOverflow");
+ mDisableFilter = aNBT.getBoolean("mDisableFilter");
}
@Override
@@ -469,7 +493,11 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti
@Override
public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
if (GregTech_API.mAE2 && GT_Values.disableDigitalChestsExternalAccess && hasActiveMEConnection()) return false;
- return aIndex == 0 && (mInventory[0] == null || GT_Utility.areStacksEqual(mInventory[0], aStack));
+ if (aIndex != 0) return false;
+ if ((mInventory[0] != null && !GT_Utility.areStacksEqual(mInventory[0], aStack))) return false;
+ if (mDisableFilter) return true;
+ if (getItemStack() == null) return mInventory[1] == null || GT_Utility.areStacksEqual(mInventory[1], aStack);
+ return GT_Utility.areStacksEqual(getItemStack(), aStack);
}
@Override
@@ -487,4 +515,32 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti
TextureFactory.builder().addIcon(OVERLAY_SCHEST_GLOW).glow().build()
};
}
+
+ @Override
+ public void getWailaBody(
+ ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
+ super.getWailaBody(itemStack, currenttip, accessor, config);
+ NBTTagCompound tag = accessor.getNBTData();
+ if (tag.hasKey("itemType", Constants.NBT.TAG_COMPOUND)) {
+ currenttip.add("Item Count: " + GT_Utility.parseNumberToString(tag.getInteger("itemCount")));
+ currenttip.add("Item Type: "
+ + ItemStack.loadItemStackFromNBT(tag.getCompoundTag("itemType"))
+ .getDisplayName());
+ } else {
+ currenttip.add("Chest Empty");
+ }
+ }
+
+ @Override
+ public void getWailaNBTData(
+ EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, int z) {
+ super.getWailaNBTData(player, tile, tag, world, x, y, z);
+ ItemStack is = getItemStack();
+ if (GT_Utility.isStackInvalid(is)) return;
+ int realItemCount = getItemCount();
+ if (GT_Utility.isStackValid(mInventory[1]) && GT_Utility.areStacksEqual(mInventory[1], is))
+ realItemCount += mInventory[1].stackSize;
+ tag.setInteger("itemCount", realItemCount);
+ tag.setTag("itemType", is.writeToNBT(new NBTTagCompound()));
+ }
}
diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperChest.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperChest.java
index f2be7312ec..271402f0de 100644
--- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperChest.java
+++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperChest.java
@@ -3,15 +3,8 @@ package gregtech.common.tileentities.storage;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.nbt.NBTTagList;
-public class GT_MetaTileEntity_SuperChest extends GT_MetaTileEntity_DigitalChestBase {
- public int mItemCount = 0;
- public ItemStack mItemStack = null;
- NBTTagList mInvData = null;
+public class GT_MetaTileEntity_SuperChest extends GT_MetaTileEntity_QuantumChest {
public GT_MetaTileEntity_SuperChest(int aID, String aName, String aNameRegional, int aTier) {
super(aID, aName, aNameRegional, aTier);
@@ -26,51 +19,6 @@ public class GT_MetaTileEntity_SuperChest extends GT_MetaTileEntity_DigitalChest
}
@Override
- public void setItemNBT(NBTTagCompound aNBT) {
- mInvData = new NBTTagList();
- if (!voidBreak) {
- for (int i = 0; i < 3; i++) {
- if (mInventory[i] != null) {
- NBTTagCompound tNBT = new NBTTagCompound();
- tNBT.setByte("Count", (byte) mInventory[i].stackSize);
- tNBT.setShort("Damage", (short) mInventory[i].getItemDamage());
- tNBT.setShort("id", (short) Item.getIdFromItem(mInventory[i].getItem()));
- tNBT.setInteger("IntSlot", i);
- if (mInventory[i].hasTagCompound()) {
- tNBT.setTag("tag", mInventory[i].getTagCompound());
- }
- mInvData.appendTag(tNBT);
- }
- }
- if (mItemStack != null) aNBT.setTag("mItemStack", getItemStack().writeToNBT(new NBTTagCompound()));
- aNBT.setTag("Inventory", mInvData);
- aNBT.setInteger("mItemCount", getItemCount());
- aNBT.setBoolean("mVoidOverflow", mVoidOverflow);
- }
- super.setItemNBT(aNBT);
- }
-
- @Override
- protected ItemStack getItemStack() {
- return mItemStack;
- }
-
- @Override
- protected void setItemStack(ItemStack s) {
- mItemStack = s;
- }
-
- @Override
- protected int getItemCount() {
- return mItemCount;
- }
-
- @Override
- public void setItemCount(int aCount) {
- mItemCount = aCount;
- }
-
- @Override
protected String chestName() {
return "Super Chest";
}
diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang
index ce3f362adb..f6327670be 100644
--- a/src/main/resources/assets/gregtech/lang/en_US.lang
+++ b/src/main/resources/assets/gregtech/lang/en_US.lang
@@ -106,6 +106,8 @@ GT5U.machines.oilfluidpump=Oil/Fluid Pump
GT5U.machines.minermulti=Multiblock Miner
GT5U.machines.digitalchest.voidoverflow.enabled=Overflow Voiding Mode §aOn§r
GT5U.machines.digitalchest.voidoverflow.disabled=Overflow Voiding Mode §cOff§r
+GT5U.machines.digitalchest.inputfilter.enabled=Input Filter §aOn§r
+GT5U.machines.digitalchest.inputfilter.disabled=Input Filter §cOff§r
GT5U.machines.digitaltank.tooltip=Stores %sL of fluid
GT5U.machines.digitaltank.tooltip1=Can keep its contents when harvested
GT5U.machines.digitaltank.tooltip2=Sneak when harvesting to void its contents