re project

This commit is contained in:
AlphaAE
2019-04-29 09:48:31 +08:00
parent 34d49e985d
commit 6c307f1197
13 changed files with 328 additions and 180 deletions

View File

@ -0,0 +1,6 @@
package com.alphaae.mcpe.servers;
public interface Config {
int JOIN_WAITING_TIME = 174;
}

View File

@ -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());
}
}

View File

@ -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);
}
}

View File

@ -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<Element> 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;
}
}

View File

@ -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;
}
}

View File

@ -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<JoinQuitEventBlock> 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);
}
}
}

View File

@ -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();
}
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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<ElementButton> 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<ElementButton> 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));
}
}
}
}

View File

@ -0,0 +1,10 @@
package com.alphaae.mcpe.servers.model;
import cn.nukkit.Player;
public class SuPlayer {
private Player player;
private String name;
}

1
src/resources/config.yml Normal file
View File

@ -0,0 +1 @@
join-text: "QwQ还在开发中。。。\n\n开始测试硬币系统"

View File

@ -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
#commands:
# hi:
# description: 测试指令
# usage: "/hi"
# permission: testplugin.command.menu