From 020367fc5ea047eabb5685680e5bcc855cb3e2e2 Mon Sep 17 00:00:00 2001 From: montlikadani Date: Mon, 30 Sep 2019 19:51:05 +0200 Subject: [PATCH] Fixed issue for sign updates --- .../com/gamingmesh/jobs/Signs/SignUtil.java | 41 ++++++++++++------- .../jobs/listeners/JobsListener.java | 17 +++----- 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/Signs/SignUtil.java b/src/main/java/com/gamingmesh/jobs/Signs/SignUtil.java index 63afd031..2372439b 100644 --- a/src/main/java/com/gamingmesh/jobs/Signs/SignUtil.java +++ b/src/main/java/com/gamingmesh/jobs/Signs/SignUtil.java @@ -72,6 +72,13 @@ public class SignUtil { old.put(loc, jSign); } + public void cancelSignTask() { + if (update > -1) { + Bukkit.getScheduler().cancelTask(update); + update = -1; + } + } + // Sign file public void LoadSigns() { // Boolean false does not create a file @@ -131,6 +138,7 @@ public class SignUtil { Jobs.consoleMsg("&e[Jobs] Loaded " + SignsByLocation.size() + " top list signs"); } + cancelSignTask(); signUpdate(); } @@ -164,7 +172,9 @@ public class SignUtil { } catch (IOException e) { e.printStackTrace(); } - return; + + cancelSignTask(); + signUpdate(); } private int update = -1; @@ -175,10 +185,12 @@ public class SignUtil { @Override public void run() { for (Entry> one : SignsByType.entrySet()) { - SignUpdate(Jobs.getJob(one.getKey())); + for (Entry j : SignsByLocation.entrySet()) { + SignUpdate(Jobs.getJob(one.getKey()), j.getValue().getType()); + } } } - }, 60 * 20L, Jobs.getGCManager().InfoUpdateInterval * 20L); + }, 30 * 20L, Jobs.getGCManager().InfoUpdateInterval * 20L); } } @@ -194,18 +206,17 @@ public class SignUtil { if (!Jobs.getGCManager().SignsEnabled) return true; - if (update == -1) { - signUpdate(); - } - - if (job == null) - return false; + signUpdate(); if (type == null) type = SignTopType.toplist; - String JobNameOrType = jobsSign.getIdentifier(job, type); - HashMap signs = this.SignsByType.get(JobNameOrType.toLowerCase()); + String JobNameOrType = null; + HashMap signs = null; + if (job != null) { + JobNameOrType = jobsSign.getIdentifier(job, type); + signs = this.SignsByType.get(JobNameOrType.toLowerCase()); + } if (signs == null) return false; @@ -255,9 +266,11 @@ public class SignUtil { Block block = loc.getBlock(); if (!(block.getState() instanceof org.bukkit.block.Sign)) { - HashMap tt = this.SignsByType.get(JobNameOrType.toLowerCase()); - if (tt != null) { - tt.remove(jSign.locToBlockString()); + if (JobNameOrType != null) { + HashMap tt = this.SignsByType.get(JobNameOrType.toLowerCase()); + if (tt != null) { + tt.remove(jSign.locToBlockString()); + } } this.SignsByLocation.remove(jSign.locToBlockString()); save = true; diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsListener.java index ac1a41da..85145486 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsListener.java @@ -425,6 +425,7 @@ public class JobsListener implements Listener { player.sendMessage(Jobs.getLanguage().getMessage("signs.cantdestroy")); return; } + if (Jobs.getSignUtil().removeSign(block.getLocation())) Jobs.getSignUtil().saveSigns(); } @@ -444,13 +445,11 @@ public class JobsListener implements Listener { Sign sign = (Sign) block.getState(); - final String signtype = ChatColor.stripColor(event.getLine(1)); - - SignTopType type = SignTopType.getType(signtype); - if (!ChatColor.stripColor(event.getLine(0)).equalsIgnoreCase("[Jobs]")) return; + final String signtype = ChatColor.stripColor(event.getLine(1)); + final SignTopType type = SignTopType.getType(signtype); if (type == null) return; @@ -490,7 +489,6 @@ public class JobsListener implements Listener { } jobsSign signInfo = new jobsSign(); - SignUtil signUtil = Jobs.getSignUtil(); Location loc = sign.getLocation(); signInfo.setLoc(loc); @@ -502,6 +500,8 @@ public class JobsListener implements Listener { signInfo.setSpecial(special); + final SignUtil signUtil = Jobs.getSignUtil(); + signUtil.addSign(signInfo); signUtil.saveSigns(); event.setCancelled(true); @@ -659,12 +659,7 @@ public class JobsListener implements Listener { String name = null; List lore = new ArrayList<>(); - Map enchants = new HashMap<>(); - try { - enchants = iih.getEnchantments(); - } catch (Throwable e) { - return; - } + Map enchants = new HashMap<>(iih.getEnchantments()); if (enchants.isEmpty()) return;