From 7b07a4ba6c2b7f14e40dbb096a5705fe1ffdd294 Mon Sep 17 00:00:00 2001 From: Sjoerd van de Goor Date: Fri, 3 Mar 2023 21:55:14 +0100 Subject: [PATCH 1/3] Location context needed to spawn entities --- .../decree/context/VectorContextHandler.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main/java/com/volmit/iris/util/decree/context/VectorContextHandler.java 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; + } +} From 8775f842e66d2aba4ce39bd50d7643ce5a5d3666 Mon Sep 17 00:00:00 2001 From: Sjoerd van de Goor Date: Fri, 3 Mar 2023 21:57:13 +0100 Subject: [PATCH 2/3] Spawn command --- .../volmit/iris/core/commands/CommandIris.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 209ea9f25..4a647ce81 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; @@ -339,4 +342,17 @@ public class CommandIris implements DecreeExecutor { Iris.service(StudioSVC.class).installIntoWorld(sender(), pack.getLoadKey(), folder); } + + @Decree(description = "Spawn an entity", aliases = "summon", origin = DecreeOrigin.PLAYER) + public void spawn( + @Param(description = "The entity to spawn") + IrisEntity entity, + @Param(description = "The location to spawn the entity at", contextual = true) + Vector location + ) { + 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."); + } + entity.spawn(engine(), new Location(world(), location.getX(), location.getY(), location.getZ())); + } } From e19e5278b40db02d9dcf49a08ec34ee68f32c019 Mon Sep 17 00:00:00 2001 From: Sjoerd van de Goor Date: Fri, 3 Mar 2023 23:01:09 +0100 Subject: [PATCH 3/3] shouldve seen that, oops. --- .../volmit/iris/core/commands/CommandIris.java | 13 ------------- .../volmit/iris/core/commands/CommandStudio.java | 15 ++++++--------- 2 files changed, 6 insertions(+), 22 deletions(-) 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 4a647ce81..74ff330d0 100644 --- a/src/main/java/com/volmit/iris/core/commands/CommandIris.java +++ b/src/main/java/com/volmit/iris/core/commands/CommandIris.java @@ -342,17 +342,4 @@ public class CommandIris implements DecreeExecutor { Iris.service(StudioSVC.class).installIntoWorld(sender(), pack.getLoadKey(), folder); } - - @Decree(description = "Spawn an entity", aliases = "summon", origin = DecreeOrigin.PLAYER) - public void spawn( - @Param(description = "The entity to spawn") - IrisEntity entity, - @Param(description = "The location to spawn the entity at", contextual = true) - Vector location - ) { - 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."); - } - entity.spawn(engine(), new Location(world(), location.getX(), location.getY(), location.getZ())); - } } 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())); }