eb15bd3a68
Added Event to Recalculate Channel Requirements for a Node. Level Emitter can now output redstone based on network energy levels. Level Emitter's entry field can now hold longs ( text box supports up o trillions )
162 lines
4.8 KiB
Java
162 lines
4.8 KiB
Java
package appeng.container.implementations;
|
|
|
|
import java.io.IOException;
|
|
|
|
import net.minecraft.client.gui.GuiTextField;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.entity.player.EntityPlayerMP;
|
|
import net.minecraft.entity.player.InventoryPlayer;
|
|
import net.minecraft.inventory.ICrafting;
|
|
import net.minecraft.inventory.IInventory;
|
|
import appeng.api.config.FuzzyMode;
|
|
import appeng.api.config.LevelType;
|
|
import appeng.api.config.RedstoneMode;
|
|
import appeng.api.config.SecurityPermissions;
|
|
import appeng.api.config.Settings;
|
|
import appeng.container.slot.SlotFakeTypeOnly;
|
|
import appeng.container.slot.SlotRestrictedInput;
|
|
import appeng.container.slot.SlotRestrictedInput.PlaceableItemType;
|
|
import appeng.core.AELog;
|
|
import appeng.core.sync.network.NetworkHandler;
|
|
import appeng.core.sync.packets.PacketProgressBar;
|
|
import appeng.parts.automation.PartLevelEmitter;
|
|
import appeng.util.Platform;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
public class ContainerLevelEmitter extends ContainerUpgradeable
|
|
{
|
|
|
|
PartLevelEmitter lvlEmitter;
|
|
long EmitterValue = -1;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public GuiTextField textField;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public void setTextField(GuiTextField level)
|
|
{
|
|
textField = level;
|
|
textField.setText( "" + EmitterValue );
|
|
}
|
|
|
|
public ContainerLevelEmitter(InventoryPlayer ip, PartLevelEmitter te) {
|
|
super( ip, te );
|
|
lvlEmitter = te;
|
|
}
|
|
|
|
@Override
|
|
public int availableUpgrades()
|
|
{
|
|
|
|
return 1;
|
|
}
|
|
|
|
@Override
|
|
protected boolean supportCapacity()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public void setLevel(long l, EntityPlayer player)
|
|
{
|
|
lvlEmitter.setReportingValue( l );
|
|
EmitterValue = l;
|
|
}
|
|
|
|
@Override
|
|
protected void setupConfig()
|
|
{
|
|
int x = 80 + 44;
|
|
int y = 40;
|
|
|
|
IInventory upgrades = myte.getInventoryByName( "upgrades" );
|
|
if ( availableUpgrades() > 0 )
|
|
addSlotToContainer( (new SlotRestrictedInput( PlaceableItemType.UPGRADES, upgrades, 0, 187, 8 + 18 * 0 )).setNotDraggable() );
|
|
if ( availableUpgrades() > 1 )
|
|
addSlotToContainer( (new SlotRestrictedInput( PlaceableItemType.UPGRADES, upgrades, 1, 187, 8 + 18 * 1 )).setNotDraggable() );
|
|
if ( availableUpgrades() > 2 )
|
|
addSlotToContainer( (new SlotRestrictedInput( PlaceableItemType.UPGRADES, upgrades, 2, 187, 8 + 18 * 2 )).setNotDraggable() );
|
|
if ( availableUpgrades() > 3 )
|
|
addSlotToContainer( (new SlotRestrictedInput( PlaceableItemType.UPGRADES, upgrades, 3, 187, 8 + 18 * 3 )).setNotDraggable() );
|
|
|
|
IInventory inv = myte.getInventoryByName( "config" );
|
|
addSlotToContainer( new SlotFakeTypeOnly( inv, 0, x, y ) );
|
|
}
|
|
|
|
public LevelType lvType;
|
|
|
|
@Override
|
|
public void detectAndSendChanges()
|
|
{
|
|
verifyPermissions( SecurityPermissions.BUILD, false );
|
|
|
|
if ( Platform.isServer() )
|
|
{
|
|
for (int i = 0; i < this.crafters.size(); ++i)
|
|
{
|
|
ICrafting icrafting = (ICrafting) this.crafters.get( i );
|
|
|
|
if ( this.rsMode != this.myte.getConfigManager().getSetting( Settings.REDSTONE_EMITTER ) )
|
|
{
|
|
icrafting.sendProgressBarUpdate( this, 0, (int) this.myte.getConfigManager().getSetting( Settings.REDSTONE_EMITTER ).ordinal() );
|
|
}
|
|
|
|
if ( this.fzMode != this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE ) )
|
|
{
|
|
icrafting.sendProgressBarUpdate( this, 1, (int) this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE ).ordinal() );
|
|
}
|
|
|
|
if ( this.lvType != this.myte.getConfigManager().getSetting( Settings.LEVEL_TYPE ) )
|
|
{
|
|
icrafting.sendProgressBarUpdate( this, 2, (int) this.myte.getConfigManager().getSetting( Settings.LEVEL_TYPE ).ordinal() );
|
|
}
|
|
|
|
if ( this.EmitterValue != lvlEmitter.getReportingValue() )
|
|
{
|
|
try
|
|
{
|
|
NetworkHandler.instance.sendTo( new PacketProgressBar( 3, lvlEmitter.getReportingValue() ), (EntityPlayerMP) icrafting );
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
AELog.error( e );
|
|
}
|
|
// icrafting.sendProgressBarUpdate( this, 2, (int) lvlEmitter.getReportingValue() );
|
|
}
|
|
}
|
|
|
|
this.EmitterValue = lvlEmitter.getReportingValue();
|
|
this.lvType = (LevelType) this.myte.getConfigManager().getSetting( Settings.LEVEL_TYPE );
|
|
this.fzMode = (FuzzyMode) this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE );
|
|
this.rsMode = (RedstoneMode) this.myte.getConfigManager().getSetting( Settings.REDSTONE_EMITTER );
|
|
}
|
|
|
|
standardDetectAndSendChanges();
|
|
}
|
|
|
|
@Override
|
|
public void updateProgressBar(int idx, int value)
|
|
{
|
|
super.updateProgressBar( idx, value );
|
|
|
|
if ( idx == 2 )
|
|
{
|
|
lvType = LevelType.values()[value];
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void updateFullProgressBar(int idx, long value)
|
|
{
|
|
super.updateFullProgressBar( idx, value );
|
|
|
|
if ( idx == 3 )
|
|
{
|
|
EmitterValue = value;
|
|
if ( textField != null )
|
|
textField.setText( "" + EmitterValue );
|
|
}
|
|
}
|
|
|
|
}
|