update dpos

This commit is contained in:
AlphaAE
2019-05-12 02:09:35 +08:00
parent d49869a929
commit 78d0995772
5 changed files with 55 additions and 6 deletions

View File

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

View File

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

View File

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

View File

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

View File

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