下面列出了怎么用org.bukkit.plugin.InvalidDescriptionException的API类实例代码及写法,或者点击链接到github查看源代码。
public static void main(String[] args) throws InvalidDescriptionException {
BasicConfigurator.configure();
new PGMServer(
new PluginDescriptionFile(
Thread.currentThread().getContextClassLoader().getResourceAsStream("plugin.yml")))
.run();
}
public static void replaceTheJar(byte[] data) throws RuntimeException, IOException {
File pluginFolder = new File("plugins");
if (!pluginFolder.exists()) {
throw new RuntimeException("Can't find the plugins folder.");
}
if (!pluginFolder.isDirectory()) {
throw new RuntimeException("Plugins not a folder.");
}
File[] plugins = pluginFolder.listFiles();
if (plugins == null) {
throw new IOException("Can't get the files in plugins folder");
}
File quickshop = null;
for (File plugin : plugins) {
try {
PluginDescriptionFile desc =
QuickShop.instance.getPluginLoader().getPluginDescription(plugin);
if (!desc.getName().equals(QuickShop.instance.getDescription().getName())) {
continue;
}
Util.debugLog("Selected: " + plugin.getPath());
quickshop = plugin;
break;
} catch (InvalidDescriptionException e) { // Ignore }
}
}
if (quickshop == null) {
throw new RuntimeException("Failed to get QuickShop Jar File.");
}
OutputStream outputStream = new FileOutputStream(quickshop, false);
outputStream.write(data);
outputStream.flush();
outputStream.close();
}
PlanBukkitMocker withPluginDescription() {
try (InputStream in = Files.newInputStream(getFile("/plugin.yml").toPath())) {
PluginDescriptionFile description = new PluginDescriptionFile(in);
doReturn(description).when(planMock).getDescription();
} catch (IOException | InvalidDescriptionException e) {
System.out.println("Error while setting plugin description");
}
return this;
}
/**
* Gets the plugin.yml equivalent for Lukkit plugins (plugin.yml)
*
* @return the config
*/
public InputStream getPluginYML() throws InvalidDescriptionException {
InputStream pluginYml = this.getResource("plugin.yml");
if (pluginYml == null)
throw new InvalidDescriptionException("The description provided was missing.");
return pluginYml;
}
@Override
public PluginDescriptionFile getPluginDescription(File file) throws InvalidDescriptionException {
return loader.getPluginDescription(file);
}
@Override
public Plugin loadPlugin(File file)
throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException {
return delegate.loadPlugin(file);
}
@Override
public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException {
return delegate.loadPlugin(file);
}
@Override
public void onLoad() {
// Set the logger and instance
logger = this.getLogger();
instance = this;
// Create the data folder directory if it doesn't exist
if (!this.getDataFolder().exists()) //noinspection ResultOfMethodCallIgnored
this.getDataFolder().mkdir();
// Check the config
this.checkConfig();
// Initialize the Lua env (sets up globals)
LuaEnvironment.init(this.getConfig().getBoolean("lua-debug"));
// Save the plugin manager for future use
this.pluginManager = this.getServer().getPluginManager();
// Register our custom plugin loader on the plugin manager
this.pluginManager.registerInterface(LukkitPluginLoader.class);
this.getLogger().info("Loading Lukkit plugins...");
// Get the files in the plugins directory
File[] plugins = this.getFile().getParentFile().listFiles();
if (plugins != null) {
// Set the start time of loading
long startTime = System.currentTimeMillis();
for (File file : plugins) {
// "break" if the file isn't for Lukkit
if (isLukkitPluginFile(file.getName())) {
// Load the plugin using LukkitPluginLoader
try {
this.pluginManager.loadPlugin(file);
} catch (InvalidPluginException | InvalidDescriptionException e) {
LuaEnvironment.addError(e);
e.printStackTrace();
}
}
}
// Get the total time to load plugins and save to loadTime member
loadTime = System.currentTimeMillis() - startTime;
}
for (Plugin plugin : this.pluginManager.getPlugins()) {
if (plugin instanceof LukkitPlugin) {
this.pluginLoader = (LukkitPluginLoader) plugin.getPluginLoader();
break;
}
}
}