From ca5bdd88182f9d57abfd8886cc955c5dfb0eb495 Mon Sep 17 00:00:00 2001 From: arboriginal Date: Sat, 16 Feb 2019 01:45:43 +0100 Subject: [PATCH] Fixes and additions - Add message to player when target are auto-disabled - Add link to default config with explained parameters in config.yml header - Fix default compass modes - Fix potential bug with NPC (from unknow plugin? no pb with citizens) - Add a verification for invalid tracker names --- lang/en.yml | 2 ++ lang/fr.yml | 2 ++ src/config.yml | 7 +++++-- .../SimpleCompass/managers/DataManager.java | 2 +- .../SimpleCompass/managers/TargetManager.java | 3 +++ .../SimpleCompass/plugin/SimpleCompass.java | 4 ++-- .../arboriginal/SimpleCompass/utils/CacheUtil.java | 1 + .../arboriginal/SimpleCompass/utils/ConfigUtil.java | 13 +++++++++++++ src/plugin.yml | 2 +- 9 files changed, 30 insertions(+), 6 deletions(-) diff --git a/lang/en.yml b/lang/en.yml index 511b4b0..5901f9b 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -20,6 +20,8 @@ tracker_check_update_available: "* &6Tracker {tracker}: &bversion &l{version}&b tracker_check_update_failed: "* &6Tracker {tracker}: &eCan't check for update" # Message displayed when using the reload command and a tracker can't init correctly tracker_disabled: "{prefix}&cTracker {tracker} can't be reloaded, it has been disabled." +# Message displayed when you set an invalid name in a tracker's config and can't override the value +tracker_disabled_invalid_name: "{prefix}&cName of tracker {tracker} is invalid, it has been disabled." # Invalid choice in the config file for compasses default settings. invalid_choice: "{prefix}&cInvalid default choice for {type} ({key}), using default" diff --git a/lang/fr.yml b/lang/fr.yml index 8c4aa8c..1b58e0f 100644 --- a/lang/fr.yml +++ b/lang/fr.yml @@ -20,6 +20,8 @@ tracker_check_update_available: "* &6Tracker {tracker}: &bversion &l{version}&b tracker_check_update_failed: "* &6Tracker {tracker}: &eLa recherche de mise à jour a échoué" # Message affiché quand la commande reload est utilisée et qu'un tracker ne s'initialise pas correctement tracker_disabled: "{prefix}&cLe tracker {tracker} n'a pas pu être rechargé, il a été désactivé." +# Message affiché quand tu as mis un nom invalide dans la config d'un tracker +tracker_disabled_invalid_name: "{prefix}&cNom du tracker {tracker} invalide, il a été désactivé." # Choix invalide dans le fichier de config pour les réglages par défaut des boussoles. invalid_choice: "{prefix}&cChoix par défaut invalide pour {type} ({key}), utilisation de ceux par défaut" diff --git a/src/config.yml b/src/config.yml index 6c0f136..f15ae8f 100644 --- a/src/config.yml +++ b/src/config.yml @@ -1,5 +1,8 @@ -# Choose lang file you want to use, actually, only en and fr exists, but you can set what you want... -language: en # If this lang file doesn't exist, a new one is created (copy of english, so you can edit it). +# You can find the default config with description of parameters here: +# https://github.com/arboriginal/SimpleCompass/blob/master/src/config.yml + +language: en # Choose lang file you want to use, actually, only en and fr exists, but you can set what you want: +# If this lang file doesn't exist, a new one is created (copy of english, so you can edit it). # If true, when you (re)load the plugin, it try to check if a new version is available check_update: true diff --git a/src/me/arboriginal/SimpleCompass/managers/DataManager.java b/src/me/arboriginal/SimpleCompass/managers/DataManager.java index 37323bf..2e0682d 100644 --- a/src/me/arboriginal/SimpleCompass/managers/DataManager.java +++ b/src/me/arboriginal/SimpleCompass/managers/DataManager.java @@ -145,7 +145,7 @@ public CompassModes compassModeGet(Player player, CompassTypes type) { String key = compassModeKey(player, type); return CompassModes.valueOf(users.contains(key) ? users.getString(key) - : sc.config.getDefaults().getString("compass." + type + ".default.mode")); + : sc.config.getString("compass." + type + ".default.mode")); } public String compassModeKey(Player player, CompassTypes type) { diff --git a/src/me/arboriginal/SimpleCompass/managers/TargetManager.java b/src/me/arboriginal/SimpleCompass/managers/TargetManager.java index a1e62fb..19a3284 100644 --- a/src/me/arboriginal/SimpleCompass/managers/TargetManager.java +++ b/src/me/arboriginal/SimpleCompass/managers/TargetManager.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.UUID; import org.bukkit.entity.Player; +import com.google.common.collect.ImmutableMap; import me.arboriginal.SimpleCompass.plugin.AbstractTracker; import me.arboriginal.SimpleCompass.plugin.SimpleCompass; @@ -123,6 +124,8 @@ public HashMap> getTargetsCoords(Player player) { stop.forEach((tracker, stopped) -> { stopped.forEach(name -> { tracker.disable(player, name); + tracker.sendMessage(player, "target_auto_disabled", + ImmutableMap.of("tracker", tracker.trackerName(), "target", name)); }); }); } diff --git a/src/me/arboriginal/SimpleCompass/plugin/SimpleCompass.java b/src/me/arboriginal/SimpleCompass/plugin/SimpleCompass.java index 6370758..c5f5439 100644 --- a/src/me/arboriginal/SimpleCompass/plugin/SimpleCompass.java +++ b/src/me/arboriginal/SimpleCompass/plugin/SimpleCompass.java @@ -365,8 +365,8 @@ private Exception loadTrackerFile(File file) { return loadTrackerException(loader, jar, "Tracker {tracker} is using the ID {id} which is already used by {other}..." .replace("{tracker}", file.getName()).replace("id", trackerID) - .replace("{other}", trackers.get(trackerID).getClass().getSimpleName())); - + .replace("{other}", trackers.get(trackerID).getClass().getSimpleName())); + if (!((AbstractTracker) tracker).init()) return loadTrackerException(loader, jar, "Tracker {tracker} failed on init...".replace("{tracker}", file.getName()).replace("id", trackerID)); diff --git a/src/me/arboriginal/SimpleCompass/utils/CacheUtil.java b/src/me/arboriginal/SimpleCompass/utils/CacheUtil.java index 7efb9c4..c4090d7 100644 --- a/src/me/arboriginal/SimpleCompass/utils/CacheUtil.java +++ b/src/me/arboriginal/SimpleCompass/utils/CacheUtil.java @@ -57,6 +57,7 @@ public void clear(UUID uid, String key) { } public Object get(UUID uid, String key) { + if (!datas.containsKey(uid)) return null; Data data = datas.get(uid).get(key); return (data != null && (data.expire == PERMANENT || data.expire > now())) ? data.value : null; } diff --git a/src/me/arboriginal/SimpleCompass/utils/ConfigUtil.java b/src/me/arboriginal/SimpleCompass/utils/ConfigUtil.java index cafb9a9..c74ddc1 100644 --- a/src/me/arboriginal/SimpleCompass/utils/ConfigUtil.java +++ b/src/me/arboriginal/SimpleCompass/utils/ConfigUtil.java @@ -1,6 +1,7 @@ package me.arboriginal.SimpleCompass.utils; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -18,6 +19,7 @@ import me.arboriginal.SimpleCompass.compasses.AbstractCompass.CompassModes; import me.arboriginal.SimpleCompass.compasses.AbstractCompass.CompassTypes; import me.arboriginal.SimpleCompass.managers.CompassManager.RequirementsSections; +import me.arboriginal.SimpleCompass.plugin.AbstractTracker; import me.arboriginal.SimpleCompass.plugin.AbstractTracker.TrackingActions; import me.arboriginal.SimpleCompass.plugin.SimpleCompass; @@ -222,6 +224,17 @@ private List validateRequiredItems(CompassTypes type, RequirementsSectio } private void validateTrackerSettings() { + Iterator it = sc.trackers.keySet().iterator(); + while (it.hasNext()) { + String trackerID = it.next(); + + if (!((AbstractTracker) sc.trackers.get(trackerID)).trackerName().toLowerCase().matches("^[a-z0-9]+$")) { + it.remove(); + sc.sendMessage(sc.getServer().getConsoleSender(), "tracker_disabled_invalid_name", + ImmutableMap.of("tracker", trackerID)); + } + } + List userPriorities = sc.config.getStringList("trackers_priorities"); List readPriorities = new ArrayList(); diff --git a/src/plugin.yml b/src/plugin.yml index 74e3c21..f6bff91 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: SimpleCompass description: Simple compass to help player who don't have sense of direction. -version: 0.9.6 +version: 0.9.7 author: arboriginal website: https://www.spigotmc.org/resources/simplecompass.63140/