From 70d22c3444c3d65e662a03ecfb141cb4c3ae3fa1 Mon Sep 17 00:00:00 2001 From: Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> Date: Sat, 18 Dec 2021 23:48:45 +0800 Subject: add a quick way to clear tank (#823) --- .../GT_MetaTileEntity_DigitalChestBase.java | 3 +- .../storage/GT_MetaTileEntity_QuantumChest.java | 33 ++++++++++++---------- .../storage/GT_MetaTileEntity_QuantumTank.java | 10 +++++-- .../storage/GT_MetaTileEntity_SuperChest.java | 33 ++++++++++++---------- .../storage/GT_MetaTileEntity_SuperTank.java | 10 +++++-- .../loaders/postload/GT_CraftingRecipeLoader.java | 4 +-- 6 files changed, 54 insertions(+), 39 deletions(-) (limited to 'src/main') 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 c7bd5d0029..0df416d847 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 @@ -35,7 +35,8 @@ public abstract class GT_MetaTileEntity_DigitalChestBase extends GT_MetaTileEnti "This Chest stores " + GT_Utility.formatNumbers(commonSizeCompute(aTier)) + " Blocks", "Use a screwdriver to enable", "voiding items on overflow", - "Can keep its contents when harvested" + "Can keep its contents when harvested", + "Hold shift when harvesting to void its contents" }); } diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java index ca3289e218..cb7504b515 100644 --- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java +++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumChest.java @@ -7,6 +7,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import org.lwjgl.input.Keyboard; public class GT_MetaTileEntity_QuantumChest extends GT_MetaTileEntity_DigitalChestBase { public int mItemCount = 0; @@ -33,24 +34,26 @@ public class GT_MetaTileEntity_QuantumChest extends GT_MetaTileEntity_DigitalChe @Override public void setItemNBT(NBTTagCompound aNBT) { mInvData = new NBTTagList(); - 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()); + if (!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + 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); } - 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); } - 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); } diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumTank.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumTank.java index 1637a126e4..191c908bd5 100644 --- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumTank.java +++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_QuantumTank.java @@ -10,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.input.Keyboard; import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_QTANK; @@ -19,7 +20,8 @@ public class GT_MetaTileEntity_QuantumTank extends GT_MetaTileEntity_BasicTank { public GT_MetaTileEntity_QuantumTank(int aID, String aName, String aNameRegional, int aTier) { super(aID, aName, aNameRegional, aTier, 3, new String[]{ "Stores " + GT_Utility.formatNumbers(commonSizeCompute(aTier)) + "L of fluid", - "Can keep its contents when harvested" + "Can keep its contents when harvested", + "Hold shift when harvesting to void its contents" }); } @@ -55,8 +57,10 @@ public class GT_MetaTileEntity_QuantumTank extends GT_MetaTileEntity_BasicTank { @Override public void setItemNBT(NBTTagCompound aNBT) { - if (mFluid != null && mFluid.amount > 0) - aNBT.setTag("mFluid", mFluid.writeToNBT(new NBTTagCompound())); + if (!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + if (mFluid != null && mFluid.amount > 0) + aNBT.setTag("mFluid", mFluid.writeToNBT(new NBTTagCompound())); + } super.setItemNBT(aNBT); } 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 4614cc409e..2f9062bb2f 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 @@ -7,6 +7,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import org.lwjgl.input.Keyboard; public class GT_MetaTileEntity_SuperChest extends GT_MetaTileEntity_DigitalChestBase { public int mItemCount = 0; @@ -28,24 +29,26 @@ public class GT_MetaTileEntity_SuperChest extends GT_MetaTileEntity_DigitalChest @Override public void setItemNBT(NBTTagCompound aNBT) { mInvData = new NBTTagList(); - 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()); + if (!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + 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); } - 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); } - 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); } diff --git a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperTank.java b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperTank.java index 1aa9f98d82..fc1d034be4 100644 --- a/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperTank.java +++ b/src/main/java/gregtech/common/tileentities/storage/GT_MetaTileEntity_SuperTank.java @@ -10,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.input.Keyboard; import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_QTANK; @@ -19,7 +20,8 @@ public class GT_MetaTileEntity_SuperTank extends GT_MetaTileEntity_BasicTank { public GT_MetaTileEntity_SuperTank(int aID, String aName, String aNameRegional, int aTier) { super(aID, aName, aNameRegional, aTier, 3, new String[]{ "Stores " + GT_Utility.formatNumbers(commonSizeCompute(aTier)) + "L of fluid", - "Can keep its contents when harvested" + "Can keep its contents when harvested", + "Hold shift when harvesting to void its contents" }); } @@ -55,8 +57,10 @@ public class GT_MetaTileEntity_SuperTank extends GT_MetaTileEntity_BasicTank { @Override public void setItemNBT(NBTTagCompound aNBT) { - if (mFluid != null && mFluid.amount > 0) - aNBT.setTag("mFluid", mFluid.writeToNBT(new NBTTagCompound())); + if (!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + if (mFluid != null && mFluid.amount > 0) + aNBT.setTag("mFluid", mFluid.writeToNBT(new NBTTagCompound())); + } super.setItemNBT(aNBT); } diff --git a/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java b/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java index 449aa556bd..fee1a3887a 100644 --- a/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java +++ b/src/main/java/gregtech/loaders/postload/GT_CraftingRecipeLoader.java @@ -507,10 +507,10 @@ public class GT_CraftingRecipeLoader implements Runnable { ItemList.Super_Chest_EV.get(1), ItemList.Super_Chest_IV.get(1), ItemList.Super_Chest_HV.get(1), ItemList.Super_Chest_MV.get(1), ItemList.Super_Chest_LV.get(1), ItemList.Quantum_Chest_EV.get(1), ItemList.Quantum_Chest_IV.get(1), ItemList.Quantum_Chest_HV.get(1), ItemList.Quantum_Chest_MV.get(1), ItemList.Quantum_Chest_LV.get(1), ItemList.Super_Tank_EV.get(1), ItemList.Super_Tank_IV.get(1), ItemList.Super_Tank_HV.get(1), ItemList.Super_Tank_MV.get(1), ItemList.Super_Tank_LV.get(1), - ItemList.Quantum_Chest_EV.get(1), ItemList.Quantum_Chest_IV.get(1), ItemList.Quantum_Chest_HV.get(1), ItemList.Quantum_Chest_MV.get(1), ItemList.Quantum_Chest_LV.get(1) + ItemList.Quantum_Tank_EV.get(1), ItemList.Quantum_Tank_IV.get(1), ItemList.Quantum_Tank_HV.get(1), ItemList.Quantum_Tank_MV.get(1), ItemList.Quantum_Tank_LV.get(1) }; for (ItemStack tItem : tChestAndTank) { - GT_ModHandler.addShapelessCraftingRecipe(tItem, GT_ModHandler.RecipeBits.DISMANTLEABLE, new Object[]{tItem}); + GT_ModHandler.addShapelessCraftingRecipe(tItem, new Object[]{tItem}); } if (GT_Mod.gregtechproxy.mDisableIC2Cables) { -- cgit From edaa52a7c611de1d2cbada493a7458ce893f5c42 Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Sat, 18 Dec 2021 23:59:01 +0800 Subject: Add tooltip to ghost circuit slot (#821) Also tweaked allowPutStack to consider configured circuits as well. --- .../api/gui/GT_GUIContainer_BasicMachine.java | 25 +++++++++++++++------- .../GT_MetaTileEntity_BasicMachine.java | 12 +++++++++++ .../GT_MetaTileEntity_BasicMachine_GT_Recipe.java | 10 ++++----- src/main/resources/assets/gregtech/lang/en_US.lang | 4 ++++ 4 files changed, 38 insertions(+), 13 deletions(-) (limited to 'src/main') diff --git a/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java b/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java index f9580aa5fd..dc61578362 100644 --- a/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java +++ b/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java @@ -8,10 +8,13 @@ import gregtech.api.net.GT_Packet_SetConfigurationCircuit; import gregtech.api.util.GT_Utility; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; -import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; import static gregtech.api.enums.GT_Values.RES_PATH_GUI; @@ -24,6 +27,12 @@ import static gregtech.api.enums.GT_Values.RES_PATH_GUI; */ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machine { + private static final List GHOST_CIRCUIT_TOOLTIP = Arrays.asList( + "GT5U.machines.select_circuit.tooltip", + "GT5U.machines.select_circuit.tooltip.1", + "GT5U.machines.select_circuit.tooltip.2", + "GT5U.machines.select_circuit.tooltip.3" + ); public final String mName, mNEI; @@ -86,17 +95,17 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin int yStart = (height - ySize) / 2; int x = x2 - xStart; int y = y2 - yStart + 5; - List list = new ArrayList<>(); if (y >= 67 && y <= 84) { - if (x >= 7 && x <= 24) { - list.add("Fluid Auto-Output"); + if (mRenderAutoOutputSlots && x >= 7 && x <= 24) { + drawHoveringText(Collections.singletonList("Fluid Auto-Output"), x2, y2, fontRendererObj); } - if (x >= 25 && x <= 42) { - list.add("Item Auto-Output"); + if (mRenderAutoOutputSlots && x >= 25 && x <= 42) { + drawHoveringText(Collections.singletonList("Item Auto-Output"), x2, y2, fontRendererObj); + } + if (getMachine().allowSelectCircuit() && getMachine().getStackInSlot(getMachine().getCircuitSlot()) == null && x >= 153 && x <= 180) { + drawHoveringText(GHOST_CIRCUIT_TOOLTIP.stream().map(StatCollector::translateToLocal).collect(Collectors.toList()), x2, y2, fontRendererObj); } } - if (!list.isEmpty()) - drawHoveringText(list, x2, y2, fontRendererObj); } @Override diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java index d4f19c5fbe..08fbd4c1dc 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java @@ -893,6 +893,18 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B return false; } + protected final ItemStack[] appendSelectedCircuit(ItemStack... inputs) { + if (allowSelectCircuit()) { + ItemStack circuit = getStackInSlot(getCircuitSlot()); + if (circuit != null) { + ItemStack[] result = Arrays.copyOf(inputs, inputs.length + 1); + result[inputs.length] = circuit; + return result; + } + } + return inputs; + } + /** * This might be non-final in the future, but for now, no, don't change this. */ diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java index f87f4532e3..feeebf0cf4 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java @@ -773,7 +773,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_ else return this.getRecipeList().findRecipe( this.getBaseMetaTileEntity(), this.mLastRecipe, true, true, V[this.mTier], new FluidStack[]{this.getFillableStack()}, - this.getSpecialSlot(), new ItemStack[]{aStack} + this.getSpecialSlot(), appendSelectedCircuit(aStack) ) != null; case 2: @@ -790,9 +790,9 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_ this.getRecipeList().findRecipe( this.getBaseMetaTileEntity(), this.mLastRecipe, true, true, V[this.mTier], new FluidStack[]{this.getFillableStack()}, - this.getSpecialSlot(), aIndex == this.getInputSlot() ? - new ItemStack[]{aStack, this.getInputAt(1)} : - new ItemStack[]{this.getInputAt(0), aStack} + this.getSpecialSlot(), aIndex == this.getInputSlot() ? + appendSelectedCircuit(aStack, this.getInputAt(1)) : + appendSelectedCircuit(this.getInputAt(0), aStack) ) != null ) ) @@ -803,7 +803,7 @@ public class GT_MetaTileEntity_BasicMachine_GT_Recipe extends GT_MetaTileEntity_ if (tID >= 211 && tID <= 218 || tID >= 1180 && tID <= 1187 || tID >= 10780 && tID <= 10786) { //assembler lv-iv; circuit asseblers lv - uv; assemblers luv-uev if (GT_Utility.isStackValid(aStack)) for (int oreID : OreDictionary.getOreIDs(aStack)) { - if (OreDictionary.getOreName(oreID).contains("circuit")) + if (OreDictionary.getOreName(oreID).startsWith("circuit")) return true; } } diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang index 3680bfa9c8..8a75355f64 100644 --- a/src/main/resources/assets/gregtech/lang/en_US.lang +++ b/src/main/resources/assets/gregtech/lang/en_US.lang @@ -81,6 +81,10 @@ GT5U.machines.minermulti=Multiblock Miner GT5U.machines.voidoveflow.enabled=Overflow voiding enabled GT5U.machines.voidoveflow.disabled=Overflow voiding disabled GT5U.machines.select_circuit=Select Machine Mode +GT5U.machines.select_circuit.tooltip=Ghost Circuit Slot +GT5U.machines.select_circuit.tooltip.1=§7LMB/RMB/scroll to cycle through the list +GT5U.machines.select_circuit.tooltip.2=§7Shift left click to open GUI +GT5U.machines.select_circuit.tooltip.3=§7Shift right click to clear GT5U.gui.select.current=Current: -- cgit From ba809b8684f0873613aae051880cddc392c9d1b1 Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Sun, 19 Dec 2021 00:49:59 +0800 Subject: Fix derp in BaseMetaPipeEntity during git merge (#824) Also added a bunch of fallback overrides to GT_Cover_None in the case of my stupid programming errors again --- .../api/metatileentity/BaseMetaPipeEntity.java | 48 ++------ .../api/metatileentity/BaseMetaTileEntity.java | 2 +- .../java/gregtech/api/objects/GT_Cover_None.java | 135 +++++++++++++++++++++ .../gregtech/api/util/GT_CoverBehaviorBase.java | 6 +- .../common/covers/GT_Cover_Fluidfilter.java | 9 +- 5 files changed, 159 insertions(+), 41 deletions(-) (limited to 'src/main') diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java index 52cc09a7eb..e9e229e6a0 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java @@ -99,7 +99,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE try { aNBT.setInteger("mID", mID); for (int i = 0; i < mCoverData.length; i++) { - if (mCoverData[i] != null) + if (mCoverSides[i] != 0 && mCoverData[i] != null) aNBT.setTag(COVER_DATA_NBT_KEYS[i], mCoverData[i].saveDataToNBT()); } aNBT.setIntArray("mCoverSides", mCoverSides); @@ -162,26 +162,6 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE mWorks = !aNBT.getBoolean("mWorks"); if (mCoverSides.length != 6) mCoverSides = new int[]{0, 0, 0, 0, 0, 0}; - // check old form of data - mCoverData = null; - if (aNBT.hasKey("mCoverData", 11)) { - int[] tOldData = aNBT.getIntArray("mCoverData"); - if (tOldData.length == 6) - mCoverData = Arrays.stream(tOldData).mapToObj(ISerializableObject.LegacyCoverData::new).toArray(ISerializableObject[]::new); - } - // if no old data - if (mCoverData == null) { - mCoverData = new ISerializableObject[6]; - for (byte i = 0; i<6; i++) { - GT_CoverBehaviorBase tBehavior = getCoverBehaviorAtSideNew(i); - if (tBehavior == null) - continue; - if (aNBT.hasKey(COVER_DATA_NBT_KEYS[i])) - mCoverData[i] = tBehavior.createDataObject(aNBT.getTag(COVER_DATA_NBT_KEYS[i])); - else - mCoverData[i] = tBehavior.createDataObject(); - } - } if (mSidedRedstone.length != 6) mSidedRedstone = new byte[]{0, 0, 0, 0, 0, 0}; for (byte i = 0; i < 6; i++) mCoverBehaviors[i] = GregTech_API.getCoverBehaviorNew(mCoverSides[i]); @@ -229,12 +209,6 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE } } } - - if (mCoverData == null || mCoverData.length != 6) mCoverData = new ISerializableObject[6]; - if (mCoverSides.length != 6) mCoverSides = new int[]{0, 0, 0, 0, 0, 0}; - if (mSidedRedstone.length != 6) mSidedRedstone = new byte[]{0, 0, 0, 0, 0, 0}; - - for (byte i = 0; i < 6; i++) mCoverBehaviors[i] = GregTech_API.getCoverBehaviorNew(mCoverSides[i]); } private boolean createNewMetatileEntity(short aID) { @@ -920,8 +894,8 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE //Configure Cover, sneak can also be: screwdriver, wrench, side cutter, soldering iron if (aPlayer.isSneaking()) { byte tSide = (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide; - return (getCoverBehaviorAtSide(tSide).hasCoverGUI()); - } else if (getCoverBehaviorAtSide(aSide).onCoverRightclickClient(aSide, this, aPlayer, aX, aY, aZ)) { + return (getCoverBehaviorAtSideNew(tSide).hasCoverGUI()); + } else if (getCoverBehaviorAtSideNew(aSide).onCoverRightclickClient(aSide, this, aPlayer, aX, aY, aZ)) { return true; } } @@ -1088,7 +1062,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE */ @Override public int[] getAccessibleSlotsFromSide(int aSide) { - if (canAccessData() && (getCoverBehaviorAtSideNew((byte) aSide).letsItemsOut((byte) aSide, getCoverIDAtSide((byte) aSide), getComplexCoverDataAtSide((byte) aSide), -1, this) || getCoverBehaviorAtSide((byte) aSide).letsItemsIn((byte) aSide, getCoverIDAtSide((byte) aSide), getComplexCoverDataAtSide((byte) aSide), -1, this))) + if (canAccessData() && (getCoverBehaviorAtSideNew((byte) aSide).letsItemsOut((byte) aSide, getCoverIDAtSide((byte) aSide), getComplexCoverDataAtSide((byte) aSide), -1, this) || getCoverBehaviorAtSideNew((byte) aSide).letsItemsIn((byte) aSide, getCoverIDAtSide((byte) aSide), getComplexCoverDataAtSide((byte) aSide), -1, this))) return mMetaTileEntity.getAccessibleSlotsFromSide(aSide); return new int[0]; } @@ -1098,7 +1072,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE */ @Override public boolean canInsertItem(int aIndex, ItemStack aStack, int aSide) { - return canAccessData() && getCoverBehaviorAtSide((byte) aSide).letsItemsIn((byte) aSide, getCoverIDAtSide((byte) aSide), getComplexCoverDataAtSide((byte) aSide), aIndex, this) && mMetaTileEntity.canInsertItem(aIndex, aStack, aSide); + return canAccessData() && getCoverBehaviorAtSideNew((byte) aSide).letsItemsIn((byte) aSide, getCoverIDAtSide((byte) aSide), getComplexCoverDataAtSide((byte) aSide), aIndex, this) && mMetaTileEntity.canInsertItem(aIndex, aStack, aSide); } /** @@ -1106,7 +1080,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE */ @Override public boolean canExtractItem(int aIndex, ItemStack aStack, int aSide) { - return canAccessData() && getCoverBehaviorAtSide((byte) aSide).letsItemsOut((byte) aSide, getCoverIDAtSide((byte) aSide), getComplexCoverDataAtSide((byte) aSide), aIndex, this) && mMetaTileEntity.canExtractItem(aIndex, aStack, aSide); + return canAccessData() && getCoverBehaviorAtSideNew((byte) aSide).letsItemsOut((byte) aSide, getCoverIDAtSide((byte) aSide), getComplexCoverDataAtSide((byte) aSide), aIndex, this) && mMetaTileEntity.canExtractItem(aIndex, aStack, aSide); } @Override @@ -1116,7 +1090,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE @Override public byte getInternalInputRedstoneSignal(byte aSide) { - return (byte) (getCoverBehaviorAtSide(aSide).getRedstoneInput(aSide, getInputRedstoneSignal(aSide), getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this) & 15); + return (byte) (getCoverBehaviorAtSideNew(aSide).getRedstoneInput(aSide, getInputRedstoneSignal(aSide), getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this) & 15); } @Override @@ -1386,11 +1360,11 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE return false; if(isFill && mMetaTileEntity.isLiquidInput((byte) aSide.ordinal()) - && getCoverBehaviorAtSide((byte) aSide.ordinal()).letsFluidIn((byte) aSide.ordinal(), getCoverIDAtSide((byte) aSide.ordinal()), getComplexCoverDataAtSide((byte) aSide.ordinal()), aFluid, this)) + && getCoverBehaviorAtSideNew((byte) aSide.ordinal()).letsFluidIn((byte) aSide.ordinal(), getCoverIDAtSide((byte) aSide.ordinal()), getComplexCoverDataAtSide((byte) aSide.ordinal()), aFluid, this)) return true; if (!isFill && mMetaTileEntity.isLiquidOutput((byte) aSide.ordinal()) - && getCoverBehaviorAtSide((byte) aSide.ordinal()).letsFluidOut((byte) aSide.ordinal(), getCoverIDAtSide((byte) aSide.ordinal()), getComplexCoverDataAtSide((byte) aSide.ordinal()),aFluid, this)) + && getCoverBehaviorAtSideNew((byte) aSide.ordinal()).letsFluidOut((byte) aSide.ordinal(), getCoverIDAtSide((byte) aSide.ordinal()), getComplexCoverDataAtSide((byte) aSide.ordinal()),aFluid, this)) return true; return false; @@ -1436,8 +1410,8 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE if (canAccessData() && (aSide == ForgeDirection.UNKNOWN || (mMetaTileEntity.isLiquidInput((byte) aSide.ordinal()) - && getCoverBehaviorAtSide((byte) aSide.ordinal()).letsFluidIn((byte) aSide.ordinal(), getCoverIDAtSide((byte) aSide.ordinal()), getComplexCoverDataAtSide((byte) aSide.ordinal()), null, this)) - || (mMetaTileEntity.isLiquidOutput((byte) aSide.ordinal()) && getCoverBehaviorAtSide((byte) aSide.ordinal()).letsFluidOut((byte) aSide.ordinal(), getCoverIDAtSide((byte) aSide.ordinal()), getComplexCoverDataAtSide((byte) aSide.ordinal()), null, this)) + && getCoverBehaviorAtSideNew((byte) aSide.ordinal()).letsFluidIn((byte) aSide.ordinal(), getCoverIDAtSide((byte) aSide.ordinal()), getComplexCoverDataAtSide((byte) aSide.ordinal()), null, this)) + || (mMetaTileEntity.isLiquidOutput((byte) aSide.ordinal()) && getCoverBehaviorAtSideNew((byte) aSide.ordinal()).letsFluidOut((byte) aSide.ordinal(), getCoverIDAtSide((byte) aSide.ordinal()), getComplexCoverDataAtSide((byte) aSide.ordinal()), null, this)) // Doesn't need to be connected to get Tank Info -- otherwise things can't connect ) ) diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index d8aeb50ac2..5de34ccc7c 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -140,7 +140,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE aNBT.setLong("mStoredSteam", mStoredSteam); aNBT.setLong("mStoredEnergy", mStoredEnergy); for (int i = 0; i < mCoverData.length; i++) { - if (mCoverData[i] != null) + if (mCoverSides[i] != 0 && mCoverData[i] != null) aNBT.setTag(COVER_DATA_NBT_KEYS[i], mCoverData[i].saveDataToNBT()); } aNBT.setIntArray("mCoverSides", mCoverSides); diff --git a/src/main/java/gregtech/api/objects/GT_Cover_None.java b/src/main/java/gregtech/api/objects/GT_Cover_None.java index 6514571924..073b51511d 100644 --- a/src/main/java/gregtech/api/objects/GT_Cover_None.java +++ b/src/main/java/gregtech/api/objects/GT_Cover_None.java @@ -2,9 +2,14 @@ package gregtech.api.objects; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.util.GT_CoverBehavior; +import gregtech.api.util.ISerializableObject; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; +import static gregtech.api.enums.GT_Values.E; + public class GT_Cover_None extends GT_CoverBehavior { /** @@ -87,4 +92,134 @@ public class GT_Cover_None extends GT_CoverBehavior { public boolean isSimpleCover() { return true; } + + @Override + protected boolean isRedstoneSensitiveImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, long aTimer) { + return false; + } + + @Override + protected ISerializableObject.LegacyCoverData doCoverThingsImpl(byte aSide, byte aInputRedstone, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, long aTimer) { + return aCoverVariable; + } + + @Override + protected boolean onCoverRightClickImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { + return false; + } + + @Override + protected ISerializableObject.LegacyCoverData onCoverScrewdriverClickImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { + return aCoverVariable; + } + + @Override + protected boolean onCoverShiftRightClickImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer) { + return false; + } + + @Override + protected Object getClientGUIImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, World aWorld) { + return null; + } + + @Override + protected boolean onCoverRemovalImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity, boolean aForced) { + return true; + } + + @Override + protected String getDescriptionImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return E; + } + + @Override + protected float getBlastProofLevelImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return 10.0F; + } + + @Override + protected boolean letsRedstoneGoInImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsRedstoneGoOutImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsFibreGoInImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsFibreGoOutImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsEnergyInImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsEnergyOutImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsFluidInImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsFluidOutImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, Fluid aFluid, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsItemsInImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean letsItemsOutImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, int aSlot, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean isGUIClickableImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return true; + } + + @Override + protected boolean manipulatesSidedRedstoneOutputImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return false; + } + + @Override + protected boolean alwaysLookConnectedImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return false; + } + + @Override + protected byte getRedstoneInputImpl(byte aSide, byte aInputRedstone, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return aInputRedstone; + } + + @Override + protected int getTickRateImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return 0; + } + + @Override + protected byte getLensColorImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return -1; + } + + @Override + protected ItemStack getDropImpl(byte aSide, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + return null; + } } diff --git a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java index c0fcc0708f..a6970ed4bd 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java @@ -50,7 +50,11 @@ public abstract class GT_CoverBehaviorBase { } private T forceCast(ISerializableObject aData) { - return typeToken.cast(aData); + try { + return typeToken.cast(aData); + } catch (Exception e) { + throw new RuntimeException("Casting data in " + this.getClass() + ", data " + aData, e); + } } // region facade diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java index 893183b785..5fb54db129 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java @@ -19,6 +19,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; @@ -331,7 +332,8 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehaviorBase= 0) + tNBT.setString("mFluid", FluidRegistry.getFluid(mFluidID).getName()); return tNBT; } @@ -345,7 +347,10 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehaviorBase Date: Sun, 19 Dec 2021 03:35:12 +0800 Subject: Ignore stack size in collision checking (#825) --- src/main/java/gregtech/api/util/GT_Recipe.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main') diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java index d459d4626d..9fcdac0b51 100644 --- a/src/main/java/gregtech/api/util/GT_Recipe.java +++ b/src/main/java/gregtech/api/util/GT_Recipe.java @@ -902,7 +902,7 @@ public class GT_Recipe implements Comparable { aRecipe.mFakeRecipe = aFakeRecipe; if (aRecipe.mFluidInputs.length < mMinimalInputFluids && aRecipe.mInputs.length < mMinimalInputItems) return null; - if (aCheckForCollisions && findRecipe(null, false, Long.MAX_VALUE, aRecipe.mFluidInputs, aRecipe.mInputs) != null) + if (aCheckForCollisions && findRecipe(null, false, true, Long.MAX_VALUE, aRecipe.mFluidInputs, aRecipe.mInputs) != null) return null; return add(aRecipe); } -- cgit