diff --git a/src/main/java/com/denizenscript/denizencore/scripts/queues/ScriptQueue.java b/src/main/java/com/denizenscript/denizencore/scripts/queues/ScriptQueue.java index a53cfb63..e6655d71 100644 --- a/src/main/java/com/denizenscript/denizencore/scripts/queues/ScriptQueue.java +++ b/src/main/java/com/denizenscript/denizencore/scripts/queues/ScriptQueue.java @@ -50,25 +50,6 @@ public static ScriptQueue getExistingQueue(String id) { } } - public static String getNextId(String prefix) { - // DUUIDs v2.1 - int size = QueueWordList.FinalWordList.size(); - String id = prefix + "_" - + QueueWordList.FinalWordList.get(CoreUtilities.getRandom().nextInt(size)) - + QueueWordList.FinalWordList.get(CoreUtilities.getRandom().nextInt(size)) - + QueueWordList.FinalWordList.get(CoreUtilities.getRandom().nextInt(size)); - // DUUIDs v3.1 - /* - String id = prefix.replace(' ', '_') - + "_" - + randomEntry(QueueWordList.Pronouns) - + randomEntry(QueueWordList.Verbs) - + randomEntry(QueueWordList.Modifiers) - + randomEntry(QueueWordList.Adjectives) - + randomEntry(QueueWordList.Nouns);*/ - return allQueues.containsKey(id) ? getNextId(prefix) : id; - } - protected static LinkedHashMap allQueues = new LinkedHashMap<>(); public static Collection getQueues() { @@ -122,7 +103,7 @@ public static boolean queueExists(String id) { protected ScriptQueue(String id) { this.id = id; - generateId(id); + generateId(id, 0); total_queues++; } @@ -213,7 +194,7 @@ public void delayUntil(long delayTime) { // Public 'functional' methods ////////////////// - public void generateId(String prefix) { + public void generateId(String prefix, int depth) { if (prefix.startsWith("FORCE:")) { id = prefix.substring("FORCE:".length()); debugId = id; @@ -224,16 +205,19 @@ public void generateId(String prefix) { Random random = CoreUtilities.getRandom(); String wordOne = QueueWordList.FinalWordList.get(random.nextInt(size)); String wordTwo = QueueWordList.FinalWordList.get(random.nextInt(size)); - String wordThree = QueueWordList.FinalWordList.get(random.nextInt(size)); - id = prefix + "_" + wordOne + wordTwo + wordThree; - if (queueExists(id)) { - generateId(prefix); - return; - } String colorOne = DenizenCore.getImplementation().getRandomColor(); String colorTwo = DenizenCore.getImplementation().getRandomColor(); - String colorThree = DenizenCore.getImplementation().getRandomColor(); - debugId = prefix + "_" + colorOne + wordOne + colorTwo + wordTwo + colorThree + wordThree; + id = prefix + "_" + wordOne + wordTwo; + debugId = "" + prefix + "_" + colorOne + wordOne + colorTwo + wordTwo; + for (int i = 0; i < depth; i++) { + String wordThree = QueueWordList.FinalWordList.get(random.nextInt(size)); + String colorThree = DenizenCore.getImplementation().getRandomColor(); + id += wordThree; + debugId += colorThree + wordThree; + } + if (queueExists(id)) { + generateId(prefix, depth + 1); + } } public ScriptQueue replacementQueue = null; diff --git a/src/main/java/com/denizenscript/denizencore/scripts/queues/core/InstantQueue.java b/src/main/java/com/denizenscript/denizencore/scripts/queues/core/InstantQueue.java index 74ac8402..0a1aa365 100644 --- a/src/main/java/com/denizenscript/denizencore/scripts/queues/core/InstantQueue.java +++ b/src/main/java/com/denizenscript/denizencore/scripts/queues/core/InstantQueue.java @@ -5,41 +5,6 @@ public class InstantQueue extends ScriptQueue { - /** - * Gets an InstantQueue instance. - *

- * If a queue already exists with the given id, it will return that instance, - * which may be currently running, unless the type of Queue is not an InstantQueue. - * If a queue does not exist, a new stopped queue is created instead. - *

- * IDs are case insensitive. If having an easy-to-recall ID is not necessary, just - * pass along null as the id, and it will use ScriptQueue's static method _getNextId() - * which will return a random UUID. - *

- * The default speed node will be automatically read from the configuration, - * and new ScriptQueues may need further information before they - * can start(), including entries, delays, loops, and possibly context. - * - * @param id unique id of the queue - * @return a ScriptQueue - */ - public static InstantQueue getQueue(String id) { - // Get id if not specified. - if (id == null) { - throw new IllegalArgumentException("ID cannot be null!"); - } - InstantQueue scriptQueue; - // Does the queue already exist? - if (queueExists(id)) { - scriptQueue = (InstantQueue) allQueues.get(id); - } - // If not, create a new one. - else { - scriptQueue = new InstantQueue(id); - } - return scriptQueue; - } - ///////////////////// // Private instance fields and constructors ///////////////////// diff --git a/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java b/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java index b1dcb324..3dcb6fb9 100644 --- a/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java +++ b/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java @@ -5,10 +5,10 @@ import com.denizenscript.denizencore.objects.core.ElementTag; import com.denizenscript.denizencore.objects.core.ListTag; import com.denizenscript.denizencore.objects.core.TimeTag; -import com.denizenscript.denizencore.scripts.queues.ScriptQueue; import com.denizenscript.denizencore.tags.TagRunnable; import com.denizenscript.denizencore.utilities.CoreUtilities; import com.denizenscript.denizencore.utilities.Deprecations; +import com.denizenscript.denizencore.utilities.QueueWordList; import com.denizenscript.denizencore.utilities.YamlConfiguration; import com.denizenscript.denizencore.utilities.debugging.Debug; import com.denizenscript.denizencore.DenizenCore; @@ -156,9 +156,12 @@ else if (attribute.startsWith("uuid")) { // Optionally specify the source context to base the value on. // --> else if (attribute.startsWith("duuid")) { - event.setReplacedObject(CoreUtilities.autoAttrib(new ElementTag( - ScriptQueue.getNextId(attribute.hasContext(1) ? attribute.getContext(1) : "DUUID")), - attribute.fulfill(1))); + int size = QueueWordList.FinalWordList.size(); + String id = (attribute.hasContext(1) ? attribute.getContext(1) : "DUUID") + "_" + + QueueWordList.FinalWordList.get(CoreUtilities.getRandom().nextInt(size)) + + QueueWordList.FinalWordList.get(CoreUtilities.getRandom().nextInt(size)) + + QueueWordList.FinalWordList.get(CoreUtilities.getRandom().nextInt(size)); + event.setReplacedObject(CoreUtilities.autoAttrib(new ElementTag(id), attribute.fulfill(1))); } }