diff --git a/src/de/steamwar/misslewars/scripts/function/ScriptVoidFunction.java b/src/de/steamwar/misslewars/scripts/function/ScriptDoubleFunction.java
similarity index 88%
rename from src/de/steamwar/misslewars/scripts/function/ScriptVoidFunction.java
rename to src/de/steamwar/misslewars/scripts/function/ScriptDoubleFunction.java
index 2404a42..abafda1 100644
--- a/src/de/steamwar/misslewars/scripts/function/ScriptVoidFunction.java
+++ b/src/de/steamwar/misslewars/scripts/function/ScriptDoubleFunction.java
@@ -21,6 +21,6 @@ package de.steamwar.misslewars.scripts.function;
import de.steamwar.misslewars.scripts.RunnableScriptEvent;
-public interface ScriptVoidFunction {
- void execute(RunnableScriptEvent runnableScriptEvent);
+public interface ScriptDoubleFunction {
+ boolean execute(RunnableScriptEvent runnableScriptEvent, double... doubles);
}
diff --git a/src/de/steamwar/misslewars/scripts/function/ScriptBooleanFunction.java b/src/de/steamwar/misslewars/scripts/function/ScriptFunction.java
similarity index 95%
rename from src/de/steamwar/misslewars/scripts/function/ScriptBooleanFunction.java
rename to src/de/steamwar/misslewars/scripts/function/ScriptFunction.java
index 92d7c30..9874e01 100644
--- a/src/de/steamwar/misslewars/scripts/function/ScriptBooleanFunction.java
+++ b/src/de/steamwar/misslewars/scripts/function/ScriptFunction.java
@@ -21,6 +21,6 @@ package de.steamwar.misslewars.scripts.function;
import de.steamwar.misslewars.scripts.RunnableScriptEvent;
-public interface ScriptBooleanFunction {
+public interface ScriptFunction {
boolean execute(RunnableScriptEvent runnableScriptEvent);
}
diff --git a/src/de/steamwar/misslewars/scripts/function/ScriptVoidDoubleFunction.java b/src/de/steamwar/misslewars/scripts/function/ScriptVoidDoubleFunction.java
deleted file mode 100644
index 25a7f90..0000000
--- a/src/de/steamwar/misslewars/scripts/function/ScriptVoidDoubleFunction.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- This file is a part of the SteamWar software.
-
- Copyright (C) 2020 SteamWar.de-Serverteam
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see .
-*/
-
-package de.steamwar.misslewars.scripts.function;
-
-import de.steamwar.misslewars.scripts.RunnableScriptEvent;
-
-public interface ScriptVoidDoubleFunction {
- void execute(RunnableScriptEvent runnableScriptEvent, double... doubles);
-}
diff --git a/src/de/steamwar/misslewars/scripts/implemented/DelayScript.java b/src/de/steamwar/misslewars/scripts/implemented/DelayScript.java
index 98fd631..744f616 100644
--- a/src/de/steamwar/misslewars/scripts/implemented/DelayScript.java
+++ b/src/de/steamwar/misslewars/scripts/implemented/DelayScript.java
@@ -30,7 +30,7 @@ import java.util.Map;
public class DelayScript extends RunnableScript {
- private static Map delayMap = new HashMap<>();
+ private static final Map delayMap = new HashMap<>();
static {
delayMap.put("config.mineflytime", Config.ShieldFlyTime);
diff --git a/src/de/steamwar/misslewars/scripts/implemented/FilterScript.java b/src/de/steamwar/misslewars/scripts/implemented/FilterScript.java
index fc0a521..e89899d 100644
--- a/src/de/steamwar/misslewars/scripts/implemented/FilterScript.java
+++ b/src/de/steamwar/misslewars/scripts/implemented/FilterScript.java
@@ -23,17 +23,19 @@ import com.google.gson.JsonObject;
import de.steamwar.misslewars.MissileWars;
import de.steamwar.misslewars.scripts.RunnableScript;
import de.steamwar.misslewars.scripts.RunnableScriptEvent;
-import de.steamwar.misslewars.scripts.function.ScriptBooleanFunction;
+import de.steamwar.misslewars.scripts.function.ScriptFunction;
+import de.steamwar.misslewars.scripts.utils.JsonUtils;
import org.bukkit.Location;
import java.util.HashMap;
import java.util.Map;
+import static de.steamwar.misslewars.scripts.utils.JsonUtils.getBoolean;
import static de.steamwar.misslewars.scripts.utils.JsonUtils.getString;
public class FilterScript extends RunnableScript {
- private static Map filterMap = new HashMap<>();
+ private static final Map filterMap = new HashMap<>();
static {
filterMap.put("nearportal", runnableScriptEvent -> {
@@ -52,12 +54,12 @@ public class FilterScript extends RunnableScript {
});
}
- private boolean inverted = false;
- private ScriptBooleanFunction filter;
+ private boolean inverted;
+ private ScriptFunction filter;
public FilterScript(JsonObject filter) {
this.filter = filterMap.getOrDefault(getString(filter, "filter", "").toLowerCase(), null);
- if (filter.has("invert")) inverted = filter.getAsJsonPrimitive("invert").getAsBoolean();
+ inverted = getBoolean(filter, "invert", false);
}
@Override
diff --git a/src/de/steamwar/misslewars/scripts/implemented/LaunchScript.java b/src/de/steamwar/misslewars/scripts/implemented/LaunchScript.java
index 3d8bd71..550ef70 100644
--- a/src/de/steamwar/misslewars/scripts/implemented/LaunchScript.java
+++ b/src/de/steamwar/misslewars/scripts/implemented/LaunchScript.java
@@ -23,42 +23,26 @@ import com.google.gson.JsonObject;
import de.steamwar.misslewars.scripts.RunnableScript;
import de.steamwar.misslewars.scripts.RunnableScriptEvent;
import de.steamwar.misslewars.scripts.ScriptedItem;
-import de.steamwar.misslewars.scripts.function.ScriptVoidFunction;
+import de.steamwar.misslewars.scripts.function.ScriptFunction;
+import de.steamwar.misslewars.scripts.utils.EntityUtils;
import de.steamwar.misslewars.scripts.utils.ScriptShortcut;
-import org.bukkit.entity.Arrow;
-import org.bukkit.entity.Fireball;
import org.bukkit.entity.Projectile;
-import static de.steamwar.misslewars.scripts.utils.EntityUtils.setFireballOptions;
-import static de.steamwar.misslewars.scripts.utils.EntityUtils.setProjectileOptions;
-
public class LaunchScript extends RunnableScript {
- private ScriptVoidFunction launch = null;
+ private ScriptFunction launch = null;
public LaunchScript(JsonObject launch) {
- ScriptShortcut scriptShortcut = getEntity(launch.getAsJsonPrimitive("entity").getAsString());
+ ScriptShortcut scriptShortcut = EntityUtils.getEntity(launch.getAsJsonPrimitive("entity").getAsString(), EntityUtils.EntityType.Projectile);
if (scriptShortcut == null) return;
this.launch = runnableScriptEvent -> {
Projectile projectile = runnableScriptEvent.getPlayer().launchProjectile(scriptShortcut.entityClass);
scriptShortcut.consumer.accept(launch, projectile, runnableScriptEvent);
+ return false;
};
}
- private ScriptShortcut getEntity(String name) {
- switch (name.toLowerCase()) {
- case "fireball":
- return new ScriptShortcut<>(Fireball.class, (jsonObject, entity, runnableScriptEvent) -> {
- setFireballOptions(entity, jsonObject);
- entity.setDirection(runnableScriptEvent.getLocation().getDirection());
- });
- case "arrow":
- return new ScriptShortcut<>(Arrow.class, (jsonObject, entity, runnableScriptEvent) -> setProjectileOptions(entity, jsonObject));
- }
- return null;
- }
-
@Override
public boolean execute(RunnableScriptEvent runnableScriptEvent) {
if (launch == null) return false;
diff --git a/src/de/steamwar/misslewars/scripts/implemented/LocationScript.java b/src/de/steamwar/misslewars/scripts/implemented/LocationScript.java
index b2abed8..5fa280a 100644
--- a/src/de/steamwar/misslewars/scripts/implemented/LocationScript.java
+++ b/src/de/steamwar/misslewars/scripts/implemented/LocationScript.java
@@ -23,19 +23,20 @@ import com.google.gson.JsonObject;
import de.steamwar.misslewars.scripts.LocationType;
import de.steamwar.misslewars.scripts.RunnableScript;
import de.steamwar.misslewars.scripts.RunnableScriptEvent;
-import de.steamwar.misslewars.scripts.function.ScriptVoidDoubleFunction;
+import de.steamwar.misslewars.scripts.function.ScriptDoubleFunction;
import de.steamwar.misslewars.scripts.utils.JsonUtils;
import org.bukkit.Location;
import java.util.HashMap;
import java.util.Map;
+import static de.steamwar.misslewars.scripts.utils.JsonUtils.getDouble;
import static de.steamwar.misslewars.scripts.utils.JsonUtils.getString;
public class LocationScript extends RunnableScript {
- private static Map locationTypeMap = new HashMap<>();
- private static Map locationMap = new HashMap<>();
+ private static final Map locationTypeMap = new HashMap<>();
+ private static final Map locationMap = new HashMap<>();
static {
locationTypeMap.put("static", LocationType.STATIC);
@@ -44,31 +45,36 @@ public class LocationScript extends RunnableScript {
locationTypeMap.put("default", LocationType.DEFAULT);
locationMap.put("offsetentity", (runnableScriptEvent, doubles) -> {
- if (runnableScriptEvent.entity == null) return;
+ if (runnableScriptEvent.entity == null) return false;
Location location1 = runnableScriptEvent.entity.getLocation();
runnableScriptEvent.setCustomLocation(location1.getX() + doubles[0], location1.getY() + doubles[1], location1.getZ() + doubles[2]);
+ return false;
});
locationMap.put("offsetlocation", (runnableScriptEvent, doubles) -> {
Location location1 = runnableScriptEvent.getLocation();
runnableScriptEvent.setCustomLocation(location1.getX() + doubles[0], location1.getY() + doubles[1], location1.getZ() + doubles[2]);
+ return false;
});
- ScriptVoidDoubleFunction absoluteLocation = (runnableScriptEvent, doubles) -> runnableScriptEvent.setCustomLocation(doubles[0], doubles[1], doubles[2]);
- locationMap.put("absolut", absoluteLocation);
+ ScriptDoubleFunction absoluteLocation = (runnableScriptEvent, doubles) -> {
+ runnableScriptEvent.setCustomLocation(doubles[0], doubles[1], doubles[2]);
+ return false;
+ };
+ locationMap.put("absolute", absoluteLocation);
locationMap.put("fix", absoluteLocation);
locationMap.put("fixed", absoluteLocation);
}
private LocationType locationType = null;
- private ScriptVoidDoubleFunction locationExecutor = null;
+ private ScriptDoubleFunction locationExecutor = null;
private double x, y, z = 0;
public LocationScript(JsonObject location) {
if (location.has("location")) {
JsonObject jsonObject = location.getAsJsonObject("location");
- JsonUtils.getDouble(jsonObject, "x", value -> x = value);
- JsonUtils.getDouble(jsonObject, "y", value -> y = value);
- JsonUtils.getDouble(jsonObject, "z", value -> z = value);
+ getDouble(jsonObject, "x", value -> x = value);
+ getDouble(jsonObject, "y", value -> y = value);
+ getDouble(jsonObject, "z", value -> z = value);
locationExecutor = locationMap.getOrDefault(getString(jsonObject, "type", "").toLowerCase(), null);
locationType = LocationType.CUSTOM;
} else if (location.has("locationType")) {
diff --git a/src/de/steamwar/misslewars/scripts/implemented/PotionScript.java b/src/de/steamwar/misslewars/scripts/implemented/PotionScript.java
index 0156391..b8de2b3 100644
--- a/src/de/steamwar/misslewars/scripts/implemented/PotionScript.java
+++ b/src/de/steamwar/misslewars/scripts/implemented/PotionScript.java
@@ -41,8 +41,7 @@ public class PotionScript extends RunnableScript {
boolean icon = getBoolean(potion, "icon", true);
PotionEffectType potionEffectType = PotionEffectType.getByName(potion.getAsJsonPrimitive("potion").getAsString());
- if (potionEffectType == null)
- return;
+ if (potionEffectType == null) return;
potionEffect = new PotionEffect(potionEffectType, duration, amplifier, ambient, particles, icon);
}
diff --git a/src/de/steamwar/misslewars/scripts/implemented/SummonScript.java b/src/de/steamwar/misslewars/scripts/implemented/SummonScript.java
index 44bccf5..bc9cba4 100644
--- a/src/de/steamwar/misslewars/scripts/implemented/SummonScript.java
+++ b/src/de/steamwar/misslewars/scripts/implemented/SummonScript.java
@@ -22,35 +22,26 @@ package de.steamwar.misslewars.scripts.implemented;
import com.google.gson.JsonObject;
import de.steamwar.misslewars.scripts.RunnableScript;
import de.steamwar.misslewars.scripts.RunnableScriptEvent;
-import de.steamwar.misslewars.scripts.function.ScriptVoidFunction;
+import de.steamwar.misslewars.scripts.function.ScriptFunction;
+import de.steamwar.misslewars.scripts.utils.EntityUtils;
import de.steamwar.misslewars.scripts.utils.ScriptShortcut;
import org.bukkit.entity.Entity;
-import org.bukkit.entity.TNTPrimed;
-
-import static de.steamwar.misslewars.scripts.utils.EntityUtils.setTNTPrimedOptions;
public class SummonScript extends RunnableScript {
- private ScriptVoidFunction summon = null;
+ private ScriptFunction summon = null;
public SummonScript(JsonObject summon) {
- ScriptShortcut scriptShortcut = getEntity(summon.getAsJsonPrimitive("entity").getAsString());
+ ScriptShortcut scriptShortcut = EntityUtils.getEntity(summon.getAsJsonPrimitive("entity").getAsString(), EntityUtils.EntityType.Normal);
if (scriptShortcut == null) return;
this.summon = runnableScriptEvent -> {
Entity entity = runnableScriptEvent.entity.getWorld().spawn(runnableScriptEvent.getLocation(), scriptShortcut.entityClass);
scriptShortcut.consumer.accept(summon, entity, runnableScriptEvent);
+ return false;
};
}
- private ScriptShortcut getEntity(String name) {
- switch (name.toLowerCase()) {
- case "tntprimed":
- return new ScriptShortcut<>(TNTPrimed.class, (jsonObject, entity, runnableScriptEvent) -> setTNTPrimedOptions(entity, jsonObject));
- }
- return null;
- }
-
@Override
public boolean execute(RunnableScriptEvent runnableScriptEvent) {
if (summon == null) return false;
diff --git a/src/de/steamwar/misslewars/scripts/utils/EntityUtils.java b/src/de/steamwar/misslewars/scripts/utils/EntityUtils.java
index eb044f1..af70bda 100644
--- a/src/de/steamwar/misslewars/scripts/utils/EntityUtils.java
+++ b/src/de/steamwar/misslewars/scripts/utils/EntityUtils.java
@@ -57,4 +57,26 @@ public class EntityUtils {
setExplosiveOptions(tntPrimed, jsonObject);
}
+ public enum EntityType {
+ Projectile,
+ Normal
+ }
+
+ public static ScriptShortcut getEntity(String name, EntityType entityType) {
+ switch (name.toLowerCase()) {
+ case "tntprimed":
+ if (entityType != EntityType.Normal) return null;
+ return new ScriptShortcut<>(TNTPrimed.class, (jsonObject, entity, runnableScriptEvent) -> setTNTPrimedOptions(entity, jsonObject));
+
+ case "fireball":
+ return new ScriptShortcut<>(Fireball.class, (jsonObject, entity, runnableScriptEvent) -> {
+ setFireballOptions(entity, jsonObject);
+ entity.setDirection(runnableScriptEvent.getLocation().getDirection());
+ });
+ case "arrow":
+ return new ScriptShortcut<>(Arrow.class, (jsonObject, entity, runnableScriptEvent) -> setProjectileOptions(entity, jsonObject));
+ }
+ return null;
+ }
+
}