From ced33114cc7866b470a629c475bda978efc0a7ce Mon Sep 17 00:00:00 2001 From: StrangeOne101 Date: Sat, 3 Jul 2021 21:51:14 +1200 Subject: [PATCH] Jigsaw Enhancements - Added keepEntity property for jigsaw connectors. When set to true, mobs spawned will not despawn - Fixed jigsaw entities being spawned off-center --- .../com/volmit/iris/object/IrisJigsawPieceConnector.java | 4 ++++ .../volmit/iris/scaffold/jigsaw/PlannedStructure.java | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/volmit/iris/object/IrisJigsawPieceConnector.java b/src/main/java/com/volmit/iris/object/IrisJigsawPieceConnector.java index b6823cfcb..173579c4c 100644 --- a/src/main/java/com/volmit/iris/object/IrisJigsawPieceConnector.java +++ b/src/main/java/com/volmit/iris/object/IrisJigsawPieceConnector.java @@ -45,6 +45,10 @@ public class IrisJigsawPieceConnector @Desc("Pick an entity to spawn on this connector") private String spawnEntity; + @DontObfuscate + @Desc("Stop the entity from despawning") + private boolean keepEntity; + @DontObfuscate @MaxNumber(50) @MinNumber(1) diff --git a/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java b/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java index 3c56f2a7a..08d424b85 100644 --- a/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java +++ b/src/main/java/com/volmit/iris/scaffold/jigsaw/PlannedStructure.java @@ -15,6 +15,7 @@ import lombok.Data; import org.bukkit.Axis; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.entity.Entity; @Data public class PlannedStructure { @@ -170,7 +171,13 @@ public class PlannedStructure { IrisPosition p = i.getWorldPosition(j).add(new IrisPosition(j.getDirection().toVector().multiply(2))); IrisEntity e = getData().getEntityLoader().load(j.getSpawnEntity()); - e.spawn(a.getCompound().getEngineForHeight(p.getY()), new Location(world, p.getX() + 0.5, p.getY(), p.getZ() + 0.5), rng); + if(a != null) + { + Entity entity = e.spawn(a.getCompound().getEngineForHeight(p.getY()), new Location(world, p.getX() + 0.5, p.getY(), p.getZ() + 0.5), rng); + if (j.isKeepEntity()) { + entity.setPersistent(true); + } + } } } });