/* * IDK Game Server by Steve Winfield * https://github.com/WinfieldSteve */ package org.stevewinfield.suja.idk.game.plugins; import org.stevewinfield.suja.idk.Bootloader; import org.stevewinfield.suja.idk.game.bots.IBotInteractor; import org.stevewinfield.suja.idk.game.event.Event; import org.stevewinfield.suja.idk.game.event.IEventListener; import org.stevewinfield.suja.idk.game.event.impl.EventUtils; import org.stevewinfield.suja.idk.game.miscellaneous.IChatCommand; import javax.script.ScriptEngine; public class GamePlugin { public ScriptEngine getScript() { return script; } public boolean isLoadedExternally() { return loadedExternally; } public GamePlugin(final String name, final ScriptEngine script, final boolean loadedExternally) { this.name = name; this.script = script; this.loadedExternally = loadedExternally; } public void addChatCommand(final String name, final String permission, final String obj) { Bootloader.getGame().getChatCommandHandler().addChatCommand(this, name, permission, obj); } public void addChatCommand(final String name, final IChatCommand chatCommand) { Bootloader.getGame().getChatCommandHandler().addChatCommand(this, name, chatCommand); } public void addBotInteractor(final int interactorId, final String obj) { Bootloader.getGame().getBotManager().addBotInteractor(this, interactorId, obj); } public void addBotInteractor(final int interactorId, final IBotInteractor botInteractor) { Bootloader.getGame().getBotManager().addBotInteractor(this, interactorId, botInteractor); } public void addEventListener(final String eventName, final String obj) { Class<? extends Event> eventClass = EventUtils.eventStringToClass(eventName); if (eventClass == null) { throw new Error("Unable to find event " + eventName); } addEventListener(eventClass, obj); } public void addEventListener(final Class<? extends Event> eventClass, final String obj) { Bootloader.getGame().getEventManager().addEventListener(this, eventClass, obj); } public void addEventListener(final String eventName, final IEventListener listener) { Class<? extends Event> eventClass = EventUtils.eventStringToClass(eventName); if (eventClass == null) { throw new Error("Unable to find event " + eventName); } addEventListener(eventClass, listener); } public void addEventListener(final Class<? extends Event> eventClass, final IEventListener listener) { Bootloader.getGame().getEventManager().registerListener(this, eventClass, listener); } public String getName() { return name; } private final String name; private final ScriptEngine script; private final boolean loadedExternally; }