Security Update.

This commit is contained in:
AlgorithmX2
2014-01-05 02:43:49 -06:00
parent 803e62fcc7
commit 851d3cca7c
12 changed files with 176 additions and 44 deletions
+8 -3
View File
@@ -11,6 +11,8 @@ import appeng.api.config.Settings;
import appeng.api.config.Upgrades;
import appeng.api.networking.IGridNode;
import appeng.api.networking.energy.IEnergyGrid;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.security.MachineSource;
import appeng.api.networking.ticking.IGridTickable;
import appeng.api.networking.ticking.TickRateModulation;
import appeng.api.parts.IPartCollsionHelper;
@@ -26,10 +28,13 @@ import appeng.util.Platform;
public class PartExportBus extends PartSharedItemBus implements IGridTickable
{
BaseActionSource mySrc;
public PartExportBus(ItemStack is) {
super( PartExportBus.class, is );
settings.registerSetting( Settings.REDSTONE_OUTPUT, RedstoneMode.IGNORE );
settings.registerSetting( Settings.REDSTONE_CONTROLLED, RedstoneMode.IGNORE );
settings.registerSetting( Settings.FUZZY_MODE, FuzzyMode.IGNORE_ALL );
mySrc = new MachineSource( this );
}
@Override
@@ -155,7 +160,7 @@ public class PartExportBus extends PartSharedItemBus implements IGridTickable
{
ais = ais.copy();
ais.setStackSize( canFit );
IAEItemStack itemsToAdd = Platform.poweredExtraction( energy, inv, ais );
IAEItemStack itemsToAdd = Platform.poweredExtraction( energy, inv, ais, mySrc );
if ( itemsToAdd != null )
{
@@ -193,7 +198,7 @@ public class PartExportBus extends PartSharedItemBus implements IGridTickable
public RedstoneMode getRSMode()
{
return (RedstoneMode) settings.getSetting( Settings.REDSTONE_OUTPUT );
return (RedstoneMode) settings.getSetting( Settings.REDSTONE_CONTROLLED );
}
@Override
+18 -9
View File
@@ -12,6 +12,10 @@ import appeng.api.config.RedstoneMode;
import appeng.api.config.Settings;
import appeng.api.config.Upgrades;
import appeng.api.networking.IGridNode;
import appeng.api.networking.energy.IEnergyGrid;
import appeng.api.networking.energy.IEnergySource;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.security.MachineSource;
import appeng.api.networking.ticking.IGridTickable;
import appeng.api.networking.ticking.TickRateModulation;
import appeng.api.networking.ticking.TickingRequest;
@@ -30,10 +34,15 @@ import appeng.util.inv.IInventoryDestination;
public class PartImportBus extends PartSharedItemBus implements IGridTickable, IInventoryDestination
{
BaseActionSource mySrc;
IMEInventory<IAEItemStack> destination = null;
IAEItemStack lastItemChecked = null;
public PartImportBus(ItemStack is) {
super( PartImportBus.class, is );
settings.registerSetting( Settings.REDSTONE_OUTPUT, RedstoneMode.IGNORE );
settings.registerSetting( Settings.REDSTONE_CONTROLLED, RedstoneMode.IGNORE );
settings.registerSetting( Settings.FUZZY_MODE, FuzzyMode.IGNORE_ALL );
mySrc = new MachineSource( this );
}
@Override
@@ -51,9 +60,6 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
return false;
}
IMEInventory<IAEItemStack> destination = null;
IAEItemStack lastItemChecked = null;
@Override
public boolean canInsert(ItemStack stack)
{
@@ -165,6 +171,7 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
itemToSend = Math.min( itemToSend, (int) (0.01 + proxy.getEnergy().extractAEPower( itemToSend, Actionable.SIMULATE, PowerMultiplier.CONFIG )) );
IMEMonitor<IAEItemStack> inv = proxy.getStorage().getItemInventory();
IEnergyGrid energy = proxy.getEnergy();
boolean Configured = false;
for (int x = 0; x < availableSlots(); x++)
@@ -175,7 +182,7 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
Configured = true;
while (itemToSend > 0)
{
if ( importStuff( myAdaptor, ais, inv ) )
if ( importStuff( myAdaptor, ais, inv, energy ) )
break;
}
}
@@ -185,7 +192,7 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
{
while (itemToSend > 0)
{
if ( importStuff( myAdaptor, null, inv ) )
if ( importStuff( myAdaptor, null, inv, energy ) )
break;
}
}
@@ -207,7 +214,7 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
return doBusWork();
}
private boolean importStuff(InventoryAdaptor myAdaptor, IAEItemStack whatToImport, IMEMonitor<IAEItemStack> inv)
private boolean importStuff(InventoryAdaptor myAdaptor, IAEItemStack whatToImport, IMEMonitor<IAEItemStack> inv, IEnergySource energy)
{
if ( itemToSend > 64 )
itemToSend = 64;
@@ -215,6 +222,7 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
ItemStack newItems = myAdaptor.removeItems( itemToSend, whatToImport == null ? null : whatToImport.getItemStack(), configDest( inv ) );
if ( newItems != null )
{
newItems.stackSize = (int) (Math.min( newItems.stackSize, energy.extractAEPower( newItems.stackSize, Actionable.SIMULATE, PowerMultiplier.CONFIG ) ) + 0.01);
itemToSend -= newItems.stackSize;
if ( lastItemChecked == null || !lastItemChecked.isSameType( newItems ) )
@@ -222,7 +230,8 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
else
lastItemChecked.setStackSize( newItems.stackSize );
IAEItemStack failed = destination.injectItems( lastItemChecked, Actionable.MODULATE );
IAEItemStack failed = Platform.poweredInsert( energy, destination, lastItemChecked, mySrc );
// destination.injectItems( lastItemChecked, Actionable.MODULATE );
if ( failed != null )
{
myAdaptor.addItems( failed.getItemStack() );
@@ -239,7 +248,7 @@ public class PartImportBus extends PartSharedItemBus implements IGridTickable, I
public RedstoneMode getRSMode()
{
return (RedstoneMode) settings.getSetting( Settings.REDSTONE_OUTPUT );
return (RedstoneMode) settings.getSetting( Settings.REDSTONE_CONTROLLED );
}
@Override
+9 -2
View File
@@ -11,6 +11,8 @@ import net.minecraftforge.common.ForgeDirection;
import appeng.api.AEApi;
import appeng.api.networking.IGridNode;
import appeng.api.networking.events.MENetworkCellArrayUpdate;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.security.MachineSource;
import appeng.api.networking.ticking.IGridTickable;
import appeng.api.networking.ticking.ITickManager;
import appeng.api.networking.ticking.TickRateModulation;
@@ -41,9 +43,11 @@ public class PartStorageBus extends PartBasicState implements IGridTickable, ICe
{
int priority = 0;
BaseActionSource mySrc;
public PartStorageBus(ItemStack is) {
super( PartStorageBus.class, is );
mySrc = new MachineSource( this );
}
boolean cached = false;
@@ -98,6 +102,9 @@ public class PartStorageBus extends PartBasicState implements IGridTickable, ICe
{
IMEInventory inv = esh.getInventory( target, side.getOpposite(), StorageChannel.ITEMS );
if ( inv instanceof MEMonitorIInventory )
((MEMonitorIInventory) inv).mySource = new MachineSource( this );
if ( inv instanceof MEMonitorIInventory )
monitor = (MEMonitorIInventory) inv;
@@ -240,11 +247,11 @@ public class PartStorageBus extends PartBasicState implements IGridTickable, ICe
}
@Override
public void postChange(IAEItemStack change)
public void postChange(IMEMonitor<IAEItemStack> monitor, IAEItemStack change, BaseActionSource source)
{
try
{
proxy.getStorage().postAlterationOfStoredItems( StorageChannel.ITEMS, change );
proxy.getStorage().postAlterationOfStoredItems( StorageChannel.ITEMS, change, mySrc );
}
catch (GridAccessException e)
{