24package com.dreamfirestudios.dreamcore.DreamJava;
26import com.comphenix.protocol.events.PacketAdapter;
27import com.dreamfirestudios.dreamcore.DreamChat.DreamChat;
28import com.dreamfirestudios.dreamcore.DreamChat.DreamMessageSettings;
29import com.dreamfirestudios.dreamcore.DreamCore;
30import com.dreamfirestudios.dreamcore.DreamEnchantment.IDreamEnchantment;
31import com.dreamfirestudios.dreamcore.DreamHologram.DreamHologram;
32import com.dreamfirestudios.dreamcore.DreamItems.IDreamItemStack;
33import com.dreamfirestudios.dreamcore.DreamLoop.IDreamLoop;
34import com.dreamfirestudios.dreamcore.DreamMessagingChannel.PluginMessageLibrary;
35import com.dreamfirestudios.dreamcore.DreamPlaceholder.IDreamPlaceholder;
36import com.dreamfirestudios.dreamcore.DreamRecipe.IDreamRecipe;
37import com.dreamfirestudios.dreamcore.DreamVariable.DreamVariableTest;
38import org.bukkit.Bukkit;
39import org.bukkit.event.Listener;
40import org.bukkit.plugin.java.JavaPlugin;
42import java.lang.reflect.InvocationTargetException;
43import java.util.HashMap;
45import java.util.function.BiConsumer;
70 private static final Map<Class<?>, BiConsumer<JavaPlugin, Object>> registrationActions =
new HashMap<>();
73 registrationActions.put(IDreamLoop.class, (javaPlugin, instance) ->
RegisterPulseLoop(javaPlugin, (IDreamLoop) instance));
74 registrationActions.put(PacketAdapter.class, (javaPlugin, instance) ->
RegisterPacketAdapter(javaPlugin, (PacketAdapter) instance));
75 registrationActions.put(IDreamEnchantment.class, (javaPlugin, instance) ->
RegisterDreamEnchantment(javaPlugin, (IDreamEnchantment) instance));
76 registrationActions.put(Listener.class, (javaPlugin, instance) ->
RegisterListener(javaPlugin, (Listener) instance));
77 registrationActions.put(IDreamPlaceholder.class, (javaPlugin, instance) ->
RegisterPulsePlaceholder(javaPlugin, (IDreamPlaceholder) instance));
78 registrationActions.put(IDreamItemStack.class, (javaPlugin, instance) ->
RegisterIDreamItemStack(javaPlugin, (IDreamItemStack) instance));
79 registrationActions.put(IDreamRecipe.class, (javaPlugin, instance) ->
RegisterPulseRecipe(javaPlugin, (IDreamRecipe) instance));
80 registrationActions.put(DreamVariableTest.class, (javaPlugin, instance) ->
RegisterPulseVariableTest(javaPlugin, (DreamVariableTest) instance));
81 registrationActions.put(PluginMessageLibrary.class, (javaPlugin, instance) ->
RegisterPluginMessageListener(javaPlugin, (PluginMessageLibrary) instance));
94 catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
95 throw new RuntimeException(e);
114 throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
117 for (var entry : registrationActions.entrySet()) {
118 if (entry.getKey().isAssignableFrom(autoRegisterClass)) {
119 Object instance = autoRegisterClass.getConstructor().newInstance();
120 entry.getValue().accept(javaPlugin, instance);
125 }
catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
126 javaPlugin.getLogger().severe(
"Failed to register classes: " + e.getMessage());
144 int finalId = Bukkit.getScheduler().scheduleSyncRepeatingTask(javaPlugin,
new Runnable() {
149 }, iDreamLoop.StartDelay(), iDreamLoop.LoopInterval());
150 iDreamLoop.PassID(finalId);
152 DreamChat.SendMessageToConsole(String.format(
"&8Registered Loop: %s", iDreamLoop.ReturnID()), DreamMessageSettings.all());
165 DreamChat.SendMessageToConsole(String.format(
"&8Registered PacketAdapter: %s", packetAdapter.getClass().getSimpleName()), DreamMessageSettings.all());
177 Bukkit.getPluginManager().registerEvents(listener, javaPlugin);
178 DreamChat.SendMessageToConsole(String.format(
"&8Registered Listener: %s", listener.getClass().getSimpleName()), DreamMessageSettings.all());
191 DreamChat.SendMessageToConsole(String.format(
"&8Registered DreamEnchantment: %s", pulseEnchantment.getName()), DreamMessageSettings.all());
204 DreamChat.SendMessageToConsole(String.format(
"&8Registered IDreamPlaceholder: %s", iDreamPlaceholder.getClass().getSimpleName()), DreamMessageSettings.all());
216 Bukkit.addRecipe(iDreamRecipe.ReturnRecipe(javaPlugin));
217 DreamChat.SendMessageToConsole(String.format(
"&8Registered IDreamRecipe: %s", iDreamRecipe.getClass().getSimpleName()), DreamMessageSettings.all());
230 DreamChat.SendMessageToConsole(String.format(
"&8Registered IDreamItemStack: %s", iDreamItemStack.getClass().getSimpleName()), DreamMessageSettings.all());
243 DreamChat.SendMessageToConsole(String.format(
"&8Registered DreamVariableTest: %s", dreamfireVariableTest.getClass().getSimpleName()), DreamMessageSettings.all());
244 for(var classType : dreamfireVariableTest.ClassTypes()){
261 var channelName = pluginMessageListener.getChannelName(javaPlugin);
262 Bukkit.getMessenger().registerOutgoingPluginChannel(javaPlugin, channelName);
263 Bukkit.getMessenger().registerIncomingPluginChannel(javaPlugin, channelName, pluginMessageListener);
264 if (Bukkit.getMessenger().isOutgoingChannelRegistered(javaPlugin, channelName)) {
265 DreamChat.SendMessageToConsole(String.format(
"&8Registered PluginMessageListener: %s on channel %s", pluginMessageListener.getClass().getSimpleName(), channelName), DreamMessageSettings.all());
267 Bukkit.getConsoleSender().sendMessage(
"Failed to register outgoing channel: " + channelName);
static final LinkedHashMap< UUID, IDreamLoop > IDreamLoops
static final LinkedHashMap< Class<?>, DreamVariableTest > DreamVariableTests
static DreamPlaceholderManager DreamPlaceholderManager
static ProtocolManager ProtocolManager
static final ArrayList< IDreamEnchantment > IDreamEnchantments
static final ArrayList< IDreamItemStack > IDreamItemStacks
Central auto‑registration hub for Dreamfire “components” discovered via PulseAutoRegister.
static void RegisterPulseRecipe(JavaPlugin javaPlugin, IDreamRecipe iDreamRecipe)
Registers a recipe via Bukkit.
static void RegisterIDreamItemStack(JavaPlugin javaPlugin, IDreamItemStack iDreamItemStack)
Registers a custom item definition for global access.
static void RegisterPulseLoop(JavaPlugin javaPlugin, IDreamLoop iDreamLoop)
Registers an IDreamLoop: starts it, schedules repeating task, records ID.
static void RegisterClasses(JavaPlugin javaPlugin)
Discovers and registers all annotated classes.
static void RegisterListener(JavaPlugin javaPlugin, Listener listener)
Registers a Bukkit Listener.
static void RegisterPacketAdapter(JavaPlugin javaPlugin, PacketAdapter packetAdapter)
Registers a ProtocolLib PacketAdapter.
static void RegisterClassesRaw(JavaPlugin javaPlugin)
Discovers and registers annotated classes, propagating reflection errors.
static void RegisterDreamEnchantment(JavaPlugin javaPlugin, IDreamEnchantment pulseEnchantment)
Registers a custom enchantment with DreamCore’s registry.
static void RegisterPluginMessageListener(JavaPlugin javaPlugin, PluginMessageLibrary pluginMessageListener)
Registers a plugin messaging listener on a named channel.
static void RegisterPulsePlaceholder(JavaPlugin javaPlugin, IDreamPlaceholder iDreamPlaceholder)
Registers an IDreamPlaceholder with the placeholder manager.
static void RegisterPulseVariableTest(JavaPlugin javaPlugin, DreamVariableTest dreamfireVariableTest)
Registers a DreamVariableTest against its supported class types.
Reflection utilities for scanning a plugin JAR to discover annotated classes.
static List< Class<?> > getAutoRegisterClasses(JavaPlugin javaPlugin)
Retrieves auto‑register classes, wrapping checked exceptions.