Revert "level emitter changes"

This reverts commit 9d6026635d.
This commit is contained in:
Salomão
2021-05-13 19:32:03 -03:00
parent 8fe4229a8e
commit cc744ab8b9
3 changed files with 27 additions and 65 deletions
@@ -19,7 +19,6 @@
package appeng.parts.automation; package appeng.parts.automation;
import java.util.ArrayList;
import java.util.Random; import java.util.Random;
import appeng.me.Grid; import appeng.me.Grid;
@@ -27,7 +26,6 @@ import appeng.me.GridNode;
import appeng.util.item.AEItemStack; import appeng.util.item.AEItemStack;
import it.unimi.dsi.fastutil.objects.Object2LongMap; import it.unimi.dsi.fastutil.objects.Object2LongMap;
import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryCrafting; import net.minecraft.inventory.InventoryCrafting;
@@ -128,8 +126,6 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
static Object2LongMap<Grid> gridItemCount = new Object2LongOpenHashMap<>(); static Object2LongMap<Grid> gridItemCount = new Object2LongOpenHashMap<>();
static Object2ObjectOpenHashMap<Grid, Object2LongMap<AEItemStack>> fuzzyAEItemStackCount = new Object2ObjectOpenHashMap<>(); static Object2ObjectOpenHashMap<Grid, Object2LongMap<AEItemStack>> fuzzyAEItemStackCount = new Object2ObjectOpenHashMap<>();
static Object2ObjectOpenHashMap<Grid, Object2LongMap<AEItemStack>> preciseAEItemStackCount = new Object2ObjectOpenHashMap<>(); static Object2ObjectOpenHashMap<Grid, Object2LongMap<AEItemStack>> preciseAEItemStackCount = new Object2ObjectOpenHashMap<>();
static Object2ObjectMap<Grid,Iterable<IAEItemStack>> previousChange = new Object2ObjectOpenHashMap<>();
static Object2ObjectMap<Grid,IItemList<IAEItemStack>> cachedStorageList = new Object2ObjectOpenHashMap<>();
@Reflected @Reflected
public PartLevelEmitter( final ItemStack is ) public PartLevelEmitter( final ItemStack is )
@@ -328,90 +324,54 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
private void updateReportingValue( final IMEMonitor<IAEItemStack> monitor ) private void updateReportingValue( final IMEMonitor<IAEItemStack> monitor )
{ {
updateReportingValue( monitor, new ArrayList<>() ); updateReportingValue( monitor,null );
} }
private void updateReportingValue( final IMEMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change ) private void updateReportingValue( final IMEMonitor<IAEItemStack> monitor, Iterable<IAEItemStack> change )
{ {
final IAEItemStack myStack = this.config.getAEStackInSlot( 0 ); final IAEItemStack myStack = this.config.getAEStackInSlot( 0 );
GridNode node = (GridNode) ( this.getGridNode() ); GridNode node = (GridNode) (this.getGridNode());
if( node != null ) if( node != null )
{ {
final Grid g = node.getInternalGrid(); final Grid g = node.getInternalGrid();
IItemList<IAEItemStack> l;
boolean alreadyEvaluated = false;
if( previousChange.containsKey( g ) )
{
if( change.iterator().hasNext() && previousChange.get( g ).iterator().hasNext() )
{
IAEItemStack a = change.iterator().next();
IAEItemStack b = previousChange.get( g ).iterator().next();
if( a == b )
{
alreadyEvaluated = true;
}
}
else {
alreadyEvaluated = true;
}
}
if( alreadyEvaluated )
{
l = cachedStorageList.get( g );
}
else
{
l = monitor.getStorageList();
cachedStorageList.put( g, l );
if ( change.iterator().hasNext() )
{
previousChange.put( g, change );
}
else
{
previousChange.put( g, new ArrayList<>() );
}
}
if( myStack == null ) if( myStack == null )
{ {
if( gridItemCount.containsKey( g ) ) if( change != null )
{ {
change.forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() ); if( gridItemCount.containsKey( g ) )
{
change.forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() );
}
} }
gridItemCount.computeIfAbsent( g, ( aLong ) -> { gridItemCount.computeIfAbsent( g, ( aLong ) -> {
this.lastReportedValue = 0; this.lastReportedValue = 0;
l.forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() ); monitor.getStorageList().forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() );
return ( lastReportedValue ); return ( lastReportedValue );
} ); } );
this.lastReportedValue = gridItemCount.get( g ); this.lastReportedValue = gridItemCount.get( g );
} }
else if( this.getInstalledUpgrades( Upgrades.FUZZY ) > 0 ) else if( this.getInstalledUpgrades( Upgrades.FUZZY ) > 0 )
{ {
final FuzzyMode fzMode = (FuzzyMode) this.getConfigManager().getSetting( Settings.FUZZY_MODE ); final FuzzyMode fzMode = (FuzzyMode) this.getConfigManager().getSetting( Settings.FUZZY_MODE );
if( change != null )
if( fuzzyAEItemStackCount.containsKey( g ) )
{ {
change.forEach( iaeItemStack -> { if( fuzzyAEItemStackCount.containsKey( g ) )
if( iaeItemStack.sameOre( myStack ) ) {
{ change.forEach( iaeItemStack -> {
lastReportedValue += iaeItemStack.getStackSize(); if( iaeItemStack.sameOre( myStack ) ) lastReportedValue += iaeItemStack.getStackSize();
} } );
} ); }
} }
fuzzyAEItemStackCount.computeIfAbsent( g, ( grid -> new Object2LongOpenHashMap<>() ) ); fuzzyAEItemStackCount.computeIfAbsent( g, ( grid -> new Object2LongOpenHashMap<>() ) );
fuzzyAEItemStackCount.get( g ).computeIfAbsent( (AEItemStack) myStack, ( aLong -> { fuzzyAEItemStackCount.get( g ).computeIfAbsent( (AEItemStack) myStack, ( aLong -> {
this.lastReportedValue = 0; this.lastReportedValue = 0;
l.findFuzzy( myStack, fzMode ).forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() ); monitor.getStorageList().findFuzzy( myStack, fzMode ).forEach( iaeItemStack -> lastReportedValue += iaeItemStack.getStackSize() );
return ( lastReportedValue ); return ( lastReportedValue );
} ) ); } ) );
@@ -424,17 +384,19 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH
} }
else else
{ {
if( preciseAEItemStackCount.containsKey( g ) ) if( change != null )
{ {
change.forEach( iaeItemStack -> { if( preciseAEItemStackCount.containsKey( g ) )
if( iaeItemStack.isSameType( myStack ) ) lastReportedValue += iaeItemStack.getStackSize(); {
} ); change.forEach( iaeItemStack -> {
if( iaeItemStack.isSameType( myStack ) ) lastReportedValue += iaeItemStack.getStackSize();
} );
}
} }
preciseAEItemStackCount.computeIfAbsent( g, ( grid -> new Object2LongOpenHashMap<>() ) ); preciseAEItemStackCount.computeIfAbsent( g, ( grid -> new Object2LongOpenHashMap<>() ) );
preciseAEItemStackCount.get( g ).computeIfAbsent( (AEItemStack) myStack, ( aLong -> { preciseAEItemStackCount.get( g ).computeIfAbsent( (AEItemStack) myStack, ( aLong -> {
this.lastReportedValue = 0; this.lastReportedValue = 0;
IAEItemStack precise = l.findPrecise( myStack ); IAEItemStack precise = monitor.getStorageList().findPrecise( myStack );
if( precise != null ) lastReportedValue = precise.getStackSize(); if( precise != null ) lastReportedValue = precise.getStackSize();
return ( lastReportedValue ); return ( lastReportedValue );
} ) ); } ) );
@@ -406,7 +406,7 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
if( oldAeIS != null ) if( oldAeIS != null )
{ {
oldAeIS.setStackSize( -oldAeIS.getStackSize() ); oldAeIS.setStackSize( -oldAeIS.getStackSize() );
changes.add( oldAeIS.copy() ); changes.add( oldAeIS );
} }
// Notify the network about the new stack. Note that this is null if newIS was null // Notify the network about the new stack. Note that this is null if newIS was null
@@ -284,7 +284,7 @@ class ItemRepositoryAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<
if( oldAeIS != null ) if( oldAeIS != null )
{ {
oldAeIS.setStackSize( -oldAeIS.getStackSize() ); oldAeIS.setStackSize( -oldAeIS.getStackSize() );
changes.add( oldAeIS.copy() ); changes.add( oldAeIS );
} }
// Notify the network about the new stack. Note that this is null if newIS was null // Notify the network about the new stack. Note that this is null if newIS was null