aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity')
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java170
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java127
-rw-r--r--src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java453
-rw-r--r--src/main/java/gregtech/api/metatileentity/GregTechTileClientEvents.java2
-rw-r--r--src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java71
-rw-r--r--src/main/java/gregtech/api/metatileentity/MetaTileEntity.java47
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java68
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java79
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Item.java60
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java5
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java8
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java24
12 files changed, 473 insertions, 641 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
index 09b62c0657..31a341040e 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
@@ -22,6 +22,7 @@ import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
+import gregtech.common.covers.CoverInfo;
import java.util.*;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
@@ -79,7 +80,7 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
public void addToLock(TileEntity tileEntity, int side) {
if (node != null) {
- Lock lock = node.locks[side];
+ final Lock lock = node.locks[side];
if (lock != null) {
lock.addTileEntity(tileEntity);
}
@@ -90,7 +91,7 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
public void removeFromLock(TileEntity tileEntity, int side) {
if (node != null) {
- Lock lock = node.locks[side];
+ final Lock lock = node.locks[side];
if (lock != null) {
lock.removeTileEntity(tileEntity);
}
@@ -100,7 +101,7 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
}
public void reloadLocks() {
- IMetaTileEntity meta = getMetaTileEntity();
+ final IMetaTileEntity meta = getMetaTileEntity();
if (meta instanceof MetaPipeEntity) {
((MetaPipeEntity) meta).reloadLocks();
}
@@ -283,12 +284,12 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
(short) yCoord,
zCoord,
mID,
- mCoverSides[0],
- mCoverSides[1],
- mCoverSides[2],
- mCoverSides[3],
- mCoverSides[4],
- mCoverSides[5],
+ getCoverInfoAtSide((byte) 0).getCoverID(),
+ getCoverInfoAtSide((byte) 1).getCoverID(),
+ getCoverInfoAtSide((byte) 2).getCoverID(),
+ getCoverInfoAtSide((byte) 3).getCoverID(),
+ getCoverInfoAtSide((byte) 4).getCoverID(),
+ getCoverInfoAtSide((byte) 5).getCoverID(),
oTextureData = mConnections,
oUpdateData = hasValidMetaTileEntity() ? mMetaTileEntity.getUpdateData() : 0,
oRedstoneData = (byte) (((mSidedRedstone[0] > 0) ? 1 : 0)
@@ -705,16 +706,16 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
@Override
public ITexture[] getTexture(Block aBlock, byte aSide) {
- ITexture rIcon = getCoverTexture(aSide);
+ final ITexture rIcon = getCoverTexture(aSide);
if (rIcon != null) return new ITexture[] {rIcon};
return getTextureUncovered(aSide);
}
@Override
public ITexture[] getTextureCovered(byte aSide) {
- ITexture coverTexture = getCoverTexture(aSide);
- ITexture[] textureUncovered = getTextureUncovered(aSide);
- ITexture[] textureCovered;
+ final ITexture coverTexture = getCoverTexture(aSide);
+ final ITexture[] textureUncovered = getTextureUncovered(aSide);
+ final ITexture[] textureCovered;
if (coverTexture != null) {
textureCovered = Arrays.copyOf(textureUncovered, textureUncovered.length + 1);
textureCovered[textureUncovered.length] = coverTexture;
@@ -762,18 +763,11 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
@Override
public ArrayList<ItemStack> getDrops() {
- ItemStack rStack = new ItemStack(GregTech_API.sBlockMachines, 1, mID);
- NBTTagCompound tNBT = new NBTTagCompound();
- if (mStrongRedstone > 0) tNBT.setByte("mStrongRedstone", mStrongRedstone);
- boolean hasCover = false;
- for (byte i = 0; i < mCoverSides.length; i++) {
- if (mCoverSides[i] != 0) {
- if (mCoverData[i] != null) // this really shouldn't be null if a cover is there already, but whatever
- tNBT.setTag(COVER_DATA_NBT_KEYS[i], mCoverData[i].saveDataToNBT());
- hasCover = true;
- }
- }
- if (hasCover) tNBT.setIntArray("mCoverSides", mCoverSides);
+ final ItemStack rStack = new ItemStack(GregTech_API.sBlockMachines, 1, mID);
+ final NBTTagCompound tNBT = new NBTTagCompound();
+
+ writeCoverNBT(tNBT, true);
+
if (hasValidMetaTileEntity()) mMetaTileEntity.setItemNBT(tNBT);
if (!tNBT.hasNoTags()) rStack.setTagCompound(tNBT);
@@ -791,15 +785,15 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
if (isClientSide()) {
// Configure Cover, sneak can also be: screwdriver, wrench, side cutter, soldering iron
if (aPlayer.isSneaking()) {
- byte tSide =
+ final byte tSide =
(getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide;
- return (getCoverBehaviorAtSideNew(tSide).hasCoverGUI());
+ return (getCoverInfoAtSide(tSide).hasCoverGUI());
} else if (getCoverBehaviorAtSideNew(aSide).onCoverRightclickClient(aSide, this, aPlayer, aX, aY, aZ)) {
return true;
}
}
if (isServerSide()) {
- ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem();
+ final ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem();
if (tCurrentItem != null) {
if (getColorization() >= 0
&& GT_Utility.areStacksEqual(new ItemStack(Items.water_bucket, 1), tCurrentItem)) {
@@ -808,7 +802,7 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
setColorization((byte) -1);
return true;
}
- byte tSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ);
+ final byte tSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ);
if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sWrenchList)) {
if (mMetaTileEntity.onWrenchRightClick(aSide, tSide, aPlayer, aX, aY, aZ)) {
mMetaTileEntity.markDirty();
@@ -823,16 +817,7 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
if (GT_ModHandler.damageOrDechargeItem(tCurrentItem, 1, 200, aPlayer)) {
setCoverDataAtSide(
tSide,
- getCoverBehaviorAtSideNew(tSide)
- .onCoverScrewdriverClick(
- tSide,
- getCoverIDAtSide(tSide),
- getComplexCoverDataAtSide(tSide),
- this,
- aPlayer,
- 0.5F,
- 0.5F,
- 0.5F));
+ getCoverInfoAtSide(tSide).onCoverScrewdriverClick(aPlayer, 0.5F, 0.5F, 0.5F));
mMetaTileEntity.onScrewdriverRightClick(tSide, aPlayer, aX, aY, aZ);
mMetaTileEntity.markDirty();
GT_Utility.sendSoundToPlayers(
@@ -841,17 +826,7 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
} else {
if (GT_ModHandler.damageOrDechargeItem(tCurrentItem, 1, 1000, aPlayer)) {
setCoverDataAtSide(
- aSide,
- getCoverBehaviorAtSideNew(aSide)
- .onCoverScrewdriverClick(
- aSide,
- getCoverIDAtSide(aSide),
- getComplexCoverDataAtSide(aSide),
- this,
- aPlayer,
- aX,
- aY,
- aZ));
+ aSide, getCoverInfoAtSide(aSide).onCoverScrewdriverClick(aPlayer, aX, aY, aZ));
mMetaTileEntity.onScrewdriverRightClick(aSide, aPlayer, aX, aY, aZ);
mMetaTileEntity.markDirty();
GT_Utility.sendSoundToPlayers(
@@ -925,7 +900,9 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
byte coverSide = aSide;
if (getCoverIDAtSide(aSide) == 0) coverSide = tSide;
- if (getCoverIDAtSide(coverSide) == 0) {
+ final CoverInfo coverInfo = getCoverInfoAtSide(coverSide);
+
+ if (coverInfo.getCoverID() == 0) {
if (GT_Utility.isStackInList(tCurrentItem, GregTech_API.sCovers.keySet())) {
if (GregTech_API.getCoverBehaviorNew(tCurrentItem)
.isCoverPlaceable(coverSide, tCurrentItem, this)
@@ -951,34 +928,18 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
}
} else if (aPlayer.isSneaking()) { // Sneak click, no tool -> open cover config or turn back.
aSide = (getCoverIDAtSide(aSide) == 0) ? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ) : aSide;
- return getCoverIDAtSide(aSide) > 0
- && getCoverBehaviorAtSideNew(aSide)
- .onCoverShiftRightClick(
- aSide,
- getCoverIDAtSide(aSide),
- getComplexCoverDataAtSide(aSide),
- this,
- aPlayer);
+ final CoverInfo coverInfo = getCoverInfoAtSide(aSide);
+ return coverInfo.isValid() && coverInfo.onCoverShiftRightClick(aPlayer);
}
- if (getCoverBehaviorAtSideNew(aSide)
- .onCoverRightClick(
- aSide,
- getCoverIDAtSide(aSide),
- getComplexCoverDataAtSide(aSide),
- this,
- aPlayer,
- aX,
- aY,
- aZ)) return true;
+ if (getCoverInfoAtSide(aSide).onCoverRightClick(aPlayer, aX, aY, aZ)) return true;
}
- if (!getCoverBehaviorAtSideNew(aSide)
- .isGUIClickable(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) return false;
+ if (!getCoverInfoAtSide(aSide).isGUIClickable()) return false;
try {
if (!aPlayer.isSneaking() && hasValidMetaTileEntity()) {
- boolean handled = mMetaTileEntity.onRightclick(this, aPlayer, aSide, aX, aY, aZ);
+ final boolean handled = mMetaTileEntity.onRightclick(this, aPlayer, aSide, aX, aY, aZ);
if (handled) {
mMetaTileEntity.markDirty();
}
@@ -1034,21 +995,9 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
*/
@Override
public int[] getAccessibleSlotsFromSide(int aSide) {
- 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);
+ final CoverInfo coverInfo = getCoverInfoAtSide((byte) aSide);
+ if (canAccessData() && (coverInfo.letsItemsOut(-1) || coverInfo.letsItemsIn(-1)))
+ return mMetaTileEntity.getAccessibleSlotsFromSide(aSide);
return GT_Values.emptyIntArray;
}
@@ -1058,13 +1007,7 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
@Override
public boolean canInsertItem(int aIndex, ItemStack aStack, int aSide) {
return canAccessData()
- && getCoverBehaviorAtSideNew((byte) aSide)
- .letsItemsIn(
- (byte) aSide,
- getCoverIDAtSide((byte) aSide),
- getComplexCoverDataAtSide((byte) aSide),
- aIndex,
- this)
+ && getCoverInfoAtSide((byte) aSide).letsItemsIn(aIndex)
&& mMetaTileEntity.canInsertItem(aIndex, aStack, aSide);
}
@@ -1206,30 +1149,18 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
private boolean canMoveFluidOnSide(ForgeDirection aSide, Fluid aFluid, boolean isFill) {
if (aSide == ForgeDirection.UNKNOWN) return true;
- IFluidHandler tTileEntity = getITankContainerAtSide((byte) aSide.ordinal());
+ final IFluidHandler tTileEntity = getITankContainerAtSide((byte) aSide.ordinal());
// Only require a connection if there's something to connect to - Allows fluid cells & buckets to interact with
// the pipe
if (tTileEntity != null && !mMetaTileEntity.isConnectedAtSide((byte) aSide.ordinal())) return false;
if (isFill
&& mMetaTileEntity.isLiquidInput((byte) aSide.ordinal())
- && getCoverBehaviorAtSideNew((byte) aSide.ordinal())
- .letsFluidIn(
- (byte) aSide.ordinal(),
- getCoverIDAtSide((byte) aSide.ordinal()),
- getComplexCoverDataAtSide((byte) aSide.ordinal()),
- aFluid,
- this)) return true;
+ && getCoverInfoAtSide((byte) aSide.ordinal()).letsFluidIn(aFluid)) return true;
if (!isFill
&& mMetaTileEntity.isLiquidOutput((byte) aSide.ordinal())
- && getCoverBehaviorAtSideNew((byte) aSide.ordinal())
- .letsFluidOut(
- (byte) aSide.ordinal(),
- getCoverIDAtSide((byte) aSide.ordinal()),
- getComplexCoverDataAtSide((byte) aSide.ordinal()),
- aFluid,
- this)) return true;
+ && getCoverInfoAtSide((byte) aSide.ordinal()).letsFluidOut(aFluid)) return true;
return false;
}
@@ -1281,24 +1212,11 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection aSide) {
+ final CoverInfo coverInfo = getCoverInfoAtSide((byte) aSide.ordinal());
if (canAccessData()
&& (aSide == ForgeDirection.UNKNOWN
- || (mMetaTileEntity.isLiquidInput((byte) aSide.ordinal())
- && 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))
+ || (mMetaTileEntity.isLiquidInput((byte) aSide.ordinal()) && coverInfo.letsFluidIn(null))
+ || (mMetaTileEntity.isLiquidOutput((byte) aSide.ordinal()) && coverInfo.letsFluidOut(null))
// Doesn't need to be connected to get Tank Info -- otherwise things can't connect
)) return mMetaTileEntity.getTankInfo(aSide);
return new FluidTankInfo[] {};
@@ -1308,7 +1226,7 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity
public boolean addStackToSlot(int aIndex, ItemStack aStack) {
if (GT_Utility.isStackInvalid(aStack)) return true;
if (aIndex < 0 || aIndex >= getSizeInventory()) return false;
- ItemStack tStack = getStackInSlot(aIndex);
+ final ItemStack tStack = getStackInSlot(aIndex);
if (GT_Utility.isStackInvalid(tStack)) {
setInventorySlotContents(aIndex, aStack);
return true;
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
index 821cfcd8a7..1e8ffa0994 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
@@ -1,6 +1,7 @@
package gregtech.api.metatileentity;
import static gregtech.GT_Mod.GT_FML_LOGGER;
+import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES;
import static gregtech.api.enums.GT_Values.NW;
import static gregtech.api.enums.GT_Values.V;
import static gregtech.api.objects.XSTR.XSTR_INSTANCE;
@@ -40,6 +41,7 @@ import gregtech.api.net.GT_Packet_TileEntity;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.*;
import gregtech.common.GT_Pollution;
+import gregtech.common.covers.CoverInfo;
import ic2.api.Direction;
import java.lang.reflect.Field;
import java.util.*;
@@ -215,8 +217,6 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
loadMetaTileNBT(aNBT);
}
- 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)
if (hasValidMetaTileEntity() && mMetaTileEntity.hasSidedRedstoneOutputBehavior())
mSidedRedstone = new byte[] {0, 0, 0, 0, 0, 0};
@@ -400,7 +400,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
}
if (mMetaTileEntity.isEnetOutput() || mMetaTileEntity.isEnetInput()) {
- for (byte i = 0; i < 6; i++) {
+ for (byte i : ALL_VALID_SIDES) {
boolean temp = isEnergyInputSide(i);
if (temp != mActiveEUInputs[i]) {
mActiveEUInputs[i] = temp;
@@ -656,12 +656,12 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
(short) yCoord,
zCoord,
mID,
- mCoverSides[0],
- mCoverSides[1],
- mCoverSides[2],
- mCoverSides[3],
- mCoverSides[4],
- mCoverSides[5],
+ getCoverInfoAtSide((byte) 0).getCoverID(),
+ getCoverInfoAtSide((byte) 1).getCoverID(),
+ getCoverInfoAtSide((byte) 2).getCoverID(),
+ getCoverInfoAtSide((byte) 3).getCoverID(),
+ getCoverInfoAtSide((byte) 4).getCoverID(),
+ getCoverInfoAtSide((byte) 5).getCoverID(),
oTextureData = (byte) ((mFacing & 7)
| (mActive ? 8 : 0)
| (mRedstone ? 16 : 0)
@@ -1147,7 +1147,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
public void generatePowerNodes() {
if (isServerSide() && (isEnetInput() || isEnetOutput())) {
final int time = MinecraftServer.getServer().getTickCounter();
- for (byte i = 0; i < 6; i++) {
+ for (byte i : ALL_VALID_SIDES) {
if (outputsEnergyTo(i, false) || inputEnergyFrom(i, false)) {
final IGregTechTileEntity TE = getIGregTechTileEntityAtSide(i);
if (TE instanceof BaseMetaPipeEntity) {
@@ -1252,8 +1252,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
private boolean isEnergyInputSide(byte aSide) {
if (aSide >= 0 && aSide < 6) {
- if (!getCoverBehaviorAtSideNew(aSide)
- .letsEnergyIn(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) return false;
+ if (!getCoverInfoAtSide(aSide).letsEnergyIn()) return false;
if (isInvalid() || mReleaseEnergy) return false;
if (canAccessData() && mMetaTileEntity.isElectric() && mMetaTileEntity.isEnetInput())
return mMetaTileEntity.isInputFacing(aSide);
@@ -1263,9 +1262,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
private boolean isEnergyOutputSide(byte aSide) {
if (aSide >= 0 && aSide < 6) {
- if (!getCoverBehaviorAtSideNew(aSide)
- .letsEnergyOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this))
- return false;
+ if (!getCoverInfoAtSide(aSide).letsEnergyOut()) return false;
if (isInvalid() || mReleaseEnergy) return mReleaseEnergy;
if (canAccessData() && mMetaTileEntity.isElectric() && mMetaTileEntity.isEnetOutput())
return mMetaTileEntity.isOutputFacing(aSide);
@@ -1460,10 +1457,9 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
return true;
}
- if (!getCoverBehaviorAtSideNew(aSide)
- .isGUIClickable(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this))
- return false;
+ if (!getCoverInfoAtSide(aSide).isGUIClickable()) return false;
}
+
if (isServerSide()) {
if (!privateAccess() || aPlayer.getDisplayName().equalsIgnoreCase(getOwnerName())) {
final ItemStack tCurrentItem = aPlayer.inventory.getCurrentItem();
@@ -1622,6 +1618,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
return true;
}
}
+ // End item != null
} else if (aPlayer.isSneaking()) { // Sneak click, no tool -> open cover config if possible.
aSide = (getCoverIDAtSide(aSide) == 0)
? GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ)
@@ -1647,9 +1644,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
aY,
aZ)) return true;
- if (!getCoverBehaviorAtSideNew(aSide)
- .isGUIClickable(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this))
- return false;
+ if (!getCoverInfoAtSide(aSide).isGUIClickable()) return false;
if (isUpgradable() && tCurrentItem != null) {
if (ItemList.Upgrade_Muffler.isStackEqual(aPlayer.inventory.getCurrentItem())) {
@@ -1736,21 +1731,9 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
*/
@Override
public int[] getAccessibleSlotsFromSide(int aSide) {
- 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);
+ final CoverInfo coverInfo = getCoverInfoAtSide((byte) aSide);
+ if (canAccessData() && (coverInfo.letsItemsOut(-1) || coverInfo.letsItemsIn(-1)))
+ return mMetaTileEntity.getAccessibleSlotsFromSide(aSide);
return GT_Values.emptyIntArray;
}
@@ -1761,13 +1744,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
public boolean canInsertItem(int aIndex, ItemStack aStack, int aSide) {
return canAccessData()
&& (mRunningThroughTick || !mInputDisabled)
- && getCoverBehaviorAtSideNew((byte) aSide)
- .letsItemsIn(
- (byte) aSide,
- getCoverIDAtSide((byte) aSide),
- getComplexCoverDataAtSide((byte) aSide),
- aIndex,
- this)
+ && getCoverInfoAtSide((byte) aSide).letsItemsIn(aIndex)
&& mMetaTileEntity.canInsertItem(aIndex, aStack, aSide);
}
@@ -1998,13 +1975,9 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
&& (mRunningThroughTick || !mInputDisabled)
&& (aSide == ForgeDirection.UNKNOWN
|| (mMetaTileEntity.isLiquidInput((byte) aSide.ordinal())
- && getCoverBehaviorAtSideNew((byte) aSide.ordinal())
- .letsFluidIn(
- (byte) aSide.ordinal(),
- getCoverIDAtSide((byte) aSide.ordinal()),
- getComplexCoverDataAtSide((byte) aSide.ordinal()),
- aFluid == null ? null : aFluid.getFluid(),
- this)))) return mMetaTileEntity.fill(aSide, aFluid, doFill);
+ && getCoverInfoAtSide((byte) aSide.ordinal())
+ .letsFluidIn(aFluid == null ? null : aFluid.getFluid()))))
+ return mMetaTileEntity.fill(aSide, aFluid, doFill);
return 0;
}
@@ -2015,17 +1988,14 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
&& (mRunningThroughTick || !mOutputDisabled)
&& (aSide == ForgeDirection.UNKNOWN
|| (mMetaTileEntity.isLiquidOutput((byte) aSide.ordinal())
- && getCoverBehaviorAtSideNew((byte) aSide.ordinal())
+ && getCoverInfoAtSide((byte) aSide.ordinal())
.letsFluidOut(
- (byte) aSide.ordinal(),
- getCoverIDAtSide((byte) aSide.ordinal()),
- getComplexCoverDataAtSide((byte) aSide.ordinal()),
mMetaTileEntity.getFluid() == null
? null
: mMetaTileEntity
.getFluid()
- .getFluid(),
- this)))) return mMetaTileEntity.drain(aSide, maxDrain, doDrain);
+ .getFluid()))))
+ return mMetaTileEntity.drain(aSide, maxDrain, doDrain);
return null;
}
@@ -2036,13 +2006,9 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
&& (mRunningThroughTick || !mOutputDisabled)
&& (aSide == ForgeDirection.UNKNOWN
|| (mMetaTileEntity.isLiquidOutput((byte) aSide.ordinal())
- && getCoverBehaviorAtSideNew((byte) aSide.ordinal())
- .letsFluidOut(
- (byte) aSide.ordinal(),
- getCoverIDAtSide((byte) aSide.ordinal()),
- getComplexCoverDataAtSide((byte) aSide.ordinal()),
- aFluid == null ? null : aFluid.getFluid(),
- this)))) return mMetaTileEntity.drain(aSide, aFluid, doDrain);
+ && getCoverInfoAtSide((byte) aSide.ordinal())
+ .letsFluidOut(aFluid == null ? null : aFluid.getFluid()))))
+ return mMetaTileEntity.drain(aSide, aFluid, doDrain);
return null;
}
@@ -2053,13 +2019,8 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
&& (mRunningThroughTick || !mInputDisabled)
&& (aSide == ForgeDirection.UNKNOWN
|| (mMetaTileEntity.isLiquidInput((byte) aSide.ordinal())
- && getCoverBehaviorAtSideNew((byte) aSide.ordinal())
- .letsFluidIn(
- (byte) aSide.ordinal(),
- getCoverIDAtSide((byte) aSide.ordinal()),
- getComplexCoverDataAtSide((byte) aSide.ordinal()),
- aFluid,
- this)))) return mMetaTileEntity.canFill(aSide, aFluid);
+ && getCoverInfoAtSide((byte) aSide.ordinal()).letsFluidIn(aFluid))))
+ return mMetaTileEntity.canFill(aSide, aFluid);
return false;
}
@@ -2070,13 +2031,8 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
&& (mRunningThroughTick || !mOutputDisabled)
&& (aSide == ForgeDirection.UNKNOWN
|| (mMetaTileEntity.isLiquidOutput((byte) aSide.ordinal())
- && getCoverBehaviorAtSideNew((byte) aSide.ordinal())
- .letsFluidOut(
- (byte) aSide.ordinal(),
- getCoverIDAtSide((byte) aSide.ordinal()),
- getComplexCoverDataAtSide((byte) aSide.ordinal()),
- aFluid,
- this)))) return mMetaTileEntity.canDrain(aSide, aFluid);
+ && getCoverInfoAtSide((byte) aSide.ordinal()).letsFluidOut(aFluid))))
+ return mMetaTileEntity.canDrain(aSide, aFluid);
return false;
}
@@ -2087,21 +2043,10 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity
if (canAccessData()
&& (aSide == ForgeDirection.UNKNOWN
|| (mMetaTileEntity.isLiquidInput(tSide)
- && getCoverBehaviorAtSideNew(tSide)
- .letsFluidIn(
- tSide,
- getCoverIDAtSide(tSide),
- getComplexCoverDataAtSide(tSide),
- null,
- this))
+ && getCoverInfoAtSide(tSide).letsFluidIn(null))
|| (mMetaTileEntity.isLiquidOutput(tSide)
- && getCoverBehaviorAtSideNew(tSide)
- .letsFluidOut(
- tSide,
- getCoverIDAtSide(tSide),
- getComplexCoverDataAtSide(tSide),
- null,
- this)))) return mMetaTileEntity.getTankInfo(aSide);
+ && getCoverInfoAtSide(tSide).letsFluidOut(null))))
+ return mMetaTileEntity.getTankInfo(aSide);
return new FluidTankInfo[] {};
}
diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java
index 2d29c7b70d..cbd39d3d15 100644
--- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java
@@ -21,7 +21,6 @@ import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Textures;
-import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.gui.modularui.GUITextureSet;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.ICoverable;
@@ -34,6 +33,7 @@ import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.ISerializableObject;
import gregtech.common.GT_Client;
+import gregtech.common.covers.CoverInfo;
import gregtech.common.covers.GT_Cover_Fluidfilter;
import java.util.ArrayList;
import java.util.Arrays;
@@ -49,6 +49,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
@@ -61,6 +62,16 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov
.mapToInt(Enum::ordinal)
.mapToObj(i -> "mCoverData" + i)
.toArray(String[]::new);
+
+ // New Cover Information
+ protected final CoverInfo[] coverInfos = new CoverInfo[] {null, null, null, null, null, null};
+
+ protected byte[] mSidedRedstone = new byte[] {15, 15, 15, 15, 15, 15};
+ protected boolean mRedstone = false;
+ protected byte mStrongRedstone = 0;
+
+ /* Deprecated Cover Variables */
+ @Deprecated
protected final GT_CoverBehaviorBase<?>[] mCoverBehaviors = new GT_CoverBehaviorBase<?>[] {
GregT