From 4396ca94201a3cba6de0defadce5bbe1dbac81b8 Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Wed, 18 Aug 2021 14:24:03 -0400 Subject: [PATCH] Light level for spawns closes #558 --- .../iris/engine/object/basic/IrisRange.java | 4 ++++ .../engine/object/entity/IrisEntitySpawn.java | 20 +++++++++++++++++-- .../engine/object/spawners/IrisSpawner.java | 5 +++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/object/basic/IrisRange.java b/src/main/java/com/volmit/iris/engine/object/basic/IrisRange.java index b065d2e62..e1c962e2b 100644 --- a/src/main/java/com/volmit/iris/engine/object/basic/IrisRange.java +++ b/src/main/java/com/volmit/iris/engine/object/basic/IrisRange.java @@ -44,4 +44,8 @@ public class IrisRange { return rng.d(min, max); } + + public boolean contains(int v) { + return v >= min && v <= max; + } } diff --git a/src/main/java/com/volmit/iris/engine/object/entity/IrisEntitySpawn.java b/src/main/java/com/volmit/iris/engine/object/entity/IrisEntitySpawn.java index 8c2532115..3ae2d9d39 100644 --- a/src/main/java/com/volmit/iris/engine/object/entity/IrisEntitySpawn.java +++ b/src/main/java/com/volmit/iris/engine/object/entity/IrisEntitySpawn.java @@ -105,8 +105,24 @@ public class IrisEntitySpawn implements IRare { }; if (l != null) { - if (spawn100(gen, l) != null) - s++; + if(referenceSpawner.getAllowedLightLevels().getMin() > 0 || referenceSpawner.getAllowedLightLevels().getMax() < 15) + { + if(referenceSpawner.getAllowedLightLevels().contains(l.getBlock().getLightLevel())) + { + if (spawn100(gen, l) != null) + { + s++; + } + } + } + + else + { + if (spawn100(gen, l) != null) + { + s++; + } + } } } } diff --git a/src/main/java/com/volmit/iris/engine/object/spawners/IrisSpawner.java b/src/main/java/com/volmit/iris/engine/object/spawners/IrisSpawner.java index a7773979e..ece3c420c 100644 --- a/src/main/java/com/volmit/iris/engine/object/spawners/IrisSpawner.java +++ b/src/main/java/com/volmit/iris/engine/object/spawners/IrisSpawner.java @@ -21,6 +21,7 @@ package com.volmit.iris.engine.object.spawners; import com.volmit.iris.core.project.loader.IrisRegistrant; import com.volmit.iris.engine.object.annotations.ArrayType; import com.volmit.iris.engine.object.annotations.Desc; +import com.volmit.iris.engine.object.basic.IrisRange; import com.volmit.iris.engine.object.basic.IrisRate; import com.volmit.iris.engine.object.basic.IrisTimeBlock; import com.volmit.iris.engine.object.basic.IrisWeather; @@ -32,6 +33,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import org.bukkit.Bukkit; import org.bukkit.World; @EqualsAndHashCode(callSuper = true) @@ -67,6 +69,9 @@ public class IrisSpawner extends IrisRegistrant { @Desc("The maximum rate this spawner can fire on a specific chunk") private IrisRate maximumRatePerChunk = new IrisRate(); + @Desc("The light levels this spawn is allowed to run in (0-15 inclusive)") + private IrisRange allowedLightLevels = new IrisRange(0, 15); + @Desc("Where should these spawns be placed") private IrisSpawnGroup group = IrisSpawnGroup.NORMAL;