Fix pipe behaviors (#1329)
* Try to fix #1301 * Fix pipe behavior with covers at side * Fix item pipe & cable behavior * Update * Update 2 * Based on @mitchej123 's work
This commit is contained in:
parent
a40750b3b8
commit
f73c0fd7ef
10 changed files with 109 additions and 42 deletions
|
@ -13,4 +13,6 @@ public interface IConnectable {
|
|||
* Try to disconnect to the Block at the specified side
|
||||
*/
|
||||
public void disconnect(byte aSide);
|
||||
|
||||
public boolean isConnectedAtSide(int aSide);
|
||||
}
|
||||
|
|
|
@ -55,6 +55,7 @@ public interface IMetaTileEntityItemPipe extends IMetaTileEntity {
|
|||
IGregTechTileEntity aBaseMetaTileEntity = aMetaTileEntity.getBaseMetaTileEntity();
|
||||
aMap.put(aMetaTileEntity, aStep);
|
||||
for (byte i = 0, j = 0; i < 6; i++) {
|
||||
if (aMetaTileEntity instanceof IConnectable && !((IConnectable) aMetaTileEntity).isConnectedAtSide(i)) continue;
|
||||
j = GT_Utility.getOppositeSide(i);
|
||||
if (aSuckItems) {
|
||||
if (aBaseMetaTileEntity.getCoverBehaviorAtSide(i).letsItemsIn(i, aBaseMetaTileEntity.getCoverIDAtSide(i), aBaseMetaTileEntity.getCoverDataAtSide(i), -2, aBaseMetaTileEntity)) {
|
||||
|
|
|
@ -41,6 +41,11 @@ public interface IEnergyConnected extends IColoredTileEntity, IHasWorldObjectAnd
|
|||
*/
|
||||
public boolean outputsEnergyTo(byte aSide);
|
||||
|
||||
/**
|
||||
* Are we ready for energy state?
|
||||
*/
|
||||
public boolean energyStateReady();
|
||||
|
||||
/**
|
||||
* Utility for the Network
|
||||
*/
|
||||
|
|
|
@ -1328,4 +1328,9 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE
|
|||
public void onEntityCollidedWithBlock(World aWorld, int aX, int aY, int aZ, Entity collider) {
|
||||
mMetaTileEntity.onEntityCollidedWithBlock(aWorld, aX, aY, aZ, collider);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean energyStateReady() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
|||
private byte[] mSidedRedstone = new byte[]{15, 15, 15, 15, 15, 15};
|
||||
private int[] mCoverSides = new int[]{0, 0, 0, 0, 0, 0}, mCoverData = new int[]{0, 0, 0, 0, 0, 0}, mTimeStatistics = new int[GregTech_API.TICKS_FOR_LAG_AVERAGING];
|
||||
private boolean mHasEnoughEnergy = true, mRunningThroughTick = false, mInputDisabled = false, mOutputDisabled = false, mMuffler = false, mLockUpgrade = false, mActive = false, mRedstone = false, mWorkUpdate = false, mSteamConverter = false, mInventoryChanged = false, mWorks = true, mNeedsUpdate = true, mNeedsBlockUpdate = true, mSendClientData = false, oRedstone = false;
|
||||
private boolean mEnergyStateReady = false;
|
||||
private byte mColor = 0, oColor = 0, mStrongRedstone = 0, oRedstoneData = 63, oTextureData = 0, oUpdateData = 0, oTexturePage=0, oLightValueClient = -1, oLightValue = -1, mLightValue = 0, mOtherUpgrades = 0, mFacing = 0, oFacing = 0, mWorkData = 0;
|
||||
private int mDisplayErrorCode = 0, oX = 0, oY = 0, oZ = 0, mTimeStatisticsIndex = 0, mLagWarningCount = 0;
|
||||
private short mID = 0;
|
||||
|
@ -454,6 +455,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
|||
}
|
||||
}
|
||||
}
|
||||
mEnergyStateReady = true;
|
||||
}
|
||||
|
||||
if (!hasValidMetaTileEntity()) {
|
||||
|
@ -2008,4 +2010,9 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
|||
}
|
||||
return slotIndex + indexShift;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean energyStateReady() {
|
||||
return isClientSide() || mEnergyStateReady;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -165,7 +165,7 @@ public abstract class MetaPipeEntity implements IMetaTileEntity, IConnectable {
|
|||
if (aSide < 6 && mBaseMetaTileEntity.getCoverIDAtSide(aSide) > 0) {
|
||||
tCovered = true;
|
||||
}
|
||||
if((mConnections & (byte)(Math.pow(2, aSide))) != 0){
|
||||
if(isConnectedAtSide(aSide)){
|
||||
tCovered = true;
|
||||
}
|
||||
//System.out.println("Cover: "+mBaseMetaTileEntity.getCoverIDAtSide(aSide));
|
||||
|
@ -711,7 +711,7 @@ public abstract class MetaPipeEntity implements IMetaTileEntity, IConnectable {
|
|||
byte tSide = GT_Utility.getOppositeSide(aSide);
|
||||
IGregTechTileEntity tTileEntity = getBaseMetaTileEntity().getIGregTechTileEntityAtSide(aSide);
|
||||
IMetaTileEntity tPipe = tTileEntity instanceof IGregTechTileEntity ? ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() : null;
|
||||
if (this.getClass().isInstance(tPipe) && (((MetaPipeEntity) tPipe).mConnections & (1 << tSide)) == 0)
|
||||
if (this.getClass().isInstance(tPipe) && !((MetaPipeEntity) tPipe).isConnectedAtSide(tSide))
|
||||
((MetaPipeEntity) tPipe).connect(tSide);
|
||||
return 1;
|
||||
}
|
||||
|
@ -726,4 +726,9 @@ public abstract class MetaPipeEntity implements IMetaTileEntity, IConnectable {
|
|||
if (this.getClass().isInstance(tPipe) && (((MetaPipeEntity) tPipe).mConnections & (1 << tSide)) != 0)
|
||||
((MetaPipeEntity) tPipe).disconnect(tSide);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isConnectedAtSide(int aSide) {
|
||||
return (mConnections & (1 << aSide)) != 0;
|
||||
}
|
||||
}
|
|
@ -140,6 +140,8 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
|
|||
|
||||
@Override
|
||||
public long injectEnergyUnits(byte aSide, long aVoltage, long aAmperage) {
|
||||
if (!isConnectedAtSide(aSide))
|
||||
return 0;
|
||||
if (!getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsEnergyIn(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity()))
|
||||
return 0;
|
||||
return transferElectricity(aSide, aVoltage, aAmperage, new ArrayList<TileEntity>(Arrays.asList((TileEntity) getBaseMetaTileEntity())));
|
||||
|
@ -147,10 +149,12 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
|
|||
|
||||
@Override
|
||||
public long transferElectricity(byte aSide, long aVoltage, long aAmperage, ArrayList<TileEntity> aAlreadyPassedTileEntityList) {
|
||||
if (!isConnectedAtSide(aSide))
|
||||
return 0;
|
||||
long rUsedAmperes = 0;
|
||||
aVoltage -= mCableLossPerMeter;
|
||||
if (aVoltage > 0) for (byte i = 0; i < 6 && aAmperage > rUsedAmperes; i++)
|
||||
if (i != aSide && (mConnections & (1 << i)) != 0 && getBaseMetaTileEntity().getCoverBehaviorAtSide(i).letsEnergyOut(i, getBaseMetaTileEntity().getCoverIDAtSide(i), getBaseMetaTileEntity().getCoverDataAtSide(i), getBaseMetaTileEntity())) {
|
||||
if (i != aSide && isConnectedAtSide(i) && getBaseMetaTileEntity().getCoverBehaviorAtSide(i).letsEnergyOut(i, getBaseMetaTileEntity().getCoverIDAtSide(i), getBaseMetaTileEntity().getCoverDataAtSide(i), getBaseMetaTileEntity())) {
|
||||
TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityAtSide(i);
|
||||
if (!aAlreadyPassedTileEntityList.contains(tTileEntity)) {
|
||||
aAlreadyPassedTileEntityList.add(tTileEntity);
|
||||
|
@ -217,8 +221,15 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
|
|||
if (aTick % 20 == 0) {
|
||||
mTransferredVoltageLast20 = 0;
|
||||
mTransferredAmperageLast20 = 0;
|
||||
for (byte i = 0; i < 6; i++) {
|
||||
if ((mCheckConnections || (mConnections & (1 << i)) != 0) && connect(i) == 0) disconnect(i);
|
||||
for (byte tSide = 0; tSide < 6; tSide++) {
|
||||
IGregTechTileEntity tBaseMetaTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityAtSide(tSide);
|
||||
byte uSide = GT_Utility.getOppositeSide(tSide);
|
||||
if ((mCheckConnections || isConnectedAtSide(tSide)
|
||||
|| aBaseMetaTileEntity.getCoverBehaviorAtSide(tSide).alwaysLookConnected(tSide, aBaseMetaTileEntity.getCoverIDAtSide(tSide), aBaseMetaTileEntity.getCoverDataAtSide(tSide), aBaseMetaTileEntity)
|
||||
|| (tBaseMetaTileEntity != null && tBaseMetaTileEntity.getCoverBehaviorAtSide(uSide).alwaysLookConnected(uSide, tBaseMetaTileEntity.getCoverIDAtSide(uSide), tBaseMetaTileEntity.getCoverDataAtSide(uSide), tBaseMetaTileEntity)))
|
||||
&& connect(tSide) == 0) {
|
||||
disconnect(tSide);
|
||||
}
|
||||
}
|
||||
if (GT_Mod.gregtechproxy.gt6Cable) mCheckConnections = false;
|
||||
}
|
||||
|
@ -238,7 +249,7 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
|
|||
private boolean onConnectionToolRightClick(byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
|
||||
if (GT_Mod.gregtechproxy.gt6Cable) {
|
||||
byte tSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ);
|
||||
if ((mConnections & (1 << tSide)) == 0) {
|
||||
if (!isConnectedAtSide(tSide)) {
|
||||
if (GT_Mod.gregtechproxy.costlyCableConnection && !GT_ModHandler.consumeSolderingMaterial(aPlayer)) return false;
|
||||
if (connect(tSide) > 0)
|
||||
GT_Utility.sendChatToPlayer(aPlayer, trans("214", "Connected"));
|
||||
|
@ -259,7 +270,9 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
|
|||
byte tSide = GT_Utility.getOppositeSide(aSide);
|
||||
TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityAtSide(aSide);
|
||||
if (tTileEntity != null) {
|
||||
if (getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).alwaysLookConnected(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity()) || getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsEnergyIn(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity()) || getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsEnergyOut(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity())) {
|
||||
if (getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).alwaysLookConnected(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity())
|
||||
|| getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsEnergyIn(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity())
|
||||
|| getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsEnergyOut(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity())) {
|
||||
if (tTileEntity instanceof IColoredTileEntity) {
|
||||
if (getBaseMetaTileEntity().getColorization() >= 0) {
|
||||
byte tColor = ((IColoredTileEntity) tTileEntity).getColorization();
|
||||
|
@ -269,17 +282,24 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
|
|||
}
|
||||
if ((tTileEntity instanceof IEnergyConnected && (((IEnergyConnected) tTileEntity).inputEnergyFrom(tSide) || ((IEnergyConnected) tTileEntity).outputsEnergyTo(tSide)))
|
||||
|| (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() instanceof IMetaTileEntityCable
|
||||
&& (((IGregTechTileEntity) tTileEntity).getCoverBehaviorAtSide(tSide).alwaysLookConnected(tSide, ((IGregTechTileEntity) tTileEntity).getCoverIDAtSide(tSide), ((IGregTechTileEntity) tTileEntity).getCoverDataAtSide(tSide), ((IGregTechTileEntity) tTileEntity)) || ((IGregTechTileEntity) tTileEntity).getCoverBehaviorAtSide(tSide).letsEnergyIn(tSide, ((IGregTechTileEntity) tTileEntity).getCoverIDAtSide(tSide), ((IGregTechTileEntity) tTileEntity).getCoverDataAtSide(tSide), ((IGregTechTileEntity) tTileEntity)) || ((IGregTechTileEntity) tTileEntity).getCoverBehaviorAtSide(tSide).letsEnergyOut(tSide, ((IGregTechTileEntity) tTileEntity).getCoverIDAtSide(tSide), ((IGregTechTileEntity) tTileEntity).getCoverDataAtSide(tSide), ((IGregTechTileEntity) tTileEntity))))
|
||||
&& (((IGregTechTileEntity) tTileEntity).getCoverBehaviorAtSide(tSide).alwaysLookConnected(tSide, ((IGregTechTileEntity) tTileEntity).getCoverIDAtSide(tSide), ((IGregTechTileEntity) tTileEntity).getCoverDataAtSide(tSide), ((IGregTechTileEntity) tTileEntity))
|
||||
|| ((IGregTechTileEntity) tTileEntity).getCoverBehaviorAtSide(tSide).letsEnergyIn(tSide, ((IGregTechTileEntity) tTileEntity).getCoverIDAtSide(tSide), ((IGregTechTileEntity) tTileEntity).getCoverDataAtSide(tSide), ((IGregTechTileEntity) tTileEntity))
|
||||
|| ((IGregTechTileEntity) tTileEntity).getCoverBehaviorAtSide(tSide).letsEnergyOut(tSide, ((IGregTechTileEntity) tTileEntity).getCoverIDAtSide(tSide), ((IGregTechTileEntity) tTileEntity).getCoverDataAtSide(tSide), ((IGregTechTileEntity) tTileEntity))))
|
||||
|| (tTileEntity instanceof IEnergySink && ((IEnergySink) tTileEntity).acceptsEnergyFrom((TileEntity) getBaseMetaTileEntity(), ForgeDirection.getOrientation(tSide)))
|
||||
|| (GregTech_API.mOutputRF && tTileEntity instanceof IEnergyReceiver && ((IEnergyReceiver) tTileEntity).canConnectEnergy(ForgeDirection.getOrientation(tSide)))
|
||||
/*|| (tTileEntity instanceof IEnergyEmitter && ((IEnergyEmitter)tTileEntity).emitsEnergyTo((TileEntity)getBaseMetaTileEntity(), ForgeDirection.getOrientation(tSide)))*/) {
|
||||
rConnect = 1;
|
||||
}
|
||||
}
|
||||
} else if (getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4 != getBaseMetaTileEntity().getXCoord() >> 4
|
||||
|| getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4 != getBaseMetaTileEntity().getZCoord() >> 4) { // if chunk unloaded
|
||||
rConnect = -1;
|
||||
}
|
||||
}
|
||||
if (rConnect == 0) {
|
||||
if (!getBaseMetaTileEntity().getWorld().getChunkProvider().chunkExists(getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4, getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4)) { // if chunk unloaded
|
||||
rConnect = -1;
|
||||
}
|
||||
if (tTileEntity instanceof IEnergyConnected && !((IEnergyConnected) tTileEntity).energyStateReady()) { //Not ready
|
||||
rConnect = -1;
|
||||
}
|
||||
}
|
||||
if (rConnect > 0) {
|
||||
super.connect(aSide);
|
||||
}
|
||||
|
|
|
@ -102,7 +102,7 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity {
|
|||
{1, 0, 2, 3},
|
||||
{1, 0, 2, 3}
|
||||
};
|
||||
if (aSide >= 0 && aSide < 6) for (byte i = 0; i < 4; i++) if ((mDisableInput & (1 << sRestrictionArray[aSide][i])) != 0) tMask |= 1 << i;
|
||||
if (aSide >= 0 && aSide < 6) for (byte i = 0; i < 4; i++) if (isInputDisabledAtSide(sRestrictionArray[aSide][i])) tMask |= 1 << i;
|
||||
return new ITexture[]{aConnected ? getBaseTexture(tThickNess, mPipeAmount, mMaterial, aColorIndex) : new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipe.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa)), getRestrictorTexture(tMask)};
|
||||
}
|
||||
|
||||
|
@ -265,16 +265,22 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity {
|
|||
if (mLastReceivedFrom == oLastReceivedFrom) {
|
||||
ConcurrentHashMap<IFluidHandler, ForgeDirection> tTanks = new ConcurrentHashMap<IFluidHandler, ForgeDirection>();
|
||||
|
||||
for (byte tSide = 0, i = 0, j = (byte) aBaseMetaTileEntity.getRandomNumber(6); i < 6; i++) {
|
||||
for (byte tSide = 0, uSide = 0, i = 0, j = (byte) aBaseMetaTileEntity.getRandomNumber(6); i < 6; i++) {
|
||||
tSide = (byte) ((i + j) % 6);
|
||||
if (mCheckConnections || (mConnections & (1 << tSide)) != 0)
|
||||
uSide = GT_Utility.getOppositeSide(tSide);
|
||||
IFluidHandler tTank = aBaseMetaTileEntity.getITankContainerAtSide(tSide);
|
||||
ICoverable tBaseMetaTileEntity = tTank instanceof ICoverable ? (ICoverable) tTank : null;
|
||||
if (mCheckConnections || isConnectedAtSide(tSide)
|
||||
|| aBaseMetaTileEntity.getCoverBehaviorAtSide(tSide).alwaysLookConnected(tSide, aBaseMetaTileEntity.getCoverIDAtSide(tSide), aBaseMetaTileEntity.getCoverDataAtSide(tSide), aBaseMetaTileEntity)
|
||||
|| (tBaseMetaTileEntity != null && tBaseMetaTileEntity.getCoverBehaviorAtSide(uSide).alwaysLookConnected(uSide, tBaseMetaTileEntity.getCoverIDAtSide(uSide), tBaseMetaTileEntity.getCoverDataAtSide(uSide), tBaseMetaTileEntity))) {
|
||||
switch (connect(tSide)) {
|
||||
case 0:
|
||||
disconnect(tSide); break;
|
||||
case 2:
|
||||
if ((mLastReceivedFrom & (1 << tSide)) == 0)
|
||||
tTanks.put(aBaseMetaTileEntity.getITankContainerAtSide(tSide), ForgeDirection.getOrientation(tSide).getOpposite()); break;
|
||||
tTanks.put(tTank, ForgeDirection.getOrientation(tSide).getOpposite()); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (GT_Mod.gregtechproxy.gt6Pipe) mCheckConnections = false;
|
||||
|
||||
|
@ -321,17 +327,17 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity {
|
|||
byte tSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ);
|
||||
byte tMask = (byte) (1 << tSide);
|
||||
if (aPlayer.isSneaking()) {
|
||||
if ((mDisableInput & tMask) != 0) {
|
||||
if (isInputDisabledAtSide(tSide)) {
|
||||
mDisableInput &= ~tMask;
|
||||
GT_Utility.sendChatToPlayer(aPlayer, trans("212", "Input enabled"));
|
||||
if ((mConnections & tMask) == 0)
|
||||
if (!isConnectedAtSide(tSide))
|
||||
connect(tSide);
|
||||
} else {
|
||||
mDisableInput |= tMask;
|
||||
GT_Utility.sendChatToPlayer(aPlayer, trans("213", "Input disabled"));
|
||||
}
|
||||
} else {
|
||||
if ((mConnections & tMask) == 0) {
|
||||
if (!isConnectedAtSide(tSide)) {
|
||||
if (connect(tSide) > 0)
|
||||
GT_Utility.sendChatToPlayer(aPlayer, trans("214", "Connected"));
|
||||
}
|
||||
|
@ -367,9 +373,7 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity {
|
|||
FluidTankInfo[] tInfo = tTileEntity.getTankInfo(ForgeDirection.getOrientation(aSide).getOpposite());
|
||||
if (tInfo != null) {
|
||||
if (tInfo.length > 0) {
|
||||
if ((tTileEntity instanceof ICoverable && ((ICoverable) tTileEntity).getCoverBehaviorAtSide(tSide).alwaysLookConnected(tSide, ((ICoverable) tTileEntity).getCoverIDAtSide(tSide), ((ICoverable) tTileEntity).getCoverDataAtSide(tSide), ((ICoverable) tTileEntity)))
|
||||
|| getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsFluidIn(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), null, getBaseMetaTileEntity())
|
||||
|| getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).alwaysLookConnected(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity())) {
|
||||
if (getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsFluidIn(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), null, getBaseMetaTileEntity())) {
|
||||
rConnect = 1;
|
||||
}
|
||||
if (getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsFluidOut(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), null, getBaseMetaTileEntity())) {
|
||||
|
@ -389,15 +393,17 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity {
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if (getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4 != getBaseMetaTileEntity().getXCoord() >> 4
|
||||
|| getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4 != getBaseMetaTileEntity().getZCoord() >> 4) { // if chunk unloaded
|
||||
rConnect = -1;
|
||||
}
|
||||
if (rConnect == 0) {
|
||||
if (!getBaseMetaTileEntity().getWorld().getChunkProvider().chunkExists(getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4, getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4)) { // if chunk unloaded
|
||||
rConnect = -1;
|
||||
}
|
||||
}
|
||||
if (rConnect > 0) {
|
||||
if (GT_Mod.gregtechproxy.gt6Pipe && tFluidPipe != null) {
|
||||
if ((mDisableInput & (1 << aSide)) == 0 || (tFluidPipe.mDisableInput & (1 << tSide)) == 0) {
|
||||
if (!isInputDisabledAtSide(aSide) || !tFluidPipe.isInputDisabledAtSide(tSide)) {
|
||||
mConnections |= (1 << aSide);
|
||||
if ((tFluidPipe.mConnections & (1 << tSide)) == 0) tFluidPipe.connect(tSide);
|
||||
if (!tFluidPipe.isConnectedAtSide(tSide)) tFluidPipe.connect(tSide);
|
||||
} else rConnect = 0;
|
||||
} else {
|
||||
mConnections |= (1 << aSide);
|
||||
|
@ -588,7 +594,7 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity {
|
|||
|
||||
@Override
|
||||
public boolean isLiquidInput(byte aSide) {
|
||||
return (mDisableInput & (1 << aSide)) == 0;
|
||||
return !isInputDisabledAtSide(aSide);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -596,6 +602,10 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity {
|
|||
return true;
|
||||
}
|
||||
|
||||
public boolean isInputDisabledAtSide(int aSide) {
|
||||
return (mDisableInput & (1 << aSide)) != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World aWorld, int aX, int aY, int aZ) {
|
||||
if (GT_Mod.instance.isClientSide() && (GT_Client.hideValue & 0x2) != 0)
|
||||
|
|
|
@ -164,8 +164,15 @@ public class GT_MetaPipeEntity_Item extends MetaPipeEntity implements IMetaTileE
|
|||
if (aBaseMetaTileEntity.isServerSide() && aTick % 10 == 0) {
|
||||
if (aTick % mTickTime == 0) mTransferredItems = 0;
|
||||
|
||||
for (byte i = 0; i < 6; i++) {
|
||||
if ((mCheckConnections || (mConnections & (1 << i)) != 0) && connect(i) == 0) disconnect(i);
|
||||
for (byte tSide = 0; tSide < 6; tSide++) {
|
||||
ICoverable tBaseMetaTileEntity = aBaseMetaTileEntity.getTileEntityAtSide(tSide) instanceof ICoverable ? (ICoverable) aBaseMetaTileEntity.getTileEntityAtSide(tSide) : null;
|
||||
byte uSide = GT_Utility.getOppositeSide(tSide);
|
||||
if ((mCheckConnections || isConnectedAtSide(tSide)
|
||||
|| aBaseMetaTileEntity.getCoverBehaviorAtSide(tSide).alwaysLookConnected(tSide, aBaseMetaTileEntity.getCoverIDAtSide(tSide), aBaseMetaTileEntity.getCoverDataAtSide(tSide), aBaseMetaTileEntity)
|
||||
|| (tBaseMetaTileEntity != null && tBaseMetaTileEntity.getCoverBehaviorAtSide(uSide).alwaysLookConnected(uSide, tBaseMetaTileEntity.getCoverIDAtSide(uSide), tBaseMetaTileEntity.getCoverDataAtSide(uSide), tBaseMetaTileEntity)))
|
||||
&& connect(tSide) == 0) {
|
||||
disconnect(tSide);
|
||||
}
|
||||
}
|
||||
if (GT_Mod.gregtechproxy.gt6Pipe) mCheckConnections = false;
|
||||
|
||||
|
@ -196,7 +203,7 @@ public class GT_MetaPipeEntity_Item extends MetaPipeEntity implements IMetaTileE
|
|||
public boolean onWrenchRightClick(byte aSide, byte aWrenchingSide, EntityPlayer aPlayer, float aX, float aY, float aZ) {
|
||||
if (GT_Mod.gregtechproxy.gt6Pipe) {
|
||||
byte tSide = GT_Utility.determineWrenchingSide(aSide, aX, aY, aZ);
|
||||
if ((mConnections & (1 << tSide)) == 0) {
|
||||
if (!isConnectedAtSide(tSide)) {
|
||||
if (connect(tSide) > 0)
|
||||
GT_Utility.sendChatToPlayer(aPlayer, trans("214", "Connected"));
|
||||
}
|
||||
|
@ -245,18 +252,18 @@ public class GT_MetaPipeEntity_Item extends MetaPipeEntity implements IMetaTileE
|
|||
}
|
||||
}
|
||||
if (temp) {
|
||||
if ((tTileEntity instanceof ICoverable && ((ICoverable) tTileEntity).getCoverBehaviorAtSide(tSide).alwaysLookConnected(tSide, ((ICoverable) tTileEntity).getCoverIDAtSide(tSide), ((ICoverable) tTileEntity).getCoverDataAtSide(tSide), ((ICoverable) tTileEntity)))
|
||||
|| getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).alwaysLookConnected(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity())
|
||||
|| getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsItemsIn(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), -1, getBaseMetaTileEntity())
|
||||
if (getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsItemsIn(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), -1, getBaseMetaTileEntity())
|
||||
|| getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsItemsOut(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), -1, getBaseMetaTileEntity())) {
|
||||
rConnect = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4 != getBaseMetaTileEntity().getXCoord() >> 4
|
||||
|| getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4 != getBaseMetaTileEntity().getZCoord() >> 4) { // if chunk unloaded
|
||||
rConnect = -1;
|
||||
}
|
||||
if (rConnect == 0) {
|
||||
if (!getBaseMetaTileEntity().getWorld().getChunkProvider().chunkExists(getBaseMetaTileEntity().getOffsetX(aSide, 1) >> 4, getBaseMetaTileEntity().getOffsetZ(aSide, 1) >> 4)) { // if chunk unloaded
|
||||
rConnect = -1;
|
||||
}
|
||||
}
|
||||
if (rConnect > 0) {
|
||||
super.connect(aSide);
|
||||
}
|
||||
|
@ -275,7 +282,7 @@ public class GT_MetaPipeEntity_Item extends MetaPipeEntity implements IMetaTileE
|
|||
byte tOffset = (byte) getBaseMetaTileEntity().getRandomNumber(6), tSide = 0;
|
||||
for (byte i = 0; i < 6; i++) {
|
||||
tSide = (byte) ((i + tOffset) % 6);
|
||||
if (isInventoryEmpty() || (tSide != mLastReceivedFrom || aSender != getBaseMetaTileEntity())) {
|
||||
if (isConnectedAtSide(tSide) && (isInventoryEmpty() || (tSide != mLastReceivedFrom || aSender != getBaseMetaTileEntity()))) {
|
||||
if (insertItemStackIntoTileEntity(aSender, tSide)) return true;
|
||||
}
|
||||
}
|
||||
|
@ -321,18 +328,24 @@ public class GT_MetaPipeEntity_Item extends MetaPipeEntity implements IMetaTileE
|
|||
return mStepSize;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInsertItem(int aIndex, ItemStack aStack, int aSide) {
|
||||
return isConnectedAtSide(aSide) && super.canInsertItem(aIndex, aStack, aSide);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtractItem(int aIndex, ItemStack aStack, int aSide) {
|
||||
return true;
|
||||
return isConnectedAtSide(aSide);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
|
||||
return true;
|
||||
return isConnectedAtSide(aSide);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
|
||||
if (!isConnectedAtSide(aSide)) return false;
|
||||
if (isInventoryEmpty()) mLastReceivedFrom = aSide;
|
||||
return mLastReceivedFrom == aSide && mInventory[aIndex] == null;
|
||||
}
|
||||
|
|
|
@ -145,7 +145,6 @@ public class GT_Client extends GT_Proxy
|
|||
GL11.glVertex3d(+.25D, .0D, +.50D);
|
||||
GL11.glVertex3d(-.25D, .0D, -.50D);
|
||||
GL11.glVertex3d(-.25D, .0D, +.50D);
|
||||
GL11.glLineWidth(2.0F);
|
||||
TileEntity tTile = aEvent.player.worldObj.getTileEntity(aEvent.target.blockX, aEvent.target.blockY, aEvent.target.blockZ);
|
||||
if (tTile instanceof BaseMetaPipeEntity) {
|
||||
int[][] GridSwitchArr = new int[][]{
|
||||
|
@ -656,4 +655,4 @@ public class GT_Client extends GT_Proxy
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue