Files
Hals-Exploration-Mod/src/main/java/studio/halbear/hem/HemModElements.java
T
2026-04-29 22:28:28 +01:00

133 lines
4.2 KiB
Java

/*
* MCreator note:
*
* This file is autogenerated to connect all MCreator mod elements together.
*
*/
package studio.halbear.hem;
import net.minecraftforge.forgespi.language.ModFileScanData;
import net.minecraftforge.fml.network.NetworkEvent;
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraft.util.ResourceLocation;
import net.minecraft.tags.Tag;
import net.minecraft.network.PacketBuffer;
import net.minecraft.item.Item;
import net.minecraft.entity.EntityType;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.block.Block;
import java.util.function.Supplier;
import java.util.function.Function;
import java.util.function.BiConsumer;
import java.util.Set;
import java.util.Map;
import java.util.List;
import java.util.HashMap;
import java.util.Collections;
import java.util.ArrayList;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Retention;
public class HemModElements {
public final List<ModElement> elements = new ArrayList<>();
public final List<Supplier<Block>> blocks = new ArrayList<>();
public final List<Supplier<Item>> items = new ArrayList<>();
public final List<Supplier<EntityType<?>>> entities = new ArrayList<>();
public final List<Supplier<Enchantment>> enchantments = new ArrayList<>();
public static Map<ResourceLocation, net.minecraft.util.SoundEvent> sounds = new HashMap<>();
public HemModElements() {
try {
ModFileScanData modFileInfo = ModList.get().getModFileById("hem").getFile().getScanResult();
Set<ModFileScanData.AnnotationData> annotations = modFileInfo.getAnnotations();
for (ModFileScanData.AnnotationData annotationData : annotations) {
if (annotationData.getAnnotationType().getClassName().equals(ModElement.Tag.class.getName())) {
Class<?> clazz = Class.forName(annotationData.getClassType().getClassName());
if (clazz.getSuperclass() == HemModElements.ModElement.class)
elements.add((HemModElements.ModElement) clazz.getConstructor(this.getClass()).newInstance(this));
}
}
} catch (Exception e) {
e.printStackTrace();
}
Collections.sort(elements);
elements.forEach(HemModElements.ModElement::initElements);
MinecraftForge.EVENT_BUS.register(new HemModVariables(this));
}
public void registerSounds(RegistryEvent.Register<net.minecraft.util.SoundEvent> event) {
for (Map.Entry<ResourceLocation, net.minecraft.util.SoundEvent> sound : sounds.entrySet())
event.getRegistry().register(sound.getValue().setRegistryName(sound.getKey()));
}
private int messageID = 0;
public <T> void addNetworkMessage(Class<T> messageType, BiConsumer<T, PacketBuffer> encoder, Function<PacketBuffer, T> decoder,
BiConsumer<T, Supplier<NetworkEvent.Context>> messageConsumer) {
HemMod.PACKET_HANDLER.registerMessage(messageID, messageType, encoder, decoder, messageConsumer);
messageID++;
}
public List<ModElement> getElements() {
return elements;
}
public List<Supplier<Block>> getBlocks() {
return blocks;
}
public List<Supplier<Item>> getItems() {
return items;
}
public List<Supplier<EntityType<?>>> getEntities() {
return entities;
}
public List<Supplier<Enchantment>> getEnchantments() {
return enchantments;
}
public static class ModElement implements Comparable<ModElement> {
@Retention(RetentionPolicy.RUNTIME)
public @interface Tag {
}
protected final HemModElements elements;
protected final int sortid;
public ModElement(HemModElements elements, int sortid) {
this.elements = elements;
this.sortid = sortid;
}
public void initElements() {
}
public void init(FMLCommonSetupEvent event) {
}
public void serverLoad(FMLServerStartingEvent event) {
}
@OnlyIn(Dist.CLIENT)
public void clientLoad(FMLClientSetupEvent event) {
}
@Override
public int compareTo(ModElement other) {
return this.sortid - other.sortid;
}
}
}