add task block
complete tp
This commit is contained in:
@ -7,6 +7,7 @@ import cn.nukkit.plugin.PluginManager;
|
||||
import com.alphaae.mcpe.servers.command.HiCommand;
|
||||
import com.alphaae.mcpe.servers.command.UpdataUserDataCommand;
|
||||
import com.alphaae.mcpe.servers.event.*;
|
||||
import com.alphaae.mcpe.servers.task.DisplayPlayerInfoTask;
|
||||
|
||||
public class MainPlugin extends PluginBase {
|
||||
|
||||
@ -25,6 +26,7 @@ public class MainPlugin extends PluginBase {
|
||||
public void onEnable() {
|
||||
plugin = this;
|
||||
initConfig();
|
||||
startTask();
|
||||
registerCommands();
|
||||
registerEvents();
|
||||
}
|
||||
@ -40,6 +42,10 @@ public class MainPlugin extends PluginBase {
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
private void startTask() {
|
||||
new DisplayPlayerInfoTask(this);
|
||||
}
|
||||
|
||||
private void registerCommands() {
|
||||
SimpleCommandMap commandMap = getServer().getCommandMap();
|
||||
commandMap.register("AlphaAPI", new HiCommand(this));
|
||||
|
@ -5,7 +5,6 @@ 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 com.alphaae.mcpe.servers.event.block.joinquit.LoadPlayerDataBlock;
|
||||
@ -19,7 +18,6 @@ public class PlayerJoinQuitEvent implements Listener {
|
||||
|
||||
static {
|
||||
eventBlockList = new ArrayList<>();
|
||||
eventBlockList.add(new DisplayInfoBlock());
|
||||
eventBlockList.add(new JoinWindowBlock());
|
||||
eventBlockList.add(new LoadPlayerDataBlock());
|
||||
}
|
||||
|
@ -1,64 +0,0 @@
|
||||
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.scheduler.Task;
|
||||
import cn.nukkit.scheduler.TaskHandler;
|
||||
import cn.nukkit.utils.TextFormat;
|
||||
import com.alphaae.mcpe.servers.Config;
|
||||
import com.alphaae.mcpe.servers.MainPlugin;
|
||||
import com.alphaae.mcpe.servers.StaticData;
|
||||
import com.alphaae.mcpe.servers.model.RePlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class DisplayInfoBlock implements JoinQuitEventBlock {
|
||||
|
||||
private TaskHandler infoHandler;
|
||||
|
||||
public DisplayInfoBlock() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
final UUID uuid = player.getUniqueId();
|
||||
|
||||
try {
|
||||
infoHandler = MainPlugin.getPlugin().getServer().getScheduler().scheduleDelayedRepeatingTask(MainPlugin.getPlugin(), () -> {
|
||||
try {
|
||||
RePlayer rePlayer = StaticData.rePlayerMap.get(uuid);
|
||||
String name = player.getDisplayName();
|
||||
int ping = player.getPing();
|
||||
int coin = rePlayer.getCoin();
|
||||
float tps = MainPlugin.getPlugin().getServer().getTicksPerSecond();
|
||||
|
||||
StringBuilder showText = new StringBuilder()
|
||||
.append(name)
|
||||
.append(" &f硬币: ").append(coin)
|
||||
.append(" 延迟: ").append(ping).append("ms")
|
||||
.append(" TPS: ").append(tps);
|
||||
|
||||
player.sendActionBar(TextFormat.colorize(showText.toString()));
|
||||
} catch (Exception e) {
|
||||
if (infoHandler != null)
|
||||
infoHandler.cancel();
|
||||
e.printStackTrace();
|
||||
}
|
||||
}, Config.JOIN_WAITING_TIME, 36);
|
||||
} catch (Exception e) {
|
||||
if (infoHandler != null)
|
||||
infoHandler.cancel();
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
if (infoHandler != null)
|
||||
infoHandler.cancel();
|
||||
}
|
||||
|
||||
}
|
@ -36,6 +36,7 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent {
|
||||
private void initButtons() {
|
||||
addButton(new ElementButton("返回"));
|
||||
addButton(new ElementButton("上次死亡地点"));
|
||||
addButton(new ElementButton("玩家"));
|
||||
addButton(new ElementButton("主城"));
|
||||
Map<String, UserLocation> userLocationMap = rePlayer.getUserLocationMap();
|
||||
Iterator iterator = userLocationMap.entrySet().iterator();
|
||||
@ -71,7 +72,8 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent {
|
||||
}
|
||||
return;
|
||||
case "玩家":
|
||||
|
||||
FormWindowTeleportPlayer formWindowTeleportPlayer = new FormWindowTeleportPlayer(player);
|
||||
player.showFormWindow(formWindowTeleportPlayer);
|
||||
return;
|
||||
case "主城":
|
||||
Position spawnLocation = player.getLevel().getSpawnLocation();
|
||||
|
@ -0,0 +1,38 @@
|
||||
package com.alphaae.mcpe.servers.form;
|
||||
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.event.player.PlayerFormRespondedEvent;
|
||||
import cn.nukkit.form.response.FormResponseModal;
|
||||
import cn.nukkit.form.window.FormWindowModal;
|
||||
import cn.nukkit.level.Position;
|
||||
import com.alphaae.mcpe.servers.event.block.form.FormEvent;
|
||||
import com.alphaae.mcpe.servers.model.RePlayer;
|
||||
import com.alphaae.mcpe.servers.utils.ToastUtils;
|
||||
import com.sun.istack.internal.NotNull;
|
||||
|
||||
public class FormWindowTeleportAllow extends FormWindowModal implements FormEvent {
|
||||
|
||||
private transient Player player;
|
||||
private transient RePlayer rePlayer;
|
||||
|
||||
public FormWindowTeleportAllow(@NotNull Player player) {
|
||||
super("玩家传送", "", "接受", "拒绝");
|
||||
this.player = player;
|
||||
// this.rePlayer = StaticData.rePlayerMap.get(player.getUniqueId());
|
||||
String name = player.getDisplayName();
|
||||
setContent("玩家: " + name + " 请求传送到你身边");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void RespondedEvent(PlayerFormRespondedEvent event) {
|
||||
FormResponseModal formResponseModal = (FormResponseModal) event.getResponse();
|
||||
int clickedButtonId = formResponseModal.getClickedButtonId();
|
||||
Player player2 = event.getPlayer();
|
||||
if (clickedButtonId == 0) {
|
||||
Position position = player2.getPosition();
|
||||
player.teleport(position);
|
||||
} else {
|
||||
ToastUtils.Show(player, ToastUtils.INFO_TYPE_WARNING, "对方拒绝了传送");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package com.alphaae.mcpe.servers.form;
|
||||
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.event.player.PlayerFormRespondedEvent;
|
||||
import cn.nukkit.form.element.ElementDropdown;
|
||||
import cn.nukkit.form.element.ElementInput;
|
||||
import cn.nukkit.form.response.FormResponseCustom;
|
||||
import cn.nukkit.form.response.FormResponseData;
|
||||
import cn.nukkit.form.window.FormWindowCustom;
|
||||
import cn.nukkit.level.Position;
|
||||
import com.alphaae.mcpe.servers.MainPlugin;
|
||||
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.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class FormWindowTeleportPlayer extends FormWindowCustom implements FormEvent {
|
||||
|
||||
private transient Player player;
|
||||
private transient RePlayer rePlayer;
|
||||
|
||||
public FormWindowTeleportPlayer(@NotNull Player player) {
|
||||
super("传送到某玩家");
|
||||
this.player = player;
|
||||
// this.rePlayer = StaticData.rePlayerMap.get(player.getUniqueId());
|
||||
initElements();
|
||||
}
|
||||
|
||||
private void initElements() {
|
||||
Map<UUID, Player> playerMap = MainPlugin.getPlugin().getServer().getOnlinePlayers();
|
||||
List<String> playerList = new ArrayList<>();
|
||||
for (Player tPlayer : playerMap.values()) {
|
||||
String name = tPlayer.getName();
|
||||
if (name.equals(player.getName())) continue;
|
||||
playerList.add(tPlayer.getName());
|
||||
}
|
||||
addElement(new ElementDropdown("选择玩家:", playerList));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void RespondedEvent(PlayerFormRespondedEvent event) {
|
||||
FormResponseCustom formResponseCustom = (FormResponseCustom) event.getResponse();
|
||||
String posName = formResponseCustom.getDropdownResponse(0).getElementContent();
|
||||
Player player = event.getPlayer();
|
||||
if (!posName.equals("")) {
|
||||
Player player2 = MainPlugin.getPlugin().getServer().getPlayer(posName);
|
||||
if (player2 != null) {
|
||||
FormWindowTeleportAllow formWindowTeleportAllow = new FormWindowTeleportAllow(player);
|
||||
player2.showFormWindow(formWindowTeleportAllow);
|
||||
ToastUtils.Show(player, ToastUtils.INFO_TYPE_INFO, "传送请求已发送");
|
||||
} else {
|
||||
ToastUtils.Show(player, ToastUtils.INFO_TYPE_ERROR, "玩家不在游戏中");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
51
src/com/alphaae/mcpe/servers/task/DisplayPlayerInfoTask.java
Normal file
51
src/com/alphaae/mcpe/servers/task/DisplayPlayerInfoTask.java
Normal file
@ -0,0 +1,51 @@
|
||||
package com.alphaae.mcpe.servers.task;
|
||||
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.plugin.Plugin;
|
||||
import cn.nukkit.scheduler.TaskHandler;
|
||||
import cn.nukkit.utils.TextFormat;
|
||||
import com.alphaae.mcpe.servers.Config;
|
||||
import com.alphaae.mcpe.servers.MainPlugin;
|
||||
import com.alphaae.mcpe.servers.StaticData;
|
||||
import com.alphaae.mcpe.servers.model.RePlayer;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class DisplayPlayerInfoTask {
|
||||
|
||||
private Plugin plugin;
|
||||
|
||||
private TaskHandler infoHandler;
|
||||
|
||||
public DisplayPlayerInfoTask(Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
|
||||
infoHandler = MainPlugin.getPlugin().getServer().getScheduler().scheduleDelayedRepeatingTask(MainPlugin.getPlugin(), () -> {
|
||||
try {
|
||||
float tps = MainPlugin.getPlugin().getServer().getTicksPerSecond();
|
||||
|
||||
Map<UUID, Player> playerMap = plugin.getServer().getOnlinePlayers();
|
||||
for (Player tPlayer : playerMap.values()) {
|
||||
RePlayer tRePlayer = StaticData.rePlayerMap.get(tPlayer.getUniqueId());
|
||||
if (tRePlayer == null) continue;
|
||||
String name = tPlayer.getDisplayName();
|
||||
int ping = tPlayer.getPing();
|
||||
int coin = tRePlayer.getCoin();
|
||||
StringBuilder showText = new StringBuilder()
|
||||
.append(name)
|
||||
.append(" &f硬币: ").append(coin)
|
||||
.append(" 延迟: ").append(ping).append("ms")
|
||||
.append(" TPS: ").append(tps);
|
||||
tPlayer.sendActionBar(TextFormat.colorize(showText.toString()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
if (infoHandler != null)
|
||||
infoHandler.cancel();
|
||||
e.printStackTrace();
|
||||
}
|
||||
}, Config.JOIN_WAITING_TIME, 36);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -6,9 +6,11 @@ import cn.nukkit.utils.TextFormat;
|
||||
public class ToastUtils {
|
||||
|
||||
public static final int INFO_TYPE_ERROR = 0;
|
||||
public static final int INFO_TYPE_INFO = 1;
|
||||
public static final int INFO_TYPE_WARNING = 2;
|
||||
|
||||
|
||||
private static String[] infoTypeArr = new String[]{"&4"};
|
||||
private static String[] infoTypeArr = new String[]{"&", "&b", "&e"};
|
||||
|
||||
public static void Show(Player player, int infoType, String info) {
|
||||
player.sendPopup(TextFormat.colorize(infoTypeArr[infoType] + info));
|
||||
|
Reference in New Issue
Block a user