-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathGregTechModernUtilities.java
More file actions
160 lines (141 loc) · 7.2 KB
/
GregTechModernUtilities.java
File metadata and controls
160 lines (141 loc) · 7.2 KB
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package net.neganote.gtutilities;
import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.GTCEuAPI;
import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialEvent;
import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialRegistryEvent;
import com.gregtechceu.gtceu.api.data.chemical.material.event.PostMaterialEvent;
import com.gregtechceu.gtceu.api.machine.MachineDefinition;
import com.gregtechceu.gtceu.api.recipe.GTRecipeType;
import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate;
import com.gregtechceu.gtceu.common.data.GTCreativeModeTabs;
import com.gregtechceu.gtceu.common.data.GTItems;
import net.minecraft.client.renderer.item.ItemProperties;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Items;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.neganote.gtutilities.client.renderer.UtilShaders;
import net.neganote.gtutilities.common.data.UtilPlaceholders;
import net.neganote.gtutilities.common.item.UtilItems;
import net.neganote.gtutilities.common.item.UtilToolItems;
import net.neganote.gtutilities.common.machine.UtilAEMachines;
import net.neganote.gtutilities.common.machine.UtilMachines;
import net.neganote.gtutilities.common.materials.UtilMaterials;
import net.neganote.gtutilities.common.tools.UtilToolConnection;
import net.neganote.gtutilities.config.UtilConfig;
import net.neganote.gtutilities.datagen.UtilDatagen;
import com.tterrag.registrate.util.entry.RegistryEntry;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Mod(GregTechModernUtilities.MOD_ID)
public class GregTechModernUtilities {
public static final String MOD_ID = "gtmutils";
public static final Logger LOGGER = LogManager.getLogger();
public static GTRegistrate REGISTRATE = GTRegistrate.create(GregTechModernUtilities.MOD_ID);
public static RegistryEntry<CreativeModeTab> UTIL_CREATIVE_TAB = null;
public GregTechModernUtilities() {
GregTechModernUtilities.init();
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::commonSetup);
if (GTCEu.isClientSide()) {
modEventBus.addListener(this::clientSetup);
modEventBus.register(UtilShaders.class);
}
modEventBus.addListener(this::addMaterialRegistries);
modEventBus.addListener(this::addMaterials);
modEventBus.addListener(this::modifyMaterials);
modEventBus.addGenericListener(GTRecipeType.class, this::registerRecipeTypes);
modEventBus.addGenericListener(MachineDefinition.class, this::registerMachines);
// Most other events are fired on Forge's bus.
// If we want to use annotations to register event listeners,
// we need to register our object like this!
MinecraftForge.EVENT_BUS.register(this);
}
public static void init() {
UtilConfig.init();
if (UtilConfig.INSTANCE.features.omnibreakerEnabled) {
UTIL_CREATIVE_TAB = REGISTRATE
.defaultCreativeTab(GregTechModernUtilities.MOD_ID,
builder -> builder
.displayItems(new GTCreativeModeTabs.RegistrateDisplayItemsGenerator(
GregTechModernUtilities.MOD_ID, REGISTRATE))
.title(REGISTRATE.addLang("itemGroup", GregTechModernUtilities.id("creative_tab"),
"GregTech Modern Utilities"))
.icon(UtilItems.OMNIBREAKER::asStack)
.build())
.register();
} else {
UTIL_CREATIVE_TAB = REGISTRATE
.defaultCreativeTab(GregTechModernUtilities.MOD_ID,
builder -> builder
.displayItems(new GTCreativeModeTabs.RegistrateDisplayItemsGenerator(
GregTechModernUtilities.MOD_ID, REGISTRATE))
.title(REGISTRATE.addLang("itemGroup", GregTechModernUtilities.id("creative_tab"),
"GregTech Modern Utilities"))
.icon(GTItems.INTEGRATED_CIRCUIT_HV::asStack)
// same as above, but using a GTm item for the icon instead
.build())
.register();
}
UtilItems.init();
UtilToolItems.init();
REGISTRATE.registerRegistrate();
UtilDatagen.init();
UtilPlaceholders.init();
}
public static ResourceLocation id(String path) {
return new ResourceLocation(MOD_ID, path);
}
private void commonSetup(final FMLCommonSetupEvent event) {
event.enqueueWork(() -> {
LOGGER.info("Hello from common setup! This is *after* registries are done, so we can do this:");
LOGGER.info("Look, I found a {}!", Items.DIAMOND);
});
}
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public void clientSetup(final FMLClientSetupEvent event) {
event.enqueueWork(() -> {
if (UtilConfig.INSTANCE.features.omnibreakerEnabled) {
ItemProperties.register(UtilItems.OMNIBREAKER.get(), id("omnibreaker_name"),
(itemStack, clientLevel, livingEntity, i) -> {
String hoverName = itemStack.getHoverName().getString().toLowerCase();
if (hoverName.equals("monibreaker") || hoverName.equals("moni-breaker")) {
return 1;
} else if (hoverName.equals("meownibreaker") || hoverName.equals("meowni-breaker")) {
return 2;
}
return 0;
});
}
});
}
// You MUST have this for custom materials.
// Remember to register them not to GT's namespace, but your own.
private void addMaterialRegistries(MaterialRegistryEvent event) {
GTCEuAPI.materialManager.createRegistry(GregTechModernUtilities.MOD_ID);
}
// As well as this.
private void addMaterials(MaterialEvent event) {
UtilMaterials.register();
}
// This is optional, though.
private void modifyMaterials(PostMaterialEvent event) {
UtilToolConnection.modifyMaterials();
}
private void registerRecipeTypes(GTCEuAPI.RegisterEvent<ResourceLocation, GTRecipeType> event) {
// CustomRecipeTypes.init();
}
private void registerMachines(GTCEuAPI.RegisterEvent<ResourceLocation, MachineDefinition> event) {
UtilMachines.init();
UtilAEMachines.init();
}
}