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.HiCommand;
|
||||||
import com.alphaae.mcpe.servers.command.UpdataUserDataCommand;
|
import com.alphaae.mcpe.servers.command.UpdataUserDataCommand;
|
||||||
import com.alphaae.mcpe.servers.event.*;
|
import com.alphaae.mcpe.servers.event.*;
|
||||||
|
import com.alphaae.mcpe.servers.task.DisplayPlayerInfoTask;
|
||||||
|
|
||||||
public class MainPlugin extends PluginBase {
|
public class MainPlugin extends PluginBase {
|
||||||
|
|
||||||
@ -25,6 +26,7 @@ public class MainPlugin extends PluginBase {
|
|||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
plugin = this;
|
plugin = this;
|
||||||
initConfig();
|
initConfig();
|
||||||
|
startTask();
|
||||||
registerCommands();
|
registerCommands();
|
||||||
registerEvents();
|
registerEvents();
|
||||||
}
|
}
|
||||||
@ -40,6 +42,10 @@ public class MainPlugin extends PluginBase {
|
|||||||
reloadConfig();
|
reloadConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void startTask() {
|
||||||
|
new DisplayPlayerInfoTask(this);
|
||||||
|
}
|
||||||
|
|
||||||
private void registerCommands() {
|
private void registerCommands() {
|
||||||
SimpleCommandMap commandMap = getServer().getCommandMap();
|
SimpleCommandMap commandMap = getServer().getCommandMap();
|
||||||
commandMap.register("AlphaAPI", new HiCommand(this));
|
commandMap.register("AlphaAPI", new HiCommand(this));
|
||||||
|
@ -5,7 +5,6 @@ import cn.nukkit.event.EventPriority;
|
|||||||
import cn.nukkit.event.Listener;
|
import cn.nukkit.event.Listener;
|
||||||
import cn.nukkit.event.player.PlayerJoinEvent;
|
import cn.nukkit.event.player.PlayerJoinEvent;
|
||||||
import cn.nukkit.event.player.PlayerQuitEvent;
|
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.JoinQuitEventBlock;
|
||||||
import com.alphaae.mcpe.servers.event.block.joinquit.JoinWindowBlock;
|
import com.alphaae.mcpe.servers.event.block.joinquit.JoinWindowBlock;
|
||||||
import com.alphaae.mcpe.servers.event.block.joinquit.LoadPlayerDataBlock;
|
import com.alphaae.mcpe.servers.event.block.joinquit.LoadPlayerDataBlock;
|
||||||
@ -19,7 +18,6 @@ public class PlayerJoinQuitEvent implements Listener {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
eventBlockList = new ArrayList<>();
|
eventBlockList = new ArrayList<>();
|
||||||
eventBlockList.add(new DisplayInfoBlock());
|
|
||||||
eventBlockList.add(new JoinWindowBlock());
|
eventBlockList.add(new JoinWindowBlock());
|
||||||
eventBlockList.add(new LoadPlayerDataBlock());
|
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() {
|
private void initButtons() {
|
||||||
addButton(new ElementButton("返回"));
|
addButton(new ElementButton("返回"));
|
||||||
addButton(new ElementButton("上次死亡地点"));
|
addButton(new ElementButton("上次死亡地点"));
|
||||||
|
addButton(new ElementButton("玩家"));
|
||||||
addButton(new ElementButton("主城"));
|
addButton(new ElementButton("主城"));
|
||||||
Map<String, UserLocation> userLocationMap = rePlayer.getUserLocationMap();
|
Map<String, UserLocation> userLocationMap = rePlayer.getUserLocationMap();
|
||||||
Iterator iterator = userLocationMap.entrySet().iterator();
|
Iterator iterator = userLocationMap.entrySet().iterator();
|
||||||
@ -71,7 +72,8 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
case "玩家":
|
case "玩家":
|
||||||
|
FormWindowTeleportPlayer formWindowTeleportPlayer = new FormWindowTeleportPlayer(player);
|
||||||
|
player.showFormWindow(formWindowTeleportPlayer);
|
||||||
return;
|
return;
|
||||||
case "主城":
|
case "主城":
|
||||||
Position spawnLocation = player.getLevel().getSpawnLocation();
|
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 class ToastUtils {
|
||||||
|
|
||||||
public static final int INFO_TYPE_ERROR = 0;
|
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) {
|
public static void Show(Player player, int infoType, String info) {
|
||||||
player.sendPopup(TextFormat.colorize(infoTypeArr[infoType] + info));
|
player.sendPopup(TextFormat.colorize(infoTypeArr[infoType] + info));
|
||||||
|
Reference in New Issue
Block a user