update dpos
This commit is contained in:
@ -6,10 +6,7 @@ import cn.nukkit.plugin.PluginBase;
|
||||
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.FormRespondedEvent;
|
||||
import com.alphaae.mcpe.servers.event.PlayerInventoryEvent;
|
||||
import com.alphaae.mcpe.servers.event.PlayerInteractSetEvent;
|
||||
import com.alphaae.mcpe.servers.event.PlayerJoinQuitEvent;
|
||||
import com.alphaae.mcpe.servers.event.*;
|
||||
|
||||
public class MainPlugin extends PluginBase {
|
||||
|
||||
@ -54,6 +51,7 @@ public class MainPlugin extends PluginBase {
|
||||
pluginManager.registerEvents(new PlayerJoinQuitEvent(), this);
|
||||
pluginManager.registerEvents(new PlayerInteractSetEvent(), this);
|
||||
pluginManager.registerEvents(new FormRespondedEvent(), this);
|
||||
pluginManager.registerEvents(new PlayerDeathRespawnEvent(), this);
|
||||
// pluginManager.registerEvents(new PlayerInventoryEvent(), this);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,35 @@
|
||||
package com.alphaae.mcpe.servers.event;
|
||||
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.event.EventHandler;
|
||||
import cn.nukkit.event.EventPriority;
|
||||
import cn.nukkit.event.Listener;
|
||||
import cn.nukkit.event.player.PlayerDeathEvent;
|
||||
import cn.nukkit.event.player.PlayerRespawnEvent;
|
||||
import cn.nukkit.item.Item;
|
||||
import cn.nukkit.level.Position;
|
||||
import com.alphaae.mcpe.servers.StaticData;
|
||||
import com.alphaae.mcpe.servers.model.RePlayer;
|
||||
import com.alphaae.mcpe.servers.model.UserLocation;
|
||||
|
||||
public class PlayerDeathRespawnEvent implements Listener {
|
||||
|
||||
//玩家死亡事件
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL)
|
||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||
Player player = event.getEntity();
|
||||
RePlayer rePlayer = StaticData.rePlayerMap.get(player.getUniqueId());
|
||||
|
||||
//记录死亡地点
|
||||
Position deathPosition = player.getPosition();
|
||||
rePlayer.putUserLocation("__deathPosition__", new UserLocation(deathPosition.getX(), deathPosition.getY(), deathPosition.getZ(), player.getLevel().getName()));
|
||||
}
|
||||
|
||||
//玩家重生事件
|
||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL)
|
||||
public void onPlayerRespawn(PlayerRespawnEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
player.getInventory().setHeldItemSlot(1);
|
||||
player.getInventory().addItem(new Item(347));
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@ import cn.nukkit.Player;
|
||||
import cn.nukkit.event.player.PlayerJoinEvent;
|
||||
import cn.nukkit.event.player.PlayerQuitEvent;
|
||||
import cn.nukkit.utils.TextFormat;
|
||||
import com.alphaae.mcpe.servers.MainPlugin;
|
||||
import com.alphaae.mcpe.servers.StaticData;
|
||||
import com.alphaae.mcpe.servers.model.RePlayer;
|
||||
import com.alphaae.mcpe.servers.utils.PlayerDataUtils;
|
||||
@ -31,7 +32,12 @@ public class LoadPlayerDataBlock implements JoinQuitEventBlock {
|
||||
Player player = event.getPlayer();
|
||||
UUID uuid = player.getUniqueId();
|
||||
RePlayer rePlayer = StaticData.rePlayerMap.get(uuid);
|
||||
PlayerDataUtils.SaveData(rePlayer);
|
||||
if (rePlayer != null) {
|
||||
PlayerDataUtils.SaveData(rePlayer);
|
||||
MainPlugin.getPlugin().getServer().getLogger().info("玩家退出服务器 数据保存成功!");
|
||||
} else {
|
||||
MainPlugin.getPlugin().getServer().getLogger().error("玩家退出服务器 数据丢失!");
|
||||
}
|
||||
StaticData.rePlayerMap.remove(uuid);
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,7 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent {
|
||||
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() + " )"));
|
||||
}
|
||||
@ -61,7 +62,15 @@ public class FormWindowTeleport extends FormWindowSimple implements FormEvent {
|
||||
player.showFormWindow(formWindowMeun);
|
||||
return;
|
||||
case "上次死亡地点":
|
||||
player.sendMessage("" + player.getLevel().getName());
|
||||
Map<String, UserLocation> userLocationMap = rePlayer.getUserLocationMap();
|
||||
UserLocation deathUserLocation = userLocationMap.get("__deathPosition__");
|
||||
if (deathUserLocation != null) {
|
||||
Level level = MainPlugin.getPlugin().getServer().getLevelByName(deathUserLocation.getLevelName());
|
||||
Position deathPosition = new Position(deathUserLocation.getX(), deathUserLocation.getY(), deathUserLocation.getZ(), level);
|
||||
player.teleport(deathPosition);
|
||||
} else {
|
||||
player.sendPopup(TextFormat.colorize("&4不存在死亡记录点"));
|
||||
}
|
||||
return;
|
||||
case "主城":
|
||||
Position spawnLocation = player.getLevel().getSpawnLocation();
|
||||
|
@ -86,6 +86,7 @@ public class PlayerDataUtils {
|
||||
try {
|
||||
UUID uuid = player.getUniqueId();
|
||||
//给予初始玩家的操作
|
||||
player.getInventory().setHeldItemSlot(1);
|
||||
player.getInventory().addItem(new Item(347));
|
||||
|
||||
RePlayer rePlayer = new RePlayer(uuid, "新火", 2000);
|
||||
|
Reference in New Issue
Block a user