diff --git a/src/com/alphaae/mcpe/servers/Config.java b/src/com/alphaae/mcpe/servers/Config.java new file mode 100644 index 0000000..58886e2 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/Config.java @@ -0,0 +1,6 @@ +package com.alphaae.mcpe.servers; + +public interface Config { + int JOIN_WAITING_TIME = 174; + +} diff --git a/src/com/alphaae/mcpe/servers/InfoDisplay.java b/src/com/alphaae/mcpe/servers/InfoDisplay.java deleted file mode 100644 index 66ca0ba..0000000 --- a/src/com/alphaae/mcpe/servers/InfoDisplay.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.alphaae.mcpe.servers; - -import cn.nukkit.Player; -import cn.nukkit.event.EventHandler; -import cn.nukkit.event.EventPriority; -import cn.nukkit.event.Listener; -import cn.nukkit.event.player.PlayerFormRespondedEvent; -import cn.nukkit.event.player.PlayerJoinEvent; -import cn.nukkit.event.player.PlayerQuitEvent; -import cn.nukkit.form.element.ElementButton; -import cn.nukkit.form.element.ElementButtonImageData; -import cn.nukkit.form.response.FormResponse; -import cn.nukkit.form.response.FormResponseModal; -import cn.nukkit.form.window.FormWindowModal; -import cn.nukkit.form.window.FormWindowSimple; -import cn.nukkit.scheduler.NukkitRunnable; -import cn.nukkit.scheduler.Task; -import cn.nukkit.scheduler.TaskHandler; -import cn.nukkit.utils.TextFormat; - -import java.util.UUID; - -public class InfoDisplay implements Listener { - - private final int WAITING_TIME = 174; - - private TaskHandler infoHandler; - - @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) - public void onPlayerJoin(PlayerJoinEvent event) { - final Player player = event.getPlayer(); - - showJoinWindow(player); -// showTestWindow(player); - - try { - infoHandler = TestPlugin.getPlugin().getServer().getScheduler().scheduleDelayedRepeatingTask(new Task() { - @Override - public void onRun(int i) { - String name = player.getName(); - int ping = player.getPing(); - String uuid = player.getUniqueId().toString(); - int coin = 2000; - - player.sendActionBar(TextFormat.colorize("&b" + name + " &f延迟: " + ping + "ms 硬币: " + coin)); - } - }, WAITING_TIME, 12); - } catch (Exception e) { - infoHandler.cancel(); - e.printStackTrace(); - } - - } - - @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) - public void onPlayerQuit(PlayerQuitEvent event) { - if (infoHandler != null) - infoHandler.cancel(); - } - - private void showJoinWindow(Player player) { - new NukkitRunnable() { - public void run() { - FormWindowSimple form = new FormWindowSimple("公告", "欢迎你 " + player.getName() + " \n\nQwQ,还在开发中。。。\n\n开始测试硬币系统"); - player.showFormWindow(form); - } - }.runTaskLater(TestPlugin.getPlugin(), WAITING_TIME); - } - - private void showTestWindow(Player player) { - new NukkitRunnable() { - public void run() { - FormWindowSimple form = new FormWindowSimple("商店", ""); - form.addButton(new ElementButton("购买", new ElementButtonImageData(ElementButtonImageData.IMAGE_DATA_TYPE_PATH, "textures/items/apple.png"))); - form.addButton(new ElementButton("购买", new ElementButtonImageData(ElementButtonImageData.IMAGE_DATA_TYPE_PATH, "textures/items/apple_golden.png"))); - form.addButton(new ElementButton("购买", new ElementButtonImageData(ElementButtonImageData.IMAGE_DATA_TYPE_PATH, "textures/items/diamond_helmet.png"))); - form.addButton(new ElementButton("购买", new ElementButtonImageData(ElementButtonImageData.IMAGE_DATA_TYPE_PATH, "textures/items/pumpkin_pie.png"))); - form.addButton(new ElementButton("购买", new ElementButtonImageData(ElementButtonImageData.IMAGE_DATA_TYPE_PATH, "textures/items/melon.png"))); - -// FormWindowModal formWindowModal = new FormWindowModal("协议", "猝死了要自己负责哦!", "确认", "你只能确认"); -// FormResponseModal f1 = formWindowModal.getResponse(); -//// f1.getClickedButtonId(); - player.showFormWindow(form); - } - }.runTaskLater(TestPlugin.getPlugin(), WAITING_TIME); - - } - - @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) - public void onPlayerFormResponded(PlayerFormRespondedEvent event) { - final Player player = event.getPlayer(); - final FormResponse formResponse = event.getResponse(); -// FormResponseModal response = (FormResponseModal) formResponse; -// player.sendMessage("" + response.getClickedButtonId()); - } - - -} diff --git a/src/com/alphaae/mcpe/servers/MainPlugin.java b/src/com/alphaae/mcpe/servers/MainPlugin.java new file mode 100644 index 0000000..0a668b2 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/MainPlugin.java @@ -0,0 +1,51 @@ +package com.alphaae.mcpe.servers; + +import cn.nukkit.command.SimpleCommandMap; +import cn.nukkit.plugin.Plugin; +import cn.nukkit.plugin.PluginBase; +import cn.nukkit.plugin.PluginManager; +import com.alphaae.mcpe.servers.command.HiCommand; +import com.alphaae.mcpe.servers.event.JoinQuitEvent; + +public class MainPlugin extends PluginBase { + + private static Plugin plugin; + + public static Plugin getPlugin() { + return plugin; + } + + @Override + public void onLoad() { + getLogger().info("onLoad! QwQ"); + } + + @Override + public void onEnable() { + plugin = this; + initConfig(); + registerCommands(); + registerEvents(); + } + + @Override + public void onDisable() { + super.onDisable(); + } + + public void initConfig() { + getDataFolder().mkdirs(); + saveResource("config.yml"); + reloadConfig(); + } + + private void registerCommands() { + SimpleCommandMap commandMap = getServer().getCommandMap(); + commandMap.register("TestPlugin", new HiCommand(this)); + } + + private void registerEvents() { + PluginManager pluginManager = getServer().getPluginManager(); + pluginManager.registerEvents(new JoinQuitEvent(), this); + } +} diff --git a/src/com/alphaae/mcpe/servers/TestPlugin.java b/src/com/alphaae/mcpe/servers/TestPlugin.java deleted file mode 100644 index 6bd00c0..0000000 --- a/src/com/alphaae/mcpe/servers/TestPlugin.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.alphaae.mcpe.servers; - -import cn.nukkit.Player; -import cn.nukkit.command.Command; -import cn.nukkit.command.CommandSender; -import cn.nukkit.form.element.Element; -import cn.nukkit.form.element.ElementButtonImageData; -import cn.nukkit.form.element.ElementDropdown; -import cn.nukkit.form.element.ElementInput; -import cn.nukkit.form.window.FormWindowCustom; -import cn.nukkit.form.window.FormWindowSimple; -import cn.nukkit.inventory.InventoryType; -import cn.nukkit.inventory.PlayerInventory; -import cn.nukkit.plugin.Plugin; -import cn.nukkit.plugin.PluginBase; -import cn.nukkit.plugin.PluginManager; - -import java.util.ArrayList; -import java.util.List; - -public class TestPlugin extends PluginBase { - - private static Plugin plugin; - - public static Plugin getPlugin() { - return plugin; - } - - @Override - public void onLoad() { - getLogger().info("onLoad! QwQ"); - } - - @Override - public void onEnable() { - plugin = this; - PluginManager pluginManager = getServer().getPluginManager(); - pluginManager.registerEvents(new InfoDisplay(), this); - } - - @Override - public void onDisable() { - super.onDisable(); - } - - - @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - Player player = sender.getServer().getPlayer(sender.getName()); - switch (command.getName()) { - case "hi": - if (sender.isPlayer()) { -// List list = new ArrayList(); -// list.add(new ElementDropdown("2333")); -// list.add(new ElementInput("输入")); -// FormWindowCustom form = new FormWindowCustom("title", list); -//// form.addButton(ElementButtonImageData(ElementButtonImageData.IMAGE_DATA_TYPE_PATH, "textures/items/melon.png")); -// player.showFormWindow() - } - return true; - -// case "menu": -// player.chat("/el open default.yml"); -// return true; - } - return false; - } -} diff --git a/src/com/alphaae/mcpe/servers/command/HiCommand.java b/src/com/alphaae/mcpe/servers/command/HiCommand.java new file mode 100644 index 0000000..952aa21 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/command/HiCommand.java @@ -0,0 +1,34 @@ +package com.alphaae.mcpe.servers.command; + +import cn.nukkit.Player; +import cn.nukkit.command.Command; +import cn.nukkit.command.CommandSender; +import cn.nukkit.utils.TextFormat; +import com.alphaae.mcpe.servers.MainPlugin; +import com.alphaae.mcpe.servers.form.FormWindowMy; + +public class HiCommand extends Command { + private MainPlugin plugin; + + public HiCommand(MainPlugin plugin) { + super("hi", "Hi测试指令", "/hi"); + this.plugin = plugin; + } + + @Override + public boolean execute(CommandSender commandSender, String s, String[] strings) { + if (!this.plugin.isEnabled()) return false; + if (!commandSender.hasPermission("testplugin.command.menu")) { + commandSender.sendMessage(TextFormat.RED + "你没有权限使用该指令"); + return false; + } + + Player player = commandSender.getServer().getPlayer(commandSender.getName()); + if (commandSender.isPlayer()) { + FormWindowMy form = new FormWindowMy(player); + player.showFormWindow(form); + return true; + } + return false; + } +} diff --git a/src/com/alphaae/mcpe/servers/event/JoinQuitEvent.java b/src/com/alphaae/mcpe/servers/event/JoinQuitEvent.java new file mode 100644 index 0000000..e3807b3 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/event/JoinQuitEvent.java @@ -0,0 +1,39 @@ +package com.alphaae.mcpe.servers.event; + +import cn.nukkit.event.EventHandler; +import cn.nukkit.event.EventPriority; +import cn.nukkit.event.Listener; +import cn.nukkit.event.player.PlayerJoinEvent; +import cn.nukkit.event.player.PlayerQuitEvent; +import com.alphaae.mcpe.servers.event.block.joinquit.DisplayInfoBlock; +import com.alphaae.mcpe.servers.event.block.joinquit.JoinQuitEventBlock; +import com.alphaae.mcpe.servers.event.block.joinquit.JoinWindowBlock; + +import java.util.ArrayList; +import java.util.List; + +public class JoinQuitEvent implements Listener { + + private static List eventBlockList; + + static { + eventBlockList = new ArrayList<>(); + eventBlockList.add(new DisplayInfoBlock()); + eventBlockList.add(new JoinWindowBlock()); + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) + public void onPlayerJoin(PlayerJoinEvent event) { + for (JoinQuitEventBlock eventBlock : eventBlockList) { + eventBlock.onPlayerJoin(event); + } + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) + public void onPlayerQuit(PlayerQuitEvent event) { + for (JoinQuitEventBlock eventBlock : eventBlockList) { + eventBlock.onPlayerQuit(event); + } + } + +} diff --git a/src/com/alphaae/mcpe/servers/event/block/joinquit/DisplayInfoBlock.java b/src/com/alphaae/mcpe/servers/event/block/joinquit/DisplayInfoBlock.java new file mode 100644 index 0000000..246c2eb --- /dev/null +++ b/src/com/alphaae/mcpe/servers/event/block/joinquit/DisplayInfoBlock.java @@ -0,0 +1,50 @@ +package com.alphaae.mcpe.servers.event.block.joinquit; + +import cn.nukkit.Player; +import cn.nukkit.event.player.PlayerJoinEvent; +import cn.nukkit.event.player.PlayerQuitEvent; +import cn.nukkit.form.element.ElementButton; +import cn.nukkit.form.element.ElementButtonImageData; +import cn.nukkit.form.window.FormWindowSimple; +import cn.nukkit.scheduler.NukkitRunnable; +import cn.nukkit.scheduler.Task; +import cn.nukkit.scheduler.TaskHandler; +import cn.nukkit.utils.TextFormat; +import com.alphaae.mcpe.servers.Config; +import com.alphaae.mcpe.servers.MainPlugin; + +public class DisplayInfoBlock implements JoinQuitEventBlock { + + private TaskHandler infoHandler; + + public DisplayInfoBlock() { + } + + public void onPlayerJoin(PlayerJoinEvent event) { + final Player player = event.getPlayer(); + + try { + infoHandler = MainPlugin.getPlugin().getServer().getScheduler().scheduleDelayedRepeatingTask(new Task() { + @Override + public void onRun(int i) { + String name = player.getName(); + int ping = player.getPing(); + String uuid = player.getUniqueId().toString(); + int coin = 2000; + + player.sendActionBar(TextFormat.colorize("&b" + name + " &f延迟: " + ping + "ms 硬币: " + coin)); + } + }, Config.JOIN_WAITING_TIME, 12); + } catch (Exception e) { + infoHandler.cancel(); + e.printStackTrace(); + } + + } + + public void onPlayerQuit(PlayerQuitEvent event) { + if (infoHandler != null) + infoHandler.cancel(); + } + +} diff --git a/src/com/alphaae/mcpe/servers/event/block/joinquit/JoinQuitEventBlock.java b/src/com/alphaae/mcpe/servers/event/block/joinquit/JoinQuitEventBlock.java new file mode 100644 index 0000000..4674efb --- /dev/null +++ b/src/com/alphaae/mcpe/servers/event/block/joinquit/JoinQuitEventBlock.java @@ -0,0 +1,10 @@ +package com.alphaae.mcpe.servers.event.block.joinquit; + +import cn.nukkit.event.player.PlayerJoinEvent; +import cn.nukkit.event.player.PlayerQuitEvent; + +public interface JoinQuitEventBlock { + void onPlayerJoin(PlayerJoinEvent event); + + void onPlayerQuit(PlayerQuitEvent event); +} diff --git a/src/com/alphaae/mcpe/servers/event/block/joinquit/JoinWindowBlock.java b/src/com/alphaae/mcpe/servers/event/block/joinquit/JoinWindowBlock.java new file mode 100644 index 0000000..3ab73a7 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/event/block/joinquit/JoinWindowBlock.java @@ -0,0 +1,33 @@ +package com.alphaae.mcpe.servers.event.block.joinquit; + +import cn.nukkit.Player; +import cn.nukkit.event.player.PlayerJoinEvent; +import cn.nukkit.event.player.PlayerQuitEvent; +import cn.nukkit.form.window.FormWindowSimple; +import cn.nukkit.scheduler.NukkitRunnable; +import com.alphaae.mcpe.servers.Config; +import com.alphaae.mcpe.servers.MainPlugin; + +public class JoinWindowBlock implements JoinQuitEventBlock { + + @Override + public void onPlayerJoin(PlayerJoinEvent event) { + final Player player = event.getPlayer(); + showJoinWindow(player); + } + + @Override + public void onPlayerQuit(PlayerQuitEvent event) { + + } + + private void showJoinWindow(Player player) { + new NukkitRunnable() { + public void run() { + String joinText = MainPlugin.getPlugin().getConfig().getString("join-text"); + FormWindowSimple form = new FormWindowSimple("公告", "欢迎你 " + player.getName() + " \n\n" + joinText); + player.showFormWindow(form); + } + }.runTaskLater(MainPlugin.getPlugin(), Config.JOIN_WAITING_TIME); + } +} diff --git a/src/com/alphaae/mcpe/servers/form/FormWindowMy.java b/src/com/alphaae/mcpe/servers/form/FormWindowMy.java new file mode 100644 index 0000000..99c1ca0 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/form/FormWindowMy.java @@ -0,0 +1,87 @@ +package com.alphaae.mcpe.servers.form; + +import cn.nukkit.Player; +import cn.nukkit.form.element.ElementButton; +import cn.nukkit.form.response.FormResponseSimple; +import cn.nukkit.form.window.FormWindow; +import com.google.gson.Gson; + +import java.util.ArrayList; +import java.util.List; + +public class FormWindowMy extends FormWindow { + private final String type = "form"; + private String title; + private String content; + private List buttons; + private FormResponseSimple response; + + public FormWindowMy(Player player) { + this.title = ""; + this.content = ""; + this.response = null; + + String name = player.getName(); + String coin = "2000"; + + String content = "" + name + "\n" + + "---------------------------------\n---------------------------------\n" + + "硬币: " + coin + "\n" + + ""; + + this.title = name; + this.content = content; + this.buttons = new ArrayList(); + } + + public String getTitle() { + return this.title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return this.content; + } + + public void setContent(String content) { + this.content = content; + } + + public List getButtons() { + return this.buttons; + } + + public void addButton(ElementButton button) { + this.buttons.add(button); + } + + public String getJSONData() { + return (new Gson()).toJson(this); + } + + public FormResponseSimple getResponse() { + return this.response; + } + + public void setResponse(String data) { + if (data.equals("null")) { + this.closed = true; + } else { + int buttonID; + try { + buttonID = Integer.parseInt(data); + } catch (Exception var4) { + return; + } + + if (buttonID >= this.buttons.size()) { + this.response = new FormResponseSimple(buttonID, (ElementButton) null); + } else { + this.response = new FormResponseSimple(buttonID, (ElementButton) this.buttons.get(buttonID)); + } + } + } +} diff --git a/src/com/alphaae/mcpe/servers/model/SuPlayer.java b/src/com/alphaae/mcpe/servers/model/SuPlayer.java new file mode 100644 index 0000000..b711511 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/model/SuPlayer.java @@ -0,0 +1,10 @@ +package com.alphaae.mcpe.servers.model; + +import cn.nukkit.Player; + +public class SuPlayer { + private Player player; + private String name; + + +} diff --git a/src/resources/config.yml b/src/resources/config.yml new file mode 100644 index 0000000..3559377 --- /dev/null +++ b/src/resources/config.yml @@ -0,0 +1 @@ +join-text: "QwQ,还在开发中。。。\n\n开始测试硬币系统" \ No newline at end of file diff --git a/src/resources/plugin.yml b/src/resources/plugin.yml index 7afc325..c257d97 100644 --- a/src/resources/plugin.yml +++ b/src/resources/plugin.yml @@ -1,5 +1,5 @@ -name: TestPlugin -main: com.alphaae.mcpe.servers.TestPlugin +name: MainPlugin +main: com.alphaae.mcpe.servers.MainPlugin version: "1.0.0" api: ["1.0.8"] @@ -10,19 +10,12 @@ description: AlpheAE的测试插件 website: http://www.alphaae.com permissions: - testplugin.command.hi: - description: 允许用户使用hi指令 - default: true testplugin.command.menu: description: 允许用户使用menu指令 default: true -commands: - hi: - description: hi指令 - usage: "/hi" - permission: testplugin.command.hi -# menu: -# description: 菜单指令 -# usage: "/menu" -# permission: testplugin.command.hi \ No newline at end of file +#commands: +# hi: +# description: 测试指令 +# usage: "/hi" +# permission: testplugin.command.menu \ No newline at end of file