From 015a39fb83f413f182cdd407877d6cbc73b28dab Mon Sep 17 00:00:00 2001 From: 502647092 Date: Thu, 25 Aug 2016 03:55:15 +0800 Subject: [PATCH] =?UTF-8?q?init:=20=E9=A2=84=E5=8F=91=E8=A1=8C1.0=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 502647092 --- .classpath | 31 ++++ .gitignore | 38 ++++ .project | 23 +++ lib/PlaceholderAPI.jar | Bin 0 -> 98813 bytes pom.xml | 113 ++++++++++++ .../java/pw/yumc/MiaoScript/MiaoScript.java | 127 +++++++++++++ .../yumc/MiaoScript/commands/MSCommands.java | 48 +++++ .../pw/yumc/MiaoScript/data/DataManager.java | 31 ++++ .../pw/yumc/MiaoScript/event/EventInfo.java | 76 ++++++++ .../yumc/MiaoScript/event/EventManager.java | 168 ++++++++++++++++++ .../middleware/EventMiddleware.java | 117 ++++++++++++ .../pw/yumc/MiaoScript/script/ScriptInfo.java | 88 +++++++++ .../yumc/MiaoScript/script/ScriptManager.java | 38 ++++ .../MiaoScript/script/ScriptPlaceholder.java | 91 ++++++++++ src/main/resources/config.yml | 0 src/main/resources/data.yml | 3 + src/main/resources/event.yml | 32 ++++ src/main/resources/js/bed.js | 20 +++ src/main/resources/js/checkchat.js | 8 + src/main/resources/js/welcome.js | 5 + src/main/resources/plugin.yml | 23 +++ src/main/resources/script.yml | 86 +++++++++ 22 files changed, 1166 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 lib/PlaceholderAPI.jar create mode 100644 pom.xml create mode 100644 src/main/java/pw/yumc/MiaoScript/MiaoScript.java create mode 100644 src/main/java/pw/yumc/MiaoScript/commands/MSCommands.java create mode 100644 src/main/java/pw/yumc/MiaoScript/data/DataManager.java create mode 100644 src/main/java/pw/yumc/MiaoScript/event/EventInfo.java create mode 100644 src/main/java/pw/yumc/MiaoScript/event/EventManager.java create mode 100644 src/main/java/pw/yumc/MiaoScript/middleware/EventMiddleware.java create mode 100644 src/main/java/pw/yumc/MiaoScript/script/ScriptInfo.java create mode 100644 src/main/java/pw/yumc/MiaoScript/script/ScriptManager.java create mode 100644 src/main/java/pw/yumc/MiaoScript/script/ScriptPlaceholder.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/data.yml create mode 100644 src/main/resources/event.yml create mode 100644 src/main/resources/js/bed.js create mode 100644 src/main/resources/js/checkchat.js create mode 100644 src/main/resources/js/welcome.js create mode 100644 src/main/resources/plugin.yml create mode 100644 src/main/resources/script.yml diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..1921f5d --- /dev/null +++ b/.classpath @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..043fc2a --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +# Eclipse stuff +/.settings + +# netbeans +/nbproject + +# we use maven! +/build.xml + +# maven +/target +/repo + +# vim +.*.sw[a-p] + +# various other potential build files +/build +/bin +/dist +/manifest.mf + +/world + +# Mac filesystem dust +*.DS_Store + +# intellij +*.iml +*.ipr +*.iws +.idea/ + +# Project Stuff +/src/main/resources/Soulbound + +# Atlassian Stuff +/atlassian-ide-plugin.xml \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..7ebb49d --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + MiaoScript + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/lib/PlaceholderAPI.jar b/lib/PlaceholderAPI.jar new file mode 100644 index 0000000000000000000000000000000000000000..87bd3abd71fcbb10dce4990549bc09bcf3f4327b GIT binary patch literal 98813 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

(M>3;OkVB=NQfWxJ>y~JerJ%NNe1l~= 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 + 4.0.0 + pw.yumc + MiaoScript + 1.0 + + ${project.name} + + + src/main/resources + true + + + + + maven-compiler-plugin + 3.3 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + false + true + + + pw.yumc:YumCore + cn.citycraft:PluginHelper + + + + + pw.yumc.YumCore + ${project.groupId}.${project.artifactId} + + + cn.citycraft.PluginHelper + ${project.groupId}.${project.artifactId} + + + + + + package + + shade + + + + + + + + Jenkins + http://ci.yumc.pw/job/${project.artifactId}/ + + + + + DEBUG + UTF-8 + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + yumc-repo + http://repo.yumc.pw/content/groups/public/ + + + + + jtb + YUMC + http://repo.yumc.pw/content/repositories/yumcenter/ + + + + + org.spigotmc + spigot-api + jar + 1.10.2-R0.1-SNAPSHOT + + + cn.citycraft + PluginHelper + jar + 1.0 + + + pw.yumc + YumCore + jar + 1.0 + + + pw.yumc + PlaceholderAPI + 1.0 + system + ${project.basedir}/lib/PlaceholderAPI.jar + + + \ No newline at end of file diff --git a/src/main/java/pw/yumc/MiaoScript/MiaoScript.java b/src/main/java/pw/yumc/MiaoScript/MiaoScript.java new file mode 100644 index 0000000..38a10f1 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/MiaoScript.java @@ -0,0 +1,127 @@ +package pw.yumc.MiaoScript; + +import java.io.File; + +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.event.HandlerList; +import org.bukkit.plugin.java.JavaPlugin; + +import me.clip.placeholderapi.PlaceholderAPI; +import pw.yumc.MiaoScript.commands.MSCommands; +import pw.yumc.MiaoScript.data.DataManager; +import pw.yumc.MiaoScript.event.EventManager; +import pw.yumc.MiaoScript.middleware.EventMiddleware; +import pw.yumc.MiaoScript.script.ScriptManager; +import pw.yumc.MiaoScript.script.ScriptPlaceholder; +import pw.yumc.YumCore.config.FileConfig; + +public class MiaoScript extends JavaPlugin { + private FileConfig config; + private DataManager dataManager; + private EventManager eventManager; + private EventMiddleware eventMiddleware; + private ScriptManager scriptManager; + + @Override + public FileConfiguration getConfig() { + return config; + } + + /** + * @return 数据管理 + */ + public DataManager getDataManager() { + return dataManager; + } + + /** + * @return 事件管理 + */ + public EventManager getEventManager() { + return eventManager; + } + + /** + * @return 事件中间件 + */ + public EventMiddleware getEventMiddleware() { + return eventMiddleware; + } + + /** + * @return 脚本管理 + */ + public ScriptManager getScriptManager() { + return scriptManager; + } + + /** + * 载入数据与配置 + */ + public void loadConfig() { + dataManager = new DataManager(new FileConfig("data.yml")); + eventManager = new EventManager(new FileConfig("event.yml")); + scriptManager = new ScriptManager(new FileConfig("script.yml")); + } + + /** + * 注册事件 + */ + public void loadEvents() { + eventManager.registerAll(); + } + + @Override + public void onEnable() { + new MSCommands(); + loadConfig(); + loadEvents(); + register(); + } + + @Override + public void onLoad() { + saveDefault(); + config = new FileConfig(); + eventMiddleware = new EventMiddleware(); + } + + /** + * 注册变量 + */ + public void register() { + PlaceholderAPI.registerPlaceholderHook("miaoscript", new ScriptPlaceholder()); + PlaceholderAPI.registerPlaceholderHook("ms", new ScriptPlaceholder()); + } + + /** + * 重新载入 + */ + public void reload() { + HandlerList.unregisterAll(this); + onLoad(); + loadConfig(); + loadEvents(); + } + + /** + * 保存默认文件 + */ + private void saveDefault() { + saveJs("bed.js"); + saveJs("welcome.js"); + saveJs("checkchat.js"); + } + + /** + * 保存案例 + * + * @param name + * JS文件名称 + */ + private void saveJs(final String name) { + if (!new File(getDataFolder(), "js" + File.separatorChar + name).exists()) { + saveResource("js" + File.separatorChar + name, false); + } + } +} diff --git a/src/main/java/pw/yumc/MiaoScript/commands/MSCommands.java b/src/main/java/pw/yumc/MiaoScript/commands/MSCommands.java new file mode 100644 index 0000000..09c4c08 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/commands/MSCommands.java @@ -0,0 +1,48 @@ +package pw.yumc.MiaoScript.commands; + +import org.bukkit.command.CommandSender; + +import pw.yumc.MiaoScript.MiaoScript; +import pw.yumc.MiaoScript.event.EventInfo; +import pw.yumc.MiaoScript.event.EventManager; +import pw.yumc.YumCore.bukkit.P; +import pw.yumc.YumCore.commands.CommandArgument; +import pw.yumc.YumCore.commands.CommandExecutor; +import pw.yumc.YumCore.commands.CommandManager; +import pw.yumc.YumCore.commands.annotation.Cmd; +import pw.yumc.YumCore.commands.annotation.Help; + +public class MSCommands implements CommandExecutor { + MiaoScript plugin = P.getPlugin(); + + public MSCommands() { + new CommandManager("ms", this); + } + + @Cmd(permission = "MiaoScript.debug") + @Help("切换调试模式") + public void debug(final CommandArgument e) { + EventManager.debug = !EventManager.debug; + e.getSender().sendMessage("§6调试模式: " + (EventManager.debug ? "§a开启" : "§c关闭")); + } + + @Cmd(permission = "MiaoScript.listen") + @Help("查看监听列表") + public void listen(final CommandArgument e) { + final CommandSender sender = e.getSender(); + for (final EventInfo ei : plugin.getEventManager().getEvents().values()) { + sender.sendMessage(String.format("§6名称: §a%s §6事件: §a%s §6优先级: §a%s", ei.getName(), ei.getClazz().substring(ei.getClazz().lastIndexOf(".") + 1), ei.getPriority())); + sender.sendMessage("§6脚本列表: "); + for (final String script : ei.getScripts()) { + sender.sendMessage(String.format("§6- §e%s", script)); + } + } + } + + @Cmd(permission = "MiaoScript.reload") + @Help("重载配置文件") + public void reload(final CommandArgument e) { + plugin.reload(); + e.getSender().sendMessage("§a配置文件已重新载入!"); + } +} diff --git a/src/main/java/pw/yumc/MiaoScript/data/DataManager.java b/src/main/java/pw/yumc/MiaoScript/data/DataManager.java new file mode 100644 index 0000000..20aece5 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/data/DataManager.java @@ -0,0 +1,31 @@ +package pw.yumc.MiaoScript.data; + +import pw.yumc.YumCore.config.FileConfig; + +/** + * 数据管理 + * + * @author 喵♂呜 + * @since 2016年8月25日 上午2:02:03 + */ +public class DataManager { + FileConfig data; + + public DataManager(final FileConfig config) { + this.data = config; + } + + /** + * @return 数据配置 + */ + public FileConfig getData() { + return data; + } + + /** + * 保存数据 + */ + public void save() { + data.save(); + } +} diff --git a/src/main/java/pw/yumc/MiaoScript/event/EventInfo.java b/src/main/java/pw/yumc/MiaoScript/event/EventInfo.java new file mode 100644 index 0000000..625d0a9 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/event/EventInfo.java @@ -0,0 +1,76 @@ +package pw.yumc.MiaoScript.event; + +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +import org.bukkit.configuration.ConfigurationSection; + +import pw.yumc.YumCore.config.ConfigNode; +import pw.yumc.YumCore.config.InjectConfigurationSection; + +/** + * 事件信息 + * + * @author 喵♂呜 + * @since 2016年8月24日 下午1:06:34 + */ +public class EventInfo extends InjectConfigurationSection { + private transient String name; + @ConfigNode(path = "class") + private String clazz; + private String priority; + private List scripts; + + public EventInfo(final String name, final ConfigurationSection config) { + super(config); + this.name = name; + clearEmpty(); + } + + /** + * 清理空字串脚本 + * + * @param scripts + * 脚本 + * @return 整理后的脚本 + */ + public void clearEmpty() { + final Set cq = new HashSet<>(); + for (final String s : scripts) { + if (!s.trim().isEmpty()) { + cq.add(s); + } + } + scripts = new LinkedList<>(cq); + } + + /** + * @return 获得类名称 + */ + public String getClazz() { + return clazz; + } + + /** + * @return 事件显示名称 + */ + public String getName() { + return name; + } + + /** + * @return 监听等级 + */ + public String getPriority() { + return priority == null || "".equalsIgnoreCase(priority) ? "NORMAL" : priority; + } + + /** + * @return 获得执行的脚本 + */ + public List getScripts() { + return scripts; + } +} diff --git a/src/main/java/pw/yumc/MiaoScript/event/EventManager.java b/src/main/java/pw/yumc/MiaoScript/event/EventManager.java new file mode 100644 index 0000000..a11b936 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/event/EventManager.java @@ -0,0 +1,168 @@ +package pw.yumc.MiaoScript.event; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.bukkit.Bukkit; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.event.Event; +import org.bukkit.event.EventException; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerEvent; +import org.bukkit.plugin.EventExecutor; + +import me.clip.placeholderapi.PlaceholderAPI; +import pw.yumc.MiaoScript.MiaoScript; +import pw.yumc.YumCore.bukkit.Log; +import pw.yumc.YumCore.bukkit.P; + +/** + * 脚本管理 + * + * @author 喵♂呜 + * @since 2016年8月24日 下午12:51:48 + */ +public class EventManager implements Listener { + public static boolean debug = false; + private static String identifier = "%s_%s"; + private final MiaoScript plugin = P.getPlugin(); + /** + * 未处理的数据 + */ + private final List eventInfos = new ArrayList<>(); + /** + * 处理后的数据 + */ + private final Map events = new HashMap<>(); + + public EventManager(final ConfigurationSection config) { + for (final String event : config.getKeys(false)) { + final ConfigurationSection e = config.getConfigurationSection(event); + if (e == null) { + continue; + } + eventInfos.add(new EventInfo(event, e)); + } + } + + public void debug(final String msg) { + if (debug) { + Log.info(msg); + } + } + + /** + * 获得事件信息 + * + * @param event + * 事件 + * @param priority + * 事件等级 + * @return 事件处理信息 + */ + public EventInfo getEvent(final Event event, final EventPriority priority) { + return getEvent(getIdentifier(event.getClass(), priority)); + } + + /** + * 获得事件信息 + * + * @param name + * 事件占位符 + * @return 事件处理信息 + */ + public EventInfo getEvent(final String name) { + return events.get(name); + } + + /** + * @return 获得注册的事件 + */ + public Map getEvents() { + return events; + } + + /** + * 获得占位符 + * + * @param event + * 事件 + * @param priority + * 优先级 + * @return 占位符 + */ + public String getIdentifier(final Class event, final EventPriority priority) { + return String.format(identifier, event.getSimpleName(), priority.name()); + } + + /** + * 调试 + * + * @param ei + * 事件信息 + */ + public void printInfo(final EventInfo ei) { + debug(String.format("名称: %s 事件: %s 优先级: %s", ei.getName(), ei.getClazz().substring(ei.getClazz().lastIndexOf(".") + 1), ei.getPriority())); + debug("脚本列表: "); + } + + /** + * 注册事件 + * + * @param eventInfo + * 事件信息 + */ + @SuppressWarnings("unchecked") + public boolean register(final EventInfo eventInfo) { + try { + final Class clazz = (Class) Class.forName(eventInfo.getClazz()); + final EventPriority priority = EventPriority.valueOf(eventInfo.getPriority()); + events.put(getIdentifier(clazz, priority), eventInfo); + Bukkit.getPluginManager().registerEvent(clazz, this, priority, new EventExecutor() { + @Override + public void execute(final Listener listener, final Event event) throws EventException { + final EventInfo ei = plugin.getEventManager().getEvent(event, priority); + if (ei == null) { + Log.debug(String.format("事件 %s_%s 未找到对应处理脚本!", event.getEventName(), priority.name())); + return; + } + debug("========== MiaoScript Debug =========="); + printInfo(ei); + if (event instanceof PlayerEvent) { + final PlayerEvent pe = (PlayerEvent) event; + for (final String script : ei.getScripts()) { + final String result = PlaceholderAPI.setPlaceholders(plugin.getEventMiddleware().generate(pe), script); + debug(String.format("- %s 返回值: %s", script, result)); + } + + } else { + Log.debug(String.format("事件 %s 未继承 PlayerEvent 可能无法正常调用!", event.getEventName())); + } + debug("========== MiaoScript Debug =========="); + } + }, plugin); + return true; + } catch (final ClassNotFoundException e) { + Log.warning(String.format("事件 %s 的监听类 %s 未找到!", eventInfo.getName(), eventInfo.getClazz())); + } catch (final Exception e) { + Log.warning(String.format("事件 %s 的注册失败 %s: %s!", eventInfo.getName(), e.getClass().getName(), e.getMessage())); + } + return false; + } + + /** + * 注册所有事件 + */ + public void registerAll() { + int count = 0; + for (final EventInfo ei : eventInfos) { + if (!ei.getScripts().isEmpty() && register(ei)) { + count++; + } + } + Log.info(String.format("已注册 %s 个事件...", count)); + } +} diff --git a/src/main/java/pw/yumc/MiaoScript/middleware/EventMiddleware.java b/src/main/java/pw/yumc/MiaoScript/middleware/EventMiddleware.java new file mode 100644 index 0000000..d3545b2 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/middleware/EventMiddleware.java @@ -0,0 +1,117 @@ +package pw.yumc.MiaoScript.middleware; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.player.PlayerEvent; +import org.bukkit.metadata.MetadataValue; +import org.bukkit.plugin.Plugin; + +import pw.yumc.YumCore.bukkit.P; + +/** + * 事件处理中间件 + * + * @author 喵♂呜 + * @since 2016年8月25日 上午12:45:39 + */ +public class EventMiddleware { + public static String key = "EventMiddleware"; + + /** + * 生成代理玩家 + * + * @param event + * 事件 + * @return 处理后的Player + */ + public Player generate(final PlayerEvent event) { + final Player player = event.getPlayer(); + player.setMetadata(key, new EventMetaData(event)); + return player; + } + + /** + * 获得玩家数据 + * + * @param player + * 代理玩家 + * @return 事件数据 + */ + public Event get(final Player player) { + for (final MetadataValue mv : player.getMetadata(key)) { + if (mv.getOwningPlugin().getName().equals(P.getName())) { + player.removeMetadata(key, P.instance); + return (Event) mv.value(); + } + } + return null; + } + + /** + * 事件源信息 + * + * @author 喵♂呜 + * @since 2016年8月25日 上午12:47:53 + */ + public class EventMetaData implements MetadataValue { + Event event; + + public EventMetaData(final Event event) { + this.event = event; + } + + @Override + public boolean asBoolean() { + return false; + } + + @Override + public byte asByte() { + return 0; + } + + @Override + public double asDouble() { + return 0; + } + + @Override + public float asFloat() { + return 0; + } + + @Override + public int asInt() { + return 0; + } + + @Override + public long asLong() { + return 0; + } + + @Override + public short asShort() { + return 0; + } + + @Override + public String asString() { + return event.getEventName(); + } + + @Override + public Plugin getOwningPlugin() { + return P.instance; + } + + @Override + public void invalidate() { + } + + @Override + public Object value() { + return event; + } + } +} diff --git a/src/main/java/pw/yumc/MiaoScript/script/ScriptInfo.java b/src/main/java/pw/yumc/MiaoScript/script/ScriptInfo.java new file mode 100644 index 0000000..dbe051f --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/script/ScriptInfo.java @@ -0,0 +1,88 @@ +package pw.yumc.MiaoScript.script; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; + +import org.bukkit.configuration.ConfigurationSection; + +import pw.yumc.YumCore.bukkit.Log; +import pw.yumc.YumCore.bukkit.P; +import pw.yumc.YumCore.config.InjectConfigurationSection; +import pw.yumc.YumCore.config.Nullable; + +/** + * 脚本信息 + * + * @author 喵♂呜 + * @since 2016年8月24日 下午12:52:09 + */ +public class ScriptInfo extends InjectConfigurationSection { + public transient static final File dir = new File(P.getDataFolder(), "js"); + public transient static Charset UTF_8 = Charset.forName("UTF-8"); + + static { + if (!dir.exists()) { + dir.mkdirs(); + } + } + + private String expression; + @Nullable + private String type; + @Nullable + private String trueResult; + @Nullable + private String falseResult; + + public ScriptInfo(final ConfigurationSection config) { + super(config); + if ("boolean".equalsIgnoreCase(type) && (trueResult == null || falseResult == null)) { + Log.warning(String.format("脚本 %s 返回缺少返回结果!", config.getCurrentPath())); + } + if (expression.startsWith("file:")) { + final String fileName = expression.substring(5).trim(); + try { + final File file = new File(dir, fileName); + if (!file.exists()) { + file.createNewFile(); + Log.warning(String.format("JS文件 %s 不存在 已创建新文件 请添加脚本信息!", fileName)); + } else { + expression = new String(Files.readAllBytes(file.toPath()), UTF_8); + } + } catch (final IOException e) { + Log.warning(String.format("JS文件 %s 读取失败 异常: %s", fileName, e.getMessage())); + expression = ""; + } + } + } + + /** + * @return 表达式 + */ + public String getExpression() { + return expression; + } + + /** + * @return False返回值 + */ + public String getFalseResult() { + return falseResult; + } + + /** + * @return True返回值 + */ + public String getTrueResult() { + return trueResult; + } + + /** + * @return 类型 + */ + public String getType() { + return type; + } +} diff --git a/src/main/java/pw/yumc/MiaoScript/script/ScriptManager.java b/src/main/java/pw/yumc/MiaoScript/script/ScriptManager.java new file mode 100644 index 0000000..67a5fa1 --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/script/ScriptManager.java @@ -0,0 +1,38 @@ +package pw.yumc.MiaoScript.script; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.bukkit.configuration.ConfigurationSection; + +import cn.citycraft.PluginHelper.kit.Log; + +/** + * 脚本管理 + * + * @author 喵♂呜 + * @since 2016年8月24日 下午12:51:48 + */ +public class ScriptManager { + Map scripts = new HashMap<>(); + + public ScriptManager(final ConfigurationSection config) { + final Set keys = config.getKeys(false); + for (final String key : keys) { + scripts.put(key, new ScriptInfo(config.getConfigurationSection(key))); + } + Log.info(String.format("已加载 %s 个变量...", keys.size())); + } + + /** + * 获取脚本信息 + * + * @param name + * 获得脚本 + * @return 脚本信息 + */ + public ScriptInfo getScript(final String name) { + return scripts.get(name); + } +} diff --git a/src/main/java/pw/yumc/MiaoScript/script/ScriptPlaceholder.java b/src/main/java/pw/yumc/MiaoScript/script/ScriptPlaceholder.java new file mode 100644 index 0000000..293172f --- /dev/null +++ b/src/main/java/pw/yumc/MiaoScript/script/ScriptPlaceholder.java @@ -0,0 +1,91 @@ +package pw.yumc.MiaoScript.script; + +import java.util.WeakHashMap; + +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.Event; + +import me.clip.placeholderapi.PlaceholderAPI; +import me.clip.placeholderapi.PlaceholderHook; +import pw.yumc.MiaoScript.MiaoScript; +import pw.yumc.YumCore.bukkit.Log; +import pw.yumc.YumCore.bukkit.P; +import pw.yumc.YumCore.config.PlayerConfig; + +/** + * 脚本执行 + * + * @author 喵♂呜 + * @since 2016年8月24日 下午12:51:59 + */ +public class ScriptPlaceholder extends PlaceholderHook { + private static String invalid = "无效的脚本: %s"; + private static String typeError = "脚本 %s 返回值错误"; + private static String EMPTY = ""; + private final MiaoScript plugin = P.getPlugin(); + private ScriptEngine engine; + private final WeakHashMap playerdatas = new WeakHashMap<>(); + + public ScriptPlaceholder() { + this("javascript"); + } + + public ScriptPlaceholder(final String engineType) { + try { + engine = new ScriptEngineManager().getEngineByName(engineType); + } catch (final NullPointerException ex) { + Log.warning("无效的解析引擎! 已设为默认值 'javascript'"); + engine = new ScriptEngineManager().getEngineByName("javascript"); + } + engine.put("Bukkit", Bukkit.getServer()); + engine.put("Server", Bukkit.getServer()); + engine.put("Data", plugin.getDataManager().getData()); + engine.put("Prefix", Log.getPrefix()); + engine.put("Log", P.getLogger()); + } + + @Override + public String onPlaceholderRequest(final Player p, final String key) { + final ScriptInfo script = plugin.getScriptManager().getScript(key); + if (script == null) { + return EMPTY; + } + String expression = script.getExpression(); + expression = PlaceholderAPI.setPlaceholders(p, expression); + try { + engine.put("Player", p); + if (!playerdatas.containsKey(p.getName())) { + playerdatas.put(p.getName(), new PlayerConfig(p)); + } + engine.put("PlayerData", playerdatas.get(p.getName())); + final Event event = plugin.getEventMiddleware().get(p); + if (event != null) { + engine.put("Event", event); + } + Object result = engine.eval(expression); + if (result == null) { + return EMPTY; + } + if ("boolean".equalsIgnoreCase(script.getType())) { + if (!(result instanceof Boolean)) { + return String.format(typeError, key); + } + if (((Boolean) result).booleanValue()) { + result = script.getTrueResult(); + } else { + result = script.getFalseResult(); + } + } + return PlaceholderAPI.setPlaceholders(p, String.valueOf(result)); + } catch (final ScriptException ex) { + Log.warning(String.format("脚本 %s 格式错误...", key)); + ex.printStackTrace(); + return String.format(invalid, key); + } + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/data.yml b/src/main/resources/data.yml new file mode 100644 index 0000000..73f2011 --- /dev/null +++ b/src/main/resources/data.yml @@ -0,0 +1,3 @@ +dirList: +- 你妈逼 +- 我操 \ No newline at end of file diff --git a/src/main/resources/event.yml b/src/main/resources/event.yml new file mode 100644 index 0000000..08ba85f --- /dev/null +++ b/src/main/resources/event.yml @@ -0,0 +1,32 @@ +PlayerJoin: + #Event Class Full Name + class: org.bukkit.event.player.PlayerJoinEvent + #EventPriority Allow Value: LOWEST, LOW, NORMAL, HIGH, HIGHEST, MONITOR + priority: LOWEST + #Script List + scripts: + - '%ms_welcome%' +PlayerDrop: + #Event Class Full Name + class: org.bukkit.event.player.PlayerDropItemEvent + #EventPriority Allow Value: LOWEST, LOW, NORMAL, HIGH, HIGHEST, MONITOR + priority: LOWEST + #Script List + scripts: + - '%ms_checkDrop%' +PlayerChat: + #Event Class Full Name + class: org.bukkit.event.player.AsyncPlayerChatEvent + #EventPriority Allow Value: LOWEST, LOW, NORMAL, HIGH, HIGHEST, MONITOR + priority: LOWEST + #Script List + scripts: + - '%ms_checkChat%' +PlayerCommandPreprocess: + #Event Class Full Name + class: org.bukkit.event.player.PlayerCommandPreprocessEvent + #EventPriority Allow Value: LOWEST, LOW, NORMAL, HIGH, HIGHEST, MONITOR + priority: LOWEST + #Script List + scripts: + - '%ms_bed%' diff --git a/src/main/resources/js/bed.js b/src/main/resources/js/bed.js new file mode 100644 index 0000000..6052806 --- /dev/null +++ b/src/main/resources/js/bed.js @@ -0,0 +1,20 @@ +var msg = Event.getMessage(); +var command = msg.substring(1); +switch (command) { +case "setbed": + Event.setCancelled(true); + PlayerData.set("bed", Player.getLocation()); + PlayerData.save(); + Player.sendMessage(Prefix + "&a您的床位设置成功 使用&b/gobed &a即可回家!"); + break; +case "gobed": + Event.setCancelled(true); + if (PlayerData.isSet("bed")) { + Player.teleport(PlayerData.getLocation("bed")); + Player.sendMessage(Prefix + "&a已传送您回床!"); + } else { + Player.sendMessage(Prefix + "&c请先使用 &b/setbed &c设置您的床位!"); + } +default: + break; +} \ No newline at end of file diff --git a/src/main/resources/js/checkchat.js b/src/main/resources/js/checkchat.js new file mode 100644 index 0000000..a31af95 --- /dev/null +++ b/src/main/resources/js/checkchat.js @@ -0,0 +1,8 @@ +var dirs = Data.getStringList("dirChat"); +var msg = Event.getMessage(); +for (i in dirs) { + if (msg.contains(dirs[i])) { + Event.setCancelled(true); + Player.sendMessage("&6[&b警告&6] &c请不要讲脏话!"); + } +} \ No newline at end of file diff --git a/src/main/resources/js/welcome.js b/src/main/resources/js/welcome.js new file mode 100644 index 0000000..fbd534a --- /dev/null +++ b/src/main/resources/js/welcome.js @@ -0,0 +1,5 @@ +if( Player.getName() == "Mr_jtb" ){ + Bukkit.broadcastMessage("&6[&a公告&6] &c热烈欢迎 &aMiaoScript &c作者 &b喵♂呜&c!"); +} else { + Player.sendMessage("&6[&bMiaoScript&6] &c欢迎来到 &b" + Bukkit.getServerName() + " &c服务器!"); +} \ 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..b9bcccb --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,23 @@ +name: ${project.artifactId} +description: ${project.description} +main: ${project.groupId}.${project.artifactId}.${project.artifactId} +version: ${project.version}-git-${env.GIT_COMMIT} +author: 喵♂呜 +website: ${ciManagement.url} +depend: +- PlaceholderAPI +commands: + ${project.artifactId}: + description: ${project.artifactId} - ${project.description} + aliases: + - ms + usage: §b使用/${project.artifactId} help 查看帮助! + permission: ${project.artifactId}.reload + permission-message: §c你没有 的权限来执行此命令! +permissions: + ${project.artifactId}.use: + description: ${project.artifactId} 使用! + default: true + ${project.artifactId}.reload: + description: 重新载入插件! + default: op \ No newline at end of file diff --git a/src/main/resources/script.yml b/src/main/resources/script.yml new file mode 100644 index 0000000..c237303 --- /dev/null +++ b/src/main/resources/script.yml @@ -0,0 +1,86 @@ +#脚本名称 +#xxxxx: +# 脚本表达式 +# expression: | [这里写"|"则下方缩进均为一行 请看案例] +# if( x = y ) { +# 省略代码 +# } +# expression: "Player.getDisplayName()" +# PS: JS表达式 支持调用Bukkit的内部方法 +# 当前支持Bukkit(Server),Player,Event +# Bukkit(或Server): 调用的是服务器数据 +# - getOnlinePlayer().size(): 在线玩家数量 +# - broadcastMessage('xxx'): 公告xxx +# - getConsoleSender(): 获得控制台 +# - dispatchCommand(Bukkit.getConsoleSender(),"xxx"): 控制台执行xxx命令 +# - dispatchCommand(Player,"xxx"): 玩家执行xxx命令 +# 更多的方法请查询: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Bukkit.html +# +# Player: 调用玩家对象 常用方法有: +# - getName(): 玩家名称 +# - getDisplayName(): 玩家显示名称 +# - hasPermission("xxx"): 判断玩家是否有xxx权限 +# - sendMessage("xxx"): 向玩家发送xxx消息 +# - isOp():是否为OP +# - setFlying(true 或 false): 设置飞行 +# - setHealth(20): 设置玩家血量 +# 更多的方法请查询: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Player.html +# +# Event: 调用事件 不同事件有不同的参数 常用方法如下: +# - setCancelled(true): 用于取消事件 +# 更多的方法请查询: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerEvent.html +# +# [Data, PlayerData(玩家数据)]: 调用数据存储 若崩服数据可能丢失 +# - set("key","value"): 保存一条键为key值为value的数据 +# - get("key"): 获得键为key的值 +# - getStringList("dirChat"): 获得键为dirChat的字符串列表 +# - save(): 保存数据到硬盘 +# 更多的方法请查询: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/configuration/ConfigurationSection.html +# +# Log: 调用插件日志系统 +# - info("xxx"): 输出信息xxx到日志 +# - warning("xxx"): 输出警告xxx +# 更多的方法请查询: http://docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html +# +# type: "boolean" 或 "string" 不写 默认为string +# #下面两个参数 当type为boolean时才有效 +# trueResult: '&c管理员' [脚本返回True时的返回值] +# falseResult: '&a玩家' [脚本返回False时的返回值] +# +#脚本名称 +welcome: + #脚本表达式 + expression: 'file: welcome.js' +#物品丢弃检测 +checkDrop: + expression: | + if( Event.getItemDrop().getItemStack().getType().name().contains("DIAMOND") ){ + Player.sendMessage("&6[&b警告&6] &c您可能丢弃了一件贵重物品!"); + } +#聊天检测 +checkChat: + expression: 'file: checkchat.js' +#获得玩家前缀 +getPrefix: + expression: Player.isOp() + #脚本返回值 + type: boolean + #脚本返回True时的返回值 + trueResult: '&c管理员' + #脚本返回False时的返回值 + falseResult: '&a玩家' +#获取玩家的显示名称 +getDisplayName: + expression: Player.getDisplayName() + type: string +#开启玩家飞行模式 +flyon: + expression: 'Player.setAllowFlight(true);Player.sendMessage("&6[&bMiaoScript&6] &a已为您开启飞行模式!")' +#关闭玩家飞行模式 +flyoff: + expression: | + Player.setAllowFlight(false); + Player.sendMessage("&6[&bMiaoScript&6] &a已为您关闭飞行模式!"); +#设置床 +bed: + expression: 'file: bed.js' \ No newline at end of file