Export Bus With filter.
This commit is contained in:
parent
731471651f
commit
2a4e4c0369
|
@ -4,16 +4,22 @@ import net.minecraft.client.renderer.RenderBlocks;
|
||||||
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.Vec3;
|
import net.minecraft.util.Vec3;
|
||||||
|
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.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
|
import appeng.api.networking.energy.IEnergyGrid;
|
||||||
import appeng.api.networking.ticking.IGridTickable;
|
import appeng.api.networking.ticking.IGridTickable;
|
||||||
import appeng.api.networking.ticking.TickRateModulation;
|
import appeng.api.networking.ticking.TickRateModulation;
|
||||||
import appeng.api.parts.IPartCollsionHelper;
|
import appeng.api.parts.IPartCollsionHelper;
|
||||||
import appeng.api.parts.IPartRenderHelper;
|
import appeng.api.parts.IPartRenderHelper;
|
||||||
|
import appeng.api.storage.IMEInventory;
|
||||||
|
import appeng.api.storage.data.IAEItemStack;
|
||||||
import appeng.client.texture.CableBusTextures;
|
import appeng.client.texture.CableBusTextures;
|
||||||
import appeng.core.sync.GuiBridge;
|
import appeng.core.sync.GuiBridge;
|
||||||
|
import appeng.me.GridAccessException;
|
||||||
|
import appeng.util.InventoryAdaptor;
|
||||||
import appeng.util.Platform;
|
import appeng.util.Platform;
|
||||||
|
|
||||||
public class PartExportBus extends PartSharedItemBus implements IGridTickable
|
public class PartExportBus extends PartSharedItemBus implements IGridTickable
|
||||||
|
@ -60,6 +66,7 @@ public class PartExportBus extends PartSharedItemBus implements IGridTickable
|
||||||
@Override
|
@Override
|
||||||
public void renderStatic(int x, int y, int z, IPartRenderHelper rh, RenderBlocks renderer)
|
public void renderStatic(int x, int y, int z, IPartRenderHelper rh, RenderBlocks renderer)
|
||||||
{
|
{
|
||||||
|
rh.useSimpliedRendering( x, y, z, this );
|
||||||
rh.setTexture( CableBusTextures.PartMonitorSides.getIcon(), CableBusTextures.PartMonitorSides.getIcon(), CableBusTextures.PartMonitorBack.getIcon(),
|
rh.setTexture( CableBusTextures.PartMonitorSides.getIcon(), CableBusTextures.PartMonitorSides.getIcon(), CableBusTextures.PartMonitorBack.getIcon(),
|
||||||
is.getIconIndex(), CableBusTextures.PartMonitorSides.getIcon(), CableBusTextures.PartMonitorSides.getIcon() );
|
is.getIconIndex(), CableBusTextures.PartMonitorSides.getIcon(), CableBusTextures.PartMonitorSides.getIcon() );
|
||||||
|
|
||||||
|
@ -107,8 +114,60 @@ public class PartExportBus extends PartSharedItemBus implements IGridTickable
|
||||||
@Override
|
@Override
|
||||||
public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall)
|
public TickRateModulation tickingRequest(IGridNode node, int TicksSinceLastCall)
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
int itemToSend = 1;
|
||||||
return TickRateModulation.SLOWER;
|
boolean didSomething = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
InventoryAdaptor d = getHandler();
|
||||||
|
IMEInventory<IAEItemStack> inv = proxy.getStorage().getItemInventory();
|
||||||
|
IEnergyGrid energy = proxy.getEnergy();
|
||||||
|
|
||||||
|
if ( d != null )
|
||||||
|
{
|
||||||
|
for (int x = 0; x < availableSlots(); x++)
|
||||||
|
{
|
||||||
|
IAEItemStack ais = config.getAEStackInSlot( x );
|
||||||
|
if ( ais != null && itemToSend > 0 )
|
||||||
|
{
|
||||||
|
ItemStack is = ais.getItemStack();
|
||||||
|
is.stackSize = itemToSend;
|
||||||
|
|
||||||
|
ItemStack o = d.simulateAdd( ais.getItemStack() );
|
||||||
|
int canFit = o == null ? itemToSend : itemToSend - o.stackSize;
|
||||||
|
|
||||||
|
if ( canFit > 0 )
|
||||||
|
{
|
||||||
|
ais = ais.copy();
|
||||||
|
ais.setStackSize( canFit );
|
||||||
|
IAEItemStack itemsToAdd = Platform.poweredExtraction( energy, inv, ais );
|
||||||
|
|
||||||
|
if ( itemsToAdd != null )
|
||||||
|
{
|
||||||
|
itemToSend -= itemsToAdd.getStackSize();
|
||||||
|
|
||||||
|
ItemStack failed = d.addItems( itemsToAdd.getItemStack() );
|
||||||
|
if ( failed != null )
|
||||||
|
{
|
||||||
|
ais.setStackSize( failed.stackSize );
|
||||||
|
inv.injectItems( ais, Actionable.MODULATE );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
didSomething = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (GridAccessException e)
|
||||||
|
{
|
||||||
|
// :P
|
||||||
|
}
|
||||||
|
|
||||||
|
return didSomething ? TickRateModulation.FASTER : TickRateModulation.SLOWER;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue