Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.cratemuncher.bukpy;
- import org.bukkit.Bukkit;
- import org.bukkit.event.Event;
- import org.bukkit.event.EventException;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.plugin.EventExecutor;
- import org.python.core.PyFunction;
- import org.python.core.PyString;
- import org.python.util.PythonInterpreter;
- import java.util.ArrayList;
- import java.util.HashMap;
- public class PyScript implements Listener, EventExecutor {
- BukPy plugin = null;
- PyFunction onEnable = null;
- PyFunction onDisable = null;
- HashMap<Class<? extends Event>, Boolean> hasRegisteredEvent = null;
- HashMap<Class<? extends Event>, ArrayList<PyFunction>> events = null;
- public PyScript(String file, BukPy plugin) {
- events = new HashMap<Class<? extends Event>, ArrayList<PyFunction>>();
- hasRegisteredEvent = new HashMap<Class<? extends Event>, Boolean>();
- this.plugin = plugin;
- PythonInterpreter interp = new PythonInterpreter();
- interp.set("script", this);
- interp.execfile(file);
- }
- public PyFunction enable(PyFunction func) {
- onEnable = func;
- return func;
- }
- public PyFunction disable(PyFunction func) {
- onDisable = func;
- return func;
- }
- public PyFunction event(PyFunction func, Class<? extends Event> eventType, EventPriority priority) {
- registerEvent(func, eventType, priority);
- return func;
- }
- public PyFunction event(PyFunction func) {
- System.out.println("Hi!"); //THIS WORKS!
- return func;
- }
- public PyFunction event(PyFunction func, PyString eventType, PyString priorityName) { //THIS DOES NOT
- Class<? extends Event> clazz = Utils.getEventByName(eventType.asString());
- EventPriority priority = EventPriority.valueOf(priorityName.asString().toUpperCase());
- if (priority == null) {
- throw new IllegalArgumentException("Could not find an event priority of " + priorityName.asString() + "! Try lowest, low, medium, high, highest or monitor!");
- }
- registerEvent(func, clazz, priority);
- return func;
- }
- @Override
- public void execute(Listener listener, Event event) throws EventException {
- ArrayList<PyFunction> eventList = events.get(event.getClass());
- for (PyFunction eventFunc : eventList) {
- eventFunc._jcall(new Object[] {event});
- }
- }
- private void registerEvent(PyFunction func, Class<? extends Event> eventType, EventPriority priority) {
- if (!events.containsKey(eventType)) {
- events.put(eventType, new ArrayList<PyFunction>());
- }
- ArrayList<PyFunction> eventList = events.get(eventType);
- eventList.add(func);
- events.put(eventType, new ArrayList<PyFunction>());
- if (!hasRegisteredEvent.containsKey(eventType) || !hasRegisteredEvent.get(eventType)) {
- Bukkit.getPluginManager().registerEvent(eventType, this, priority, this, this.plugin);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment