diff --git a/src/main/java/ru/bclib/api/spawning/SpawnRuleBuilder.java b/src/main/java/ru/bclib/api/spawning/SpawnRuleBuilder.java index 6d18d31b..e8acc908 100644 --- a/src/main/java/ru/bclib/api/spawning/SpawnRuleBuilder.java +++ b/src/main/java/ru/bclib/api/spawning/SpawnRuleBuilder.java @@ -45,11 +45,27 @@ public class SpawnRuleBuilder { /** * Starts new rule building process. - * @param entityType The entity you want to build a rule for + * @param wrapper The entity you want to build a rule for * @return prepared {@link SpawnRuleBuilder} instance. */ - public static SpawnRuleBuilder start(BCLEntityWrapper entityType) { - return start(entityType.type()); + public static SpawnRuleBuilder start(BCLEntityWrapper wrapper) { + SpawnRuleBuilder builder = start(wrapper.type()); + if (!wrapper.canSpawn()){ + builder.preventSpawn(); + } + return builder; + } + + /** + * Stop entity spawn entierly + * @return same {@link SpawnRuleBuilder} instance. + */ + public SpawnRuleBuilder preventSpawn() { + entryInstance = getFromCache("prevent", () -> { + return new SpawnRuleEntry(-1, (type, world, spawnReason, pos, random) -> false); + }); + rules.add(entryInstance); + return this; } /**