Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor blocking mode ignore item list #678

Merged
merged 1 commit into from
Feb 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
}
Original file line number Diff line number Diff line change
@@ -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);
}
8 changes: 8 additions & 0 deletions src/main/java/appeng/api/features/IRegistryContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ public interface IRegistryContainer {
*/
IInscriberRegistry inscriber();

/**
* Allows you to register certain class to be displayed on interface terminals.
*/
IInterfaceTerminalRegistry interfaceTerminal();

/**
Expand All @@ -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.
*/
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/appeng/core/Registration.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,14 @@
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;
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;
Expand Down Expand Up @@ -859,7 +859,6 @@ void postInit(final FMLPostInitializationEvent event) {
/**
* Populate list of items that blocking mode should ignore
*/
BlockingModeIgnoreList.registerIgnoredMaterials();

BlockingModeIgnoreItemRegistry.instance().registerDefault();
}
}
Original file line number Diff line number Diff line change
@@ -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"));
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -114,6 +116,11 @@ public IP2PTunnelRegistry p2pTunnel() {
return this.p2pTunnel;
}

@Override
public IBlockingModeIgnoreItemRegistry blockingModeIgnoreItem() {
return this.blockingModeIgnoreItem;
}

@Override
public IMatterCannonAmmoRegistry matterCannon() {
return this.matterCannonReg;
Expand Down
200 changes: 0 additions & 200 deletions src/main/java/appeng/helpers/BlockingModeIgnoreList.java

This file was deleted.

Loading