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; + } +}