Crash-proofing using scoreboard
This commit is contained in:
parent
c4eb6565f1
commit
a566c95087
4 changed files with 54 additions and 15 deletions
|
@ -8,6 +8,8 @@ import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
import org.bukkit.scoreboard.Score;
|
||||||
|
|
||||||
public class DeathListener implements Listener {
|
public class DeathListener implements Listener {
|
||||||
|
|
||||||
|
@ -19,23 +21,49 @@ public class DeathListener implements Listener {
|
||||||
@EventHandler(priority = EventPriority.MONITOR)
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onHardcoreDeath(PlayerDeathEvent deathEvent){
|
public void onHardcoreDeath(PlayerDeathEvent deathEvent){
|
||||||
|
|
||||||
|
|
||||||
String timeString = String.valueOf(System.currentTimeMillis());
|
String timeString = String.valueOf(System.currentTimeMillis());
|
||||||
Player player = deathEvent.getEntity();
|
Player player = deathEvent.getEntity();
|
||||||
String playerString = (String) player.getName();
|
String playerString = (String) player.getName();
|
||||||
Location location = player.getLocation();
|
Location location = player.getLocation();
|
||||||
String worldString = (String) location.getWorld().getName();
|
String worldString = (String) location.getWorld().getName();
|
||||||
|
|
||||||
player.sendMessage(timeString);
|
//player.sendMessage(timeString);
|
||||||
player.sendMessage(playerString);
|
//player.sendMessage(playerString);
|
||||||
player.sendMessage(worldString);
|
//player.sendMessage(worldString);
|
||||||
|
|
||||||
if (Objects.equals(worldString, "hardcore")){
|
if (Objects.equals(worldString, "hardcore")){
|
||||||
HelloWorldPlugin.deathMap.put(playerString, timeString);
|
HelloWorldPlugin.deathMap.put(playerString, timeString);
|
||||||
player.sendMessage(HelloWorldPlugin.deathMap.toString());
|
Score score = HelloWorldPlugin.hardcoreTimeDead.getScore(playerString);
|
||||||
|
score.setScore((int) (System.currentTimeMillis()/1000));
|
||||||
|
|
||||||
player.sendMessage("Key saved: " + playerString);
|
//player.sendMessage(HelloWorldPlugin.deathMap.toString());
|
||||||
player.sendMessage("Data saved: " + HelloWorldPlugin.deathMap.get(playerString));
|
//player.sendMessage("Key saved: " + playerString);
|
||||||
|
//player.sendMessage("Data saved: " + HelloWorldPlugin.deathMap.get(playerString));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
|
public void onPlayerLogin(PlayerJoinEvent joinEvent){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Player player = joinEvent.getPlayer();
|
||||||
|
String playerString = (String) player.getName();
|
||||||
|
Score score = null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try{
|
||||||
|
score = HelloWorldPlugin.hardcoreTimeDead.getScore(playerString);
|
||||||
|
}catch(IllegalArgumentException throwable){
|
||||||
|
score.setScore(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (HelloWorldPlugin.deathMap.get(playerString) == null && score.getScore() != 0){
|
||||||
|
HelloWorldPlugin.deathMap.put(playerString, String.valueOf((score.getScore()) * 1000));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,14 +26,14 @@ public class HelloWorld implements CommandExecutor {
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = System.currentTimeMillis();
|
||||||
String playername = sender.getName();
|
String playername = sender.getName();
|
||||||
long deathTime = 0;
|
long deathTime = 0;
|
||||||
sender.sendMessage("Playername: " + playername);
|
//sender.sendMessage("Playername: " + playername);
|
||||||
sender.sendMessage("Data Imported: " + HelloWorldPlugin.deathMap.get(playername));
|
//sender.sendMessage("Data Imported: " + HelloWorldPlugin.deathMap.get(playername));
|
||||||
|
|
||||||
if (HelloWorldPlugin.deathMap.get(playername) != null){
|
if (HelloWorldPlugin.deathMap.get(playername) != null){
|
||||||
deathTime = Long.parseLong(HelloWorldPlugin.deathMap.get(playername));
|
deathTime = Long.parseLong(HelloWorldPlugin.deathMap.get(playername));
|
||||||
sender.sendMessage("DeathTime: " + deathTime);
|
//sender.sendMessage("DeathTime: " + deathTime);
|
||||||
}else{
|
}else{
|
||||||
sender.sendMessage("you have never died in hardcore");
|
sender.sendMessage("You have never died in hardcore");
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
World hardcoreWorld = player.getServer().getWorld("hardcore");
|
World hardcoreWorld = player.getServer().getWorld("hardcore");
|
||||||
Location location = new Location(hardcoreWorld, 1280, 71, -179);
|
Location location = new Location(hardcoreWorld, 1280, 71, -179);
|
||||||
|
@ -43,7 +43,7 @@ public class HelloWorld implements CommandExecutor {
|
||||||
|
|
||||||
|
|
||||||
if (currentTime - deathTime >= 86400000 && deathTime != 0){
|
if (currentTime - deathTime >= 86400000 && deathTime != 0){
|
||||||
sender.sendMessage((86400000 - (currentTime - deathTime) ) /3600000 + " hours have passed since you died in hardcore last");
|
sender.sendMessage("You died " + (86400000 - (currentTime - deathTime) ) /3600000 + " hours ago. Ready to give it another shot?");
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
World hardcoreWorld = player.getServer().getWorld("hardcore");
|
World hardcoreWorld = player.getServer().getWorld("hardcore");
|
||||||
Location location = new Location(hardcoreWorld, 1280, 71, -179);
|
Location location = new Location(hardcoreWorld, 1280, 71, -179);
|
||||||
|
|
|
@ -3,13 +3,23 @@ package iie;
|
||||||
import java.util.AbstractMap;
|
import java.util.AbstractMap;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.bukkit.scoreboard.Objective;
|
||||||
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
|
|
||||||
|
|
||||||
public class HelloWorldPlugin extends JavaPlugin {
|
public class HelloWorldPlugin extends JavaPlugin {
|
||||||
|
|
||||||
|
public static Scoreboard board;
|
||||||
|
public static Objective hardcoreTimeDead;
|
||||||
public static AbstractMap<String,String> deathMap = new HashMap<String,String>();
|
public static AbstractMap<String,String> deathMap = new HashMap<String,String>();
|
||||||
|
|
||||||
public void onEnable(){
|
public void onEnable(){
|
||||||
registerCommands();
|
registerCommands();
|
||||||
getServer().getPluginManager().registerEvents(new DeathListener(this), this);
|
getServer().getPluginManager().registerEvents(new DeathListener(this), this);
|
||||||
|
board = Bukkit.getServer().getScoreboardManager().getMainScoreboard();
|
||||||
|
hardcoreTimeDead = board.registerNewObjective("hardcoreTimeDead", "dummy");
|
||||||
}
|
}
|
||||||
public void registerCommands(){
|
public void registerCommands(){
|
||||||
getCommand("HelloWorld").setExecutor(new HelloWorld(this));
|
getCommand("HelloWorld").setExecutor(new HelloWorld(this));
|
||||||
|
|
|
@ -17,13 +17,14 @@ public class publicstaticvoidmain {
|
||||||
test = 12345;
|
test = 12345;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test = (int) (System.currentTimeMillis()/1000);
|
||||||
System.out.println(test);
|
System.out.println(test);
|
||||||
|
|
||||||
|
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = System.currentTimeMillis();
|
||||||
int currentTimeInt = (int) (currentTime/1000);
|
int currentTimeInt = (int) (currentTime/1000);
|
||||||
|
|
||||||
System.out.println(currentTime);
|
System.out.println(currentTime + " current time");
|
||||||
System.out.println(currentTimeInt);
|
System.out.println(currentTimeInt);
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue