This commit is contained in:
PrototypeTrousers
2021-10-21 12:22:00 -03:00
parent e41b6943aa
commit 75843e802d
3 changed files with 43 additions and 35 deletions
@@ -85,11 +85,7 @@ public class MEMonitorHandler<T extends IAEStack<T>> implements IMEMonitor<T>
@Override
public T injectItems( final T input, final Actionable mode, final IActionSource src )
{
if( mode == Actionable.SIMULATE )
{
return this.getHandler().injectItems( input, mode, src );
}
return this.monitorDifference( input.copy(), this.getHandler().injectItems( input, mode, src ), false, src );
return this.getHandler().injectItems( input, mode, src );
}
protected IMEInventoryHandler<T> getHandler()
@@ -97,27 +93,6 @@ public class MEMonitorHandler<T extends IAEStack<T>> implements IMEMonitor<T>
return this.internalHandler;
}
private T monitorDifference( final T original, final T leftOvers, final boolean extraction, final IActionSource src )
{
final T diff = original.copy();
if( extraction )
{
diff.setStackSize( leftOvers == null ? 0 : -leftOvers.getStackSize() );
}
else if( leftOvers != null )
{
diff.decStackSize( leftOvers.getStackSize() );
}
if( diff.getStackSize() != 0 )
{
this.postChangesToListeners( ImmutableList.of( diff ), src );
}
return leftOvers;
}
protected void postChangesToListeners( final Iterable<T> changes, final IActionSource src )
{
this.notifyListenersOfChange( changes, src );
@@ -150,11 +125,7 @@ public class MEMonitorHandler<T extends IAEStack<T>> implements IMEMonitor<T>
@Override
public T extractItems( final T request, final Actionable mode, final IActionSource src )
{
if( mode == Actionable.SIMULATE )
{
return this.getHandler().extractItems( request, mode, src );
}
return this.monitorDifference( request.copy(), this.getHandler().extractItems( request, mode, src ), true, src );
return this.getHandler().extractItems( request, mode, src );
}
@Override
@@ -19,6 +19,7 @@
package appeng.me.storage;
import appeng.core.features.registries.cell.CreativeCellHandler;
import appeng.me.GridAccessException;
import appeng.me.helpers.MachineSource;
import appeng.tile.storage.TileDrive;
@@ -73,7 +74,7 @@ public class DriveWatcher<T extends IAEStack<T>> extends MEInventoryHandler<T>
this.drive.blinkCell( this.getSlot() );
this.oldStatus = newStatus;
}
if (this.drive.getProxy().isActive())
if (this.drive.getProxy().isActive() && !(handler instanceof CreativeCellHandler))
{
try
{
@@ -102,7 +103,7 @@ public class DriveWatcher<T extends IAEStack<T>> extends MEInventoryHandler<T>
this.drive.blinkCell( this.getSlot() );
this.oldStatus = newStatus;
}
if (this.drive.getProxy().isActive())
if (this.drive.getProxy().isActive() && !(handler instanceof CreativeCellHandler ))
{
try
{