Initial commit

This commit is contained in:
2024-07-07 23:13:20 +02:00
commit 8ef9a95b67
73 changed files with 4575 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
/*
* Copyright (C) 2024 UnlegitDqrk - All Rights Reserved
*
* You are unauthorized to remove this copyright.
* You have to give Credits to the Author in your project and link this GitHub site: https://github.com/UnlegitDqrk
* See LICENSE-File if exists
*/
package me.finn.unlegitlibrary.addon.impl;
import me.finn.unlegitlibrary.addon.events.AddonDisabledEvent;
import me.finn.unlegitlibrary.addon.events.AddonEnabledEvent;
import me.finn.unlegitlibrary.event.EventListener;
import me.finn.unlegitlibrary.event.EventManager;
import me.finn.unlegitlibrary.event.impl.Event;
import me.finn.unlegitlibrary.utils.DefaultMethodsOverrider;
import java.lang.reflect.InvocationTargetException;
public abstract class Addon {
private final AddonInfo addonInfo;
private final EventManager eventManager;
private boolean isEnabled = false;
public Addon(AddonInfo addonInfo) {
this.addonInfo = addonInfo;
this.eventManager = new EventManager();
}
public final boolean isEnabled() {
return isEnabled;
}
public final AddonInfo getAddonInfo() {
return addonInfo;
}
public void executeEvent(Event event) {
if (!isEnabled) return;
eventManager.executeEvent(event);
}
public final void registerEventListener(Class<? extends EventListener> eventListener) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {
eventManager.registerListener(eventListener);
}
public final void unregisterEventListener(Class<? extends EventListener> eventListener) {
eventManager.unregisterListener(eventListener);
}
public abstract void onEnable();
public abstract void onDisable();
public final void enable() {
if (isEnabled) return;
isEnabled = true;
onEnable();
eventManager.executeEvent(new AddonEnabledEvent(this));
}
public final void disable() {
if (!isEnabled) return;
isEnabled = false;
onDisable();
eventManager.executeEvent(new AddonDisabledEvent(this));
}
}