diff --git a/pom.xml b/pom.xml index c86bc46..566c22d 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer Dominion - 1.27.0-beta + 1.28.0-beta jar Dominion diff --git a/src/main/java/cn/lunadeer/dominion/dtos/Flag.java b/src/main/java/cn/lunadeer/dominion/dtos/Flag.java index 60a9db9..3e995cb 100644 --- a/src/main/java/cn/lunadeer/dominion/dtos/Flag.java +++ b/src/main/java/cn/lunadeer/dominion/dtos/Flag.java @@ -12,6 +12,7 @@ import java.util.List; public enum Flag { ANCHOR("anchor", "重生锚", "是否允许设置重生锚", false, false, true), ANIMAL_KILLING("animal_killing", "对动物造成伤害", "是否允许对动物造成伤害", false, false, true), + ANIMAL_SPAWN("animal_spawn", "动物生成", "是否允许动物生成", true, true, false), ANVIL("anvil", "使用铁砧", "是否允许使用铁砧", false, false, true), BEACON("beacon", "信标交互", "是否允许与信标交互", false, false, true), BED("bed", "床交互", "是否允许使用床睡觉或设置重生点", false, false, true), @@ -42,6 +43,7 @@ public enum Flag { LEVER("lever", "使用拉杆", "是否可以使用拉杆", false, false, true), MOB_DROP_ITEM("mob_drop_item", "生物战利品掉落", "生物死亡时是否产生凋落物", true, true, true), MONSTER_KILLING("monster_killing", "对怪物造成伤害", "玩家是否可以对怪物造成伤害", false, false, true), + MONSTER_SPAWN("monster_spawn", "怪物生成", "是否可以生成怪物", false, true, false), MOVE("move", "移动", "是否可以移动", true, false, true), PLACE("place", "放置方块", "是否可以放置方块(包括:一般方块、展示框、岩浆、水)", false, false, true), PRESSURE("pressure", "压力板交互", "是否可以触发各种材质的压力板", false, false, true), diff --git a/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java b/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java index 9314c93..2afcce7 100644 --- a/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java +++ b/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java @@ -6,9 +6,7 @@ import cn.lunadeer.dominion.dtos.Flag; import com.destroystokyo.paper.event.entity.EndermanEscapeEvent; import org.bukkit.Location; import org.bukkit.block.Block; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; +import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; @@ -135,9 +133,29 @@ public class EnvironmentEvents implements Listener { } @EventHandler(priority = EventPriority.HIGHEST) // ender_man escape - public void onEnderManEscape(EndermanEscapeEvent event){ + public void onEnderManEscape(EndermanEscapeEvent event) { Entity entity = event.getEntity(); DominionDTO dom = Cache.instance.getDominion(entity.getLocation()); checkFlag(dom, Flag.ENDER_MAN, event); } + + @EventHandler(priority = EventPriority.HIGHEST) // monster_spawn + public void onMonsterSpawn(CreatureSpawnEvent event) { + Entity entity = event.getEntity(); + if (!(entity instanceof Monster)) { + return; + } + DominionDTO dom = Cache.instance.getDominion(entity.getLocation()); + checkFlag(dom, Flag.MONSTER_SPAWN, event); + } + + @EventHandler(priority = EventPriority.HIGHEST) // animal_spawn + public void onAnimalSpawn(CreatureSpawnEvent event) { + Entity entity = event.getEntity(); + if (!(entity instanceof Animals)) { + return; + } + DominionDTO dom = Cache.instance.getDominion(entity.getLocation()); + checkFlag(dom, Flag.ANIMAL_SPAWN, event); + } } diff --git a/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java b/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java index 4f8021f..8d7c3a1 100644 --- a/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java +++ b/src/main/java/cn/lunadeer/dominion/managers/DatabaseTables.java @@ -169,5 +169,9 @@ public class DatabaseTables { // 1.26 Dominion.database.addColumnIfNotExists("dominion", "fly", "BOOLEAN NOT NULL DEFAULT FALSE"); Dominion.database.addColumnIfNotExists("player_privilege", "fly", "BOOLEAN NOT NULL DEFAULT FALSE"); + + // 1.28 + Dominion.database.addColumnIfNotExists("dominion", "monster_spawn", "BOOLEAN NOT NULL DEFAULT FALSE"); + Dominion.database.addColumnIfNotExists("dominion", "animal_spawn", "BOOLEAN NOT NULL DEFAULT TRUE"); } }