Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Matchan0727 committed Mar 29, 2022
0 parents commit 584e4cb
Show file tree
Hide file tree
Showing 17 changed files with 696 additions and 0 deletions.
118 changes: 118 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -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
49 changes: 49 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -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'
}
Empty file added gradle.properties
Empty file.
1 change: 1 addition & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rootProject.name = 'SimpleCommandLog'
57 changes: 57 additions & 0 deletions src/main/java/jp/simplespace/simplecommandlog/bukkit/CmdLog.java
Original file line number Diff line number Diff line change
@@ -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<String> 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<String> 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());
}
}
}
44 changes: 44 additions & 0 deletions src/main/java/jp/simplespace/simplecommandlog/bukkit/Eval.java
Original file line number Diff line number Diff line change
@@ -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<CommandSender,ScriptEngine> 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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
56 changes: 56 additions & 0 deletions src/main/java/jp/simplespace/simplecommandlog/bukkit/TypeLog.java
Original file line number Diff line number Diff line change
@@ -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<String> 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<String> 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());
}
}
}
Loading

0 comments on commit 584e4cb

Please sign in to comment.