- Баллы
- 96
- Имя в Minecraft
- DonDays
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.

говнокода нет уже, а списки будутГовнокод говнокодом, а чёрный список команд и игроков нужен![]()
LolВ названии темы так и осталось v0.3...
Спасибки, изи консоль для сервераговнокода нет уже, а списки будут
update
Вообще эта фича для администраторов/персонала сервера, глупо раздавать донатерам такие полномочияСпасибки, изи консоль для сервера
Согласен, но идёт 2017 год и почти у всех такие плагины. Это привлекает аудиторию.Вообще эта фича для администраторов/персонала сервера, глупо раздавать донатерам такие полномочия
разве что чсв школьниковЭто привлекает аудиторию.
А в плагине код закрыт чтоли?не могу скинуть файлом, так что, простите уж, скину сообщением
Код:package ru.dondays.commandspy; import java.util.HashSet; import java.util.List; import java.util.Set; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.plugin.java.JavaPlugin; import ru.tehkode.permissions.bukkit.PermissionsEx; public class Main extends JavaPlugin implements Listener { private boolean logConsole; private List<String> ignore; private ConsoleListener consoleListener; private Set<Player> spy; private boolean pex; @Override public void onEnable() { this.saveDefaultConfig(); this.load(); this.spy = new HashSet<>(); try { Class.forName("ru.tehkode.permissions.bukkit.PermissionsEx"); this.pex = true; } catch(final ClassNotFoundException ignore) { this.pex = false; } this.getServer().getPluginManager().registerEvents(this, this); } @EventHandler(priority=EventPriority.HIGHEST) public void onPlayerCommand(final PlayerCommandPreprocessEvent e) { if(e.isCancelled()) { return; } for(final String ignore: this.ignore) { if(!e.getMessage().startsWith(ignore)) { continue; } return; } this.spy.forEach(player -> { player.sendMessage("§f[§cCommandSpy§f] " + (this.pex ? PermissionsEx.getUser(e.getPlayer()).getPrefix() : "") + e.getPlayer().getName() +" §fвыполняет команду: §a" + e.getMessage()); }); } @Override public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) { if(args.length == 1 && args[0].toLowerCase().equalsIgnoreCase("reload")) { if(!sender.hasPermission("commandspy.reload")) { sender.sendMessage("§f[§cCommandSpy§f] §cУ вас недостаточно прав!"); return false; } this.reloadConfig(); this.load(); sender.sendMessage("§f[§cCommandSpy§f] Конфигурация успешно перезагружена!"); return false; } if(!(sender instanceof Player)) { sender.sendMessage("§f[§cCommandSpy§f] §cPlayers only :C"); return false; } if(!sender.hasPermission("commandspy.spy")) { sender.sendMessage("§f[§cCommandSpy§f] §cУ вас недостаточно прав! :C"); return false; } if(!this.spy.contains((Player)sender)) { this.spy.add((Player)sender); } else { this.spy.remove((Player)sender); } sender.sendMessage("§f[§cCommandSpy§f] Вы " + (this.spy.contains((Player)sender) ? "§aвключили" : "§cвыключили") + " §fслежку за игроками."); return true; } private void load() { this.logConsole = this.getConfig().getBoolean("AnnounceConsoleCommands"); this.ignore = this.getConfig().getStringList("CommandsBlacklist"); if(!this.logConsole && this.consoleListener != null) { HandlerList.unregisterAll(this.consoleListener); } else if(this.logConsole && this.consoleListener == null) { this.getServer().getPluginManager().registerEvents((this.consoleListener == null ? (this.consoleListener = new ConsoleListener()) : this.consoleListener), this); } } private class ConsoleListener implements Listener { @EventHandler(priority=EventPriority.HIGHEST) public void onConsoleCommand(final ServerCommandEvent e) { if(e.isCancelled()) { return; } for(final String ignore: Main.this.ignore) { if(!e.getCommand().startsWith(ignore)) { continue; } return; } Main.this.spy.forEach(player -> { player.sendMessage("§f[§cCommandSpy§f] §eКонсоль §fвыполняет команду: §a" + e.getCommand()); }); } } }
Там фичи из 8 джавы, вот и не декомпилируется.А в плагине код закрыт чтоли?
Блин, а зачем убрал MSGPREFIX?Там фичи из 8 джавы, вот и не декомпилируется.
Начнем с того, что все используют пекс. А вообще, мне было просто лень интегрировать VaultА почему бы не использовать Vault, чтобы поддерживать не только префиксы PermissionsEX?
хз, лично я, когда пишу плагин для себя всегда пишу версию 1.0, а тут, при каждом обновлении, тупо увеличиваю версию плагина на 1Насчет изменения версий: http://semver.org/lang/ru/
Тут, конечно, нет публичного API, но изменение мажорной версии в любом подразумевает что-то более глобальное, чем добавление поддержки цветовых кодов