195 lines
4.0 KiB
Java
195 lines
4.0 KiB
Java
package de.mrbesen.cppplugins;
|
|
|
|
import lombok.Getter;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.Server;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.configuration.file.FileConfiguration;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.generator.ChunkGenerator;
|
|
import org.bukkit.plugin.Plugin;
|
|
import org.bukkit.plugin.PluginDescriptionFile;
|
|
import org.bukkit.plugin.PluginLoader;
|
|
|
|
import java.io.File;
|
|
import java.io.InputStream;
|
|
import java.util.List;
|
|
import java.util.logging.Logger;
|
|
|
|
public class CppPlugin implements Plugin {
|
|
|
|
private boolean enabled = false;
|
|
@Getter
|
|
private String name;
|
|
private static boolean initdone = false;
|
|
private CppLoader loader;
|
|
private int id; //for JNI, do not remove
|
|
|
|
//library operations
|
|
protected static native boolean init_(); //false: failed, true: success
|
|
protected native boolean loadPlugin(String path); //false = failed, true: success
|
|
|
|
//plugin operations
|
|
public native void onLoad();
|
|
public native void onEnable_();
|
|
public native void onDisable_();
|
|
protected native CppEvent fireEvent(CppEvent e, long functionid);
|
|
protected static native boolean onCmd(CommandSender sender, Command cmd, String label, String[] args, long functionid, int plugind);
|
|
|
|
native CppListener[] getListener();
|
|
|
|
public CppPlugin(File f, CppLoader l) {
|
|
loader = l;
|
|
this.name = f.getName();
|
|
if(!initdone) {
|
|
initdone = init();
|
|
if(!initdone) {
|
|
throw new RuntimeException("Init returned with error");
|
|
}
|
|
}
|
|
if(!loadPlugin(f.getAbsolutePath())) {
|
|
throw new RuntimeException("loadPlugin returened with error");
|
|
}
|
|
}
|
|
|
|
protected boolean init() {
|
|
try {
|
|
System.loadLibrary("plugin"); //loads libplugin.so from System.getProperty("java.library.path")
|
|
return init_();
|
|
} catch(UnsatisfiedLinkError e) {
|
|
e.printStackTrace();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void onEnable() {
|
|
getLogger().info("Enabling " + getName());
|
|
onEnable_();
|
|
enabled = true;
|
|
}
|
|
|
|
@Override
|
|
public void onDisable() {
|
|
onDisable_();
|
|
enabled = false;
|
|
}
|
|
|
|
public PluginDescriptionFile getDescription() {
|
|
return new PluginDescriptionFile(name, "1.0", getClass().getName());
|
|
}
|
|
|
|
@Override
|
|
public File getDataFolder() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public FileConfiguration getConfig() {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public InputStream getResource(String s) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void saveConfig() {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void saveDefaultConfig() {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void saveResource(String s, boolean b) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void reloadConfig() {
|
|
|
|
}
|
|
|
|
@Override
|
|
public PluginLoader getPluginLoader() {
|
|
return loader;
|
|
}
|
|
|
|
@Override
|
|
public Server getServer() {
|
|
return Bukkit.getServer();
|
|
}
|
|
|
|
@Override
|
|
public boolean isEnabled() {
|
|
return enabled;
|
|
}
|
|
|
|
@Override
|
|
public boolean isNaggable() {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void setNaggable(boolean b) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public ChunkGenerator getDefaultWorldGenerator(String s, String s1) {
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public Logger getLogger() {
|
|
return Logger.getLogger(getName().substring(0, 3));
|
|
}
|
|
|
|
@Override
|
|
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) {
|
|
return null;
|
|
}
|
|
|
|
static class CppListener implements Listener {
|
|
String eventfilter;
|
|
long functionid;
|
|
|
|
public CppListener(String eventfilter, long functionid) {
|
|
this.eventfilter = eventfilter;
|
|
this.functionid = functionid;
|
|
}
|
|
|
|
public CppListener() {
|
|
this.eventfilter = "NOP";
|
|
functionid = 0;
|
|
}
|
|
}
|
|
|
|
static class CppCommand extends Command {
|
|
private long functionid;
|
|
private int pluginid;
|
|
|
|
protected CppCommand(String name, long functionid, int pluginid) {
|
|
super(name);
|
|
this.functionid = functionid;
|
|
this.pluginid = pluginid;
|
|
}
|
|
|
|
@Override
|
|
public boolean execute(CommandSender sender, String label, String[] args) {
|
|
return onCmd(sender, this, label, args, functionid, pluginid);
|
|
}
|
|
}
|
|
}
|