Make craftingList a hash set in DualityInterface

Improves pattern lookup times, even though I'm not sure why this check even exist
This commit is contained in:
NotMyWing
2024-06-10 15:40:28 +11:00
parent 6632344f87
commit d40b9831c1
@@ -64,7 +64,6 @@ import appeng.parts.automation.UpgradeInventory;
import appeng.parts.misc.PartInterface; import appeng.parts.misc.PartInterface;
import appeng.tile.inventory.AppEngInternalAEInventory; import appeng.tile.inventory.AppEngInternalAEInventory;
import appeng.tile.inventory.AppEngInternalInventory; import appeng.tile.inventory.AppEngInternalInventory;
import appeng.tile.inventory.AppEngInternalOversizedInventory;
import appeng.tile.inventory.AppEngNetworkInventory; import appeng.tile.inventory.AppEngNetworkInventory;
import appeng.tile.networking.TileCableBus; import appeng.tile.networking.TileCableBus;
import appeng.util.ConfigManager; import appeng.util.ConfigManager;
@@ -78,6 +77,7 @@ import com.google.common.primitives.Ints;
import de.ellpeck.actuallyadditions.api.tile.IPhantomTile; import de.ellpeck.actuallyadditions.api.tile.IPhantomTile;
import gregtech.api.block.machines.BlockMachine; import gregtech.api.block.machines.BlockMachine;
import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.MetaTileEntity;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Items; import net.minecraft.init.Items;
@@ -128,7 +128,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn
private final Accessor accessor = new Accessor(); private final Accessor accessor = new Accessor();
private boolean hasConfig = false; private boolean hasConfig = false;
private int priority; private int priority;
private List<ICraftingPatternDetails> craftingList = null; private Set<ICraftingPatternDetails> craftingList = null;
private List<ItemStack> waitingToSend = null; private List<ItemStack> waitingToSend = null;
private IMEInventory<IAEItemStack> destination; private IMEInventory<IAEItemStack> destination;
private int isWorking = -1; private int isWorking = -1;
@@ -452,10 +452,13 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn
this.addToCraftingList(this.patterns.getStackInSlot(x)); this.addToCraftingList(this.patterns.getStackInSlot(x));
} }
} }
try {
this.gridProxy.getGrid().postEvent(new MENetworkCraftingPatternChange(this, this.gridProxy.getNode())); if (newPattern || removed) {
} catch (GridAccessException e) { try {
e.printStackTrace(); this.gridProxy.getGrid().postEvent(new MENetworkCraftingPatternChange(this, this.gridProxy.getNode()));
} catch (GridAccessException e) {
e.printStackTrace();
}
} }
} }
@@ -545,7 +548,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn
if (details != null) { if (details != null) {
if (this.craftingList == null) { if (this.craftingList == null) {
this.craftingList = new ArrayList<>(); this.craftingList = new ObjectOpenHashSet<>();
} }
this.craftingList.add(details); this.craftingList.add(details);