diff --git a/src/main/java/com/volmit/iris/core/commands/CommandIris.java b/src/main/java/com/volmit/iris/core/commands/CommandIris.java
index af809562c..6b3d50cc1 100644
--- a/src/main/java/com/volmit/iris/core/commands/CommandIris.java
+++ b/src/main/java/com/volmit/iris/core/commands/CommandIris.java
@@ -24,6 +24,7 @@ import com.volmit.iris.core.service.StudioSVC;
import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.object.IrisDimension;
+import com.volmit.iris.engine.object.IrisEntity;
import com.volmit.iris.engine.platform.PlatformChunkGenerator;
import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.decree.DecreeContext;
@@ -40,7 +41,9 @@ import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.jobs.QueueJob;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
+import org.bukkit.Location;
import org.bukkit.World;
+import org.bukkit.util.Vector;
import java.io.File;
import java.io.IOException;
diff --git a/src/main/java/com/volmit/iris/core/commands/CommandStudio.java b/src/main/java/com/volmit/iris/core/commands/CommandStudio.java
index e65d79553..b080dee01 100644
--- a/src/main/java/com/volmit/iris/core/commands/CommandStudio.java
+++ b/src/main/java/com/volmit/iris/core/commands/CommandStudio.java
@@ -464,19 +464,16 @@ public class CommandStudio implements DecreeExecutor {
sender().sendMessage(C.GREEN + "Done! " + report.getPath());
}
- @Decree(description = "Summon an Iris Entity", origin = DecreeOrigin.PLAYER)
- public void summon(
- @Param(description = "The Iris Entity to spawn")
+ @Decree(description = "Spawn an Iris entity", aliases = "summon", origin = DecreeOrigin.PLAYER)
+ public void spawn(
+ @Param(description = "The entity to spawn")
IrisEntity entity,
- @Param(description = "The location at which to spawn the entity", defaultValue = "self")
+ @Param(description = "The location to spawn the entity at", contextual = true)
Vector location
) {
- if (!sender().isPlayer()) {
- sender().sendMessage(C.RED + "Players only (this is a config error. Ask support to add DecreeOrigin.PLAYER to the command you tried to run)");
- return;
+ if (!IrisToolbelt.isIrisWorld(player().getWorld())) {
+ sender().sendMessage(C.RED + "You have to be in an Iris world to spawn entities properly. Trying to spawn the best we can do.");
}
-
- sender().sendMessage(C.GREEN + "Spawning entity");
entity.spawn(engine(), new Location(world(), location.getX(), location.getY(), location.getZ()));
}
diff --git a/src/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java b/src/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java
new file mode 100644
index 000000000..e96d6f0fb
--- /dev/null
+++ b/src/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java
@@ -0,0 +1,39 @@
+/*
+ * Iris is a World Generator for Minecraft Bukkit Servers
+ * Copyright (c) 2022 Arcane Arts (Volmit Software)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.volmit.iris.util.decree.context;
+
+import com.volmit.iris.core.tools.IrisToolbelt;
+import com.volmit.iris.engine.object.IrisBiome;
+import com.volmit.iris.util.decree.DecreeContextHandler;
+import com.volmit.iris.util.plugin.VolmitSender;
+import org.bukkit.util.Vector;
+
+public class VectorContextHandler implements DecreeContextHandler {
+ public Class getType() {
+ return Vector.class;
+ }
+
+ public Vector handle(VolmitSender sender) {
+ if (sender.isPlayer()) {
+ return sender.player().getLocation().toVector();
+ }
+
+ return null;
+ }
+}