151 lines
No EOL
6.6 KiB
Java
151 lines
No EOL
6.6 KiB
Java
package gregtech.api.gui;
|
|
|
|
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
|
|
|
|
import java.util.Iterator;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.entity.player.InventoryPlayer;
|
|
import net.minecraft.inventory.ICrafting;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
/**
|
|
* NEVER INCLUDE THIS FILE IN YOUR MOD!!!
|
|
*
|
|
* The Container I use for all my MetaTileEntities
|
|
*/
|
|
public class GT_ContainerMetaTile_Machine extends GT_Container {
|
|
|
|
public GT_ContainerMetaTile_Machine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) {
|
|
super(aInventoryPlayer, aTileEntity);
|
|
mTileEntity = aTileEntity;
|
|
|
|
if (mTileEntity != null && mTileEntity.getMetaTileEntity() != null) {
|
|
addSlots(aInventoryPlayer);
|
|
if (doesBindPlayerInventory()) bindPlayerInventory(aInventoryPlayer);
|
|
detectAndSendChanges();
|
|
} else {
|
|
aInventoryPlayer.player.openContainer = aInventoryPlayer.player.inventoryContainer;
|
|
}
|
|
}
|
|
public GT_ContainerMetaTile_Machine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, boolean doesBindInventory){
|
|
super(aInventoryPlayer, aTileEntity);
|
|
mTileEntity = aTileEntity;
|
|
|
|
if (mTileEntity != null && mTileEntity.getMetaTileEntity() != null) {
|
|
addSlots(aInventoryPlayer);
|
|
if (doesBindPlayerInventory()&&doesBindInventory) bindPlayerInventory(aInventoryPlayer);
|
|
detectAndSendChanges();
|
|
} else {
|
|
aInventoryPlayer.player.openContainer = aInventoryPlayer.player.inventoryContainer;
|
|
}
|
|
}
|
|
|
|
|
|
public int mActive = 0, mMaxProgressTime = 0, mProgressTime = 0, mEnergy = 0, mSteam = 0, mSteamStorage = 0, mStorage = 0, mOutput = 0, mInput = 0, mID = 0, mDisplayErrorCode = 0;
|
|
private int oActive = 0, oMaxProgressTime = 0, oProgressTime = 0, oEnergy = 0, oSteam = 0, oSteamStorage = 0, oStorage = 0, oOutput = 0, oInput = 0, oID = 0, oDisplayErrorCode = 0, mTimer = 0;
|
|
|
|
@Override
|
|
public void detectAndSendChanges() {
|
|
super.detectAndSendChanges();
|
|
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
|
|
mStorage = (int)Math.min(Integer.MAX_VALUE, mTileEntity.getEUCapacity());
|
|
mEnergy = (int)Math.min(Integer.MAX_VALUE, mTileEntity.getStoredEU());
|
|
mSteamStorage = (int)Math.min(Integer.MAX_VALUE, mTileEntity.getSteamCapacity());
|
|
mSteam = (int)Math.min(Integer.MAX_VALUE, mTileEntity.getStoredSteam());
|
|
mOutput = (int)Math.min(Integer.MAX_VALUE, mTileEntity.getOutputVoltage());
|
|
mInput = (int)Math.min(Integer.MAX_VALUE, mTileEntity.getInputVoltage());
|
|
mDisplayErrorCode = mTileEntity.getErrorDisplayID();
|
|
mProgressTime = mTileEntity.getProgress();
|
|
mMaxProgressTime = mTileEntity.getMaxProgress();
|
|
mActive = mTileEntity.isActive()?1:0;
|
|
mTimer++;
|
|
|
|
Iterator var2 = this.crafters.iterator();
|
|
while (var2.hasNext()) {
|
|
ICrafting var1 = (ICrafting)var2.next();
|
|
if (mTimer % 500 == 10 || oEnergy != mEnergy) {
|
|
var1.sendProgressBarUpdate(this, 0, mEnergy & 65535);
|
|
var1.sendProgressBarUpdate(this, 1, mEnergy >>> 16);
|
|
}
|
|
if (mTimer % 500 == 10 || oStorage != mStorage) {
|
|
var1.sendProgressBarUpdate(this, 2, mStorage & 65535);
|
|
var1.sendProgressBarUpdate(this, 3, mStorage >>> 16);
|
|
}
|
|
if (mTimer % 500 == 10 || oOutput != mOutput) {
|
|
var1.sendProgressBarUpdate(this, 4, mOutput);
|
|
}
|
|
if (mTimer % 500 == 10 || oInput != mInput) {
|
|
var1.sendProgressBarUpdate(this, 5, mInput);
|
|
}
|
|
if (mTimer % 500 == 10 || oDisplayErrorCode != mDisplayErrorCode) {
|
|
var1.sendProgressBarUpdate(this, 6, mDisplayErrorCode);
|
|
}
|
|
if (mTimer % 500 == 10 || oProgressTime != mProgressTime) {
|
|
var1.sendProgressBarUpdate(this, 11, mProgressTime & 65535);
|
|
var1.sendProgressBarUpdate(this, 12, mProgressTime >>> 16);
|
|
}
|
|
if (mTimer % 500 == 10 || oMaxProgressTime != mMaxProgressTime) {
|
|
var1.sendProgressBarUpdate(this, 13, mMaxProgressTime & 65535);
|
|
var1.sendProgressBarUpdate(this, 14, mMaxProgressTime >>> 16);
|
|
}
|
|
if (mTimer % 500 == 10 || oID != mID) {
|
|
var1.sendProgressBarUpdate(this, 15, mID);
|
|
}
|
|
if (mTimer % 500 == 10 || oActive != mActive) {
|
|
var1.sendProgressBarUpdate(this, 16, mActive);
|
|
}
|
|
if (mTimer % 500 == 10 || oSteam != mSteam) {
|
|
var1.sendProgressBarUpdate(this, 17, mSteam & 65535);
|
|
var1.sendProgressBarUpdate(this, 18, mSteam >>> 16);
|
|
}
|
|
if (mTimer % 500 == 10 || oSteamStorage != mSteamStorage) {
|
|
var1.sendProgressBarUpdate(this, 19, mSteamStorage & 65535);
|
|
var1.sendProgressBarUpdate(this, 20, mSteamStorage >>> 16);
|
|
}
|
|
}
|
|
|
|
oID = mID;
|
|
oSteam = mSteam;
|
|
oInput = mInput;
|
|
oActive = mActive;
|
|
oOutput = mOutput;
|
|
oEnergy = mEnergy;
|
|
oStorage = mStorage;
|
|
oSteamStorage = mSteamStorage;
|
|
oProgressTime = mProgressTime;
|
|
oMaxProgressTime = mMaxProgressTime;
|
|
oDisplayErrorCode = mDisplayErrorCode;
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
@Override
|
|
public void updateProgressBar(int par1, int par2) {
|
|
super.updateProgressBar(par1, par2);
|
|
switch (par1) {
|
|
case 0: mEnergy = mEnergy & -65536 | par2; break;
|
|
case 1: mEnergy = mEnergy & 65535 | par2 << 16; break;
|
|
case 2: mStorage = mStorage & -65536 | par2; break;
|
|
case 3: mStorage = mStorage & 65535 | par2 << 16; break;
|
|
case 4: mOutput = par2; break;
|
|
case 5: mInput = par2; break;
|
|
case 6: mDisplayErrorCode = par2; break;
|
|
case 11: mProgressTime = mProgressTime & -65536 | par2; break;
|
|
case 12: mProgressTime = mProgressTime & 65535 | par2 << 16; break;
|
|
case 13: mMaxProgressTime = mMaxProgressTime & -65536 | par2; break;
|
|
case 14: mMaxProgressTime = mMaxProgressTime & 65535 | par2 << 16; break;
|
|
case 15: mID = par2; break;
|
|
case 16: mActive = par2; break;
|
|
case 17: mSteam = mSteam & -65536 | par2; break;
|
|
case 18: mSteam = mSteam & 65535 | par2 << 16; break;
|
|
case 19: mSteamStorage = mSteamStorage & -65536 | par2; break;
|
|
case 20: mSteamStorage = mSteamStorage & 65535 | par2 << 16; break;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean canInteractWith(EntityPlayer player) {
|
|
return mTileEntity.isUseableByPlayer(player);
|
|
}
|
|
} |