mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-05 02:22:12 +01:00
Removed TSLPC (That Stupidly Long Plugin Constructor)
By: Dinnerbone <dinnerbone@dinnerbone.com>
This commit is contained in:
parent
08fd2073ce
commit
4bb9f83d53
3 changed files with 66 additions and 24 deletions
|
@ -13,12 +13,6 @@ public class Fillr extends JavaPlugin {
|
||||||
public static final String VERSION = "1.0";
|
public static final String VERSION = "1.0";
|
||||||
public static final String DIRECTORY = "plugins";
|
public static final String DIRECTORY = "plugins";
|
||||||
|
|
||||||
public Fillr(PluginLoader pluginLoader, Server instance,
|
|
||||||
PluginDescriptionFile desc, File folder, File plugin,
|
|
||||||
ClassLoader cLoader) {
|
|
||||||
super(pluginLoader, instance, desc, folder, plugin, cLoader);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
package org.bukkit.plugin.java;
|
package org.bukkit.plugin.java;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
@ -15,13 +16,14 @@ import org.bukkit.util.config.Configuration;
|
||||||
*/
|
*/
|
||||||
public abstract class JavaPlugin implements Plugin {
|
public abstract class JavaPlugin implements Plugin {
|
||||||
private boolean isEnabled = false;
|
private boolean isEnabled = false;
|
||||||
private final PluginLoader loader;
|
private boolean initialized = false;
|
||||||
private final Server server;
|
private PluginLoader loader = null;
|
||||||
private final File file;
|
private Server server = null;
|
||||||
private final PluginDescriptionFile description;
|
private File file = null;
|
||||||
private final File dataFolder;
|
private PluginDescriptionFile description = null;
|
||||||
private final ClassLoader classLoader;
|
private File dataFolder = null;
|
||||||
private final Configuration config;
|
private ClassLoader classLoader = null;
|
||||||
|
private Configuration config = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new Java plugin instance
|
* Constructs a new Java plugin instance
|
||||||
|
@ -36,14 +38,15 @@ public abstract class JavaPlugin implements Plugin {
|
||||||
public JavaPlugin(PluginLoader pluginLoader, Server instance,
|
public JavaPlugin(PluginLoader pluginLoader, Server instance,
|
||||||
PluginDescriptionFile desc, File folder, File plugin,
|
PluginDescriptionFile desc, File folder, File plugin,
|
||||||
ClassLoader cLoader) {
|
ClassLoader cLoader) {
|
||||||
loader = pluginLoader;
|
System.out.println("Using the stupidly long constructor " + desc.getMain() + "(PluginLoader, Server, PluginDescriptionFile, File, File, ClassLoader) is no longer recommended. Go nag the plugin author of " + desc.getName() + " to remove it! (Nothing is broken, we just like to keep code clean.)");
|
||||||
server = instance;
|
|
||||||
file = plugin;
|
ArrayList<String> authors = desc.getAuthors();
|
||||||
description = desc;
|
if (authors.size() > 0) {
|
||||||
dataFolder = folder;
|
System.out.println("Hint! It's probably someone called '" + authors.get(0) + "'");
|
||||||
classLoader = cLoader;
|
}
|
||||||
config = new Configuration(new File(dataFolder, "config.yml"));
|
}
|
||||||
config.load();
|
|
||||||
|
public JavaPlugin() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -145,4 +148,43 @@ public abstract class JavaPlugin implements Plugin {
|
||||||
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
|
||||||
return false; // default implementation: do nothing!
|
return false; // default implementation: do nothing!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes this plugin with the given variables.
|
||||||
|
*
|
||||||
|
* This method should never be called manually.
|
||||||
|
*
|
||||||
|
* @param loader PluginLoader that is responsible for this plugin
|
||||||
|
* @param server Server instance that is running this plugin
|
||||||
|
* @param description PluginDescriptionFile containing metadata on this plugin
|
||||||
|
* @param dataFolder Folder containing the plugin's data
|
||||||
|
* @param file File containing this plugin
|
||||||
|
* @param classLoader ClassLoader which holds this plugin
|
||||||
|
*/
|
||||||
|
protected void initialize(PluginLoader loader, Server server,
|
||||||
|
PluginDescriptionFile description, File dataFolder, File file,
|
||||||
|
ClassLoader classLoader) {
|
||||||
|
if (initialized) {
|
||||||
|
throw new UnsupportedOperationException("Cannot reinitialize a plugin");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.initialized = true;
|
||||||
|
this.loader = loader;
|
||||||
|
this.server = server;
|
||||||
|
this.file = file;
|
||||||
|
this.description = description;
|
||||||
|
this.dataFolder = dataFolder;
|
||||||
|
this.classLoader = classLoader;
|
||||||
|
this.config = new Configuration(new File(dataFolder, "config.yml"));
|
||||||
|
this.config.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the initialization status of this plugin
|
||||||
|
*
|
||||||
|
* @return true if this plugin is initialized, otherwise false
|
||||||
|
*/
|
||||||
|
public boolean isInitialized() {
|
||||||
|
return initialized;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import org.bukkit.event.world.ChunkLoadEvent;
|
||||||
import org.bukkit.event.world.ChunkUnloadEvent;
|
import org.bukkit.event.world.ChunkUnloadEvent;
|
||||||
import org.bukkit.event.world.WorldEvent;
|
import org.bukkit.event.world.WorldEvent;
|
||||||
import org.bukkit.event.world.WorldListener;
|
import org.bukkit.event.world.WorldListener;
|
||||||
import org.bukkit.inventory.PlayerInventory;
|
|
||||||
import org.bukkit.plugin.*;
|
import org.bukkit.plugin.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,9 +71,16 @@ public final class JavaPluginLoader implements PluginLoader {
|
||||||
ClassLoader loader = new PluginClassLoader(this, new URL[]{file.toURI().toURL()}, getClass().getClassLoader());
|
ClassLoader loader = new PluginClassLoader(this, new URL[]{file.toURI().toURL()}, getClass().getClassLoader());
|
||||||
Class<?> jarClass = Class.forName(description.getMain(), true, loader);
|
Class<?> jarClass = Class.forName(description.getMain(), true, loader);
|
||||||
Class<? extends JavaPlugin> plugin = jarClass.asSubclass(JavaPlugin.class);
|
Class<? extends JavaPlugin> plugin = jarClass.asSubclass(JavaPlugin.class);
|
||||||
Constructor<? extends JavaPlugin> constructor = plugin.getConstructor(PluginLoader.class, Server.class, PluginDescriptionFile.class, File.class, File.class, ClassLoader.class);
|
|
||||||
|
|
||||||
result = constructor.newInstance(this, server, description, dataFolder, file, loader);
|
try {
|
||||||
|
Constructor<? extends JavaPlugin> constructor = plugin.getConstructor(PluginLoader.class, Server.class, PluginDescriptionFile.class, File.class, File.class, ClassLoader.class);
|
||||||
|
result = constructor.newInstance(this, server, description, dataFolder, file, loader);
|
||||||
|
} catch (NoSuchMethodException ex) {
|
||||||
|
Constructor<? extends JavaPlugin> constructor = plugin.getConstructor();
|
||||||
|
result = constructor.newInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
result.initialize(this, server, description, dataFolder, file, loader);
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
throw new InvalidPluginException(ex);
|
throw new InvalidPluginException(ex);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue