7474import appeng .helpers .Reflected ;
7575import appeng .me .GridAccessException ;
7676import appeng .tile .inventory .IAEStackInventory ;
77- import appeng .util .LevelEmitterTypeFilter ;
77+ import appeng .util .AEStackTypeFilter ;
7878import appeng .util .Platform ;
7979import appeng .util .SettingsFrom ;
8080import appeng .util .item .AEFluidStackType ;
8181import cpw .mods .fml .relauncher .Side ;
8282import cpw .mods .fml .relauncher .SideOnly ;
83- import it .unimi .dsi .fastutil .objects .Reference2BooleanMap ;
8483
8584public class PartLevelEmitter extends PartUpgradeable implements ILevelEmitter {
8685
@@ -104,7 +103,7 @@ public class PartLevelEmitter extends PartUpgradeable implements ILevelEmitter {
104103 private int lastWorkingTick = 0 ;
105104 private boolean delayedUpdatesQueued = false ;
106105
107- private final LevelEmitterTypeFilter typeFilters = new LevelEmitterTypeFilter ();
106+ private final AEStackTypeFilter typeFilters = new AEStackTypeFilter ();
108107
109108 @ Reflected
110109 public PartLevelEmitter (final ItemStack is ) {
@@ -268,7 +267,7 @@ private void configureWatchers() {
268267 IMEMonitor <?> monitor = this .getProxy ().getStorage ().getMEMonitor (type );
269268 if (monitor == null ) continue ;
270269
271- if (myStack != null || this .typeFilters .getFilters (). getBoolean (type )) {
270+ if (myStack != null || this .typeFilters .isEnabled (type )) {
272271 monitor .addListener (this , this .getProxy ().getGrid ());
273272 } else {
274273 monitor .removeListener (this );
@@ -304,20 +303,17 @@ private void updateReportingValue(IMEMonitor monitor) {
304303 if (myStack == null || monitor == null ) {
305304 this .lastReportedValue = 0 ;
306305 try {
307- final Reference2BooleanMap <IAEStackType <?>> filters = this .typeFilters .getFilters ();
308306 final var storage = getProxy ().getStorage ();
309307
310- outer : for (var entry : filters .reference2BooleanEntrySet ()) {
311- if (entry .getBooleanValue ()) {
312- IMEMonitor <?> validMonitor = storage .getMEMonitor (entry .getKey ());
313- if (validMonitor == null ) continue ;
314-
315- for (IAEStack <?> stack : validMonitor .getStorageList ()) {
316- this .lastReportedValue += stack .getStackSize ();
317- if (this .lastReportedValue < 0 ) {
318- this .lastReportedValue = Long .MAX_VALUE ;
319- break outer ;
320- }
308+ outer : for (IAEStackType <?> enabledType : this .typeFilters .getEnabledTypes ()) {
309+ IMEMonitor <?> validMonitor = storage .getMEMonitor (enabledType );
310+ if (validMonitor == null ) continue ;
311+
312+ for (IAEStack <?> stack : validMonitor .getStorageList ()) {
313+ this .lastReportedValue += stack .getStackSize ();
314+ if (this .lastReportedValue < 0 ) {
315+ this .lastReportedValue = Long .MAX_VALUE ;
316+ break outer ;
321317 }
322318 }
323319 }
@@ -759,15 +755,14 @@ public void readFromNBT(final NBTTagCompound data) {
759755 this .prevState = data .getBoolean ("prevState" );
760756 this .config .readFromNBT (data , "config" );
761757
762- final boolean hasTypeFilters = data .hasKey (LevelEmitterTypeFilter .NBT_FILTERS );
758+ final boolean hasTypeFilters = data .hasKey (AEStackTypeFilter .NBT_FILTERS );
763759 if (hasTypeFilters ) {
764760 this .typeFilters .readFromNBT (data );
765761 } else if (data .hasKey ("TYPE_FILTER" )) {
766762 this .applyLegacyTypeFilter (data .getString ("TYPE_FILTER" ));
767763 } else {
768- final Reference2BooleanMap <IAEStackType <?>> filters = this .typeFilters .getFilters ();
769764 final IAEStackType <?> thisType = this .getUltraLegacyType ();
770- for ( IAEStackType <?> type : filters . keySet ()) filters . put ( type , type == thisType );
765+ this . typeFilters . setOnlyEnabled ( thisType );
771766 }
772767 }
773768
@@ -842,20 +837,17 @@ public IAEStackInventory getAEInventoryByName(StorageName name) {
842837 }
843838
844839 @ Override
845- public LevelEmitterTypeFilter getTypeFilters () {
840+ public AEStackTypeFilter getTypeFilters () {
846841 return this .typeFilters ;
847842 }
848843
849844 private void applyLegacyTypeFilter (final String typeName ) {
850- final Reference2BooleanMap <IAEStackType <?>> filters = this .typeFilters .getFilters ();
851- for (IAEStackType <?> type : filters .keySet ()) {
852- if ("ALL" .equals (typeName )) {
853- filters .put (type , true );
854- } else if ("ITEMS" .equals (typeName )) {
855- filters .put (type , type == ITEM_STACK_TYPE );
856- } else if ("FLUIDS" .equals (typeName )) {
857- filters .put (type , type == AEFluidStackType .FLUID_STACK_TYPE );
858- }
845+ if ("ALL" .equals (typeName )) {
846+ this .typeFilters .setAllEnabled (true );
847+ } else if ("ITEMS" .equals (typeName )) {
848+ this .typeFilters .setOnlyEnabled (ITEM_STACK_TYPE );
849+ } else if ("FLUIDS" .equals (typeName )) {
850+ this .typeFilters .setOnlyEnabled (AEFluidStackType .FLUID_STACK_TYPE );
859851 }
860852 }
861853
0 commit comments