2014-04-29 10:54:20 +10:00
|
|
|
package codechicken.nei.api;
|
|
|
|
|
|
|
|
|
|
import codechicken.nei.NEIChestGuiHandler;
|
|
|
|
|
import codechicken.nei.NEICreativeGuiHandler;
|
|
|
|
|
import codechicken.nei.NEIDummySlotHandler;
|
|
|
|
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
2014-06-29 20:31:37 +10:00
|
|
|
import net.minecraft.client.gui.inventory.GuiContainerCreative;
|
2014-04-29 10:54:20 +10:00
|
|
|
|
2014-06-29 20:31:37 +10:00
|
|
|
import java.util.HashSet;
|
2014-04-29 10:54:20 +10:00
|
|
|
import java.util.Iterator;
|
|
|
|
|
import java.util.LinkedList;
|
2021-06-05 10:47:58 -07:00
|
|
|
import java.util.concurrent.locks.Lock;
|
|
|
|
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
2014-04-29 10:54:20 +10:00
|
|
|
|
2021-06-05 10:47:58 -07:00
|
|
|
public class GuiInfo {
|
2019-12-30 20:19:16 -08:00
|
|
|
public static final LinkedList<INEIGuiHandler> guiHandlers = new LinkedList<>();
|
|
|
|
|
public static final HashSet<Class<? extends GuiContainer>> customSlotGuis = new HashSet<>();
|
2021-06-05 10:47:58 -07:00
|
|
|
public static ReentrantReadWriteLock guiHandlersLock = new ReentrantReadWriteLock();
|
|
|
|
|
public static Lock writeLock = guiHandlersLock.writeLock();
|
|
|
|
|
public static Lock readLock = guiHandlersLock.readLock();
|
|
|
|
|
|
2014-04-29 10:54:20 +10:00
|
|
|
|
|
|
|
|
public static void load() {
|
|
|
|
|
API.registerNEIGuiHandler(new NEICreativeGuiHandler());
|
|
|
|
|
API.registerNEIGuiHandler(new NEIChestGuiHandler());
|
|
|
|
|
API.registerNEIGuiHandler(new NEIDummySlotHandler());
|
2014-06-29 20:31:37 +10:00
|
|
|
customSlotGuis.add(GuiContainerCreative.class);
|
2014-04-29 10:54:20 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void clearGuiHandlers() {
|
2021-06-05 10:47:58 -07:00
|
|
|
try {
|
|
|
|
|
GuiInfo.writeLock.lock();
|
|
|
|
|
guiHandlers.removeIf(ineiGuiHandler -> ineiGuiHandler instanceof GuiContainer);
|
|
|
|
|
} finally {
|
|
|
|
|
GuiInfo.writeLock.unlock();
|
|
|
|
|
}
|
2014-04-29 10:54:20 +10:00
|
|
|
}
|
2014-06-29 20:31:37 +10:00
|
|
|
|
|
|
|
|
public static boolean hasCustomSlots(GuiContainer gui) {
|
|
|
|
|
return customSlotGuis.contains(gui.getClass());
|
|
|
|
|
}
|
2014-04-29 10:54:20 +10:00
|
|
|
}
|