From 584e4cb0688568d3716efe412d43f389b7270963 Mon Sep 17 00:00:00 2001 From: Matchan Date: Tue, 29 Mar 2022 18:47:57 +0900 Subject: [PATCH] Initial commit --- .gitignore | 118 ++++++++++++++++++ build.gradle | 49 ++++++++ gradle.properties | 0 gradle/wrapper/gradle-wrapper.properties | 1 + settings.gradle | 1 + .../simplecommandlog/bukkit/CmdLog.java | 57 +++++++++ .../simplecommandlog/bukkit/Eval.java | 44 +++++++ .../bukkit/SimpleCommandLog.java | 43 +++++++ .../simplecommandlog/bukkit/TypeLog.java | 56 +++++++++ .../simplecommandlog/bungee/BCmdLog.java | 69 ++++++++++ .../simplecommandlog/bungee/BEval.java | 43 +++++++ .../bungee/BSimpleCommandLog.java | 70 +++++++++++ .../simplecommandlog/bungee/BTypeLog.java | 67 ++++++++++ .../bungee/PluginListCommand.java | 31 +++++ src/main/resources/bungee.yml | 5 + src/main/resources/config.yml | 4 + src/main/resources/plugin.yml | 38 ++++++ 17 files changed, 696 insertions(+) create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 settings.gradle create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bukkit/CmdLog.java create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bukkit/Eval.java create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bukkit/SimpleCommandLog.java create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bukkit/TypeLog.java create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bungee/BCmdLog.java create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bungee/BEval.java create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bungee/BSimpleCommandLog.java create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bungee/BTypeLog.java create mode 100644 src/main/java/jp/simplespace/simplecommandlog/bungee/PluginListCommand.java create mode 100644 src/main/resources/bungee.yml create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c37caf --- /dev/null +++ b/.gitignore @@ -0,0 +1,118 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Cache of project +.gradletasknamecache + +**/build/ + +# Common working directory +run/ + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..69541d8 --- /dev/null +++ b/build.gradle @@ -0,0 +1,49 @@ +import org.apache.tools.ant.filters.ReplaceTokens + +plugins { + id 'java' + id 'com.github.johnrengelman.shadow' version '6.1.0' +} + +group = 'jp.simplespace' +version = '1.3' + + +repositories { + mavenCentral() + maven { + name = 'spigotmc-repo' + url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' + } + maven { + name = 'sonatype' + url = 'https://oss.sonatype.org/content/groups/public/' + } + maven { + name 'velocity' + url 'https://nexus.velocitypowered.com/repository/maven-public/' + } + maven { + url 'https://papermc.io/repo/repository/maven-public/' + } +} + +dependencies { + compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT' + implementation 'org.openjdk.nashorn:nashorn-core:15.3' + compileOnly 'io.github.waterfallmc:waterfall-api:1.18-R0.1-SNAPSHOT' +} + +processResources { + from(sourceSets.main.resources.srcDirs) { + filter ReplaceTokens, tokens: [version: version] + duplicatesStrategy = 'include' + } +} + +compileJava.options.encoding = 'UTF-8' +compileTestJava.options.encoding = 'UTF-8' + +tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..e69de29 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..9b0dc1a --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..3dd1026 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'SimpleCommandLog' diff --git a/src/main/java/jp/simplespace/simplecommandlog/bukkit/CmdLog.java b/src/main/java/jp/simplespace/simplecommandlog/bukkit/CmdLog.java new file mode 100644 index 0000000..72187a1 --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bukkit/CmdLog.java @@ -0,0 +1,57 @@ +package jp.simplespace.simplecommandlog.bukkit; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +import java.util.List; +import java.util.UUID; + +import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.prefix; +import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.plugin; +import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.config; +import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.noPermission; + +public class CmdLog implements CommandExecutor,Listener { + @Override + public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) { + if(!(sender instanceof Player)){ + sender.sendMessage(prefix + ChatColor.RED + "このコマンドはプレイヤーのみ実行できます。"); + return true; + } + else { + Player p = (Player) sender; + if(p.hasPermission("scl.command.scl")){ + List list = config.getStringList("cmdlog.players"); + if (list.contains(p.getUniqueId().toString())){ + list.remove(p.getUniqueId().toString()); + p.sendMessage(prefix + ChatColor.GRAY + "コマンドログ表示を無効にしました。"); + } + else { + list.add(p.getUniqueId().toString()); + p.sendMessage(prefix + ChatColor.GRAY + "コマンドログ表示を有効にしました。"); + } + config.set("cmdlog.players",list); + plugin.saveConfig(); + } + else p.sendMessage(noPermission); + } + return true; + } + //コマンドログをログ表示を有効にしているプレイヤーに送信。 + @EventHandler + public void onProcessCommand(PlayerCommandPreprocessEvent e){ + List list = config.getStringList("cmdlog.players"); + Player sender = e.getPlayer(); + for(String puuid : list){ + Player p = Bukkit.getPlayer(UUID.fromString(puuid)); + if(p!=null) p.sendMessage(ChatColor.GRAY + "[CL] @" + sender.getName() + " " + e.getMessage()); + } + } +} diff --git a/src/main/java/jp/simplespace/simplecommandlog/bukkit/Eval.java b/src/main/java/jp/simplespace/simplecommandlog/bukkit/Eval.java new file mode 100644 index 0000000..1922a27 --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bukkit/Eval.java @@ -0,0 +1,44 @@ +package jp.simplespace.simplecommandlog.bukkit; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory; + +import javax.script.ScriptEngine; +import java.util.HashMap; +import java.util.Map; + + +import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.plugin; + +public class Eval implements CommandExecutor { + private static final Map map = new HashMap<>(); + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + + if(!map.containsKey(sender)){ + ScriptEngine se = new NashornScriptEngineFactory().getScriptEngine(); + se.put("plugin", plugin); + se.put("server", Bukkit.getServer()); + se.put("GameMode","org.bukkit.GameMode"); + se.put("EntityType","org.bukkit.entity.EntityType"); + se.put("ChatColor","org.bukkit.ChatColor"); + se.put("player",(Player)sender); + map.put(sender,se); + } + ScriptEngine se = map.get(sender); + try + { + sender.sendMessage(ChatColor.GREEN+"成功しました:\n"+ChatColor.RESET+se.eval(String.join(" ",args))); + } + catch(Exception e) { + sender.sendMessage(ChatColor.RED+ "例外がスローされました:\n" +ChatColor.RESET+ e); + + } + return true; + } +} diff --git a/src/main/java/jp/simplespace/simplecommandlog/bukkit/SimpleCommandLog.java b/src/main/java/jp/simplespace/simplecommandlog/bukkit/SimpleCommandLog.java new file mode 100644 index 0000000..52aa99e --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bukkit/SimpleCommandLog.java @@ -0,0 +1,43 @@ +package jp.simplespace.simplecommandlog.bukkit; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; +import org.slf4j.Logger; + +import javax.script.ScriptEngineManager; + +public final class SimpleCommandLog extends JavaPlugin { + public static String prefix = ChatColor.AQUA+"[SCL] "+ChatColor.RESET; + public static String noPermission = prefix+ChatColor.RED + "あなたに実行する権限はありません。"; + public static FileConfiguration config; + public static Plugin plugin; + + @Override + public void onEnable() { + // Plugin startup logic + plugin = this; + //コマンドの登録 + getCommand("scl").setExecutor(new CmdLog()); + getCommand("eval").setExecutor(new Eval()); + getCommand("stl").setExecutor(new TypeLog()); + //イベントリスナーの登録 + getServer().getPluginManager().registerEvents(new CmdLog(),this); + getServer().getPluginManager().registerEvents(new TypeLog(),this); + + //configの生成 + saveDefaultConfig(); + reloadConfig(); + config = plugin.getConfig(); + } + + @Override + public void onDisable() { + // Plugin shutdown logic + } + public static Plugin getPlugin(){ + return plugin; + } +} diff --git a/src/main/java/jp/simplespace/simplecommandlog/bukkit/TypeLog.java b/src/main/java/jp/simplespace/simplecommandlog/bukkit/TypeLog.java new file mode 100644 index 0000000..a5fa69f --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bukkit/TypeLog.java @@ -0,0 +1,56 @@ +package jp.simplespace.simplecommandlog.bukkit; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.server.TabCompleteEvent; + +import java.util.List; +import java.util.UUID; + +import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.*; +import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.noPermission; + +public class TypeLog implements CommandExecutor, Listener { + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if(!(sender instanceof Player)){ + sender.sendMessage(prefix + ChatColor.RED + "このコマンドはプレイヤーのみ実行できます。"); + return true; + } + else { + Player p = (Player) sender; + if(p.hasPermission("scl.command.stl")){ + List list = config.getStringList("typelog.players"); + if (list.contains(p.getUniqueId().toString())){ + list.remove(p.getUniqueId().toString()); + p.sendMessage(prefix + ChatColor.GRAY + "入力ログ表示を無効にしました。"); + } + else { + list.add(p.getUniqueId().toString()); + p.sendMessage(prefix + ChatColor.GRAY + "入力ログ表示を有効にしました。"); + } + config.set("typelog.players",list); + plugin.saveConfig(); + } + else p.sendMessage(noPermission); + } + return true; + } + //入力ログをログ表示を有効にしているプレイヤーに送信。 + @EventHandler + public void onType(TabCompleteEvent e){ + List list = config.getStringList("typelog.players"); + CommandSender sender = e.getSender(); + for(String puuid : list){ + Player p = Bukkit.getPlayer(UUID.fromString(puuid)); + if(p!=null) p.sendMessage(ChatColor.GRAY + "[TL] @" + sender.getName() + " " + e.getBuffer()); + } + } +} diff --git a/src/main/java/jp/simplespace/simplecommandlog/bungee/BCmdLog.java b/src/main/java/jp/simplespace/simplecommandlog/bungee/BCmdLog.java new file mode 100644 index 0000000..777d045 --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bungee/BCmdLog.java @@ -0,0 +1,69 @@ +package jp.simplespace.simplecommandlog.bungee; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.event.ChatEvent; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; +import net.md_5.bungee.event.EventHandler; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.UUID; + +import static jp.simplespace.simplecommandlog.bungee.BSimpleCommandLog.*; + +public class BCmdLog extends Command implements Listener { + public BCmdLog(){ + super("bscl","scl.command.scl","bcmdlog","bcl"); + } + @Override + public void execute(CommandSender sender, String[] args) { + if(!(sender instanceof ProxiedPlayer)){ + sender.sendMessage(new TextComponent(prefix + ChatColor.RED + "このコマンドはプレイヤーのみ実行できます。")); + return; + } + else { + ProxiedPlayer p = (ProxiedPlayer) sender; + if(p.hasPermission("scl.command.scl")){ + List list = config.getStringList("cmdlog.players"); + if (list.contains(p.getUniqueId().toString())){ + list.remove(p.getUniqueId().toString()); + p.sendMessage(new TextComponent(prefix + ChatColor.GRAY + "コマンドログ表示を無効にしました。")); + } + else { + list.add(p.getUniqueId().toString()); + p.sendMessage(new TextComponent(prefix + ChatColor.GRAY + "コマンドログ表示を有効にしました。")); + } + config.set("cmdlog.players",list); + try { + ConfigurationProvider.getProvider(YamlConfiguration.class).save(config,new File(plugin.getDataFolder(),"config.yml")); + } catch (IOException e) { + e.printStackTrace(); + } + } + else p.sendMessage(new TextComponent(noPermission)); + } + } + @EventHandler + public void onChat(ChatEvent event){ + if(!event.getMessage().startsWith("/")){ + return; + } + if(!(event.getSender() instanceof ProxiedPlayer)){ + return; + } + ProxiedPlayer sender = (ProxiedPlayer) event.getSender(); + + List list = config.getStringList("cmdlog.players"); + for(String puuid : list){ + ProxiedPlayer p = proxy.getPlayer(UUID.fromString(puuid)); + if(p!=null) p.sendMessage(new TextComponent(ChatColor.GRAY + "[CL] "+sender.getServer().getInfo().getName()+"@" + sender.getName() + " " + event.getMessage())); + } + } +} diff --git a/src/main/java/jp/simplespace/simplecommandlog/bungee/BEval.java b/src/main/java/jp/simplespace/simplecommandlog/bungee/BEval.java new file mode 100644 index 0000000..2dda46b --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bungee/BEval.java @@ -0,0 +1,43 @@ +package jp.simplespace.simplecommandlog.bungee; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; +import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory; + +import javax.script.ScriptEngine; +import java.util.HashMap; +import java.util.Map; + +import static jp.simplespace.simplecommandlog.bungee.BSimpleCommandLog.plugin; +import static jp.simplespace.simplecommandlog.bungee.BSimpleCommandLog.proxy; + +public class BEval extends Command { + private static final Map map = new HashMap<>(); + + public BEval(){ + super("beval","scl.command.eval"); + } + + @Override + public void execute(CommandSender sender, String[] args) { + if(!map.containsKey(sender)){ + ScriptEngine se = new NashornScriptEngineFactory().getScriptEngine(); + se.put("plugin", plugin); + se.put("proxy", proxy); + se.put("ChatColor","net.md_5.bungee.api.ChatColor"); + se.put("player",(ProxiedPlayer)sender); + map.put(sender,se); + } + ScriptEngine se = map.get(sender); + try + { + sender.sendMessage(new TextComponent(ChatColor.GREEN+"成功しました:\n"+ChatColor.RESET+se.eval(String.join(" ",args)))); + } + catch(Exception e) { + sender.sendMessage(new TextComponent(ChatColor.RED+ "例外がスローされました:\n" +ChatColor.RESET+ e)); + } + } +} diff --git a/src/main/java/jp/simplespace/simplecommandlog/bungee/BSimpleCommandLog.java b/src/main/java/jp/simplespace/simplecommandlog/bungee/BSimpleCommandLog.java new file mode 100644 index 0000000..dc61222 --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bungee/BSimpleCommandLog.java @@ -0,0 +1,70 @@ +package jp.simplespace.simplecommandlog.bungee; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.api.plugin.PluginManager; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.util.logging.Logger; + +public class BSimpleCommandLog extends Plugin { + public static String prefix = ChatColor.AQUA+"[BSCL] "+ChatColor.RESET; + public static String noPermission = prefix+ChatColor.RED + "あなたに実行する権限はありません。"; + public static Configuration config; + public static Plugin plugin; + public static ProxyServer proxy; + public static Logger logger; + @Override + public void onEnable() { + plugin = this; + proxy= getProxy(); + PluginManager pm = proxy.getPluginManager(); + logger=proxy.getLogger(); + //コマンドの登録 + pm.registerCommand(this,new BCmdLog()); + pm.registerCommand(this,new BEval()); + pm.registerCommand(this,new PluginListCommand()); + pm.registerCommand(this,new BTypeLog()); + //イベントリスナーの登録 + pm.registerListener(this,new BCmdLog()); + pm.registerListener(this,new BTypeLog()); + //configの生成 + saveDefaultConfig(); + try { + config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(new File(getDataFolder(),"config.yml")); + } catch (IOException e) { + e.printStackTrace(); + } + logger.info(ChatColor.GREEN+"プラグインが有効化されました!"); + } + + @Override + public void onDisable() { + logger.info("プラグインが無効化されました。"); + } + public static Plugin getPlugin(){ + return plugin; + } + public void saveDefaultConfig(){ + if (!getDataFolder().exists()) + getDataFolder().mkdir(); + + File file = new File(getDataFolder(), "config.yml"); + + + if (!file.exists()) { + try (InputStream in = getResourceAsStream("config.yml")) { + Files.copy(in, file.toPath()); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/main/java/jp/simplespace/simplecommandlog/bungee/BTypeLog.java b/src/main/java/jp/simplespace/simplecommandlog/bungee/BTypeLog.java new file mode 100644 index 0000000..e563f92 --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bungee/BTypeLog.java @@ -0,0 +1,67 @@ +package jp.simplespace.simplecommandlog.bungee; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.event.TabCompleteEvent; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; +import net.md_5.bungee.event.EventHandler; + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.UUID; + +import static jp.simplespace.simplecommandlog.bungee.BSimpleCommandLog.*; +import static jp.simplespace.simplecommandlog.bungee.BSimpleCommandLog.noPermission; + +public class BTypeLog extends Command implements Listener { + public BTypeLog(){ + super("bstl","scl.command.stl","btl","btypelog"); + } + @Override + public void execute(CommandSender sender, String[] args) { + if(!(sender instanceof ProxiedPlayer)){ + sender.sendMessage(new TextComponent(prefix + ChatColor.RED + "このコマンドはプレイヤーのみ実行できます。")); + return; + } + else { + ProxiedPlayer p = (ProxiedPlayer) sender; + if(p.hasPermission("scl.command.stl")){ + List list = config.getStringList("typelog.players"); + if (list.contains(p.getUniqueId().toString())){ + list.remove(p.getUniqueId().toString()); + p.sendMessage(new TextComponent(prefix + ChatColor.GRAY + "入力ログ表示を無効にしました。")); + } + else { + list.add(p.getUniqueId().toString()); + p.sendMessage(new TextComponent(prefix + ChatColor.GRAY + "入力ログ表示を有効にしました。")); + } + config.set("typelog.players",list); + try { + ConfigurationProvider.getProvider(YamlConfiguration.class).save(config,new File(plugin.getDataFolder(),"config.yml")); + } catch (IOException e) { + e.printStackTrace(); + } + } + else p.sendMessage(new TextComponent(noPermission)); + } + } + @EventHandler + public void onType(TabCompleteEvent event){ + if(!(event.getSender() instanceof ProxiedPlayer)){ + return; + } + ProxiedPlayer sender = (ProxiedPlayer) event.getSender(); + + List list = config.getStringList("typelog.players"); + for(String puuid : list){ + ProxiedPlayer p = proxy.getPlayer(UUID.fromString(puuid)); + if(p!=null) p.sendMessage(new TextComponent(ChatColor.GRAY + "[TL] "+sender.getServer().getInfo().getName()+"@" + sender.getName() + " " + event.getCursor())); + } + } +} diff --git a/src/main/java/jp/simplespace/simplecommandlog/bungee/PluginListCommand.java b/src/main/java/jp/simplespace/simplecommandlog/bungee/PluginListCommand.java new file mode 100644 index 0000000..174d573 --- /dev/null +++ b/src/main/java/jp/simplespace/simplecommandlog/bungee/PluginListCommand.java @@ -0,0 +1,31 @@ +package jp.simplespace.simplecommandlog.bungee; + +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.Plugin; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +public class PluginListCommand extends Command { + public PluginListCommand(){ + super("bungeeplugins","scl.command.plugins","bpl"); + } + @Override + public void execute(CommandSender sender, String[] args) { + StringBuilder sb = new StringBuilder(); + List list = new ArrayList<>(BSimpleCommandLog.proxy.getPluginManager().getPlugins()); + sb.append("Plugins (").append(list.size()).append("): "); + for (int i = 0; i < list.size(); i++) { + sb.append(ChatColor.GREEN+list.get(i).getDescription().getName()+ChatColor.RESET); + if(i!=list.size()-1){ + sb.append(", "); + } + } + sb.append("\n"+ChatColor.AQUA+"Provided by SimpleCommandLog"); + sender.sendMessage(new TextComponent(sb.toString())); + } +} diff --git a/src/main/resources/bungee.yml b/src/main/resources/bungee.yml new file mode 100644 index 0000000..030f337 --- /dev/null +++ b/src/main/resources/bungee.yml @@ -0,0 +1,5 @@ +name: SimpleCommandLog +version: '${project.version}' +main: jp.simplespace.simplecommandlog.bungee.BSimpleCommandLog +author: Matchan +description: シンプルなコマンドログ \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..1beb6cd --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,4 @@ +cmdlog: + players: +typelog: + players: \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..bcdda14 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,38 @@ +name: SimpleCommandLog +version: '${project.version}' +main: jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog +authors: [ Matchan ] +description: シンプルなコマンドログ +website: https://simplespace.jp + +commands: + scl: + description: コマンドログを有効化 + usage: / + aliases: [cmdlog,cl] + eval: + description: evalコマンド + usage: / + permission: scl.command.eval + stl: + description: 入力ログを有効化 + usage: / + aliases: [typelog,tl] + +permissions: + scl.*: + description: 全ての権限 + default: op + children: + scl.command.scl: true + scl.command.eval: true + scl.command.stl: true + scl.command.scl: + description: sclコマンドの権限 + default: op + scl.command.eval: + description: evalコマンドの権限 + default: op + scl.command.stl: + description: stlコマンドの権限 + default: op