aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity
diff options
context:
space:
mode:
authorJason Mitchell <mitchej@gmail.com>2022-04-18 11:16:31 -0700
committerGitHub <noreply@github.com>2022-04-18 20:16:31 +0200
commit44a1027dfa51af1864364c391e67686590ce347f (patch)
tree5f2fa25724841885d9e0cb721a7806812aca8016 /src/main/java/gregtech/api/metatileentity
parentbb4cec9a73ec6c50199de6c48119ddd85e23b013 (diff)
downloadGT5-Unofficial-44a1027dfa51af1864364c391e67686590ce347f.tar.gz
GT5-Unofficial-44a1027dfa51af1864364c391e67686590ce347f.tar.bz2
GT5-Unofficial-44a1027dfa51af1864364c391e67686590ce347f.zip
Multitileentity precursor (#963)
* Refactors * Refactor CoverableTileEntity a bit more, pull out a CommonMetaTileEntity * Add an IDebugableTileEntity interface instead of checking various subclasses * Move more redstone related things to CoverableTileEntity * Add IGTENet * Final and dead code removal * Address a few comments, fix a few comments, remove some more dead code, and add some more finals. * fix bad rebase
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity')
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java198
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java354
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseTileEntity.java114
-rw-r--r--src/main/java/gregtech/api/metatileentity/CommonMetaTileEntity.java162
-rw-r--r--src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java (renamed from src/main/java/gregtech/api/metatileentity/CoverableGregTechTileEntity.java)322
-rw-r--r--src/main/java/gregtech/api/metatileentity/GregTechTileClientEvents.java (renamed from src/main/java/gregtech/api/metatileentity/MetaTileClientEvents.java)2
-rw-r--r--src/main/java/gregtech/api/metatileentity/MetaPipeEntity.java6
-rw-r--r--src/main/java/gregtech/api/metatileentity/MetaTileEntity.java6
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Fluid.java2
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Item.java3
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_EnhancedMultiBlockBase.java11
11 files changed, 594 insertions, 586 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
index f10066edf8..fc67ec1b55 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java
@@ -11,6 +11,7 @@ import java.util.UUID;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Textures;
import gregtech.api.enums.Textures.BlockIcons;
import gregtech.api.graphs.Lock;
@@ -19,6 +20,7 @@ import gregtech.api.graphs.paths.NodePath;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IConnectable;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IDebugableTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.IPipeRenderedTileEntity;
import gregtech.api.net.GT_Packet_TileEntity;
@@ -54,14 +56,13 @@ import static gregtech.api.metatileentity.BaseMetaTileEntity.COVER_DATA_NBT_KEYS
* <p/>
* This is the main TileEntity for EVERYTHING.
*/
-public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements IGregTechTileEntity, IPipeRenderedTileEntity {
+public class BaseMetaPipeEntity extends CommonMetaTileEntity implements IGregTechTileEntity, IPipeRenderedTileEntity, IDebugableTileEntity {
public byte mConnections = IConnectable.NO_CONNECTION;
protected MetaPipeEntity mMetaTileEntity;
- private byte[] mSidedRedstone = new byte[]{0, 0, 0, 0, 0, 0};
private int[] mTimeStatistics = new int[GregTech_API.TICKS_FOR_LAG_AVERAGING];
- private boolean mInventoryChanged = false, mWorkUpdate = false, mWorks = true, mNeedsUpdate = true, mNeedsBlockUpdate = true, mSendClientData = false;
+ private boolean mWorkUpdate = false, mWorks = true;
private final boolean mCheckConnections = false;
- private byte mColor = 0, oColor = 0, mStrongRedstone = 0, oStrongRedstone = 0, oRedstoneData = 63, oTextureData = 0, oUpdateData = 0, mLagWarningCount = 0;
+ private byte mColor = 0, oColor = 0, oStrongRedstone = 0, oRedstoneData = 63, oTextureData = 0, oUpdateData = 0, mLagWarningCount = 0;
private int oX = 0, oY = 0, oZ = 0, mTimeStatisticsIndex = 0;
protected Node node;
protected NodePath nodePath;
@@ -119,20 +120,16 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
try {
super.writeToNBT(aNBT);
} catch (Throwable e) {
- GT_Log.err.println("Encountered CRITICAL ERROR while saving MetaTileEntity, the Chunk whould've been corrupted by now, but I prevented that. Please report immediately to GregTech Intergalactical!!!");
- e.printStackTrace(GT_Log.err);
+ GT_FML_LOGGER.error("Encountered CRITICAL ERROR while saving MetaTileEntity", e);
}
try {
aNBT.setInteger("mID", mID);
- saveCoverNBT(aNBT);
- aNBT.setByteArray("mRedstoneSided", mSidedRedstone);
+ writeCoverNBT(aNBT, false);
aNBT.setByte("mConnections", mConnections);
aNBT.setByte("mColor", mColor);
- aNBT.setByte("mStrongRedstone", mStrongRedstone);
aNBT.setBoolean("mWorks", !mWorks);
} catch (Throwable e) {
- GT_Log.err.println("Encountered CRITICAL ERROR while saving MetaTileEntity, the Chunk would've been corrupted by now, but I prevented that. Please report immediately to GregTech Intergalactical!!!");
- e.printStackTrace(GT_Log.err);
+ GT_FML_LOGGER.error("Encountered CRITICAL ERROR while saving MetaTileEntity", e);
}
saveMetaTileNBT(aNBT);
}
@@ -152,15 +149,13 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
} else {
if (aID <= 0) mID = (short) aNBT.getInteger("mID");
else mID = aID;
- mSidedRedstone = aNBT.getByteArray("mRedstoneSided");
mConnections = aNBT.getByte("mConnections");
mColor = aNBT.getByte("mColor");
- mStrongRedstone = aNBT.getByte("mStrongRedstone");
mWorks = !aNBT.getBoolean("mWorks");
if (mSidedRedstone.length != 6) mSidedRedstone = new byte[]{0, 0, 0, 0, 0, 0};
- loadCoverNBT(aNBT);
+ readCoverNBT(aNBT);
loadMetaTileNBT(aNBT);
}
}
@@ -206,7 +201,7 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
if (!doCoverThings())
return;
- byte oldConnections = mConnections;
+ final byte oldConnections = mConnections;
// Mask-out connection direction bits to keep only Foam related connections
mConnections = (byte) (mMetaTileEntity.mConnections | (mConnections & ~IConnectable.CONNECTED_ALL));
// If foam not hardened, tries roll chance to harden
@@ -266,7 +261,7 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
tTime = System.nanoTime() - tTime;
if (mTimeStatistics.length > 0)
mTimeStatistics[mTimeStatisticsIndex = (mTimeStatisticsIndex + 1) % mTimeStatistics.length] = (int) tTime;
- if (tTime > 0 && tTime > (GregTech_API.MILLISECOND_THRESHOLD_UNTIL_LAG_WARNING*1000000) && mTickTimer > 1000 && getMetaTileEntity().doTickProfilingMessageDuringThisTick() && mLagWarningCount++ < 10)
+ if (tTime > 0 && tTime > (GregTech_API.MILLISECOND_THRESHOLD_UNTIL_LAG_WARNING* 1000000L) && mTickTimer > 1000 && getMetaTileEntity().doTickProfilingMessageDuringThisTick() && mLagWarningCount++ < 10)
GT_FML_LOGGER.warn("WARNING: Possible Lag Source at ["+xCoord+","+yCoord+","+zCoord+"] in Dimension "+worldObj.provider.dimensionId+" with "+tTime+" ns caused by an instance of "+getMetaTileEntity().getClass());
}
@@ -289,12 +284,6 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
sendCoverDataIfNeeded();
}
- @Override
- public Packet getDescriptionPacket() {
- issueClientUpdate();
- return null;
- }
-
public final void receiveMetaTileEntityData(short aID, int aCover0, int aCover1, int aCover2, int aCover3, int aCover4, int aCover5, byte aTextureData, byte aUpdateData, byte aRedstoneData, byte aColorData) {
issueTextureUpdate();
if (aID > 0 && mID != aID) {
@@ -309,10 +298,10 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
setCoverIDAtSide((byte) 4, aCover4);
setCoverIDAtSide((byte) 5, aCover5);
- receiveClientEvent(MetaTileClientEvents.CHANGE_COMMON_DATA, aTextureData);
- receiveClientEvent(MetaTileClientEvents.CHANGE_CUSTOM_DATA, aUpdateData);
- receiveClientEvent(MetaTileClientEvents.CHANGE_COLOR, aColorData);
- receiveClientEvent(MetaTileClientEvents.CHANGE_REDSTONE_OUTPUT, aRedstoneData);
+ receiveClientEvent(GregTechTileClientEvents.CHANGE_COMMON_DATA, aTextureData);
+ receiveClientEvent(GregTechTileClientEvents.CHANGE_CUSTOM_DATA, aUpdateData);
+ receiveClientEvent(GregTechTileClientEvents.CHANGE_COLOR, aColorData);
+ receiveClientEvent(GregTechTileClientEvents.CHANGE_REDSTONE_OUTPUT, aRedstoneData);
}
@Override
@@ -323,25 +312,24 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
try {
mMetaTileEntity.receiveClientEvent((byte) aEventID, (byte) aValue);
} catch (Throwable e) {
- GT_Log.err.println("Encountered Exception while receiving Data from the Server, the Client should've been crashed by now, but I prevented that. Please report immediately to GregTech Intergalactical!!!");
- e.printStackTrace(GT_Log.err);
+ GT_FML_LOGGER.error("Encountered Exception while receiving Data from the Server", e);
}
}
if (isClientSide()) {
issueTextureUpdate();
switch (aEventID) {
- case MetaTileClientEvents.CHANGE_COMMON_DATA:
+ case GregTechTileClientEvents.CHANGE_COMMON_DATA:
mConnections = (byte) aValue;
break;
- case MetaTileClientEvents.CHANGE_CUSTOM_DATA:
+ case GregTechTileClientEvents.CHANGE_CUSTOM_DATA:
if (hasValidMetaTileEntity()) mMetaTileEntity.onValueUpdate((byte) aValue);
break;
- case MetaTileClientEvents.CHANGE_COLOR:
+ case GregTechTileClientEvents.CHANGE_COLOR:
if (aValue > 16 || aValue < 0) aValue = 0;
mColor = (byte) aValue;
break;
- case MetaTileClientEvents.CHANGE_REDSTONE_OUTPUT:
+ case GregTechTileClientEvents.CHANGE_REDSTONE_OUTPUT:
mSidedRedstone[0] = (byte) ((aValue & 1) == 1 ? 15 : 0);
mSidedRedstone[1] = (byte) ((aValue & 2) == 2 ? 15 : 0);
mSidedRedstone[2] = (byte) ((aValue & 4) == 4 ? 15 : 0);
@@ -349,15 +337,15 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
mSidedRedstone[4] = (byte) ((aValue & 16) == 16 ? 15 : 0);
mSidedRedstone[5] = (byte) ((aValue & 32) == 32 ? 15 : 0);
break;
- case MetaTileClientEvents.DO_SOUND:
+ case GregTechTileClientEvents.DO_SOUND:
if (hasValidMetaTileEntity() && mTickTimer > 20)
mMetaTileEntity.doSound((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5);
break;
- case MetaTileClientEvents.START_SOUND_LOOP:
+ case GregTechTileClientEvents.START_SOUND_LOOP:
if (hasValidMetaTileEntity() && mTickTimer > 20)
mMetaTileEntity.startSoundLoop((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5);
break;
- case MetaTileClientEvents.STOP_SOUND_LOOP:
+ case GregTechTileClientEvents.STOP_SOUND_LOOP:
if (hasValidMetaTileEntity() && mTickTimer > 20)
mMetaTileEntity.stopSoundLoop((byte) aValue, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5);
break;
@@ -366,8 +354,9 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
return true;
}
+ @Override
public ArrayList<String> getDebugInfo(EntityPlayer aPlayer, int aLogLevel) {
- ArrayList<String> tList = new ArrayList<String>();
+ final ArrayList<String> tList = new ArrayList<>();
if (aLogLevel > 2) {
tList.add("Meta-ID: " + EnumChatFormatting.BLUE+ mID +EnumChatFormatting.RESET + (hasValidMetaTileEntity() ? EnumChatFormatting.GREEN+" valid"+EnumChatFormatting.RESET : EnumChatFormatting.RED+" invalid"+EnumChatFormatting.RESET) + (mMetaTileEntity == null ? EnumChatFormatting.RED+" MetaTileEntity == null!"+EnumChatFormatting.RESET : " "));
}
@@ -395,52 +384,11 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
}
@Override
- public void issueTextureUpdate() {
- mNeedsUpdate = true;
- }
-
- @Override
- public void issueBlockUpdate() {
- mNeedsBlockUpdate = true;
- }
-
- @Override
- public void issueClientUpdate() {
- mSendClientData = true;
- }
-
- @Override
- public void issueCoverUpdate(byte aSide) {
- super.issueCoverUpdate(aSide);
- issueClientUpdate();
- }
-
- @Override
- public byte getStrongestRedstone() {
- return (byte) Math.max(getInternalInputRedstoneSignal((byte) 0), Math.max(getInternalInputRedstoneSignal((byte) 1), Math.max(getInternalInputRedstoneSignal((byte) 2), Math.max(getInternalInputRedstoneSignal((byte) 3), Math.max(getInternalInputRedstoneSignal((byte) 4), getInternalInputRedstoneSignal((byte) 5))))));
- }
-
- @Override
- public boolean getRedstone() {
- return getRedstone((byte) 0) || getRedstone((byte) 1) || getRedstone((byte) 2) || getRedstone((byte) 3) || getRedstone((byte) 4) || getRedstone((byte) 5);
- }
-
- @Override
- public boolean getRedstone(byte aSide) {
- return getInternalInputRedstoneSignal(aSide) > 0;
- }
-
- @Override
public boolean isGivingInformation() {
if (canAccessData()) return mMetaTileEntity.isGivingInformation();
return false;
}
- @Override
- public boolean isValidFacing(byte aSide) {
- if (canAccessData()) return mMetaTileEntity.isFacingValid(aSide);
- return false;
- }
@Override
public byte getBackFacing() {
@@ -676,23 +624,6 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
}
@Override
- public boolean increaseStoredSteam(long aEnergy, boolean aIgnoreTooMuchEnergy) {
- return false;
- }
-
- @Override
- public String[] getDescription() {
- if (canAccessData()) return mMetaTileEntity.getDescription();
- return new String[0];
- }
-
- @Override
- public boolean isValidSlot(int aIndex) {
- if (canAccessData()) return mMetaTileEntity.isValidSlot(aIndex);
- return false;
- }
-
- @Override
public long getUniversalEnergyStored() {
return Math.max(getStoredEU(), getStoredSteam());
}
@@ -712,15 +643,6 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
return 0;
}
- @Override
- public long getStoredSteam() {
- return 0;
- }
-
- @Override
- public long getSteamCapacity() {
- return 0;
- }
@Override
public ITexture[] getTexture(Block aBlock, byte aSide) {
@@ -764,9 +686,6 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
return mMetaTileEntity != null && mMetaTileEntity.getBaseMetaTileEntity() == this;
}
- protected boolean canAccessData() {
- return hasValidMetaTileEntity() && !isDead;
- }
@Override
public void doExplosion(long aAmount) {
@@ -935,8 +854,7 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
return handled;
}
} catch (Throwable e) {
- GT_Log.err.println("Encountered Exception while rightclicking TileEntity, the Game should've crashed now, but I prevented that. Please report immediately to GregTech Intergalactical!!!");
- e.printStackTrace(GT_Log.err);
+ GT_FML_LOGGER.error("Encountered Exception while right clicking TileEntity", e);
}
return false;
@@ -947,8 +865,7 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
try {
if (aPlayer != null && hasValidMetaTileEntity()) mMetaTileEntity.onLeftclick(this, aPlayer);
} catch (Throwable e) {
- GT_Log.err.println("Encountered Exception while leftclicking TileEntity, the Game should've crashed now, but I prevented that. Please report immediately to GregTech Intergalactical!!!");
- e.printStackTrace(GT_Log.err);
+ GT_FML_LOGGER.error("Encountered Exception while left clicking TileEntity", e);
}
}
@@ -988,7 +905,7 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
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);
- return new int[0];
+ return GT_Values.emptyIntArray;
}
/**
@@ -1013,36 +930,6 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
}
@Override
- public byte getInternalInputRedstoneSignal(byte aSide) {
- return (byte) (getCoverBehaviorAtSideNew(aSide).getRedstoneInput(aSide, getInputRedstoneSignal(aSide), getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this) & 15);
- }
-
- @Override
- public byte getInputRedstoneSignal(byte aSide) {
- return (byte) (worldObj.getIndirectPowerLevelTo(getOffsetX(aSide, 1), getOffsetY(aSide, 1), getOffsetZ(aSide, 1), aSide) & 15);
- }
-
- @Override
- public byte getOutputRedstoneSignal(byte aSide) {
- return (byte) (getCoverBehaviorAtSideNew(aSide).manipulatesSidedRedstoneOutput(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this) || (getCoverBehaviorAtSideNew(aSide).letsRedstoneGoOut(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this)) ? mSidedRedstone[aSide] & 15 : 0);
- }
-
- @Override
- public void setInternalOutputRedstoneSignal(byte aSide, byte aStrength) {
- if (!getCoverBehaviorAtSideNew(aSide).manipulatesSidedRedstoneOutput(aSide, getCoverIDAtSide(aSide), getComplexCoverDataAtSide(aSide), this))
- setOutputRedstoneSignal(aSide, aStrength);
- }
-
- @Override
- public void setOutputRedstoneSignal(byte aSide, byte aStrength) {
- aStrength = (byte) Math.min(Math.max(0, aStrength), 15);
- if (aSide >= 0 && aSide < 6 && mSidedRedstone[aSide] != aStrength) {
- mSidedRedstone[aSide] = aStrength;
- issueBlockUpdate();
- }
- }
-
- @Override
public boolean isSteamEngineUpgradable() {
return isUpgradable() && !hasSteamEngineUpgrade() && getSteamCapacity() > 0;
}
@@ -1062,13 +949,8 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
}
@Override
- public boolean hasInventoryBeenModified() {
- return mInventoryChanged;
- }
-
- @Override
public void setGenericRedstoneOutput(boolean aOnOff) {
- //
+ // Do nothing
}
@Override
@@ -1132,17 +1014,6 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
}
@Override
- public byte getStrongOutputRedstoneSignal(byte aSide) {
- return aSide >= 0 && aSide < 6 && (mStrongRedstone & (1 << aSide)) != 0 ? (byte) (mSidedRedstone[aSide] & 15) : 0;
- }
-
- @Override
- public void setStrongOutputRedstoneSignal(byte aSide, byte aStrength) {
- mStrongRedstone |= (1 << aSide);
- setOutputRedstoneSignal(aSide, aStrength);
- }
-
- @Override
public ItemStack decrStackSize(int aIndex, int aAmount) {
if (canAccessData()) {
mInventoryChanged = true;
@@ -1244,11 +1115,6 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
}
@Override
- public boolean isInvalidTileEntity() {
- return isInvalid();
- }
-
- @Override
public boolean addStackToSlot(int aIndex, ItemStack aStack) {
if (GT_Utility.isStackInvalid(aStack)) return true;
if (aIndex < 0 || aIndex >= getSizeInventory()) return false;
@@ -1333,12 +1199,6 @@ public class BaseMetaPipeEntity extends CoverableGregTechTileEntity implements I
return mConnections;
}
- @Override
- public void markDirty() {
- super.markDirty();
- mInventoryChanged = true;
- }
-
public void onNeighborBlockChange(int aX, int aY, int aZ) {
if (canAccessData()) {
final IMetaTileEntity meta = getMetaTileEntity();
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
index 78d73d6a51..5d62a112aa 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java
@@ -15,8 +15,10 @@ import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructableProvider;
import com.gtnewhorizon.structurelib.alignment.enumerable.ExtendedFacing;
import cpw.mods.fml.common.Optional;
+import cpw.mods.fml.relauncher.ReflectionHelper;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
+import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.graphs.GenerateNodeMap;
@@ -24,17 +26,16 @@ import gregtech.api.graphs.GenerateNodeMapPower;
import gregtech.api.graphs.Node;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IDebugableTileEntity;
import gregtech.api.interfaces.tileentity.IEnergyConnected;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.IGregtechWailaProvider;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Transformer;
import gregtech.api.net.GT_Packet_TileEntity;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.*;
import gregtech.common.GT_Pollution;
-import gregtech.crossmod.GregtechWailaDataProvider;
import ic2.api.Direction;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
@@ -47,7 +48,6 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.network.Packet;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
@@ -63,6 +63,7 @@ import javax.annotation.Nullable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.UUID;
@@ -79,7 +80,7 @@ import static gregtech.api.objects.XSTR.XSTR_INSTANCE;
@Optional.InterfaceList(value = {
@Optional.Interface(iface = "appeng.api.networking.security.IActionHost", modid = "appliedenergistics2", striprefs = true),
@Optional.Interface(iface = "appeng.me.helpers.IGridProxyable", modid = "appliedenergistics2", striprefs = true)})
-public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements IGregTechTileEntity, IActionHost, IGridProxyable, IAlignmentProvider, IConstructableProvider, IGregtechWailaProvider {
+public class BaseMetaTileEntity extends CommonMetaTileEntity implements IGregTechTileEntity, IActionHost, IGridProxyable, IAlignmentProvider, IConstructableProvider, IDebugableTileEntity, IGregtechWailaProvider {
protected MetaTileEntity mMetaTileEntity;
protected long mStoredEnergy = 0, mStoredSteam = 0;
protected int mAverageEUInputIndex = 0, mAverageEUOutputIndex = 0;
@@ -87,12 +88,11 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
protected long[] mAverageEUInput = new long[]{0, 0, 0, 0, 0}, mAverageEUOutput = new long[]{0, 0, 0, 0, 0};
private final boolean[] mActiveEUInputs = new boolean[]{false, false, false, false, false, false};
private final boolean[] mActiveEUOutputs = new boolean[]{false, false, false, false, false, false};
- private byte[] mSidedRedstone = new byte[]{15, 15, 15, 15, 15, 15};
private final int[] mTimeStatistics = new int[GregTech_API.TICKS_FOR_LAG_AVERAGING];
private boolean mHasEnoughEnergy = true, mRunningThroughTick = false, mInputDisabled = false, mOutputDisabled = false, mMuffler = false, mLockUpgrade = false;
- private boolean mActive = false, mRedstone = false, mWorkUpdate = false, mSteamConverter = false, mInventoryChanged = false, mWorks = true, mNeedsUpdate = true;
- private boolean mNeedsBlockUpdate = true, mSendClientData = false, oRedstone = false;
- private byte mColor = 0, oColor = 0, oStrongRedstone = 0, mStrongRedstone = 0, oRedstoneData = 63, oTextureData = 0, oUpdateData = 0, oTexturePage=0;
+ private boolean mActive = false, mWorkUpdate = false, mSteamConverter = false, mWorks = true;
+ private boolean oRedstone = false;
+ private byte mColor = 0, oColor = 0, oStrongRedstone = 0, oRedstoneData = 63, oTextureData = 0, oUpdateData = 0, oTexturePage=0;
private byte 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 long oOutput = 0, mAcceptedAmperes = Long.MAX_VALUE;
@@ -105,25 +105,7 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
public boolean mWasShutdown = false;
- private static final Field ENTITY_ITEM_HEALTH_FIELD;
- static
- {
- Field f = null;
-
- try {
- f = EntityItem.class.getDeclaredField("field_70291_e");
- f.setAccessible(true);
- } catch (Exception e1) {
- try {
- f = EntityItem.class.getDeclaredField("health");
- f.setAccessible(true);
- } catch (Exception e2) {
- e1.printStackTrace();
- e2.printStackTrace();
- }
- }
- ENTITY_ITEM_HEALTH_FIELD = f;
- }
+ private static final Field ENTITY_ITEM_HEALTH_FIELD = ReflectionHelper.findField(EntityItem.class, "health", "field_70291_e");
public BaseMetaTileEntity() {
}
@@ -133,20 +115,17 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
try {
super.writeToNBT(aNBT);
} catch (Throwable e) {
- GT_Log.err.println("Encountered CRITICAL ERROR while saving MetaTileEntity.");
- e.printStackTrace(GT_Log.err);
+ GT_FML_LOGGER.error("Encountered CRITICAL ERROR while saving MetaTileEntity.", e);
}
try {
aNBT.setInteger("mID", mID);
aNBT.setLong("mStoredSteam", mStoredSteam);
aNBT.setLong("mStoredEnergy", mStoredEnergy);
- saveCoverNBT(aNBT);
- aNBT.setByteArray("mRedstoneSided", mSidedRedstone);
+ writeCoverNBT(aNBT, false);
aNBT.setByte("mColor", mColor);
aNBT.setByte("mLightValue", mLightValue);
aNBT.setByte("mOtherUpgrades", mOtherUpgrades);
aNBT.setByte("mWorkData", mWorkData);
- aNBT.setByte("mStrongRedstone", mStrongRedstone);
aNBT.setShort("mFacing", mFacing);
aNBT.setString("mOwnerName", mOwnerName);
aNBT.setString("mOwnerUuid", mOwnerUuid == null ? "" : mOwnerUuid.toString());
@@ -154,15 +133,13 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
aNBT.setBoolean("mMuffler", mMuffler);
aNBT.setBoolean("mSteamConverter", mSteamConverter);
aNBT.setBoolean("mActive", mActive);
- aNBT.setBoolean("mRedstone", mRedstone);
aNBT.setBoolean("mWorks", !mWorks);
aNBT.setBoolean("mInputDisabled", mInputDisabled);
aNBT.setBoolean("mOutputDisabled", mOutputDisabled);
aNBT.setTag("GT.CraftingComponents", mRecipeStuff);
aNBT.setInteger("nbtVersion", GT_Mod.TOTAL_VERSION);
} catch (Throwable e) {
- GT_Log.err.println("Encountered CRITICAL ERROR while saving MetaTileEntity.");
- e.printStackTrace(GT_Log.err);
+ GT_FML_LOGGER.error("Encountered CRITICAL ERROR while saving MetaTileEntity.", e);
}
saveMetaTileNBT(aNBT);
}
@@ -188,7 +165,6 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
mColor = aNBT.getByte("mColor");
mLightValue = aNBT.getByte("mLightValue");
mWorkData = aNBT.getByte("mWorkData");
- mStrongRedstone = aNBT.getByte("mStrongRedstone");
mFacing = oFacing = (byte) aNBT.getShort("mFacing");
mOwnerName = aNBT.getString("mOwnerName");
try {
@@ -200,23 +176,14 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
mMuffler = aNBT.getBoolean("mMuffler");
mSteamConverter = aNBT.getBoolean("mSteamConverter");
mActive = aNBT.getBoolean("mActive");
- mRedstone = aNBT.getBoolean("mRedstone");
mWorks = !aNBT.getBoolean("mWorks");
mInputDisabled = aNBT.getBoolean("mInputDisabled");
mOutputDisabled = aNBT.getBoolean("mOutputDisabled");
mOtherUpgrades = (byte) (aNBT.getByte("mOtherUpgrades") + aNBT.getByte("mBatteries") + aNBT.getByte("mLiBatteries"));
- mSidedRedstone = aNBT.getByteArray("mRedstoneSided");
- mRecipeStuff = aNBT.getCompoundTag("GT.CraftingComponents");
- int nbtVersion = aNBT.getInteger("nbtVersion");
-
- if (mSidedRedstone.length != 6) {
- if (hasValidMetaTileEntity() && mMetaTileEntity.hasSidedRedstoneOutputBehavior()) {
- mSidedRedstone = new byte[]{0, 0, 0, 0, 0, 0};
- }
- else mSidedRedstone = new byte[]{15, 15, 15, 15, 15, 15};
- }
- loadCoverNBT(aNBT);
+ mRecipeStuff = aNBT.getCompoundTag("GT.CraftingComponents");
+ final int nbtVersion = aNBT.getInteger("nbtVersion");
+ readCoverNBT(aNBT);
loadMetaTileNBT(aNBT);
}
@@ -263,8 +230,8 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
mRunningThroughTick = true;
long tTime = System.nanoTime();
- boolean aSideServer = isServerSide();
- boolean aSideClient = isClientSide();
+ final boolean aSideServer = isServerSide();
+ final boolean aSideClient = isClientSide();
try {
if (hasValidMetaTileEntity()) {
@@ -373,17 +340,17 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
if (mMetaTileEntity.isEnetOutput() && oOutput > 0) {
- long tOutputVoltage = Math.max(oOutput, oOutput + (1L << Math.max(0, GT_Utility.getTier(oOutput) - 1))),
- tUsableAmperage = Math.min(getOutputAmperage(), (getStoredEU() - mMetaTileEntity.getMinimumStoredEU()) / tOutputVoltage);
+ final long tOutputVoltage = Math.max(oOutput, oOutput + (1L << Math.max(0, GT_Utility.getTier(oOutput) - 1)));
+ final long tUsableAmperage = Math.min(getOutputAmperage(), (getStoredEU() - mMetaTileEntity.getMinimumStoredEU()) / tOutputVoltage);
if (tUsableAmperage > 0) {
- long tEU = tOutputVoltage * Util.emitEnergyToNetwork(oOutput, tUsableAmperage, this);
+ final long tEU = tOutputVoltage * Util.emitEnergyToNetwork(oOutput, tUsableAmperage, this);
mAverageEUOutput[mAverageEUOutputIndex] += tEU;
decreaseStoredEU(tEU, true);
}
}
if (getEUCapacity() > 0) {
if (GregTech_API.sMachineFireExplosions && getRandomNumber(1000) == 0) {
- Block tBlock = getBlockAtSide((byte) getRandomNumber(6));
+ final Block tBlock = getBlockAtSide((byte) getRandomNumber(6));
if (tBlock instanceof BlockFire) doEnergyExplosion();
}
@@ -393,10 +360,10 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
}
if (getRandomNumber(1000) == 0) {
- int precipitationHeightAtSide2 = worldObj.getPrecipitationHeight(xCoord, zCoord - 1);
- int precipitationHeightAtSide3 = worldObj.getPrecipitationHeight(xCoord, zCoord + 1);
- int precipitationHeightAtSide4 = worldObj.getPrecipitationHeight(xCoord - 1, zCoord);
- int precipitationHeightAtSide5 = worldObj.getPrecipitationHeight(xCoord + 1, zCoord);
+ final int precipitationHeightAtSide2 = worldObj.getPrecipitationHeight(xCoord, zCoord - 1);
+ final int precipitationHeightAtSide3 = worldObj.getPrecipitationHeight(xCoord, zCoord + 1);
+ final int precipitationHeightAtSide4 = worldObj.getPrecipitationHeight(xCoord - 1, zCoord);
+ final int precipitationHeightAtSide5 = worldObj.getPrecipitationHeight(xCoord + 1, zCoord);
if ((getCoverIDAtSide((byte) 1) == 0 && worldObj.getPrecipitationHeight(xCoord, zCoord) - 2 < yCoord)
|| (getCoverIDAtSide((byte) 2) == 0 && precipitationHeightAtSide2 - 1 < yCoord && precipitationHeightAtSide2 > -1)
@@ -406,7 +373,7 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
if (GregTech_API.sMachineRainExplosions && worldObj.isRaining() && getBiome().rainfall > 0) {
if (getRandomNumber(10) == 0) {
try {
- GT_Mod.instance.achievements.issueAchievement(this.getWorldObj().getPlayerEntityByName(mOwnerName), "badweather");
+ GT_Mod.achievements.issueAchievement(this.getWorldObj().getPlayerEntityByName(mOwnerName), "badweather");
} catch (Exception ignored) {}
GT_Log.exp.println("Machine at: " + this.getXCoord() + " | " + this.getYCoord() + " | " + this.getZCoord() + " DIMID: " + this.worldObj.provider.dimensionId + " explosion due to rain!");
doEnergyExplosion();
@@ -422,7 +389,7 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
if (GregTech_API.sMachineThunderExplosions && worldObj.isThundering() && getBiome().rainfall > 0 && getRandomNumber(
3) == 0) {
try {
- GT_Mod.instance.achievements.issueAchievement(this.getWorldObj().getPlayerEntityByName(mOwnerName), "badweather");
+ GT_Mod.achievements.issueAchievement(this.getWorldObj().getPlayerEntityByName(mOwnerName), "badweather");
} catch (Exception ignored) {}
GT_Log.exp.println("Machine at: " + this.getXCoord() + " | " + this.getYCoord() + " | " + this.getZCoord() + " DIMID: " + this.worldObj.provider.dimensionId + " explosion due to Thunderstorm!");
doEnergyExplosion();
@@ -492,20 +459,20 @@ public class BaseMetaTileEntity extends CoverableGregTechTileEntity implements I
if (mTickTimer > 10) {
byte tData = (byte) ((mFacing & 7) | (mActive ? 8 : 0) | (mRedstone ? 1