diff --git a/src/com/alphaae/mcpe/servers/Config.java b/src/com/alphaae/mcpe/servers/Config.java index 405a967..8cd4b91 100644 --- a/src/com/alphaae/mcpe/servers/Config.java +++ b/src/com/alphaae/mcpe/servers/Config.java @@ -4,4 +4,5 @@ public interface Config { int JOIN_WAITING_TIME = 240; + } diff --git a/src/com/alphaae/mcpe/servers/command/HiCommand.java b/src/com/alphaae/mcpe/servers/command/HiCommand.java index c351cdd..90928ac 100644 --- a/src/com/alphaae/mcpe/servers/command/HiCommand.java +++ b/src/com/alphaae/mcpe/servers/command/HiCommand.java @@ -35,7 +35,6 @@ public class HiCommand extends Command { //测试指令 RePlayer rePlayer = StaticData.rePlayerMap.get(uuid); ChangePlayerCoinUtils.ReduceIcon(rePlayer, 100); - rePlayer.putUserLocation("坐标1", new UserLocation(player.getX(), player.getY(), player.getZ(), player.getLevel().getName())); return true; } return false; diff --git a/src/com/alphaae/mcpe/servers/form/FormWindowTeleport.java b/src/com/alphaae/mcpe/servers/form/FormWindowTeleport.java index 9bf39df..bd9b35c 100644 --- a/src/com/alphaae/mcpe/servers/form/FormWindowTeleport.java +++ b/src/com/alphaae/mcpe/servers/form/FormWindowTeleport.java @@ -15,6 +15,7 @@ import com.alphaae.mcpe.servers.StaticData; import com.alphaae.mcpe.servers.event.block.form.FormEvent; import com.alphaae.mcpe.servers.model.RePlayer; import com.alphaae.mcpe.servers.model.UserLocation; +import com.alphaae.mcpe.servers.utils.ToastUtils; import com.sun.istack.internal.NotNull; import java.util.Iterator; @@ -29,13 +30,9 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent { super("传送地点", ""); this.player = player; this.rePlayer = StaticData.rePlayerMap.get(player.getUniqueId()); - createContents(); initButtons(); } - private void createContents() { - } - private void initButtons() { addButton(new ElementButton("返回")); addButton(new ElementButton("上次死亡地点")); @@ -49,6 +46,7 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent { UserLocation value = (UserLocation) entry.getValue(); addButton(new ElementButton(key + " ( " + value.getLevelName() + " )")); } + addButton(new ElementButton("编辑储存的坐标")); } public void RespondedEvent(PlayerFormRespondedEvent event) { @@ -69,13 +67,17 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent { Position deathPosition = new Position(deathUserLocation.getX(), deathUserLocation.getY(), deathUserLocation.getZ(), level); player.teleport(deathPosition); } else { - player.sendPopup(TextFormat.colorize("&4不存在死亡记录点")); + ToastUtils.Show(player, ToastUtils.INFO_TYPE_ERROR, "不存在死亡记录点"); } return; case "主城": Position spawnLocation = player.getLevel().getSpawnLocation(); player.teleport(spawnLocation); return; + case "编辑储存的坐标": + FormWindowTeleportEdit formWindowTeleportEdit = new FormWindowTeleportEdit(player); + player.showFormWindow(formWindowTeleportEdit); + return; } Map userLocationMap = rePlayer.getUserLocationMap(); Iterator iterator = userLocationMap.entrySet().iterator(); diff --git a/src/com/alphaae/mcpe/servers/form/FormWindowTeleportEdit.java b/src/com/alphaae/mcpe/servers/form/FormWindowTeleportEdit.java new file mode 100644 index 0000000..708cf15 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/form/FormWindowTeleportEdit.java @@ -0,0 +1,78 @@ +package com.alphaae.mcpe.servers.form; + +import cn.nukkit.Player; +import cn.nukkit.event.player.PlayerFormRespondedEvent; +import cn.nukkit.form.element.ElementButton; +import cn.nukkit.form.response.FormResponseSimple; +import cn.nukkit.form.window.FormWindowSimple; +import com.alphaae.mcpe.servers.StaticData; +import com.alphaae.mcpe.servers.event.block.form.FormEvent; +import com.alphaae.mcpe.servers.model.RePlayer; +import com.alphaae.mcpe.servers.model.UserLocation; +import com.alphaae.mcpe.servers.utils.ToastUtils; +import com.sun.istack.internal.NotNull; + +import java.util.Iterator; +import java.util.Map; + +public class FormWindowTeleportEdit extends FormWindowSimple implements FormEvent { + + private transient Player player; + private transient RePlayer rePlayer; + + public FormWindowTeleportEdit(@NotNull Player player) { + super("编辑记录的坐标", ""); + this.player = player; + this.rePlayer = StaticData.rePlayerMap.get(player.getUniqueId()); + initButtons(); + } + + private void initButtons() { + addButton(new ElementButton("返回")); + addButton(new ElementButton("添加当前坐标")); + Map userLocationMap = rePlayer.getUserLocationMap(); + Iterator iterator = userLocationMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + String key = (String) entry.getKey(); + if (key.equals("__deathPosition__")) continue; + UserLocation value = (UserLocation) entry.getValue(); + addButton(new ElementButton("删除 " + key + " ( " + value.getLevelName() + " )")); + } + } + + @Override + public void RespondedEvent(PlayerFormRespondedEvent event) { + String clickedText = ((FormResponseSimple) event.getResponse()).getClickedButton().getText(); + Player player = event.getPlayer(); + Map userLocationMap = rePlayer.getUserLocationMap(); + if (!event.wasClosed()) { + switch (clickedText) { + case "返回": + FormWindowTeleport formWindowTeleport = new FormWindowTeleport(player); + player.showFormWindow(formWindowTeleport); + return; + case "添加当前坐标": + if (userLocationMap.size() < 6) { + FormWindowTeleportPut formWindowTeleportPut = new FormWindowTeleportPut(player); + player.showFormWindow(formWindowTeleportPut); + } else { + ToastUtils.Show(player, ToastUtils.INFO_TYPE_ERROR, "记录的坐标点超过上限"); + } + return; + } + Iterator iterator = userLocationMap.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry entry = (Map.Entry) iterator.next(); + String key = (String) entry.getKey(); + UserLocation value = (UserLocation) entry.getValue(); + if (clickedText.equals("删除 " + key + " ( " + value.getLevelName() + " )")) { + userLocationMap.remove(key); + FormWindowTeleportEdit formWindowTeleportEdit = new FormWindowTeleportEdit(player); + player.showFormWindow(formWindowTeleportEdit); + return; + } + } + } + } +} diff --git a/src/com/alphaae/mcpe/servers/form/FormWindowTeleportPut.java b/src/com/alphaae/mcpe/servers/form/FormWindowTeleportPut.java new file mode 100644 index 0000000..f7b538d --- /dev/null +++ b/src/com/alphaae/mcpe/servers/form/FormWindowTeleportPut.java @@ -0,0 +1,47 @@ +package com.alphaae.mcpe.servers.form; + +import cn.nukkit.Player; +import cn.nukkit.event.player.PlayerFormRespondedEvent; +import cn.nukkit.form.element.ElementInput; +import cn.nukkit.form.element.ElementLabel; +import cn.nukkit.form.response.FormResponseCustom; +import cn.nukkit.form.window.FormWindowCustom; +import com.alphaae.mcpe.servers.StaticData; +import com.alphaae.mcpe.servers.event.block.form.FormEvent; +import com.alphaae.mcpe.servers.model.RePlayer; +import com.alphaae.mcpe.servers.model.UserLocation; +import com.alphaae.mcpe.servers.utils.ToastUtils; +import com.sun.istack.internal.NotNull; + +public class FormWindowTeleportPut extends FormWindowCustom implements FormEvent { + + private transient Player player; + private transient RePlayer rePlayer; + + public FormWindowTeleportPut(@NotNull Player player) { + super("添加记录坐标"); + this.player = player; + this.rePlayer = StaticData.rePlayerMap.get(player.getUniqueId()); + initElements(); + } + + private void initElements() { + addElement(new ElementInput("坐标点名字:")); + addElement(new ElementLabel("\n\n\n\n\n\n\n\n")); + } + + @Override + public void RespondedEvent(PlayerFormRespondedEvent event) { + FormResponseCustom formResponseCustom = (FormResponseCustom) event.getResponse(); + String posName = formResponseCustom.getInputResponse(0); + Player player = event.getPlayer(); + if (!posName.equals("")) { + rePlayer.putUserLocation(posName, new UserLocation(player.getX(), player.getY(), player.getZ(), player.getLevel().getName())); + FormWindowTeleportEdit formWindowTeleportEdit = new FormWindowTeleportEdit(player); + player.showFormWindow(formWindowTeleportEdit); + } else { + ToastUtils.Show(player, ToastUtils.INFO_TYPE_ERROR, "坐标点名不能为空"); + } + + } +} diff --git a/src/com/alphaae/mcpe/servers/utils/ToastUtils.java b/src/com/alphaae/mcpe/servers/utils/ToastUtils.java new file mode 100644 index 0000000..fa507f3 --- /dev/null +++ b/src/com/alphaae/mcpe/servers/utils/ToastUtils.java @@ -0,0 +1,17 @@ +package com.alphaae.mcpe.servers.utils; + +import cn.nukkit.Player; +import cn.nukkit.utils.TextFormat; + +public class ToastUtils { + + public static final int INFO_TYPE_ERROR = 0; + + + private static String[] infoTypeArr = new String[]{"&4"}; + + public static void Show(Player player, int infoType, String info) { + player.sendPopup(TextFormat.colorize(infoTypeArr[infoType] + info)); + } + +}