diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/PushCommand.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/PushCommand.java index 579f10b60f..bd96914154 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/PushCommand.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/PushCommand.java @@ -19,12 +19,13 @@ import com.denizenscript.denizencore.scripts.commands.AbstractCommand; import com.denizenscript.denizencore.scripts.commands.Holdable; import com.denizenscript.denizencore.scripts.queues.ScriptQueue; -import com.denizenscript.denizencore.scripts.queues.core.InstantQueue; +import com.denizenscript.denizencore.utilities.ScriptUtilities; import org.bukkit.Location; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; import java.util.List; +import java.util.function.Consumer; public class PushCommand extends AbstractCommand implements Holdable { @@ -318,35 +319,17 @@ public void run() { else { this.cancel(); if (script != null) { - List entries = script.getContainer().getBaseEntries(scriptEntry.entryData.clone()); - ScriptQueue queue = new InstantQueue(script.getContainer().getName()) - .addEntries(entries); - if (lastEntity.getLocation() != null) { - queue.addDefinition("location", lastEntity.getLocation()); - } - else { - queue.addDefinition("location", lastLocation); - } - queue.addDefinition("pushed_entities", entityList); - queue.addDefinition("last_entity", lastEntity); - if (definitions != null) { - int x = 1; - String[] definition_names = null; - try { - definition_names = script.getContainer().getString("definitions").split("\\|"); + Consumer configure = (queue) -> { + if (lastEntity.getLocation() != null) { + queue.addDefinition("location", lastEntity.getLocation()); } - catch (Exception e) { - // TODO: less lazy handling + else { + queue.addDefinition("location", lastLocation); } - for (String definition : definitions) { - String name = definition_names != null && definition_names.length >= x ? - definition_names[x - 1].trim() : String.valueOf(x); - queue.addDefinition(name, definition); - Debug.echoDebug(scriptEntry, "Adding definition %" + name + "% as " + definition); - x++; - } - } - queue.start(); + queue.addDefinition("pushed_entities", entityList); + queue.addDefinition("last_entity", lastEntity); + }; + ScriptUtilities.createAndStartQueue(script.getContainer(), null, scriptEntry.entryData, null, configure, null, null, definitions, scriptEntry); } scriptEntry.setFinished(true); } diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/ShootCommand.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/ShootCommand.java index 67c067b624..be139862d6 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/ShootCommand.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/ShootCommand.java @@ -18,8 +18,8 @@ import com.denizenscript.denizencore.scripts.commands.AbstractCommand; import com.denizenscript.denizencore.scripts.commands.Holdable; import com.denizenscript.denizencore.scripts.queues.ScriptQueue; -import com.denizenscript.denizencore.scripts.queues.core.InstantQueue; import com.denizenscript.denizencore.utilities.CoreUtilities; +import com.denizenscript.denizencore.utilities.ScriptUtilities; import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.entity.Projectile; @@ -33,6 +33,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.function.Consumer; public class ShootCommand extends AbstractCommand implements Listener, Holdable { @@ -378,17 +379,6 @@ else if (lastLocation != null && lastVelocity != null) { if (lastVelocity == null) { lastVelocity = start_vel; } - - // Build a queue out of the targeted script - List entries = script.getContainer().getBaseEntries(scriptEntry.entryData.clone()); - ScriptQueue queue = new InstantQueue(script.getContainer().getName()).addEntries(entries); - - // Add relevant definitions - queue.addDefinition("location", lastLocation); - queue.addDefinition("shot_entities", entityList); - queue.addDefinition("last_entity", lastEntity); - - // Handle hit_entities definition ListTag hitEntities = new ListTag(); for (EntityTag entity : entities) { if (arrows.containsKey(entity.getUUID())) { @@ -399,26 +389,13 @@ else if (lastLocation != null && lastVelocity != null) { } } } - queue.addDefinition("hit_entities", hitEntities); - if (definitions != null) { - int x = 1; - String[] definition_names = null; - try { - definition_names = script.getContainer().getString("definitions").split("\\|"); - } - catch (Exception e) { - // TODO: less lazy handling - } - for (String definition : definitions) { - String name = definition_names != null && definition_names.length >= x ? - definition_names[x - 1].trim() : String.valueOf(x); - queue.addDefinition(name, definition); - Debug.echoDebug(scriptEntry, "Adding definition '" + name + "' as " + definition); - x++; - } - } - // Start it! - queue.start(); + Consumer configure = (queue) -> { + queue.addDefinition("location", lastLocation); + queue.addDefinition("shot_entities", entityList); + queue.addDefinition("last_entity", lastEntity); + queue.addDefinition("hit_entities", hitEntities); + }; + ScriptUtilities.createAndStartQueue(script.getContainer(), null, scriptEntry.entryData, null, configure, null, null, definitions, scriptEntry); } scriptEntry.setFinished(true);