@Override public void run() { while (true) { try (Socket socket = serverSocket.accept(); DataInputStream inputStream = new DataInputStream(socket.getInputStream())) { String name = inputStream.readUTF(); if (!Objects.equals(pluginName, name)) continue; Util.unloadPlugin(Bukkit.getPluginManager().getPlugin(pluginName)); Bukkit.getConsoleSender().sendMessage("[Debugger] Unload Plugin"); File file = new File(pluginsFolder, pluginName + ".jar"); byte[] buffer = new byte[512]; FileOutputStream fileOutputStream = new FileOutputStream(file); int fLength; while ((fLength = inputStream.read(buffer)) > 0) { fileOutputStream.write(buffer, 0, fLength); } fileOutputStream.flush(); fileOutputStream.close(); Bukkit.getConsoleSender().sendMessage("[Debugger] File Reserved"); Util.loadPlugin(file); Bukkit.getConsoleSender().sendMessage("[Debugger] LoadComplete: " + pluginName); } catch (IOException | InvalidDescriptionException | InvalidPluginException e) { e.printStackTrace(); } } }
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){ switch (cmd.getName().toLowerCase()) { case "unload": Util.unloadPlugin(Bukkit.getPluginManager().getPlugin(args[0])); sender.sendMessage("Unloaded"); break; case "load": try { Util.loadPlugin(new File(this.getDataFolder().getParent(), args[0] + ".jar")); sender.sendMessage("Loaded"); } catch (InvalidDescriptionException | InvalidPluginException e) { e.printStackTrace(); } break; default: return false; } return true; }
/** * Register all systems. */ @SuppressWarnings("ConstantConditions") public void init() { OMGCommand.omgpi_register(); if (mainfig.contains("mysql")) new MySQL(mainfig.getString("mysql.hostname"), mainfig.getString("mysql.port"), mainfig.getString("mysql.database"), mainfig.getString("mysql.username"), mainfig.getString("mysql.password")); iLog("Loading games..."); OMGList<String> games = new OMGList<>(); File gdir = new File(getDataFolder() + File.separator + "games"); if (!gdir.exists() && gdir.mkdir()) iLog("Created games folder."); String[] files = gdir.list(); if (files != null && files.length > 0) Collections.addAll(games, files); iLog("Games folder: " + Strings.join(games, ", ")); games.removeIf(s -> !s.endsWith(".jar")); if (games.isEmpty()) { wLog("No game jars found in games folder. Please add GameName.jar file to /plugins/OMGPI/games/."); return; } String game = mainfig.getString("selectedGame", "random"); try { if (game == null || !games.contains(game + ".jar")) loadGame(null); else loadGame(game); } catch (InvalidDescriptionException | InvalidPluginException e) { e.printStackTrace(); } }
/** * Load game from name. * * @param game Name of a game. * @return Module plugin. * @throws InvalidDescriptionException Plugin.yml is wrong * @throws InvalidPluginException Plugin cannot be loaded */ public Game loadGame(String game) throws InvalidDescriptionException, InvalidPluginException { iLog("Loading game " + game + "..."); Plugin p; if (game == null) { OMGList<String> games = new OMGList<>(); String[] list = new File(getDataFolder() + File.separator + "games").list(); if (list != null) Collections.addAll(games, list); games.removeIf(s -> !s.endsWith(".jar")); iLog("Last game: " + mainfig.getString("lastGame")); if (games.size() > 1 && mainfig.contains("lastGame")) games.removeIf(s -> mainfig.getString("lastGame").equals(s.replaceAll("\\.jar", ""))); iLog("List of runnable games: " + Strings.join(games, ", ")); String gameName = games.get(new Random().nextInt(games.size())); p = Bukkit.getPluginManager().loadPlugin(new File(getDataFolder() + File.separator + "games" + File.separator + gameName)); mainfig.set("lastGame", gameName.replaceAll("\\.jar", "")); mainfig.save(); } else { p = Bukkit.getPluginManager().loadPlugin(new File(getDataFolder() + File.separator + "games" + File.separator + game + ".jar")); mainfig.set("lastGame", game); mainfig.save(); } g = (Game) p; getServer().getPluginManager().enablePlugin(p); return (Game) p; }
public TestPlugin(final Class<T> clazz) throws Exception { this.clazz = clazz; // Make sure the class is loaded getClass().getClassLoader().loadClass(clazz.getName()); try { description = new PluginDescriptionFile(getResource("plugin.yml")); } catch (Exception ex) { throw new InvalidDescriptionException(ex); } final InputStream configStream = getResource("config.yml"); if (configStream == null) { return; } config = YamlConfiguration.loadConfiguration(new InputStreamReader(configStream, Charsets.UTF_8)); }
public static String getPluginFileName(String name) { File pluginDir = Phantom.getDataFolder().getParentFile(); for(File f : pluginDir.listFiles()) { if(f.getName().endsWith(".jar")) { try { PluginDescriptionFile desc = Phantom.getPluginLoader().getPluginDescription(f); if(desc.getName().equalsIgnoreCase(name)) { return f.getName(); } } catch(InvalidDescriptionException e) { } } } return null; }
public static String getPluginFileNameUnsafe(String name, Plugin ins) { File pluginDir = ins.getDataFolder().getParentFile(); for(File f : pluginDir.listFiles()) { if(f.getName().endsWith(".jar")) { try { PluginDescriptionFile desc = ins.getPluginLoader().getPluginDescription(f); if(desc.getName().equalsIgnoreCase(name)) { return f.getName(); } } catch(InvalidDescriptionException e) { } } } return null; }
public FakePlugin(Plugin parent) { this.parent = parent; plugins = Reflection.getField(Reflection.makeField(SimplePluginManager.class, "plugins"), parent.getServer().getPluginManager()); lookupNames = Reflection.getField(Reflection.makeField( SimplePluginManager.class, "lookupNames"), parent.getServer().getPluginManager()); StringWriter write = new StringWriter(); parent.getDescription().save(write); String yaml = write.toString().replaceAll(parent.getName(), getFakeName()); try { description = new PluginDescriptionFile(new StringReader(yaml)); } catch (InvalidDescriptionException ex) { Throwables.propagate(ex); } plugins.add(this); lookupNames.put(getName(), this); }
/** * Loads a game type by name * @param name name of game type * @return game type object * @throws InvalidGameException if could not load */ public GameType loadGameType(String name) throws InvalidGameException { File file = new File(directory, name + ".jar"); if (!file.exists()) { throw new InvalidGameException("Game jar does not exist"); } GameDescriptionFile description = null; try { description = gameLoader.getGameDescription(file); } catch (InvalidDescriptionException e) { throw new InvalidGameException(e); } if (!isDependLoaded(description.getDepend())) { throw new InvalidGameException("One or more dependencies are not yet loaded"); } gameLoader.loadGameType(file, description, true); GameType type = GameType.get(description.getName()); gameLoader.loadEvents(type); loadedGameTypes.add(type); loadGames(type); return type; }
public void setupForTesting(final Server server) throws IOException, InvalidDescriptionException { testing = true; final File dataFolder = File.createTempFile("essentialstest", ""); if (!dataFolder.delete()) { throw new IOException(); } if (!dataFolder.mkdir()) { throw new IOException(); } logger.log(Level.INFO, _("Using temp folder for testing:")); logger.log(Level.INFO, dataFolder.toString()); storageQueue.setEnabled(true); settings = new SettingsHolder(this); i18n.updateLocale("en"); userMap = new UserMap(this); economy = new Economy(this); }
public TagAPI(iTag parent) { this.parent = parent; plugins = (List<Plugin>) getObj( SimplePluginManager.class, parent.getServer().getPluginManager(), "plugins" ); lookupNames = (Map<String, Plugin>) getObj( SimplePluginManager.class, parent.getServer().getPluginManager(), "lookupNames" ); StringWriter write = new StringWriter(); parent.getDescription().save( write ); String yaml = write.toString().replaceAll( "iTag", "TagAPI" ); try { description = new PluginDescriptionFile( new StringReader( yaml ) ); } catch ( InvalidDescriptionException ex ) { throw Throwables.propagate( ex ); } plugins.add( this ); lookupNames.put( getName(), this ); }
@Override public void onCustomSubChannelMessageReceive(String channel, String message, Document document) { Bukkit.getPluginManager().callEvent(new BukkitSubChannelMessageEvent(channel, message, document)); if (channel.equalsIgnoreCase("cloudnet_internal")) { if (message.equalsIgnoreCase("install_plugin")) { String url = document.getString("url"); try { URLConnection urlConnection = new URL(url).openConnection(); urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11"); urlConnection.connect(); Files.copy(urlConnection.getInputStream(), Paths.get("plugins/" + document.getString("name") + ".jar")); File file = new File("plugins/" + document.getString("name") + ".jar"); Plugin plugin = Bukkit.getPluginManager().loadPlugin(file); Bukkit.getPluginManager().enablePlugin(plugin); } catch (IOException | InvalidDescriptionException | InvalidPluginException e) { e.printStackTrace(); } } } }
/** * Load a plugin from a class. It will use the system resource * {@code plugin.yml} as the resource file. * * @param class1 The plugin to load. * @return The loaded plugin. */ public JavaPlugin loadPlugin(Class<? extends JavaPlugin> class1) { try { return loadPlugin(class1, new PluginDescriptionFile(ClassLoader.getSystemResourceAsStream("plugin.yml"))); } catch (InvalidDescriptionException e) { throw new RuntimeException(e); } }
@Override public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException { // TODO Auto-generated method stub throw new UnimplementedOperationException(); }
public Plugin loadPlugin(CommandSender sender, File f, ArrayList<Plugin> loaded) { Plugin pl = null; for (Plugin pll : loaded) { if (pll.getName().equals(f.getName().replaceAll(".jar", ""))) { return null; } } try { pl = Bukkit.getPluginManager().loadPlugin(f); } catch (UnknownDependencyException | InvalidPluginException | InvalidDescriptionException e) { if (e instanceof UnknownDependencyException) { sender.sendMessage("[UnlimitedPlugins] Tried to load the jar, " + f.getName() + " but failed because the required dependencies wheren't found."); } else if (e instanceof InvalidPluginException) { sender.sendMessage("[UnlimitedPlugins] Tried to load the jar, " + f.getName() + " but failed because the jar was invalid."); } else if (e instanceof InvalidDescriptionException) { sender.sendMessage("[UnlimitedPlugins] Tried to load the jar, " + f.getName() + " but failed because the plugin.yml was invalid."); } else { sender.sendMessage("[UnlimitedPlugins] Tried to load the jar, " + f.getName() + " but failed because an unknown error occurred."); } return null; } if (pl != null) { Bukkit.getPluginManager().enablePlugin(pl); } return pl; }
public PluginDescriptionFile createDescription(JavaPlugin plugin) throws InvalidDescriptionException { for (TestPlugin<?> p : pluginsToLoad) { if (p.getPluginClass() == plugin.getClass()) { return p.getDescription(); } } return null; }
public MockUtility withPluginDescription() { try { File pluginYml = new File(getClass().getResource("/plugin.yml").getPath()); PluginDescriptionFile desc = new PluginDescriptionFile(new FileInputStream(pluginYml)); when(pluginMock.getDescription()).thenReturn(desc); } catch (FileNotFoundException | InvalidDescriptionException e) { System.out.println("Error while setting plugin description"); } return this; }
@Override public void load(final MinigameDescriptor plugin) { try { this.plugins.put(plugin, this.internal.loadPlugin(plugin.getJar())); } catch (UnknownDependencyException | InvalidPluginException | InvalidDescriptionException e) { e.printStackTrace(); } }
public static void loadPlugin(File pluginFile) throws InvalidDescriptionException, InvalidPluginException { PluginManager pluginManager = Bukkit.getPluginManager(); Plugin plugin = pluginManager.loadPlugin(pluginFile); plugin.onLoad(); pluginManager.enablePlugin(plugin); }
public boolean update() { if (!getLatestVersion().equalsIgnoreCase(currentVersion)) { String newVersion = getLatestVersion(); try { if (!new File(pluginToUpdate.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).delete()) Bukkit.getLogger().log(Level.WARNING, "Unable to delete the old version of " + pluginName + " (v." + currentVersion + ")"); Bukkit.getPluginManager().disablePlugin(pluginToUpdate); URL url = new URL(this.updateURL + "/download"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty("User-Agent", "SpigetResourceUpdater"); long completeFileSize = connection.getContentLength(); BufferedInputStream in = new BufferedInputStream(connection.getInputStream()); FileOutputStream fos = new FileOutputStream(new File(dataFolder.substring(0, dataFolder.lastIndexOf("/")) + jarName + ".jar")); BufferedOutputStream out = new BufferedOutputStream(fos, 1024); byte[] data = new byte[1024]; long downloadedFileSize = 0; int i; while ((i = in.read(data, 0, 1024)) >= 0) { downloadedFileSize += i; int progress = (int) ((((double) downloadedFileSize) / ((double) completeFileSize)) * 100); System.out.println("Downloading " + pluginName + " to version " + newVersion + " at " + progress + " %"); out.write(data, 0, i); } out.close(); in.close(); Bukkit.getPluginManager().loadPlugin(new File(dataFolder.substring(0, dataFolder.lastIndexOf("/")) + "/" + jarName + ".jar")); Bukkit.getPluginManager().enablePlugin(Bukkit.getPluginManager().getPlugin(pluginName)); return true; } catch (IOException | URISyntaxException | InvalidDescriptionException | InvalidPluginException e) { e.printStackTrace(); } } return false; }
@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 pm.loadPlugin(file); }
@Override public PluginDescriptionFile getPluginDescription(File file) throws InvalidDescriptionException { throw new UnsupportedOperationException("Not supported yet"); }
@Override public Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException { return null; }
public PluginDescriptionFile getDescription(JavaPlugin plugin) throws InvalidDescriptionException { return pluginManager.createDescription(plugin); }
public PluginDescriptionFile getPluginDescription(File file) throws InvalidDescriptionException { throw new UnsupportedOperationException(); }
public GameDescriptionFile(final InputStream stream) throws InvalidDescriptionException { loadMap((Map<?, ?>) yaml.load(stream)); }
public PluginDescriptionFile getPluginDescription(File file) throws InvalidDescriptionException { return null; }
public PluginDescriptionFile(InputStream stream) throws InvalidDescriptionException { }
public PluginDescriptionFile(Reader reader) throws InvalidDescriptionException { }
public PluginDescriptionFile getPluginDescription(File file) throws InvalidDescriptionException { throw new UnsupportedOperationException( "Not supported yet." ); //To change body of generated methods, choose Tools | Templates. }
PluginDescriptionFile getPluginDescription(File file) throws InvalidDescriptionException;
Plugin loadPlugin(File file) throws InvalidPluginException, InvalidDescriptionException, UnknownDependencyException;