Redstone Logic for Buses, and Part Image Button goodness
This commit is contained in:
parent
0acbefbfaa
commit
db4cf7aa5d
22 changed files with 367 additions and 73 deletions
|
@ -1,24 +1,72 @@
|
||||||
package appeng.client.gui.implementations;
|
package appeng.client.gui.implementations;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import appeng.api.config.FuzzyMode;
|
||||||
|
import appeng.api.config.RedstoneMode;
|
||||||
|
import appeng.api.config.Settings;
|
||||||
|
import appeng.api.config.Upgrades;
|
||||||
import appeng.api.implementations.IBusCommon;
|
import appeng.api.implementations.IBusCommon;
|
||||||
import appeng.client.gui.AEBaseGui;
|
import appeng.client.gui.AEBaseGui;
|
||||||
|
import appeng.client.gui.widgets.GuiImgButton;
|
||||||
import appeng.container.implementations.ContainerBus;
|
import appeng.container.implementations.ContainerBus;
|
||||||
import appeng.core.localization.GuiText;
|
import appeng.core.localization.GuiText;
|
||||||
|
import appeng.core.sync.packets.PacketConfigButton;
|
||||||
import appeng.parts.automation.PartImportBus;
|
import appeng.parts.automation.PartImportBus;
|
||||||
|
import cpw.mods.fml.common.network.PacketDispatcher;
|
||||||
|
|
||||||
public class GuiBus extends AEBaseGui
|
public class GuiBus extends AEBaseGui
|
||||||
{
|
{
|
||||||
|
|
||||||
|
ContainerBus cvb;
|
||||||
IBusCommon bc;
|
IBusCommon bc;
|
||||||
|
|
||||||
|
GuiImgButton redstoneMode;
|
||||||
|
GuiImgButton fuzzyMode;
|
||||||
|
|
||||||
public GuiBus(InventoryPlayer inventoryPlayer, IBusCommon te) {
|
public GuiBus(InventoryPlayer inventoryPlayer, IBusCommon te) {
|
||||||
super( new ContainerBus( inventoryPlayer, te ) );
|
super( new ContainerBus( inventoryPlayer, te ) );
|
||||||
|
cvb = (ContainerBus) inventorySlots;
|
||||||
|
|
||||||
bc = te;
|
bc = te;
|
||||||
this.xSize = hasToolbox() ? 246 : 211;
|
this.xSize = hasToolbox() ? 246 : 211;
|
||||||
this.ySize = 184;
|
this.ySize = 184;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initGui()
|
||||||
|
{
|
||||||
|
super.initGui();
|
||||||
|
|
||||||
|
redstoneMode = new GuiImgButton( 122 + guiLeft, 31 + guiTop, Settings.REDSTONE_OUTPUT, RedstoneMode.IGNORE );
|
||||||
|
fuzzyMode = new GuiImgButton( 122 + guiLeft, 49 + guiTop, Settings.FUZZY_MODE, FuzzyMode.IGNORE_ALL );
|
||||||
|
|
||||||
|
buttonList.add( redstoneMode );
|
||||||
|
buttonList.add( fuzzyMode );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void actionPerformed(GuiButton btn)
|
||||||
|
{
|
||||||
|
super.actionPerformed( btn );
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if ( btn == redstoneMode )
|
||||||
|
PacketDispatcher.sendPacketToServer( (new PacketConfigButton( Settings.REDSTONE_OUTPUT )).getPacket() );
|
||||||
|
|
||||||
|
if ( btn == fuzzyMode )
|
||||||
|
PacketDispatcher.sendPacketToServer( (new PacketConfigButton( Settings.FUZZY_MODE )).getPacket() );
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean hasToolbox()
|
private boolean hasToolbox()
|
||||||
{
|
{
|
||||||
return ((ContainerBus) inventorySlots).hasToolbox();
|
return ((ContainerBus) inventorySlots).hasToolbox();
|
||||||
|
@ -27,6 +75,9 @@ public class GuiBus extends AEBaseGui
|
||||||
@Override
|
@Override
|
||||||
public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY)
|
public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY)
|
||||||
{
|
{
|
||||||
|
redstoneMode.setVisibility( bc.getInstalledUpgrades( Upgrades.REDSTONE ) > 0 );
|
||||||
|
fuzzyMode.setVisibility( bc.getInstalledUpgrades( Upgrades.FUZZY ) > 0 );
|
||||||
|
|
||||||
bindTexture( "guis/bus.png" );
|
bindTexture( "guis/bus.png" );
|
||||||
this.drawTexturedModalRect( offsetX, offsetY, 0, 0, xSize - 34, ySize );
|
this.drawTexturedModalRect( offsetX, offsetY, 0, 0, xSize - 34, ySize );
|
||||||
this.drawTexturedModalRect( offsetX + 177, offsetY, 177, 0, 35, 86 );
|
this.drawTexturedModalRect( offsetX + 177, offsetY, 177, 0, 35, 86 );
|
||||||
|
@ -39,6 +90,9 @@ public class GuiBus extends AEBaseGui
|
||||||
{
|
{
|
||||||
fontRenderer.drawString( (bc instanceof PartImportBus ? GuiText.ImportBus : GuiText.ExportBus).getLocal(), 8, 6, 4210752 );
|
fontRenderer.drawString( (bc instanceof PartImportBus ? GuiText.ImportBus : GuiText.ExportBus).getLocal(), 8, 6, 4210752 );
|
||||||
fontRenderer.drawString( GuiText.inventory.getLocal(), 8, ySize - 96 + 3, 4210752 );
|
fontRenderer.drawString( GuiText.inventory.getLocal(), 8, ySize - 96 + 3, 4210752 );
|
||||||
|
|
||||||
|
redstoneMode.set( cvb.rsMode );
|
||||||
|
fuzzyMode.set( cvb.fzMode );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,8 +26,8 @@ public class GuiInterface extends AEBaseGui
|
||||||
{
|
{
|
||||||
fontRenderer.drawString( GuiText.Interface.getLocal(), 8, 6, 4210752 );
|
fontRenderer.drawString( GuiText.Interface.getLocal(), 8, 6, 4210752 );
|
||||||
|
|
||||||
fontRenderer.drawString( GuiText.Config.getLocal(), 8, 6 + 11 + 7, 4210752 );
|
fontRenderer.drawString( GuiText.Config.getLocal(), 18, 6 + 11 + 7, 4210752 );
|
||||||
fontRenderer.drawString( GuiText.StoredItems.getLocal(), 8 + 18, 6 + 60 + 7, 4210752 );
|
fontRenderer.drawString( GuiText.StoredItems.getLocal(), 18, 6 + 60 + 7, 4210752 );
|
||||||
fontRenderer.drawString( GuiText.Patterns.getLocal(), 8, 6 + 73 + 7, 4210752 );
|
fontRenderer.drawString( GuiText.Patterns.getLocal(), 8, 6 + 73 + 7, 4210752 );
|
||||||
|
|
||||||
fontRenderer.drawString( GuiText.inventory.getLocal(), 8, ySize - 96 + 3, 4210752 );
|
fontRenderer.drawString( GuiText.inventory.getLocal(), 8, ySize - 96 + 3, 4210752 );
|
||||||
|
|
|
@ -82,6 +82,12 @@ public class GuiImgButton extends GuiButton implements ITooltip
|
||||||
Appearances.put( new EnumPair( setting, val ), a );
|
Appearances.put( new EnumPair( setting, val ), a );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVisibility(boolean vis)
|
||||||
|
{
|
||||||
|
drawButton = vis;
|
||||||
|
enabled = vis;
|
||||||
|
}
|
||||||
|
|
||||||
public GuiImgButton(int x, int y, Enum idx, Enum val) {
|
public GuiImgButton(int x, int y, Enum idx, Enum val) {
|
||||||
super( 0, 0, 16, "" );
|
super( 0, 0, 16, "" );
|
||||||
buttonSetting = idx;
|
buttonSetting = idx;
|
||||||
|
@ -110,10 +116,10 @@ public class GuiImgButton extends GuiButton implements ITooltip
|
||||||
registerApp( 16 * 10 + 3, Settings.POWER_UNITS, PowerUnits.KJ, "AppEng.GuiITooltip.PowerUnits", "AppEng.GuiITooltip.UEUnits" );
|
registerApp( 16 * 10 + 3, Settings.POWER_UNITS, PowerUnits.KJ, "AppEng.GuiITooltip.PowerUnits", "AppEng.GuiITooltip.UEUnits" );
|
||||||
registerApp( 16 * 10 + 4, Settings.POWER_UNITS, PowerUnits.WA, "AppEng.GuiITooltip.PowerUnits", "AppEng.GuiITooltip.WUnits" );
|
registerApp( 16 * 10 + 4, Settings.POWER_UNITS, PowerUnits.WA, "AppEng.GuiITooltip.PowerUnits", "AppEng.GuiITooltip.WUnits" );
|
||||||
|
|
||||||
registerApp( 3, Settings.REDSTONE_INPUT, RedstoneMode.IGNORE, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.AlwaysActive" );
|
registerApp( 3, Settings.REDSTONE_OUTPUT, RedstoneMode.IGNORE, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.AlwaysActive" );
|
||||||
registerApp( 0, Settings.REDSTONE_INPUT, RedstoneMode.LOW_SIGNAL, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.ActiveWithoutSignal" );
|
registerApp( 0, Settings.REDSTONE_OUTPUT, RedstoneMode.LOW_SIGNAL, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.ActiveWithoutSignal" );
|
||||||
registerApp( 1, Settings.REDSTONE_INPUT, RedstoneMode.HIGH_SIGNAL, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.ActiveWithSignal" );
|
registerApp( 1, Settings.REDSTONE_OUTPUT, RedstoneMode.HIGH_SIGNAL, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.ActiveWithSignal" );
|
||||||
registerApp( 2, Settings.REDSTONE_INPUT, RedstoneMode.SIGNAL_PULSE, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.ActiveOnPulse" );
|
registerApp( 2, Settings.REDSTONE_OUTPUT, RedstoneMode.SIGNAL_PULSE, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.ActiveOnPulse" );
|
||||||
|
|
||||||
registerApp( 3, Settings.REDSTONE_INPUT, RedstoneMode.IGNORE, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.AlwaysActive" );
|
registerApp( 3, Settings.REDSTONE_INPUT, RedstoneMode.IGNORE, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.AlwaysActive" );
|
||||||
registerApp( 0, Settings.REDSTONE_INPUT, RedstoneMode.LOW_SIGNAL, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.ActiveWithoutSignal" );
|
registerApp( 0, Settings.REDSTONE_INPUT, RedstoneMode.LOW_SIGNAL, "AppEng.GuiITooltip.RedstoneMode", "AppEng.GuiITooltip.ActiveWithoutSignal" );
|
||||||
|
@ -230,7 +236,10 @@ public class GuiImgButton extends GuiButton implements ITooltip
|
||||||
{
|
{
|
||||||
if ( buttonSetting != null && currentValue != null )
|
if ( buttonSetting != null && currentValue != null )
|
||||||
{
|
{
|
||||||
return Appearances.get( new EnumPair( buttonSetting, currentValue ) ).index;
|
BtnAppearance app = Appearances.get( new EnumPair( buttonSetting, currentValue ) );
|
||||||
|
if ( app == null )
|
||||||
|
return 256 - 1;
|
||||||
|
return app.index;
|
||||||
}
|
}
|
||||||
return 256 - 1;
|
return 256 - 1;
|
||||||
}
|
}
|
||||||
|
@ -254,6 +263,9 @@ public class GuiImgButton extends GuiButton implements ITooltip
|
||||||
if ( buttonSetting != null && currentValue != null )
|
if ( buttonSetting != null && currentValue != null )
|
||||||
{
|
{
|
||||||
BtnAppearance ba = Appearances.get( new EnumPair( buttonSetting, currentValue ) );
|
BtnAppearance ba = Appearances.get( new EnumPair( buttonSetting, currentValue ) );
|
||||||
|
if ( ba == null )
|
||||||
|
return "No Such Message";
|
||||||
|
|
||||||
DisplayName = ba.DisplayName;
|
DisplayName = ba.DisplayName;
|
||||||
DisplayValue = ba.DisplayValue;
|
DisplayValue = ba.DisplayValue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import appeng.api.AEApi;
|
import appeng.api.AEApi;
|
||||||
import appeng.api.networking.energy.IEnergySource;
|
import appeng.api.networking.energy.IEnergySource;
|
||||||
|
import appeng.api.parts.IPart;
|
||||||
import appeng.api.storage.IMEInventoryHandler;
|
import appeng.api.storage.IMEInventoryHandler;
|
||||||
import appeng.api.storage.data.IAEItemStack;
|
import appeng.api.storage.data.IAEItemStack;
|
||||||
import appeng.client.me.InternalSlotME;
|
import appeng.client.me.InternalSlotME;
|
||||||
|
@ -34,13 +35,24 @@ public abstract class AEBaseContainer extends Container
|
||||||
|
|
||||||
final InventoryPlayer invPlayer;
|
final InventoryPlayer invPlayer;
|
||||||
final TileEntity tileEntity;
|
final TileEntity tileEntity;
|
||||||
|
final IPart part;
|
||||||
|
|
||||||
protected IMEInventoryHandler<IAEItemStack> cellInv;
|
protected IMEInventoryHandler<IAEItemStack> cellInv;
|
||||||
protected IEnergySource powerSrc;
|
protected IEnergySource powerSrc;
|
||||||
|
|
||||||
public AEBaseContainer(InventoryPlayer ip, TileEntity te) {
|
public Object getTarget()
|
||||||
|
{
|
||||||
|
if ( tileEntity != null )
|
||||||
|
return tileEntity;
|
||||||
|
if ( part != null )
|
||||||
|
return part;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AEBaseContainer(InventoryPlayer ip, TileEntity myTile, IPart myPart) {
|
||||||
invPlayer = ip;
|
invPlayer = ip;
|
||||||
tileEntity = te;
|
tileEntity = myTile;
|
||||||
|
part = myPart;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canDragIntoSlot(Slot s)
|
public boolean canDragIntoSlot(Slot s)
|
||||||
|
@ -495,4 +507,5 @@ public abstract class AEBaseContainer extends Container
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
package appeng.container.implementations;
|
package appeng.container.implementations;
|
||||||
|
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.inventory.ICrafting;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import appeng.api.config.FuzzyMode;
|
||||||
|
import appeng.api.config.RedstoneMode;
|
||||||
|
import appeng.api.config.Settings;
|
||||||
import appeng.api.config.Upgrades;
|
import appeng.api.config.Upgrades;
|
||||||
import appeng.api.implementations.IBusCommon;
|
import appeng.api.implementations.IBusCommon;
|
||||||
import appeng.container.AEBaseContainer;
|
import appeng.container.AEBaseContainer;
|
||||||
|
@ -12,6 +16,9 @@ import appeng.container.slot.SlotFakeTypeOnly;
|
||||||
import appeng.container.slot.SlotRestrictedInput;
|
import appeng.container.slot.SlotRestrictedInput;
|
||||||
import appeng.container.slot.SlotRestrictedInput.PlaceableItemType;
|
import appeng.container.slot.SlotRestrictedInput.PlaceableItemType;
|
||||||
import appeng.tile.inventory.AppEngInternalInventory;
|
import appeng.tile.inventory.AppEngInternalInventory;
|
||||||
|
import appeng.util.Platform;
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
public class ContainerBus extends AEBaseContainer implements IOptionalSlotHost
|
public class ContainerBus extends AEBaseContainer implements IOptionalSlotHost
|
||||||
{
|
{
|
||||||
|
@ -20,7 +27,7 @@ public class ContainerBus extends AEBaseContainer implements IOptionalSlotHost
|
||||||
IInventory toolbox = new AppEngInternalInventory( null, 9 );
|
IInventory toolbox = new AppEngInternalInventory( null, 9 );
|
||||||
|
|
||||||
public ContainerBus(InventoryPlayer ip, IBusCommon te) {
|
public ContainerBus(InventoryPlayer ip, IBusCommon te) {
|
||||||
super( ip, null );
|
super( ip, null, te );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
IInventory upgrades = myte.getInventoryByName( "upgrades" );
|
IInventory upgrades = myte.getInventoryByName( "upgrades" );
|
||||||
|
@ -55,9 +62,33 @@ public class ContainerBus extends AEBaseContainer implements IOptionalSlotHost
|
||||||
bindPlayerInventory( ip, 0, 184 - /* height of playerinventory */82 );
|
bindPlayerInventory( ip, 0, 184 - /* height of playerinventory */82 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RedstoneMode rsMode = RedstoneMode.IGNORE;
|
||||||
|
public FuzzyMode fzMode = FuzzyMode.IGNORE_ALL;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void detectAndSendChanges()
|
public void detectAndSendChanges()
|
||||||
{
|
{
|
||||||
|
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_OUTPUT ) )
|
||||||
|
{
|
||||||
|
icrafting.sendProgressBarUpdate( this, 0, (int) this.myte.getConfigManager().getSetting( Settings.REDSTONE_OUTPUT ).ordinal() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( this.fzMode != this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE ) )
|
||||||
|
{
|
||||||
|
icrafting.sendProgressBarUpdate( this, 1, (int) this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE ).ordinal() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.fzMode = (FuzzyMode) this.myte.getConfigManager().getSetting( Settings.FUZZY_MODE );
|
||||||
|
this.rsMode = (RedstoneMode) this.myte.getConfigManager().getSetting( Settings.REDSTONE_OUTPUT );
|
||||||
|
}
|
||||||
|
|
||||||
for (Object o : inventorySlots)
|
for (Object o : inventorySlots)
|
||||||
{
|
{
|
||||||
if ( o instanceof OptionalSlotFake )
|
if ( o instanceof OptionalSlotFake )
|
||||||
|
@ -71,6 +102,19 @@ public class ContainerBus extends AEBaseContainer implements IOptionalSlotHost
|
||||||
super.detectAndSendChanges();
|
super.detectAndSendChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public void updateProgressBar(int idx, int value)
|
||||||
|
{
|
||||||
|
|
||||||
|
if ( idx == 0 )
|
||||||
|
this.rsMode = RedstoneMode.values()[value];
|
||||||
|
|
||||||
|
if ( idx == 1 )
|
||||||
|
this.fzMode = FuzzyMode.values()[value];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public boolean hasToolbox()
|
public boolean hasToolbox()
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
|
@ -12,7 +12,7 @@ public class ContainerChest extends AEBaseContainer
|
||||||
TileChest myte;
|
TileChest myte;
|
||||||
|
|
||||||
public ContainerChest(InventoryPlayer ip, TileChest te) {
|
public ContainerChest(InventoryPlayer ip, TileChest te) {
|
||||||
super( ip, te );
|
super( ip, te, null );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.STORAGE_CELLS, myte, 1, 80, 37 ) );
|
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.STORAGE_CELLS, myte, 1, 80, 37 ) );
|
||||||
|
|
|
@ -20,7 +20,7 @@ public class ContainerCondenser extends AEBaseContainer
|
||||||
TileCondenser myte;
|
TileCondenser myte;
|
||||||
|
|
||||||
public ContainerCondenser(InventoryPlayer ip, TileCondenser te) {
|
public ContainerCondenser(InventoryPlayer ip, TileCondenser te) {
|
||||||
super( ip, te );
|
super( ip, te, null );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.TRASH, te, 0, 51, 52 ) );
|
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.TRASH, te, 0, 51, 52 ) );
|
||||||
|
|
|
@ -12,7 +12,7 @@ public class ContainerDrive extends AEBaseContainer
|
||||||
TileDrive myte;
|
TileDrive myte;
|
||||||
|
|
||||||
public ContainerDrive(InventoryPlayer ip, TileDrive te) {
|
public ContainerDrive(InventoryPlayer ip, TileDrive te) {
|
||||||
super( ip, te );
|
super( ip, te, null );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
for (int y = 0; y < 5; y++)
|
for (int y = 0; y < 5; y++)
|
||||||
|
|
|
@ -14,7 +14,7 @@ public class ContainerGrinder extends AEBaseContainer
|
||||||
TileGrinder myte;
|
TileGrinder myte;
|
||||||
|
|
||||||
public ContainerGrinder(InventoryPlayer ip, TileGrinder te) {
|
public ContainerGrinder(InventoryPlayer ip, TileGrinder te) {
|
||||||
super( ip, te );
|
super( ip, te, null );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.ORE, te, 0, 12, 17 ) );
|
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.ORE, te, 0, 12, 17 ) );
|
||||||
|
|
|
@ -14,14 +14,14 @@ public class ContainerInterface extends AEBaseContainer
|
||||||
TileInterface myte;
|
TileInterface myte;
|
||||||
|
|
||||||
public ContainerInterface(InventoryPlayer ip, TileInterface te) {
|
public ContainerInterface(InventoryPlayer ip, TileInterface te) {
|
||||||
super( ip, te );
|
super( ip, te, null );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
for (int x = 0; x < 8; x++)
|
for (int x = 0; x < 8; x++)
|
||||||
addSlotToContainer( new SlotFake( myte.getConfig(), x, 8 + 18 * x, 28 + 7 ) );
|
addSlotToContainer( new SlotFake( myte.getConfig(), x, 17 + 18 * x, 35 ) );
|
||||||
|
|
||||||
for (int x = 0; x < 8; x++)
|
for (int x = 0; x < 8; x++)
|
||||||
addSlotToContainer( new SlotNormal( myte, x, 26 + 18 * x, 46 + 7 ) );
|
addSlotToContainer( new SlotNormal( myte, x, 17 + 18 * x, 35 + 18 ) );
|
||||||
|
|
||||||
for (int x = 0; x < 9; x++)
|
for (int x = 0; x < 9; x++)
|
||||||
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.ENCODED_PATTERN, myte.getPatterns(), x, 8 + 18 * x, 90 + 7 ) );
|
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.ENCODED_PATTERN, myte.getPatterns(), x, 8 + 18 * x, 90 + 7 ) );
|
||||||
|
|
|
@ -10,7 +10,7 @@ public class ContainerLevelEmitter extends AEBaseContainer
|
||||||
PartLevelEmitter myte;
|
PartLevelEmitter myte;
|
||||||
|
|
||||||
public ContainerLevelEmitter(InventoryPlayer ip, PartLevelEmitter te) {
|
public ContainerLevelEmitter(InventoryPlayer ip, PartLevelEmitter te) {
|
||||||
super( ip, te.getHost().getTile() );
|
super( ip, te.getHost().getTile(), te );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
// addSlotToContainer( new SlotRestrictedInput(
|
// addSlotToContainer( new SlotRestrictedInput(
|
||||||
|
|
|
@ -14,6 +14,7 @@ import appeng.api.networking.IGrid;
|
||||||
import appeng.api.networking.IGridHost;
|
import appeng.api.networking.IGridHost;
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
import appeng.api.networking.energy.IEnergyGrid;
|
import appeng.api.networking.energy.IEnergyGrid;
|
||||||
|
import appeng.api.parts.IPart;
|
||||||
import appeng.api.storage.IMEMonitor;
|
import appeng.api.storage.IMEMonitor;
|
||||||
import appeng.api.storage.IMEMonitorHandlerReciever;
|
import appeng.api.storage.IMEMonitorHandlerReciever;
|
||||||
import appeng.api.storage.data.IAEItemStack;
|
import appeng.api.storage.data.IAEItemStack;
|
||||||
|
@ -32,7 +33,7 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IMEMonito
|
||||||
final IItemList<IAEItemStack> items = new ItemList<IAEItemStack>();
|
final IItemList<IAEItemStack> items = new ItemList<IAEItemStack>();
|
||||||
|
|
||||||
public ContainerMEMonitorable(InventoryPlayer ip, IStorageMonitorable montiorable) {
|
public ContainerMEMonitorable(InventoryPlayer ip, IStorageMonitorable montiorable) {
|
||||||
super( ip, montiorable instanceof TileEntity ? (TileEntity) montiorable : null );
|
super( ip, montiorable instanceof TileEntity ? (TileEntity) montiorable : null, montiorable instanceof IPart ? (IPart) montiorable : null );
|
||||||
|
|
||||||
if ( Platform.isServer() )
|
if ( Platform.isServer() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,7 +10,7 @@ public class ContainerNetworkStatus extends AEBaseContainer
|
||||||
TileEntity myte;
|
TileEntity myte;
|
||||||
|
|
||||||
public ContainerNetworkStatus(InventoryPlayer ip, TileEntity te) {
|
public ContainerNetworkStatus(InventoryPlayer ip, TileEntity te) {
|
||||||
super( ip, (TileEntity) te );
|
super( ip, te, null );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
// addSlotToContainer( new SlotRestrictedInput(
|
// addSlotToContainer( new SlotRestrictedInput(
|
||||||
|
|
|
@ -13,7 +13,7 @@ public class ContainerSpatialIOPort extends AEBaseContainer
|
||||||
TileSpatialIOPort myte;
|
TileSpatialIOPort myte;
|
||||||
|
|
||||||
public ContainerSpatialIOPort(InventoryPlayer ip, TileSpatialIOPort te) {
|
public ContainerSpatialIOPort(InventoryPlayer ip, TileSpatialIOPort te) {
|
||||||
super( ip, te );
|
super( ip, te, null );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.SPATIAL_STORAGE_CELLS, te, 0, 71, 14 ) );
|
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.SPATIAL_STORAGE_CELLS, te, 0, 71, 14 ) );
|
||||||
|
|
|
@ -17,7 +17,7 @@ public class ContainerVibrationChamber extends AEBaseContainer
|
||||||
TileVibrationChamber myte;
|
TileVibrationChamber myte;
|
||||||
|
|
||||||
public ContainerVibrationChamber(InventoryPlayer ip, TileVibrationChamber te) {
|
public ContainerVibrationChamber(InventoryPlayer ip, TileVibrationChamber te) {
|
||||||
super( ip, te );
|
super( ip, te, null );
|
||||||
myte = te;
|
myte = te;
|
||||||
|
|
||||||
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.FUEL, te, 0, 80, 37 ) );
|
addSlotToContainer( new SlotRestrictedInput( PlaceableItemType.FUEL, te, 0, 80, 37 ) );
|
||||||
|
|
|
@ -2,7 +2,6 @@ package appeng.core.features.registries.entries;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.ChatMessageComponent;
|
|
||||||
import net.minecraft.util.Icon;
|
import net.minecraft.util.Icon;
|
||||||
import appeng.api.implementations.IChestOrDrive;
|
import appeng.api.implementations.IChestOrDrive;
|
||||||
import appeng.api.storage.ICellHandler;
|
import appeng.api.storage.ICellHandler;
|
||||||
|
@ -10,8 +9,11 @@ import appeng.api.storage.IMEInventory;
|
||||||
import appeng.api.storage.IMEInventoryHandler;
|
import appeng.api.storage.IMEInventoryHandler;
|
||||||
import appeng.api.storage.StorageChannel;
|
import appeng.api.storage.StorageChannel;
|
||||||
import appeng.client.texture.ExtraTextures;
|
import appeng.client.texture.ExtraTextures;
|
||||||
|
import appeng.core.sync.GuiBridge;
|
||||||
import appeng.items.storage.ItemCreativeStorageCell;
|
import appeng.items.storage.ItemCreativeStorageCell;
|
||||||
import appeng.me.storage.CreativeCellInventory;
|
import appeng.me.storage.CreativeCellInventory;
|
||||||
|
import appeng.tile.AEBaseTile;
|
||||||
|
import appeng.util.Platform;
|
||||||
|
|
||||||
public class CreativeCellHandler implements ICellHandler
|
public class CreativeCellHandler implements ICellHandler
|
||||||
{
|
{
|
||||||
|
@ -39,7 +41,7 @@ public class CreativeCellHandler implements ICellHandler
|
||||||
@Override
|
@Override
|
||||||
public void openChestGui(EntityPlayer player, IChestOrDrive chest, ICellHandler cellHandler, IMEInventoryHandler inv, ItemStack is, StorageChannel chan)
|
public void openChestGui(EntityPlayer player, IChestOrDrive chest, ICellHandler cellHandler, IMEInventoryHandler inv, ItemStack is, StorageChannel chan)
|
||||||
{
|
{
|
||||||
player.sendChatToPlayer( ChatMessageComponent.createFromText( "Not ready yet..." ) );
|
Platform.openGUI( player, (AEBaseTile) chest, chest.getUp(), GuiBridge.GUI_ME );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,7 +7,6 @@ import java.io.IOException;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.network.INetworkManager;
|
import net.minecraft.network.INetworkManager;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import appeng.api.config.Settings;
|
import appeng.api.config.Settings;
|
||||||
import appeng.api.util.IConfigManager;
|
import appeng.api.util.IConfigManager;
|
||||||
import appeng.api.util.IConfigureableObject;
|
import appeng.api.util.IConfigureableObject;
|
||||||
|
@ -31,10 +30,9 @@ public class PacketConfigButton extends AppEngPacket
|
||||||
{
|
{
|
||||||
EntityPlayerMP sender = (EntityPlayerMP) player;
|
EntityPlayerMP sender = (EntityPlayerMP) player;
|
||||||
AEBaseContainer aebc = (AEBaseContainer) sender.openContainer;
|
AEBaseContainer aebc = (AEBaseContainer) sender.openContainer;
|
||||||
TileEntity bt = aebc.getTileEntity();
|
if ( aebc.getTarget() instanceof IConfigureableObject )
|
||||||
if ( bt instanceof IConfigureableObject )
|
|
||||||
{
|
{
|
||||||
IConfigManager cm = ((IConfigureableObject) bt).getConfigManager();
|
IConfigManager cm = ((IConfigureableObject) aebc.getTarget()).getConfigManager();
|
||||||
Enum newState = Platform.nextEnum( cm.getSetting( option ) );
|
Enum newState = Platform.nextEnum( cm.getSetting( option ) );
|
||||||
cm.putSetting( option, newState );
|
cm.putSetting( option, newState );
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package appeng.helpers;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
|
|
||||||
import net.minecraftforge.event.ForgeSubscribe;
|
import net.minecraftforge.event.ForgeSubscribe;
|
||||||
|
@ -22,7 +21,7 @@ public class TickHandler implements ITickHandler
|
||||||
|
|
||||||
public Queue<AEBaseTile> tiles = new LinkedList();
|
public Queue<AEBaseTile> tiles = new LinkedList();
|
||||||
|
|
||||||
public List<Grid> networks = new LinkedList();
|
public LinkedList<Grid> networks = new LinkedList();
|
||||||
|
|
||||||
public void clear()
|
public void clear()
|
||||||
{
|
{
|
||||||
|
@ -76,8 +75,9 @@ public class TickHandler implements ITickHandler
|
||||||
{
|
{
|
||||||
if ( Platform.isServer() )
|
if ( Platform.isServer() )
|
||||||
{
|
{
|
||||||
for (Grid g : getRepo().networks)
|
while (!getRepo().networks.isEmpty())
|
||||||
{
|
{
|
||||||
|
Grid g = getRepo().networks.poll();
|
||||||
for (IGridNode n : g.getNodes())
|
for (IGridNode n : g.getNodes())
|
||||||
{
|
{
|
||||||
if ( n.getWorld() == ev.world )
|
if ( n.getWorld() == ev.world )
|
||||||
|
|
|
@ -8,6 +8,7 @@ import appeng.api.config.Actionable;
|
||||||
import appeng.api.config.FuzzyMode;
|
import appeng.api.config.FuzzyMode;
|
||||||
import appeng.api.config.RedstoneMode;
|
import appeng.api.config.RedstoneMode;
|
||||||
import appeng.api.config.Settings;
|
import appeng.api.config.Settings;
|
||||||
|
import appeng.api.config.Upgrades;
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
import appeng.api.networking.energy.IEnergyGrid;
|
import appeng.api.networking.energy.IEnergyGrid;
|
||||||
import appeng.api.networking.ticking.IGridTickable;
|
import appeng.api.networking.ticking.IGridTickable;
|
||||||
|
@ -105,16 +106,30 @@ public class PartExportBus extends PartSharedItemBus implements IGridTickable
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isSleeping()
|
TickRateModulation doBusWork()
|
||||||
{
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return getHandler() == null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall)
|
|
||||||
{
|
{
|
||||||
int itemToSend = 1;
|
int itemToSend = 1;
|
||||||
|
|
||||||
|
switch (getInstalledUpgrades( Upgrades.SPEED ))
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
case 0:
|
||||||
|
itemToSend = 1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
itemToSend = 8;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
itemToSend = 32;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
itemToSend = 64;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
itemToSend = 96;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
boolean didSomething = false;
|
boolean didSomething = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -170,4 +185,20 @@ public class PartExportBus extends PartSharedItemBus implements IGridTickable
|
||||||
return didSomething ? TickRateModulation.FASTER : TickRateModulation.SLOWER;
|
return didSomething ? TickRateModulation.FASTER : TickRateModulation.SLOWER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall)
|
||||||
|
{
|
||||||
|
return doBusWork();
|
||||||
|
}
|
||||||
|
|
||||||
|
public RedstoneMode getRSMode()
|
||||||
|
{
|
||||||
|
return (RedstoneMode) settings.getSetting( Settings.REDSTONE_OUTPUT );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isSleeping()
|
||||||
|
{
|
||||||
|
return getHandler() == null || super.isSleeping();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import appeng.api.config.FuzzyMode;
|
||||||
import appeng.api.config.PowerMultiplier;
|
import appeng.api.config.PowerMultiplier;
|
||||||
import appeng.api.config.RedstoneMode;
|
import appeng.api.config.RedstoneMode;
|
||||||
import appeng.api.config.Settings;
|
import appeng.api.config.Settings;
|
||||||
|
import appeng.api.config.Upgrades;
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
import appeng.api.networking.ticking.IGridTickable;
|
import appeng.api.networking.ticking.IGridTickable;
|
||||||
import appeng.api.networking.ticking.TickRateModulation;
|
import appeng.api.networking.ticking.TickRateModulation;
|
||||||
|
@ -31,7 +32,7 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
|
||||||
|
|
||||||
public PartImportBus(ItemStack is) {
|
public PartImportBus(ItemStack is) {
|
||||||
super( PartImportBus.class, is );
|
super( PartImportBus.class, is );
|
||||||
settings.registerSetting( Settings.REDSTONE_INPUT, RedstoneMode.IGNORE );
|
settings.registerSetting( Settings.REDSTONE_OUTPUT, RedstoneMode.IGNORE );
|
||||||
settings.registerSetting( Settings.FUZZY_MODE, FuzzyMode.IGNORE_ALL );
|
settings.registerSetting( Settings.FUZZY_MODE, FuzzyMode.IGNORE_ALL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,32 +131,63 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
|
||||||
return new TickingRequest( 5, 40, getHandler() == null, false );
|
return new TickingRequest( 5, 40, getHandler() == null, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private int itemToSend; // used in tickingRequest
|
||||||
public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall)
|
private boolean worked; // used in tickingRequest
|
||||||
|
|
||||||
|
TickRateModulation doBusWork()
|
||||||
{
|
{
|
||||||
boolean worked = false;
|
worked = false;
|
||||||
|
|
||||||
InventoryAdaptor myAdaptor = getHandler();
|
InventoryAdaptor myAdaptor = getHandler();
|
||||||
if ( myAdaptor != null )
|
if ( myAdaptor != null )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int howMany = 1;
|
switch (getInstalledUpgrades( Upgrades.SPEED ))
|
||||||
howMany = Math.min( howMany, (int) (0.01 + proxy.getEnergy().extractAEPower( howMany, Actionable.SIMULATE, PowerMultiplier.CONFIG )) );
|
|
||||||
|
|
||||||
ItemStack newItems = myAdaptor.removeItems( howMany, null, configDest( proxy.getStorage().getItemInventory() ) );
|
|
||||||
if ( newItems != null )
|
|
||||||
{
|
{
|
||||||
if ( lastItemChecked == null || !lastItemChecked.isSameType( newItems ) )
|
default:
|
||||||
lastItemChecked = AEApi.instance().storage().createItemStack( newItems );
|
case 0:
|
||||||
else
|
itemToSend = 1;
|
||||||
lastItemChecked.setStackSize( newItems.stackSize );
|
break;
|
||||||
|
case 1:
|
||||||
|
itemToSend = 8;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
itemToSend = 32;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
itemToSend = 64;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
itemToSend = 96;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
IAEItemStack failed = destination.injectItems( lastItemChecked, Actionable.MODULATE );
|
itemToSend = Math.min( itemToSend, (int) (0.01 + proxy.getEnergy().extractAEPower( itemToSend, Actionable.SIMULATE, PowerMultiplier.CONFIG )) );
|
||||||
if ( failed != null )
|
IMEMonitor<IAEItemStack> inv = proxy.getStorage().getItemInventory();
|
||||||
myAdaptor.addItems( failed.getItemStack() );
|
|
||||||
else
|
boolean Configured = false;
|
||||||
worked = true;
|
for (int x = 0; x < availableSlots(); x++)
|
||||||
|
{
|
||||||
|
IAEItemStack ais = config.getAEStackInSlot( x );
|
||||||
|
if ( ais != null && itemToSend > 0 )
|
||||||
|
{
|
||||||
|
Configured = true;
|
||||||
|
while (itemToSend > 0)
|
||||||
|
{
|
||||||
|
if ( importStuff( myAdaptor, ais, inv ) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !Configured )
|
||||||
|
{
|
||||||
|
while (itemToSend > 0)
|
||||||
|
{
|
||||||
|
if ( importStuff( myAdaptor, null, inv ) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (GridAccessException e)
|
catch (GridAccessException e)
|
||||||
|
@ -169,10 +201,51 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
|
||||||
return worked ? TickRateModulation.FASTER : TickRateModulation.SLOWER;
|
return worked ? TickRateModulation.FASTER : TickRateModulation.SLOWER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall)
|
||||||
|
{
|
||||||
|
return doBusWork();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean importStuff(InventoryAdaptor myAdaptor, IAEItemStack whatToImport, IMEMonitor<IAEItemStack> inv)
|
||||||
|
{
|
||||||
|
if ( itemToSend > 64 )
|
||||||
|
itemToSend = 64;
|
||||||
|
|
||||||
|
ItemStack newItems = myAdaptor.removeItems( itemToSend, whatToImport == null ? null : whatToImport.getItemStack(), configDest( inv ) );
|
||||||
|
if ( newItems != null )
|
||||||
|
{
|
||||||
|
itemToSend -= newItems.stackSize;
|
||||||
|
|
||||||
|
if ( lastItemChecked == null || !lastItemChecked.isSameType( newItems ) )
|
||||||
|
lastItemChecked = AEApi.instance().storage().createItemStack( newItems );
|
||||||
|
else
|
||||||
|
lastItemChecked.setStackSize( newItems.stackSize );
|
||||||
|
|
||||||
|
IAEItemStack failed = destination.injectItems( lastItemChecked, Actionable.MODULATE );
|
||||||
|
if ( failed != null )
|
||||||
|
{
|
||||||
|
myAdaptor.addItems( failed.getItemStack() );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
worked = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RedstoneMode getRSMode()
|
||||||
|
{
|
||||||
|
return (RedstoneMode) settings.getSetting( Settings.REDSTONE_OUTPUT );
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isSleeping()
|
protected boolean isSleeping()
|
||||||
{
|
{
|
||||||
return getHandler() == null;
|
return getHandler() == null || super.isSleeping();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,11 @@ package appeng.parts.automation;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import appeng.api.config.RedstoneMode;
|
||||||
import appeng.api.config.Upgrades;
|
import appeng.api.config.Upgrades;
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
import appeng.api.networking.ticking.IGridTickable;
|
import appeng.api.networking.ticking.IGridTickable;
|
||||||
|
import appeng.api.networking.ticking.TickRateModulation;
|
||||||
import appeng.api.networking.ticking.TickingRequest;
|
import appeng.api.networking.ticking.TickingRequest;
|
||||||
import appeng.me.GridAccessException;
|
import appeng.me.GridAccessException;
|
||||||
import appeng.tile.inventory.AppEngInternalAEInventory;
|
import appeng.tile.inventory.AppEngInternalAEInventory;
|
||||||
|
@ -19,6 +21,12 @@ public abstract class PartSharedItemBus extends PartUpgradeable implements IGrid
|
||||||
super( c, is );
|
super( c, is );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void upgradesChanged()
|
||||||
|
{
|
||||||
|
updateState();
|
||||||
|
}
|
||||||
|
|
||||||
protected int availableSlots()
|
protected int availableSlots()
|
||||||
{
|
{
|
||||||
return Math.min( 1 + getInstalledUpgrades( Upgrades.CAPACITY ) * 4, config.getSizeInventory() );
|
return Math.min( 1 + getInstalledUpgrades( Upgrades.CAPACITY ) * 4, config.getSizeInventory() );
|
||||||
|
@ -61,23 +69,37 @@ public abstract class PartSharedItemBus extends PartUpgradeable implements IGrid
|
||||||
cached = true;
|
cached = true;
|
||||||
|
|
||||||
return adaptor;
|
return adaptor;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean lastRedstone = false;
|
||||||
|
|
||||||
|
abstract TickRateModulation doBusWork();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNeighborChanged()
|
public void onNeighborChanged()
|
||||||
{
|
{
|
||||||
cached = false;
|
updateState();
|
||||||
if ( !isSleeping() )
|
if ( lastRedstone != host.hasRedstone( side ) )
|
||||||
{
|
{
|
||||||
try
|
lastRedstone = !lastRedstone;
|
||||||
{
|
if ( lastRedstone && getRSMode() == RedstoneMode.SIGNAL_PULSE )
|
||||||
|
doBusWork();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateState()
|
||||||
|
{
|
||||||
|
cached = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if ( !isSleeping() )
|
||||||
proxy.getTick().wakeDevice( proxy.getNode() );
|
proxy.getTick().wakeDevice( proxy.getNode() );
|
||||||
}
|
else
|
||||||
catch (GridAccessException e)
|
proxy.getTick().sleepDevice( proxy.getNode() );
|
||||||
{
|
}
|
||||||
// :P
|
catch (GridAccessException e)
|
||||||
}
|
{
|
||||||
|
// :P
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,6 +118,4 @@ public abstract class PartSharedItemBus extends PartUpgradeable implements IGrid
|
||||||
return new TickingRequest( 5, 60, isSleeping(), false );
|
return new TickingRequest( 5, 60, isSleeping(), false );
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract protected boolean isSleeping();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package appeng.parts.automation;
|
||||||
|
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import appeng.api.config.RedstoneMode;
|
||||||
import appeng.api.config.Upgrades;
|
import appeng.api.config.Upgrades;
|
||||||
import appeng.api.implementations.ISegmentedInventory;
|
import appeng.api.implementations.ISegmentedInventory;
|
||||||
import appeng.api.util.IConfigManager;
|
import appeng.api.util.IConfigManager;
|
||||||
|
@ -45,7 +46,7 @@ public class PartUpgradeable extends PartBasicState implements ISegmentedInvento
|
||||||
@Override
|
@Override
|
||||||
public IConfigManager getConfigManager()
|
public IConfigManager getConfigManager()
|
||||||
{
|
{
|
||||||
return null;
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -63,10 +64,55 @@ public class PartUpgradeable extends PartBasicState implements ISegmentedInvento
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void upgradesChanged()
|
||||||
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removedStack, ItemStack newStack)
|
||||||
|
{
|
||||||
|
if ( inv == upgrades )
|
||||||
|
{
|
||||||
|
upgradesChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public RedstoneMode getRSMode()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isSleeping()
|
||||||
|
{
|
||||||
|
if ( getInstalledUpgrades( Upgrades.REDSTONE ) > 0 )
|
||||||
|
{
|
||||||
|
switch (getRSMode())
|
||||||
|
{
|
||||||
|
case IGNORE:
|
||||||
|
return false;
|
||||||
|
|
||||||
|
case HIGH_SIGNAL:
|
||||||
|
if ( host.hasRedstone( side ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LOW_SIGNAL:
|
||||||
|
if ( !host.hasRedstone( side ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SIGNAL_PULSE:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue