/
JustEnoughItems.java
115 lines (91 loc) · 3.71 KB
/
JustEnoughItems.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package mezz.jei;
import com.google.common.collect.ImmutableList;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerAboutToStartEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.IPluginRegistry;
import mezz.jei.api.JEIManager;
import mezz.jei.api.recipe.IRecipeCategory;
import mezz.jei.api.recipe.IRecipeHandler;
import mezz.jei.config.Config;
import mezz.jei.config.Constants;
import mezz.jei.config.KeyBindings;
import mezz.jei.gui.GuiHelper;
import mezz.jei.gui.ItemListOverlay;
import mezz.jei.plugins.vanilla.VanillaPlugin;
import mezz.jei.util.ModList;
@Mod(modid = Constants.MOD_ID,
name = Constants.NAME,
version = Constants.VERSION,
guiFactory = "mezz.jei.config.JEIModGuiFactory",
dependencies = "required-after:Forge@[11.14.0.1269,);")
public class JustEnoughItems implements IPluginRegistry {
@Mod.Instance(Constants.MOD_ID)
public static JustEnoughItems instance;
@Nonnull
private final List<IModPlugin> plugins = new ArrayList<>();
private boolean pluginsCanRegister = true;
private boolean jeiStarted = false;
public JustEnoughItems() {
JEIManager.guiHelper = new GuiHelper();
JEIManager.pluginRegistry = this;
}
@Mod.EventHandler
public void preInit(@Nonnull FMLPreInitializationEvent event) {
Config.preInit(event);
JEIManager.pluginRegistry.registerPlugin(new VanillaPlugin());
}
@Override
public void registerPlugin(IModPlugin plugin) {
if (!pluginsCanRegister) {
throw new IllegalStateException("Plugins must be registered during FMLPreInitializationEvent.");
}
if (plugin.isModLoaded()) {
plugins.add(plugin);
}
}
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
pluginsCanRegister = false;
KeyBindings.init();
FMLCommonHandler.instance().bus().register(instance);
}
@Mod.EventHandler
public void aboutToStart(FMLServerAboutToStartEvent event) {
if (jeiStarted) {
return;
}
jeiStarted = true;
ModList modList = new ModList();
JEIManager.itemRegistry = new ItemRegistry(modList);
ImmutableList.Builder<IRecipeCategory> recipeCategories = ImmutableList.builder();
ImmutableList.Builder<IRecipeHandler> recipeHandlers = ImmutableList.builder();
ImmutableList.Builder<Object> recipes = ImmutableList.builder();
for (IModPlugin plugin : plugins) {
recipeCategories.addAll(plugin.getRecipeCategories());
recipeHandlers.addAll(plugin.getRecipeHandlers());
recipes.addAll(plugin.getRecipes());
}
JEIManager.recipeRegistry = new RecipeRegistry(recipeCategories.build(), recipeHandlers.build(), recipes.build());
ItemFilter itemFilter = new ItemFilter(JEIManager.itemRegistry.getItemList());
ItemListOverlay itemListOverlay = new ItemListOverlay(itemFilter);
GuiEventHandler guiEventHandler = new GuiEventHandler(itemListOverlay);
MinecraftForge.EVENT_BUS.register(guiEventHandler);
FMLCommonHandler.instance().bus().register(guiEventHandler);
TooltipEventHandler tooltipEventHandler = new TooltipEventHandler();
MinecraftForge.EVENT_BUS.register(tooltipEventHandler);
}
@SubscribeEvent
public void onConfigChanged(@Nonnull ConfigChangedEvent.OnConfigChangedEvent eventArgs) {
Config.onConfigChanged(eventArgs);
}
}