Guest User

Untitled

a guest
Oct 13th, 2013
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.04 KB | None | 0 0
  1. package net.cratemuncher.bukpy;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.event.Event;
  5. import org.bukkit.event.EventException;
  6. import org.bukkit.event.EventPriority;
  7. import org.bukkit.event.Listener;
  8. import org.bukkit.plugin.EventExecutor;
  9. import org.python.core.PyFunction;
  10. import org.python.core.PyString;
  11. import org.python.util.PythonInterpreter;
  12.  
  13. import java.util.ArrayList;
  14. import java.util.HashMap;
  15.  
  16. public class PyScript implements Listener, EventExecutor {
  17.     BukPy plugin = null;
  18.     PyFunction onEnable = null;
  19.     PyFunction onDisable = null;
  20.     HashMap<Class<? extends Event>, Boolean> hasRegisteredEvent = null;
  21.     HashMap<Class<? extends Event>, ArrayList<PyFunction>> events = null;
  22.  
  23.     public PyScript(String file, BukPy plugin) {
  24.         events = new HashMap<Class<? extends Event>, ArrayList<PyFunction>>();
  25.         hasRegisteredEvent = new HashMap<Class<? extends Event>, Boolean>();
  26.         this.plugin = plugin;
  27.         PythonInterpreter interp = new PythonInterpreter();
  28.         interp.set("script", this);
  29.         interp.execfile(file);
  30.     }
  31.  
  32.     public PyFunction enable(PyFunction func) {
  33.         onEnable = func;
  34.         return func;
  35.     }
  36.  
  37.     public PyFunction disable(PyFunction func) {
  38.         onDisable = func;
  39.         return func;
  40.     }
  41.  
  42.     public PyFunction event(PyFunction func, Class<? extends Event> eventType, EventPriority priority) {
  43.         registerEvent(func, eventType, priority);
  44.         return func;
  45.     }
  46.  
  47.     public PyFunction event(PyFunction func) {
  48.         System.out.println("Hi!"); //THIS WORKS!
  49.         return func;
  50.     }
  51.  
  52.     public PyFunction event(PyFunction func, PyString eventType, PyString priorityName) { //THIS DOES NOT
  53.         Class<? extends Event> clazz = Utils.getEventByName(eventType.asString());
  54.         EventPriority priority = EventPriority.valueOf(priorityName.asString().toUpperCase());
  55.         if (priority == null) {
  56.             throw new IllegalArgumentException("Could not find an event priority of " + priorityName.asString() + "! Try lowest, low, medium, high, highest or monitor!");
  57.         }
  58.         registerEvent(func, clazz, priority);
  59.         return func;
  60.     }
  61.  
  62.     @Override
  63.     public void execute(Listener listener, Event event) throws EventException {
  64.         ArrayList<PyFunction> eventList = events.get(event.getClass());
  65.         for (PyFunction eventFunc : eventList) {
  66.             eventFunc._jcall(new Object[] {event});
  67.         }
  68.     }
  69.  
  70.     private void registerEvent(PyFunction func, Class<? extends Event> eventType, EventPriority priority) {
  71.         if (!events.containsKey(eventType)) {
  72.             events.put(eventType, new ArrayList<PyFunction>());
  73.         }
  74.         ArrayList<PyFunction> eventList = events.get(eventType);
  75.         eventList.add(func);
  76.         events.put(eventType, new ArrayList<PyFunction>());
  77.         if (!hasRegisteredEvent.containsKey(eventType) || !hasRegisteredEvent.get(eventType)) {
  78.             Bukkit.getPluginManager().registerEvent(eventType, this, priority, this, this.plugin);
  79.         }
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment