update tp

This commit is contained in:
AlphaAE
2019-05-12 16:50:54 +08:00
parent 78d0995772
commit c2cc84b724
6 changed files with 150 additions and 6 deletions

View File

@ -4,4 +4,5 @@ public interface Config {
int JOIN_WAITING_TIME = 240; int JOIN_WAITING_TIME = 240;
} }

View File

@ -35,7 +35,6 @@ public class HiCommand extends Command {
//测试指令 //测试指令
RePlayer rePlayer = StaticData.rePlayerMap.get(uuid); RePlayer rePlayer = StaticData.rePlayerMap.get(uuid);
ChangePlayerCoinUtils.ReduceIcon(rePlayer, 100); ChangePlayerCoinUtils.ReduceIcon(rePlayer, 100);
rePlayer.putUserLocation("坐标1", new UserLocation(player.getX(), player.getY(), player.getZ(), player.getLevel().getName()));
return true; return true;
} }
return false; return false;

View File

@ -15,6 +15,7 @@ import com.alphaae.mcpe.servers.StaticData;
import com.alphaae.mcpe.servers.event.block.form.FormEvent; import com.alphaae.mcpe.servers.event.block.form.FormEvent;
import com.alphaae.mcpe.servers.model.RePlayer; import com.alphaae.mcpe.servers.model.RePlayer;
import com.alphaae.mcpe.servers.model.UserLocation; import com.alphaae.mcpe.servers.model.UserLocation;
import com.alphaae.mcpe.servers.utils.ToastUtils;
import com.sun.istack.internal.NotNull; import com.sun.istack.internal.NotNull;
import java.util.Iterator; import java.util.Iterator;
@ -29,13 +30,9 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent {
super("传送地点", ""); super("传送地点", "");
this.player = player; this.player = player;
this.rePlayer = StaticData.rePlayerMap.get(player.getUniqueId()); this.rePlayer = StaticData.rePlayerMap.get(player.getUniqueId());
createContents();
initButtons(); initButtons();
} }
private void createContents() {
}
private void initButtons() { private void initButtons() {
addButton(new ElementButton("返回")); addButton(new ElementButton("返回"));
addButton(new ElementButton("上次死亡地点")); addButton(new ElementButton("上次死亡地点"));
@ -49,6 +46,7 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent {
UserLocation value = (UserLocation) entry.getValue(); UserLocation value = (UserLocation) entry.getValue();
addButton(new ElementButton(key + " ( " + value.getLevelName() + " )")); addButton(new ElementButton(key + " ( " + value.getLevelName() + " )"));
} }
addButton(new ElementButton("编辑储存的坐标"));
} }
public void RespondedEvent(PlayerFormRespondedEvent event) { 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); Position deathPosition = new Position(deathUserLocation.getX(), deathUserLocation.getY(), deathUserLocation.getZ(), level);
player.teleport(deathPosition); player.teleport(deathPosition);
} else { } else {
player.sendPopup(TextFormat.colorize("&4不存在死亡记录点")); ToastUtils.Show(player, ToastUtils.INFO_TYPE_ERROR, "不存在死亡记录点");
} }
return; return;
case "主城": case "主城":
Position spawnLocation = player.getLevel().getSpawnLocation(); Position spawnLocation = player.getLevel().getSpawnLocation();
player.teleport(spawnLocation); player.teleport(spawnLocation);
return; return;
case "编辑储存的坐标":
FormWindowTeleportEdit formWindowTeleportEdit = new FormWindowTeleportEdit(player);
player.showFormWindow(formWindowTeleportEdit);
return;
} }
Map<String, UserLocation> userLocationMap = rePlayer.getUserLocationMap(); Map<String, UserLocation> userLocationMap = rePlayer.getUserLocationMap();
Iterator iterator = userLocationMap.entrySet().iterator(); Iterator iterator = userLocationMap.entrySet().iterator();

View File

@ -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<String, UserLocation> 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<String, UserLocation> 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;
}
}
}
}
}

View File

@ -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, "坐标点名不能为空");
}
}
}

View File

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