Refactor blocking mode ignore item list (#678)

This commit is contained in:
miozune authored and GitHub committed 2025-02-17 12:43:31 -06:00
1 parent 5509a0f3e4
commit 367454706e
9 files changed
+110 -207

No files matched your search

+1 -1
View File
@@ -44,5 +44,5 @@ dependencies {
runtimeOnlyNonPublishable('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
runtimeOnlyNonPublishable('com.github.GTNewHorizons:ThaumicEnergistics:1.7.6-GTNH:dev') { transitive = false }
runtimeOnlyNonPublishable('com.github.GTNewHorizons:AE2FluidCraft-Rework:1.4.29-gtnh:dev') { transitive = false }
runtimeOnlyNonPublishable("com.github.GTNewHorizons:BloodMagic:1.7.5") { transitive = false }
//runtimeOnlyNonPublishable("com.github.GTNewHorizons:BloodMagic:1.7.5") { transitive = false }
}
@@ -0,0 +1,25 @@
package appeng.api.features;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
/**
* Registry for items that are ignored by blocking mode of interfaces.
*/
public interface IBlockingModeIgnoreItemRegistry {
/**
* Registers item to be ignored by blocking mode of interfaces. Matches with any metadata.
*/
void register(Item item);
/**
* Registers item to be ignored by blocking mode of interfaces. Matches with the supplied metadata.
*/
void register(ItemStack itemStack);
/**
* Checks if given item should be ignored by blocking mode.
*/
boolean isIgnored(ItemStack itemStack);
}
@@ -73,6 +73,9 @@ public interface IRegistryContainer {
*/
IInscriberRegistry inscriber();
/**
* Allows you to register certain class to be displayed on interface terminals.
*/
IInterfaceTerminalRegistry interfaceTerminal();
/**
@@ -85,6 +88,11 @@ public interface IRegistryContainer {
*/
IP2PTunnelRegistry p2pTunnel();
/**
* Allows you to register items that are ignored by blocking mode of interfaces.
*/
IBlockingModeIgnoreItemRegistry blockingModeIgnoreItem();
/**
* get access to the ammo registry.
*/
+2 -3
View File
@@ -58,6 +58,7 @@ import appeng.core.features.AEFeature;
import appeng.core.features.DefinitionConverter;
import appeng.core.features.IAEFeature;
import appeng.core.features.IFeatureHandler;
import appeng.core.features.registries.BlockingModeIgnoreItemRegistry;
import appeng.core.features.registries.P2PTunnelRegistry;
import appeng.core.features.registries.entries.BasicCellHandler;
import appeng.core.features.registries.entries.CreativeCellHandler;
@@ -65,7 +66,6 @@ import appeng.core.features.registries.entries.VoidCellHandler;
import appeng.core.localization.GuiText;
import appeng.core.localization.PlayerMessages;
import appeng.core.stats.PlayerStatsRegistration;
import appeng.helpers.BlockingModeIgnoreList;
import appeng.hooks.AETrading;
import appeng.hooks.SoundEventHandler;
import appeng.hooks.TickHandler;
@@ -859,7 +859,6 @@ public final class Registration {
/**
* Populate list of items that blocking mode should ignore
*/
BlockingModeIgnoreList.registerIgnoredMaterials();
BlockingModeIgnoreItemRegistry.instance().registerDefault();
}
}
@@ -0,0 +1,63 @@
package appeng.core.features.registries;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import com.gtnewhorizon.gtnhlib.util.map.ItemStackMap;
import appeng.api.features.IBlockingModeIgnoreItemRegistry;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.registry.GameRegistry;
public class BlockingModeIgnoreItemRegistry implements IBlockingModeIgnoreItemRegistry {
private static BlockingModeIgnoreItemRegistry INSTANCE;
private final Set<Item> items = new HashSet<>();
private final ItemStackMap<Boolean> itemStacks = new ItemStackMap<>();
BlockingModeIgnoreItemRegistry() {
INSTANCE = this;
}
@Override
public void register(Item item) {
this.items.add(item);
}
@Override
public void register(ItemStack itemStack) {
this.itemStacks.put(itemStack, true);
}
@Override
public boolean isIgnored(ItemStack itemStack) {
return this.items.contains(itemStack.getItem()) || itemStacks.containsKey(itemStack);
}
public static BlockingModeIgnoreItemRegistry instance() {
return INSTANCE;
}
public void registerDefault() {
if (Loader.isModLoaded("AWWayofTime")) { // blood magic
register(GameRegistry.findItem("AWWayofTime", "weakBloodOrb"));
register(GameRegistry.findItem("AWWayofTime", "apprenticeBloodOrb"));
register(GameRegistry.findItem("AWWayofTime", "magicianBloodOrb"));
register(GameRegistry.findItem("AWWayofTime", "masterBloodOrb"));
register(GameRegistry.findItem("AWWayofTime", "archmageBloodOrb"));
register(GameRegistry.findItem("AWWayofTime", "transcendentBloodOrb"));
if (Loader.isModLoaded("Avaritia")) {
register(GameRegistry.findItem("Avaritia", "Orb_Armok"));
}
if (Loader.isModLoaded("ForbiddenMagic")) {
register(GameRegistry.findItem("ForbiddenMagic", "EldritchOrb"));
}
}
}
}
@@ -10,6 +10,7 @@
package appeng.core.features.registries;
import appeng.api.features.IBlockingModeIgnoreItemRegistry;
import appeng.api.features.IGrinderRegistry;
import appeng.api.features.IInscriberRegistry;
import appeng.api.features.IInterfaceTerminalRegistry;
@@ -49,6 +50,7 @@ public class RegistryContainer implements IRegistryContainer {
private final IWirelessTermRegistry wireless = new WirelessRegistry();
private final IGridCacheRegistry gridCache = new GridCacheRegistry();
private final IP2PTunnelRegistry p2pTunnel = new P2PTunnelRegistry();
private final IBlockingModeIgnoreItemRegistry blockingModeIgnoreItem = new BlockingModeIgnoreItemRegistry();
private final IMovableRegistry movable = new MovableTileRegistry();
private final IMatterCannonAmmoRegistry matterCannonReg = new MatterCannonAmmoRegistry();
private final IPlayerRegistry playerRegistry = new PlayerRegistry();
@@ -114,6 +116,11 @@ public class RegistryContainer implements IRegistryContainer {
return this.p2pTunnel;
}
@Override
public IBlockingModeIgnoreItemRegistry blockingModeIgnoreItem() {
return this.blockingModeIgnoreItem;
}
@Override
public IMatterCannonAmmoRegistry matterCannon() {
return this.matterCannonReg;
@@ -1,200 +0,0 @@
package appeng.helpers;
import java.util.ArrayList;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.util.GTOreDictUnificator;
public class BlockingModeIgnoreList {
private final static ArrayList<String> Shapes = new ArrayList<String>();
private final static ArrayList<String> Lenses = new ArrayList<String>();
private final static ArrayList<String> Molds = new ArrayList<String>();
private final static ArrayList<Item> IgnoredItems = new ArrayList<Item>();
// Name + damage value from ItemList enums
private static String getUniqueIdentifier(ItemList item) {
return item.getItem().getUnlocalizedName() + item.getItem().getDamage(item.get(1));
}
// Name + damage value from existing ItemStacks
private static String getUniqueIdentifier(ItemStack is) {
return is.getItem().getUnlocalizedName() + is.getItemDamage();
}
public static void registerIgnoredMaterials() {
if (Loader.isModLoaded("dreamcraft")) {
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Bottle));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Plate));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Ingot));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Casing));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Gear));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Gear_Small));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Credit));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Nugget));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Block));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Ball));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Bun));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Bread));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Baguette));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Cylinder));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Anvil));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Arrow));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Name));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Rod));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Bolt));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Round));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Screw));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Ring));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Rod_Long));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Rotor));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Turbine_Blade));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Pipe_Tiny));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Pipe_Small));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Pipe_Medium));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Pipe_Large));
Molds.add(getUniqueIdentifier(ItemList.Shape_Mold_Pipe_Huge));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Mold_ToolHeadDrill));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Slicer_Flat));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Slicer_Stripes));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Bottle));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Plate));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Cell));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Ring));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Rod));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Bolt));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Ingot));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Wire));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Casing));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Pipe_Tiny));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Pipe_Small));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Pipe_Medium));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Pipe_Large));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Pipe_Huge));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Block));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Sword));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Pickaxe));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Shovel));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Axe));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Hoe));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Hammer));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_File));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Saw));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Gear));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Rotor));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Turbine_Blade));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_Small_Gear));
Shapes.add(getUniqueIdentifier(ItemList.Shape_Extruder_ToolHeadDrill));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Bottle));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Plate));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Cell));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Ring));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Rod));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Bolt));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Ingot));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Wire));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Casing));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Pipe_Tiny));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Pipe_Small));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Pipe_Medium));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Pipe_Large));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Pipe_Huge));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Block));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Sword));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Pickaxe));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Shovel));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Axe));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Hoe));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Hammer));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_File));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Saw));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Gear));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Rotor));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Turbine_Blade));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_Small_Gear));
Shapes.add(getUniqueIdentifier(ItemList.White_Dwarf_Shape_Extruder_ToolHeadDrill));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Emerald, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Firestone, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Diamond, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Ruby, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Sapphire, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.GreenSapphire, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Olivine, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.NetherStar, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Topaz, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Tanzanite, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Amethyst, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Opal, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Jasper, 1)));
// Spinel
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.FoolsRuby, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.BlueTopaz, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Amber, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Dilithium, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Forcicium, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Forcillium, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Force, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.GarnetRed, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.GarnetYellow, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.EnderPearl, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.EnderEye, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.InfusedAir, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.InfusedFire, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.InfusedEarth, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.InfusedEntropy, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.InfusedOrder, 1)));
Lenses.add(getUniqueIdentifier(GTOreDictUnificator.get(OrePrefixes.lens, Materials.Glass, 1)));
IgnoredItems.add(GameRegistry.findItem("gregtech", "gt.integrated_circuit"));
IgnoredItems.add(GameRegistry.findItem("miscutils", "item.BioRecipeSelector"));
IgnoredItems.add(GameRegistry.findItem("miscutils", "item.T3RecipeSelector"));
IgnoredItems.add(GameRegistry.findItem("dreamcraft", "item.ReinforcedGlassLense"));
IgnoredItems.add(GameRegistry.findItem("dreamcraft", "item.MysteriousCrystalLens"));
IgnoredItems.add(GameRegistry.findItem("dreamcraft", "item.RadoxPolymerLens"));
IgnoredItems.add(GameRegistry.findItem("dreamcraft", "item.ChromaticLens"));
IgnoredItems.add(GameRegistry.findItem("bartworks", "gt.bwMetaGeneratedlens"));
}
if (Loader.isModLoaded("AWWayofTime")) { // blood magic
IgnoredItems.add(GameRegistry.findItem("AWWayofTime", "weakBloodOrb"));
IgnoredItems.add(GameRegistry.findItem("AWWayofTime", "apprenticeBloodOrb"));
IgnoredItems.add(GameRegistry.findItem("AWWayofTime", "magicianBloodOrb"));
IgnoredItems.add(GameRegistry.findItem("AWWayofTime", "masterBloodOrb"));
IgnoredItems.add(GameRegistry.findItem("AWWayofTime", "archmageBloodOrb"));
IgnoredItems.add(GameRegistry.findItem("AWWayofTime", "transcendentBloodOrb"));
if (Loader.isModLoaded("Avaritia")) {
IgnoredItems.add(GameRegistry.findItem("Avaritia", "Orb_Armok"));
}
if (Loader.isModLoaded("ForbiddenMagic")) {
IgnoredItems.add(GameRegistry.findItem("ForbiddenMagic", "EldritchOrb"));
}
}
}
public static boolean isIgnored(ItemStack is) {
if (is != null) {
String uniqueIdentifier = getUniqueIdentifier(is);
Item item = is.getItem();
if (IgnoredItems.contains(item) || Shapes.contains(uniqueIdentifier)
|| Lenses.contains(uniqueIdentifier)
|| Molds.contains(uniqueIdentifier))
return true;
}
return false;
}
}
@@ -77,6 +77,7 @@ import appeng.api.util.DimensionalCoord;
import appeng.api.util.IConfigManager;
import appeng.core.AEConfig;
import appeng.core.AELog;
import appeng.core.features.registries.BlockingModeIgnoreItemRegistry;
import appeng.core.settings.TickRates;
import appeng.me.GridAccessException;
import appeng.me.helpers.AENetworkProxy;
@@ -880,7 +881,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn
private boolean tileHasOnlyIgnoredItems(InventoryAdaptor ad) {
for (ItemSlot i : ad) {
ItemStack is = i.getItemStack();
if (BlockingModeIgnoreList.isIgnored(is) || is == null) continue;
if (is == null || BlockingModeIgnoreItemRegistry.instance().isIgnored(is)) continue;
return false;
}
return true;
@@ -12,7 +12,7 @@ import appeng.api.storage.IMEMonitor;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.helpers.BlockingModeIgnoreList;
import appeng.core.features.registries.BlockingModeIgnoreItemRegistry;
import appeng.helpers.DualityInterface;
import appeng.helpers.IInterfaceHost;
import appeng.util.item.AEItemStack;
@@ -58,7 +58,7 @@ public class AdaptorDualityInterface extends AdaptorIInventory {
// This works okay, it'll loop as much as (or even less than) a normal inventory because the iterator
// hides empty slots or stacks of size 0
for (IAEItemStack stack : itemList) {
if (!BlockingModeIgnoreList.isIgnored(stack.getItemStack())) {
if (!BlockingModeIgnoreItemRegistry.instance().isIgnored(stack.getItemStack())) {
hasMEItems = true;
break;
}