Skip to content

Commit 584e4cb

Browse files
committed
Initial commit
0 parents  commit 584e4cb

17 files changed

Lines changed: 696 additions & 0 deletions

.gitignore

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
# User-specific stuff
2+
.idea/
3+
4+
*.iml
5+
*.ipr
6+
*.iws
7+
8+
# IntelliJ
9+
out/
10+
# mpeltonen/sbt-idea plugin
11+
.idea_modules/
12+
13+
# JIRA plugin
14+
atlassian-ide-plugin.xml
15+
16+
# Compiled class file
17+
*.class
18+
19+
# Log file
20+
*.log
21+
22+
# BlueJ files
23+
*.ctxt
24+
25+
# Package Files #
26+
*.jar
27+
*.war
28+
*.nar
29+
*.ear
30+
*.zip
31+
*.tar.gz
32+
*.rar
33+
34+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
35+
hs_err_pid*
36+
37+
*~
38+
39+
# temporary files which can be created if a process still has a handle open of a deleted file
40+
.fuse_hidden*
41+
42+
# KDE directory preferences
43+
.directory
44+
45+
# Linux trash folder which might appear on any partition or disk
46+
.Trash-*
47+
48+
# .nfs files are created when an open file is removed but is still being accessed
49+
.nfs*
50+
51+
# General
52+
.DS_Store
53+
.AppleDouble
54+
.LSOverride
55+
56+
# Icon must end with two \r
57+
Icon
58+
59+
# Thumbnails
60+
._*
61+
62+
# Files that might appear in the root of a volume
63+
.DocumentRevisions-V100
64+
.fseventsd
65+
.Spotlight-V100
66+
.TemporaryItems
67+
.Trashes
68+
.VolumeIcon.icns
69+
.com.apple.timemachine.donotpresent
70+
71+
# Directories potentially created on remote AFP share
72+
.AppleDB
73+
.AppleDesktop
74+
Network Trash Folder
75+
Temporary Items
76+
.apdisk
77+
78+
# Windows thumbnail cache files
79+
Thumbs.db
80+
Thumbs.db:encryptable
81+
ehthumbs.db
82+
ehthumbs_vista.db
83+
84+
# Dump file
85+
*.stackdump
86+
87+
# Folder config file
88+
[Dd]esktop.ini
89+
90+
# Recycle Bin used on file shares
91+
$RECYCLE.BIN/
92+
93+
# Windows Installer files
94+
*.cab
95+
*.msi
96+
*.msix
97+
*.msm
98+
*.msp
99+
100+
# Windows shortcuts
101+
*.lnk
102+
103+
.gradle
104+
build/
105+
106+
# Ignore Gradle GUI config
107+
gradle-app.setting
108+
109+
# Cache of project
110+
.gradletasknamecache
111+
112+
**/build/
113+
114+
# Common working directory
115+
run/
116+
117+
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
118+
!gradle-wrapper.jar

build.gradle

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import org.apache.tools.ant.filters.ReplaceTokens
2+
3+
plugins {
4+
id 'java'
5+
id 'com.github.johnrengelman.shadow' version '6.1.0'
6+
}
7+
8+
group = 'jp.simplespace'
9+
version = '1.3'
10+
11+
12+
repositories {
13+
mavenCentral()
14+
maven {
15+
name = 'spigotmc-repo'
16+
url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
17+
}
18+
maven {
19+
name = 'sonatype'
20+
url = 'https://oss.sonatype.org/content/groups/public/'
21+
}
22+
maven {
23+
name 'velocity'
24+
url 'https://nexus.velocitypowered.com/repository/maven-public/'
25+
}
26+
maven {
27+
url 'https://papermc.io/repo/repository/maven-public/'
28+
}
29+
}
30+
31+
dependencies {
32+
compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT'
33+
implementation 'org.openjdk.nashorn:nashorn-core:15.3'
34+
compileOnly 'io.github.waterfallmc:waterfall-api:1.18-R0.1-SNAPSHOT'
35+
}
36+
37+
processResources {
38+
from(sourceSets.main.resources.srcDirs) {
39+
filter ReplaceTokens, tokens: [version: version]
40+
duplicatesStrategy = 'include'
41+
}
42+
}
43+
44+
compileJava.options.encoding = 'UTF-8'
45+
compileTestJava.options.encoding = 'UTF-8'
46+
47+
tasks.withType(JavaCompile) {
48+
options.encoding = 'UTF-8'
49+
}

gradle.properties

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
rootProject.name = 'SimpleCommandLog'
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package jp.simplespace.simplecommandlog.bukkit;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.ChatColor;
5+
import org.bukkit.command.Command;
6+
import org.bukkit.command.CommandExecutor;
7+
import org.bukkit.command.CommandSender;
8+
import org.bukkit.entity.Player;
9+
import org.bukkit.event.EventHandler;
10+
import org.bukkit.event.Listener;
11+
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
12+
13+
import java.util.List;
14+
import java.util.UUID;
15+
16+
import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.prefix;
17+
import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.plugin;
18+
import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.config;
19+
import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.noPermission;
20+
21+
public class CmdLog implements CommandExecutor,Listener {
22+
@Override
23+
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
24+
if(!(sender instanceof Player)){
25+
sender.sendMessage(prefix + ChatColor.RED + "このコマンドはプレイヤーのみ実行できます。");
26+
return true;
27+
}
28+
else {
29+
Player p = (Player) sender;
30+
if(p.hasPermission("scl.command.scl")){
31+
List<String> list = config.getStringList("cmdlog.players");
32+
if (list.contains(p.getUniqueId().toString())){
33+
list.remove(p.getUniqueId().toString());
34+
p.sendMessage(prefix + ChatColor.GRAY + "コマンドログ表示を無効にしました。");
35+
}
36+
else {
37+
list.add(p.getUniqueId().toString());
38+
p.sendMessage(prefix + ChatColor.GRAY + "コマンドログ表示を有効にしました。");
39+
}
40+
config.set("cmdlog.players",list);
41+
plugin.saveConfig();
42+
}
43+
else p.sendMessage(noPermission);
44+
}
45+
return true;
46+
}
47+
//コマンドログをログ表示を有効にしているプレイヤーに送信。
48+
@EventHandler
49+
public void onProcessCommand(PlayerCommandPreprocessEvent e){
50+
List<String> list = config.getStringList("cmdlog.players");
51+
Player sender = e.getPlayer();
52+
for(String puuid : list){
53+
Player p = Bukkit.getPlayer(UUID.fromString(puuid));
54+
if(p!=null) p.sendMessage(ChatColor.GRAY + "[CL] @" + sender.getName() + " " + e.getMessage());
55+
}
56+
}
57+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package jp.simplespace.simplecommandlog.bukkit;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.ChatColor;
5+
import org.bukkit.command.Command;
6+
import org.bukkit.command.CommandExecutor;
7+
import org.bukkit.command.CommandSender;
8+
import org.bukkit.entity.Player;
9+
import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory;
10+
11+
import javax.script.ScriptEngine;
12+
import java.util.HashMap;
13+
import java.util.Map;
14+
15+
16+
import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.plugin;
17+
18+
public class Eval implements CommandExecutor {
19+
private static final Map<CommandSender,ScriptEngine> map = new HashMap<>();
20+
@Override
21+
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
22+
23+
if(!map.containsKey(sender)){
24+
ScriptEngine se = new NashornScriptEngineFactory().getScriptEngine();
25+
se.put("plugin", plugin);
26+
se.put("server", Bukkit.getServer());
27+
se.put("GameMode","org.bukkit.GameMode");
28+
se.put("EntityType","org.bukkit.entity.EntityType");
29+
se.put("ChatColor","org.bukkit.ChatColor");
30+
se.put("player",(Player)sender);
31+
map.put(sender,se);
32+
}
33+
ScriptEngine se = map.get(sender);
34+
try
35+
{
36+
sender.sendMessage(ChatColor.GREEN+"成功しました:\n"+ChatColor.RESET+se.eval(String.join(" ",args)));
37+
}
38+
catch(Exception e) {
39+
sender.sendMessage(ChatColor.RED+ "例外がスローされました:\n" +ChatColor.RESET+ e);
40+
41+
}
42+
return true;
43+
}
44+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package jp.simplespace.simplecommandlog.bukkit;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.ChatColor;
5+
import org.bukkit.configuration.file.FileConfiguration;
6+
import org.bukkit.plugin.Plugin;
7+
import org.bukkit.plugin.java.JavaPlugin;
8+
import org.slf4j.Logger;
9+
10+
import javax.script.ScriptEngineManager;
11+
12+
public final class SimpleCommandLog extends JavaPlugin {
13+
public static String prefix = ChatColor.AQUA+"[SCL] "+ChatColor.RESET;
14+
public static String noPermission = prefix+ChatColor.RED + "あなたに実行する権限はありません。";
15+
public static FileConfiguration config;
16+
public static Plugin plugin;
17+
18+
@Override
19+
public void onEnable() {
20+
// Plugin startup logic
21+
plugin = this;
22+
//コマンドの登録
23+
getCommand("scl").setExecutor(new CmdLog());
24+
getCommand("eval").setExecutor(new Eval());
25+
getCommand("stl").setExecutor(new TypeLog());
26+
//イベントリスナーの登録
27+
getServer().getPluginManager().registerEvents(new CmdLog(),this);
28+
getServer().getPluginManager().registerEvents(new TypeLog(),this);
29+
30+
//configの生成
31+
saveDefaultConfig();
32+
reloadConfig();
33+
config = plugin.getConfig();
34+
}
35+
36+
@Override
37+
public void onDisable() {
38+
// Plugin shutdown logic
39+
}
40+
public static Plugin getPlugin(){
41+
return plugin;
42+
}
43+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package jp.simplespace.simplecommandlog.bukkit;
2+
3+
import org.bukkit.Bukkit;
4+
import org.bukkit.ChatColor;
5+
import org.bukkit.command.Command;
6+
import org.bukkit.command.CommandExecutor;
7+
import org.bukkit.command.CommandSender;
8+
import org.bukkit.entity.Player;
9+
import org.bukkit.event.EventHandler;
10+
import org.bukkit.event.Listener;
11+
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
12+
import org.bukkit.event.server.TabCompleteEvent;
13+
14+
import java.util.List;
15+
import java.util.UUID;
16+
17+
import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.*;
18+
import static jp.simplespace.simplecommandlog.bukkit.SimpleCommandLog.noPermission;
19+
20+
public class TypeLog implements CommandExecutor, Listener {
21+
@Override
22+
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
23+
if(!(sender instanceof Player)){
24+
sender.sendMessage(prefix + ChatColor.RED + "このコマンドはプレイヤーのみ実行できます。");
25+
return true;
26+
}
27+
else {
28+
Player p = (Player) sender;
29+
if(p.hasPermission("scl.command.stl")){
30+
List<String> list = config.getStringList("typelog.players");
31+
if (list.contains(p.getUniqueId().toString())){
32+
list.remove(p.getUniqueId().toString());
33+
p.sendMessage(prefix + ChatColor.GRAY + "入力ログ表示を無効にしました。");
34+
}
35+
else {
36+
list.add(p.getUniqueId().toString());
37+
p.sendMessage(prefix + ChatColor.GRAY + "入力ログ表示を有効にしました。");
38+
}
39+
config.set("typelog.players",list);
40+
plugin.saveConfig();
41+
}
42+
else p.sendMessage(noPermission);
43+
}
44+
return true;
45+
}
46+
//入力ログをログ表示を有効にしているプレイヤーに送信。
47+
@EventHandler
48+
public void onType(TabCompleteEvent e){
49+
List<String> list = config.getStringList("typelog.players");
50+
CommandSender sender = e.getSender();
51+
for(String puuid : list){
52+
Player p = Bukkit.getPlayer(UUID.fromString(puuid));
53+
if(p!=null) p.sendMessage(ChatColor.GRAY + "[TL] @" + sender.getName() + " " + e.getBuffer());
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)