静态储存完成

This commit is contained in:
AlphaAE
2019-04-30 11:54:27 +08:00
parent be5a27d7e3
commit a1ec4ccbfa
6 changed files with 132 additions and 21 deletions

View File

@ -5,7 +5,12 @@ import cn.nukkit.command.Command;
import cn.nukkit.command.CommandSender; import cn.nukkit.command.CommandSender;
import cn.nukkit.utils.TextFormat; import cn.nukkit.utils.TextFormat;
import com.alphaae.mcpe.servers.MainPlugin; import com.alphaae.mcpe.servers.MainPlugin;
import com.alphaae.mcpe.servers.StaticData;
import com.alphaae.mcpe.servers.form.FormWindowMy; import com.alphaae.mcpe.servers.form.FormWindowMy;
import com.alphaae.mcpe.servers.model.RePlayer;
import com.alphaae.mcpe.servers.utils.ChangePlayerCoinUtils;
import java.util.UUID;
public class HiCommand extends Command { public class HiCommand extends Command {
private MainPlugin plugin; private MainPlugin plugin;
@ -24,9 +29,12 @@ public class HiCommand extends Command {
} }
Player player = commandSender.getServer().getPlayer(commandSender.getName()); Player player = commandSender.getServer().getPlayer(commandSender.getName());
UUID uuid = player.getUniqueId();
if (commandSender.isPlayer()) { if (commandSender.isPlayer()) {
FormWindowMy form = new FormWindowMy(player); // FormWindowMy form = new FormWindowMy(player);
player.showFormWindow(form); // player.showFormWindow(form);
RePlayer rePlayer = StaticData.rePlayerMap.get(uuid);
ChangePlayerCoinUtils.ReduceIcon(rePlayer, 100);
return true; return true;
} }
return false; return false;

View File

@ -3,10 +3,6 @@ package com.alphaae.mcpe.servers.event.block.joinquit;
import cn.nukkit.Player; import cn.nukkit.Player;
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 cn.nukkit.form.element.ElementButton;
import cn.nukkit.form.element.ElementButtonImageData;
import cn.nukkit.form.window.FormWindowSimple;
import cn.nukkit.scheduler.NukkitRunnable;
import cn.nukkit.scheduler.Task; import cn.nukkit.scheduler.Task;
import cn.nukkit.scheduler.TaskHandler; import cn.nukkit.scheduler.TaskHandler;
import cn.nukkit.utils.TextFormat; import cn.nukkit.utils.TextFormat;
@ -27,6 +23,7 @@ public class DisplayInfoBlock implements JoinQuitEventBlock {
@Override @Override
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
final Player player = event.getPlayer(); final Player player = event.getPlayer();
final UUID uuid = player.getUniqueId();
try { try {
infoHandler = MainPlugin.getPlugin().getServer().getScheduler().scheduleDelayedRepeatingTask(new Task() { infoHandler = MainPlugin.getPlugin().getServer().getScheduler().scheduleDelayedRepeatingTask(new Task() {
@ -34,13 +31,12 @@ public class DisplayInfoBlock implements JoinQuitEventBlock {
public void onRun(int i) { public void onRun(int i) {
String name = player.getDisplayName(); String name = player.getDisplayName();
int ping = player.getPing(); int ping = player.getPing();
UUID uuid = player.getUniqueId();
RePlayer rePlayer = StaticData.rePlayerMap.get(uuid); RePlayer rePlayer = StaticData.rePlayerMap.get(uuid);
int coin = rePlayer.getCoin(); int coin = rePlayer.getCoin();
player.sendActionBar(TextFormat.colorize("" + name + " &f延迟: " + ping + "ms 硬币: " + coin)); player.sendActionBar(TextFormat.colorize("" + name + " &f延迟: " + ping + "ms 硬币: " + coin));
} }
}, Config.JOIN_WAITING_TIME, 12); }, Config.JOIN_WAITING_TIME, 36);
} catch (Exception e) { } catch (Exception e) {
infoHandler.cancel(); infoHandler.cancel();
e.printStackTrace(); e.printStackTrace();

View File

@ -6,6 +6,7 @@ import cn.nukkit.event.player.PlayerQuitEvent;
import cn.nukkit.utils.TextFormat; import cn.nukkit.utils.TextFormat;
import com.alphaae.mcpe.servers.StaticData; import com.alphaae.mcpe.servers.StaticData;
import com.alphaae.mcpe.servers.model.RePlayer; import com.alphaae.mcpe.servers.model.RePlayer;
import com.alphaae.mcpe.servers.utils.PlayerDataLoadUtils;
public class LoadPlayerDataBlock implements JoinQuitEventBlock { public class LoadPlayerDataBlock implements JoinQuitEventBlock {
@ -14,12 +15,11 @@ public class LoadPlayerDataBlock implements JoinQuitEventBlock {
Player player = event.getPlayer(); Player player = event.getPlayer();
//读取数据 //读取数据
RePlayer rePlayer = PlayerDataLoadUtils.LoadData(player);
String title = "[称号]"; String title = rePlayer.getTitle();
player.setDisplayName(TextFormat.colorize("&e" + title + " &b" + player.getName() + "&f")); player.setDisplayName(TextFormat.colorize("&e[" + title + "] &b" + player.getName() + "&f"));
RePlayer rePlayer = new RePlayer(player, title, 4000);
StaticData.rePlayerMap.put(player.getUniqueId(), rePlayer); StaticData.rePlayerMap.put(player.getUniqueId(), rePlayer);
} }
@ -28,4 +28,6 @@ public class LoadPlayerDataBlock implements JoinQuitEventBlock {
Player player = event.getPlayer(); Player player = event.getPlayer();
StaticData.rePlayerMap.remove(player.getUniqueId()); StaticData.rePlayerMap.remove(player.getUniqueId());
} }
} }

View File

@ -1,30 +1,40 @@
package com.alphaae.mcpe.servers.model; package com.alphaae.mcpe.servers.model;
import cn.nukkit.Player; import java.io.Serializable;
import java.util.UUID;
public class RePlayer {
private Player player;
public class RePlayer implements Serializable {
private UUID uuid;
private String title; private String title;
private int coin; private int coin;
public RePlayer(Player player, String title, int coin) { public RePlayer(UUID uuid, String title, int coin) {
this.player = player; this.uuid = uuid;
this.title = title; this.title = title;
this.coin = coin; this.coin = coin;
} }
public Player getPlayer() { public UUID getUuid() {
return player; return uuid;
} }
public void setUuid(UUID uuid) {
this.uuid = uuid;
}
public String getTitle() { public String getTitle() {
return title; return title;
} }
public void setTitle(String title) {
this.title = title;
}
public int getCoin() { public int getCoin() {
return coin; return coin;
} }
public void setCoin(int coin) {
this.coin = coin;
}
} }

View File

@ -0,0 +1,30 @@
package com.alphaae.mcpe.servers.utils;
import cn.nukkit.Player;
import com.alphaae.mcpe.servers.MainPlugin;
import com.alphaae.mcpe.servers.model.RePlayer;
public class ChangePlayerCoinUtils {
public static boolean IncreaseIcon(RePlayer rePlayer, int count) {
int userCoin = rePlayer.getCoin();
int newCoin = userCoin + count;
rePlayer.setCoin(newCoin);
return PlayerDataLoadUtils.ChangeData(rePlayer);
}
public static boolean ReduceIcon(RePlayer rePlayer, int count) {
int userCoin = rePlayer.getCoin();
int newCoin = userCoin - count;
if (newCoin >= 0) {
rePlayer.setCoin(newCoin);
return PlayerDataLoadUtils.ChangeData(rePlayer);
}
Player player = MainPlugin.getPlugin().getServer().getPlayer(rePlayer.getUuid()).get();
player.sendMessage("");
return false;
}
}

View File

@ -0,0 +1,65 @@
package com.alphaae.mcpe.servers.utils;
import cn.nukkit.Player;
import com.alphaae.mcpe.servers.MainPlugin;
import com.alphaae.mcpe.servers.model.RePlayer;
import java.io.*;
import java.util.UUID;
public class PlayerDataLoadUtils {
private static final String FILE_TYPE = ".replayer";
private static final File DATA_FOLDER = MainPlugin.getPlugin().getDataFolder();
private static final File PLAYER_DATA_FOLDER = new File(DATA_FOLDER, "PlayerData");
static {
if (!PLAYER_DATA_FOLDER.exists()) {
PLAYER_DATA_FOLDER.mkdirs();
}
}
public static RePlayer LoadData(Player player) {
UUID uuid = player.getUniqueId();
try {
File playerDataFile = new File(PLAYER_DATA_FOLDER, uuid.toString() + FILE_TYPE);
if (!playerDataFile.exists()) {
CreateNewPlayerData(playerDataFile, uuid);
}
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(playerDataFile));
RePlayer rePlayer = (RePlayer) inputStream.readObject();
return rePlayer;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static boolean ChangeData(RePlayer rePlayer) {
File playerDataFile = new File(PLAYER_DATA_FOLDER, rePlayer.getUuid().toString() + FILE_TYPE);
try {
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(playerDataFile, false));
outputStream.writeObject(rePlayer);
outputStream.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
private static boolean CreateNewPlayerData(File playerDataFile, UUID uuid) {
try {
playerDataFile.createNewFile();
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(playerDataFile));
RePlayer rePlayer = new RePlayer(uuid, "新火", 2000);
outputStream.writeObject(rePlayer);
outputStream.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}