diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2022-10-09 18:17:10 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-09 12:17:10 +0200 |
commit | eedb84e125cac3f9fade78ab1ec31e256ba3449f (patch) | |
tree | b68628174d97e2f736f44e145268b01c1120ee4d /src/main | |
parent | 7e3b2f926c6ccf6a38b9f541aa9da371b4898bd4 (diff) | |
download | GT5-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')
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 |