aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java25
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java48
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java2
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java12
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine_GT_Recipe.java10
-rw-r--r--src/main/java/gregtech/api/objects/GT_Cover_None.java135
-rw-r--r--src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java6
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java2
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java9
-rw-r--r--src/main/resources/assets/gregtech/lang/en_US.lang4
10 files changed, 198 insertions, 55 deletions
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<String> 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<String> 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/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/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/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<T extends ISerializableObject> {
}
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/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<GT_Recipe> {
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);
}
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<GT_Cover_Fluidfil
public NBTBase saveDataToNBT() {
NBTTagCompound tNBT = new NBTTagCompound();
tNBT.setInteger("mFilterMode", mFilterMode);
- tNBT.setString("mFluid", FluidRegistry.getFluid(mFluidID).getName());
+ if (mFluidID >= 0)
+ tNBT.setString("mFluid", FluidRegistry.getFluid(mFluidID).getName());
return tNBT;
}
@@ -345,7 +347,10 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehaviorBase<GT_Cover_Fluidfil
if (aNBT instanceof NBTTagCompound) {
NBTTagCompound tNBT = (NBTTagCompound) aNBT;
mFilterMode = tNBT.getByte("mFilterMod");
- mFluidID = FluidRegistry.getFluidID(tNBT.getString("mFluid"));
+ if (tNBT.hasKey("mFluid", NBT.TAG_STRING))
+ mFluidID = FluidRegistry.getFluidID(tNBT.getString("mFluid"));
+ else
+ mFluidID = -1;
}
}
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: