diff --git a/build.gradle.kts b/build.gradle.kts index 36e9d46..ae33a73 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "cn.lunadeer" -version = "2.1.19-beta" +version = "2.1.20-beta" java { toolchain.languageVersion.set(JavaLanguageVersion.of(21)) diff --git a/core/src/main/java/cn/lunadeer/dominion/dtos/Flag.java b/core/src/main/java/cn/lunadeer/dominion/dtos/Flag.java index bef2b29..0e912a6 100644 --- a/core/src/main/java/cn/lunadeer/dominion/dtos/Flag.java +++ b/core/src/main/java/cn/lunadeer/dominion/dtos/Flag.java @@ -26,7 +26,7 @@ public enum Flag { CONTAINER("container", "一般容器", "包含:箱子/木桶/潜影盒/盔甲架/展示框", false, false, true), CRAFT("craft", "使用工作台", "是否可以使用工作台", false, false, true), CRAFTER("crafter", "合成器", "是否可以修改自动合成器", false, false, true), - CREEPER_EXPLODE("creeper_explode", "实体爆炸", "包含:苦力怕/凋零头颅/末影水晶/火球", false, true, true), + CREEPER_EXPLODE("creeper_explode", "生物破坏", "包含:苦力怕/凋零头颅/末影水晶/火球爆炸等", false, true, true), COMPARER("comparer", "比较器交互", "是否可以修改比较器状态", false, false, true), DOOR("door", "门交互", "是否可以使用各种材质的门(包括活板门)", false, false, true), DRAGON_BREAK_BLOCK("dragon_break_block", "末影龙破坏方块", "末影龙冲撞是否可以破坏方块", false, true, true), diff --git a/v1_20_1/src/main/java/cn/lunadeer/dominion/events_v1_20_1/EnvironmentEvents.java b/v1_20_1/src/main/java/cn/lunadeer/dominion/events_v1_20_1/EnvironmentEvents.java index a348dde..aa28623 100644 --- a/v1_20_1/src/main/java/cn/lunadeer/dominion/events_v1_20_1/EnvironmentEvents.java +++ b/v1_20_1/src/main/java/cn/lunadeer/dominion/events_v1_20_1/EnvironmentEvents.java @@ -49,6 +49,22 @@ public class EnvironmentEvents implements Listener { checkFlag(dom, Flag.CREEPER_EXPLODE, event); } + @EventHandler(priority = EventPriority.HIGHEST) // creeper_explode - item frame + public void onItemFrameShot(ProjectileHitEvent event) { + Entity hit = event.getHitEntity(); + if (hit == null) { + return; + } + if (event.getEntity().getShooter() instanceof Player) { + return; + } + if (!(hit instanceof Hanging)) { + return; + } + DominionDTO dom = Cache.instance.getDominionByLoc(hit.getLocation()); + checkFlag(dom, Flag.CREEPER_EXPLODE, event); + } + @EventHandler(priority = EventPriority.HIGHEST) // creeper_explode - armor stand public void onArmorStandExploded(EntityDamageByEntityEvent event) { Entity entity = event.getEntity(); diff --git a/v1_21/src/main/java/cn/lunadeer/dominion/events_v1_21/EnvironmentEvents.java b/v1_21/src/main/java/cn/lunadeer/dominion/events_v1_21/EnvironmentEvents.java index b20a490..47b9bc8 100644 --- a/v1_21/src/main/java/cn/lunadeer/dominion/events_v1_21/EnvironmentEvents.java +++ b/v1_21/src/main/java/cn/lunadeer/dominion/events_v1_21/EnvironmentEvents.java @@ -49,6 +49,22 @@ public class EnvironmentEvents implements Listener { checkFlag(dom, Flag.CREEPER_EXPLODE, event); } + @EventHandler(priority = EventPriority.HIGHEST) // creeper_explode - item frame + public void onItemFrameShot(ProjectileHitEvent event) { + Entity hit = event.getHitEntity(); + if (hit == null) { + return; + } + if (event.getEntity().getShooter() instanceof Player) { + return; + } + if (!(hit instanceof Hanging)) { + return; + } + DominionDTO dom = Cache.instance.getDominionByLoc(hit.getLocation()); + checkFlag(dom, Flag.CREEPER_EXPLODE, event); + } + @EventHandler(priority = EventPriority.HIGHEST) // creeper_explode - armor stand public void onArmorStandExploded(EntityDamageByEntityEvent event) { Entity entity = event.getEntity();