Skip to content

Commit

Permalink
use new script run internal API to push & shoot command
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Apr 14, 2020
1 parent 12c234e commit 0744a75
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 60 deletions.
Expand Up @@ -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 {

Expand Down Expand Up @@ -318,35 +319,17 @@ public void run() {
else {
this.cancel();
if (script != null) {
List<ScriptEntry> 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<ScriptQueue> 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);
}
Expand Down
Expand Up @@ -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;
Expand All @@ -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 {

Expand Down Expand Up @@ -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<ScriptEntry> 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())) {
Expand All @@ -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<ScriptQueue> 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);
Expand Down

0 comments on commit 0744a75

Please sign in to comment.