From 4d29813394618e8fe8a3977df264ac12eaceb7b3 Mon Sep 17 00:00:00 2001 From: Xanadu13 Date: Fri, 5 Jan 2024 09:05:24 +0800 Subject: [PATCH] add bossbar flag options --- .../enderdragon/listener/DragonSpawnListener.java | 15 ++++++++++----- .../xanadu/enderdragon/manager/DragonManager.java | 7 +++++-- .../xanadu/enderdragon/metadata/MyDragon.java | 3 +++ .../enderdragon/nms/BossBar/I_BossBarManager.java | 3 ++- .../nms/BossBar/v1_12_R1/BossBarManager.java | 15 ++++++++------- .../nms/BossBar/v1_13_R1/BossBarManager.java | 15 ++++++++------- .../nms/BossBar/v1_13_R2/BossBarManager.java | 15 ++++++++------- .../nms/BossBar/v1_14_R1/BossBarManager.java | 3 ++- .../nms/BossBar/v1_15_R1/BossBarManager.java | 3 ++- .../BossBar/v1_16_R1_above/BossBarManager.java | 3 ++- .../pers/xanadu/enderdragon/util/Version.java | 2 +- src/main/resources/plugin.yml | 2 +- src/main/resources/setting/default-zhcn.yml | 10 +++++++++- src/main/resources/setting/default.yml | 7 ++++++- src/main/resources/setting/special-zhcn.yml | 10 +++++++++- src/main/resources/setting/special.yml | 7 ++++++- 16 files changed, 82 insertions(+), 38 deletions(-) diff --git a/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java b/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java index 52d1a50..657ed6e 100644 --- a/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java +++ b/src/main/java/pers/xanadu/enderdragon/listener/DragonSpawnListener.java @@ -3,6 +3,7 @@ package pers.xanadu.enderdragon.listener; import org.bukkit.Bukkit; import org.bukkit.attribute.Attribute; import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarFlag; import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; import org.bukkit.entity.*; @@ -70,18 +71,22 @@ public class DragonSpawnListener implements Listener { String color = myDragon.glow_color.toUpperCase(); if(color.equals("NONE")) dragon.setGlowing(false); else setGlowingColor(dragon,getGlowColor(color)); - String bossBar_color = myDragon.bossbar_color.toUpperCase(); - String bossBar_style = myDragon.bossbar_style.toUpperCase(); if(Version.mcMainVersion >= 14){ BossBar bossBar = dragon.getBossBar(); if(bossBar != null){ - bossBar.setColor(BarColor.valueOf(bossBar_color)); - bossBar.setStyle(BarStyle.valueOf(bossBar_style)); + bossBar.setColor(BarColor.valueOf(myDragon.bossbar_color)); + bossBar.setStyle(BarStyle.valueOf(myDragon.bossbar_style)); + if(myDragon.bossbar_create_frog) bossBar.addFlag(BarFlag.CREATE_FOG); + else bossBar.removeFlag(BarFlag.CREATE_FOG); + if(myDragon.bossbar_darken_sky) bossBar.addFlag(BarFlag.DARKEN_SKY); + else bossBar.removeFlag(BarFlag.DARKEN_SKY); + if(myDragon.bossbar_play_boss_music) bossBar.addFlag(BarFlag.PLAY_BOSS_MUSIC); + else bossBar.removeFlag(BarFlag.PLAY_BOSS_MUSIC); } } else if(Version.mcMainVersion >= 12){ - getInstance().getBossBarManager().setBossBar(dragon.getWorld(),myDragon.display_name,bossBar_color,bossBar_style); + getInstance().getBossBarManager().setBossBar(dragon.getWorld(),myDragon); } if(Config.advanced_setting_save_bossbar){ getInstance().getBossBarManager().saveBossBarData(Collections.singletonList(dragon.getWorld())); diff --git a/src/main/java/pers/xanadu/enderdragon/manager/DragonManager.java b/src/main/java/pers/xanadu/enderdragon/manager/DragonManager.java index eb32b0c..1fb38e5 100644 --- a/src/main/java/pers/xanadu/enderdragon/manager/DragonManager.java +++ b/src/main/java/pers/xanadu/enderdragon/manager/DragonManager.java @@ -220,8 +220,11 @@ public class DragonManager { myDragon.death_broadcast_msg = f.getStringList("death_broadcast_msg"); myDragon.msg_to_killer = f.getStringList("msg_to_killer"); myDragon.glow_color = f.getString("glow_color","random"); - myDragon.bossbar_color = f.getString("bossbar.color","WHITE"); - myDragon.bossbar_style = f.getString("bossbar.style","SOLID"); + myDragon.bossbar_color = f.getString("bossbar.color","WHITE").toUpperCase(); + myDragon.bossbar_style = f.getString("bossbar.style","SOLID").toUpperCase(); + myDragon.bossbar_create_frog = f.getBoolean("bossbar.create_frog",true); + myDragon.bossbar_darken_sky = f.getBoolean("bossbar.darken_sky",true); + myDragon.bossbar_play_boss_music = f.getBoolean("bossbar.play_boss_music",true); myDragon.effect_cloud_original_radius = f.getDouble("effect_cloud.original_radius",3); myDragon.effect_cloud_expand_speed = f.getDouble("effect_cloud.expand_speed",0.1333333); myDragon.effect_cloud_duration = f.getInt("effect_cloud.duration",60); diff --git a/src/main/java/pers/xanadu/enderdragon/metadata/MyDragon.java b/src/main/java/pers/xanadu/enderdragon/metadata/MyDragon.java index 036a6d6..31e6413 100644 --- a/src/main/java/pers/xanadu/enderdragon/metadata/MyDragon.java +++ b/src/main/java/pers/xanadu/enderdragon/metadata/MyDragon.java @@ -47,6 +47,9 @@ public class MyDragon implements Comparable{ public String glow_color; public String bossbar_color; public String bossbar_style; + public boolean bossbar_create_frog; + public boolean bossbar_darken_sky; + public boolean bossbar_play_boss_music; public double effect_cloud_original_radius; public double effect_cloud_expand_speed; public int effect_cloud_duration; diff --git a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/I_BossBarManager.java b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/I_BossBarManager.java index 7968aee..db08627 100644 --- a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/I_BossBarManager.java +++ b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/I_BossBarManager.java @@ -1,11 +1,12 @@ package pers.xanadu.enderdragon.nms.BossBar; import org.bukkit.World; +import pers.xanadu.enderdragon.metadata.MyDragon; import java.util.List; public interface I_BossBarManager { void saveBossBarData(List worlds); void loadBossBarData(List worlds); - void setBossBar(World world,String title,String color,String style); + void setBossBar(World world, final MyDragon myDragon); } diff --git a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_12_R1/BossBarManager.java b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_12_R1/BossBarManager.java index fc22c5d..5c4efbe 100644 --- a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_12_R1/BossBarManager.java +++ b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_12_R1/BossBarManager.java @@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.craftbukkit.v1_12_R1.util.CraftChatMessage; import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.manager.DragonManager; +import pers.xanadu.enderdragon.metadata.MyDragon; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import java.io.File; @@ -71,15 +72,15 @@ public class BossBarManager implements I_BossBarManager { } }); } - public void setBossBar(World world,String title,String color,String style){ + public void setBossBar(World world, final MyDragon myDragon){ BossBattleServer bbs = new BossBattleServer( - CraftChatMessage.fromString(title, true)[0], - convertColor(color), - convertStyle(style) + CraftChatMessage.fromString(myDragon.display_name, true)[0], + convertColor(myDragon.bossbar_color), + convertStyle(myDragon.bossbar_style) ); - bbs.setCreateFog(true); - bbs.setDarkenSky(true); - bbs.setPlayMusic(true); + bbs.setCreateFog(myDragon.bossbar_create_frog); + bbs.setDarkenSky(myDragon.bossbar_darken_sky); + bbs.setPlayMusic(myDragon.bossbar_play_boss_music); try{ Object edb = DragonManager.getEnderDragonBattle(world); assert edb != null; diff --git a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_13_R1/BossBarManager.java b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_13_R1/BossBarManager.java index 4cbe015..c1393fb 100644 --- a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_13_R1/BossBarManager.java +++ b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_13_R1/BossBarManager.java @@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.craftbukkit.v1_13_R1.util.CraftChatMessage; import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.manager.DragonManager; +import pers.xanadu.enderdragon.metadata.MyDragon; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import java.io.File; @@ -71,15 +72,15 @@ public class BossBarManager implements I_BossBarManager { } }); } - public void setBossBar(World world,String title,String color,String style){ + public void setBossBar(World world, final MyDragon myDragon){ BossBattleServer bbs = new BossBattleServer( - CraftChatMessage.fromString(title, true)[0], - convertColor(color), - convertStyle(style) + CraftChatMessage.fromString(myDragon.display_name, true)[0], + convertColor(myDragon.bossbar_color), + convertStyle(myDragon.bossbar_style) ); - bbs.setCreateFog(true); - bbs.setDarkenSky(true); - bbs.setPlayMusic(true); + bbs.setCreateFog(myDragon.bossbar_create_frog); + bbs.setDarkenSky(myDragon.bossbar_darken_sky); + bbs.setPlayMusic(myDragon.bossbar_play_boss_music); try{ Object edb = DragonManager.getEnderDragonBattle(world); assert edb != null; diff --git a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_13_R2/BossBarManager.java b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_13_R2/BossBarManager.java index adc5b3a..a58c7a6 100644 --- a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_13_R2/BossBarManager.java +++ b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_13_R2/BossBarManager.java @@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.craftbukkit.v1_13_R2.util.CraftChatMessage; import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.manager.DragonManager; +import pers.xanadu.enderdragon.metadata.MyDragon; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import java.io.File; @@ -71,15 +72,15 @@ public class BossBarManager implements I_BossBarManager { } }); } - public void setBossBar(World world,String title,String color,String style){ + public void setBossBar(World world, final MyDragon myDragon){ BossBattleServer bbs = new BossBattleServer( - CraftChatMessage.fromString(title, true)[0], - convertColor(color), - convertStyle(style) + CraftChatMessage.fromString(myDragon.display_name, true)[0], + convertColor(myDragon.bossbar_color), + convertStyle(myDragon.bossbar_style) ); - bbs.setCreateFog(true); - bbs.setDarkenSky(true); - bbs.setPlayMusic(true); + bbs.setCreateFog(myDragon.bossbar_create_frog); + bbs.setDarkenSky(myDragon.bossbar_darken_sky); + bbs.setPlayMusic(myDragon.bossbar_play_boss_music); try{ Object edb = DragonManager.getEnderDragonBattle(world); assert edb != null; diff --git a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_14_R1/BossBarManager.java b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_14_R1/BossBarManager.java index 695494d..d58ce05 100644 --- a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_14_R1/BossBarManager.java +++ b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_14_R1/BossBarManager.java @@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.craftbukkit.v1_14_R1.util.CraftChatMessage; import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.manager.DragonManager; +import pers.xanadu.enderdragon.metadata.MyDragon; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import java.io.File; @@ -71,6 +72,6 @@ public class BossBarManager implements I_BossBarManager { } }); } - public void setBossBar(World world,String title,String color,String style){ + public void setBossBar(World world, final MyDragon myDragon){ } } \ No newline at end of file diff --git a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_15_R1/BossBarManager.java b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_15_R1/BossBarManager.java index 4931766..9b9f328 100644 --- a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_15_R1/BossBarManager.java +++ b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_15_R1/BossBarManager.java @@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.craftbukkit.v1_15_R1.util.CraftChatMessage; import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.manager.DragonManager; +import pers.xanadu.enderdragon.metadata.MyDragon; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import java.io.File; @@ -71,7 +72,7 @@ public class BossBarManager implements I_BossBarManager { } }); } - public void setBossBar(World world,String title,String color,String style){ + public void setBossBar(World world, final MyDragon myDragon){ } } \ No newline at end of file diff --git a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_16_R1_above/BossBarManager.java b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_16_R1_above/BossBarManager.java index 2517ddf..352fd4c 100644 --- a/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_16_R1_above/BossBarManager.java +++ b/src/main/java/pers/xanadu/enderdragon/nms/BossBar/v1_16_R1_above/BossBarManager.java @@ -8,6 +8,7 @@ import org.bukkit.boss.DragonBattle; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; import pers.xanadu.enderdragon.config.Lang; +import pers.xanadu.enderdragon.metadata.MyDragon; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import java.io.File; @@ -57,6 +58,6 @@ public class BossBarManager implements I_BossBarManager { bossBar.setStyle(BarStyle.valueOf(yml.getString(path+"style"))); }); } - public void setBossBar(World world,String title,String color,String style){ + public void setBossBar(World world, final MyDragon myDragon){ } } \ No newline at end of file diff --git a/src/main/java/pers/xanadu/enderdragon/util/Version.java b/src/main/java/pers/xanadu/enderdragon/util/Version.java index c48f29f..01917dc 100644 --- a/src/main/java/pers/xanadu/enderdragon/util/Version.java +++ b/src/main/java/pers/xanadu/enderdragon/util/Version.java @@ -9,7 +9,7 @@ import pers.xanadu.enderdragon.nms.WorldData.I_WorldDataManager; import static org.bukkit.Bukkit.getServer; public class Version { - public static final String setting_dragon = "2.4.0"; + public static final String setting_dragon = "2.5.0"; public static final String lang = "2.2.0"; public static final String config = "2.3.0"; public static final String data = "2.2.0"; diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4c7d5c5..526d305 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: EnderDragon -version: 2.4.0 +version: 2.5.0-dev main: pers.xanadu.enderdragon.EnderDragon author: Xanadu13 api-version: 1.13 diff --git a/src/main/resources/setting/default-zhcn.yml b/src/main/resources/setting/default-zhcn.yml index 8ad3818..1f7c9c6 100644 --- a/src/main/resources/setting/default-zhcn.yml +++ b/src/main/resources/setting/default-zhcn.yml @@ -1,5 +1,5 @@ #文件版本,请勿修改 -version: 2.4.0 +version: 2.5.0 #用于插件内部识别,每一种末影龙的unique_name都需要设为不同值! unique_name: 'default' @@ -118,6 +118,14 @@ bossbar: #SOLID:整条,SEGMENTED_6:将血条分为6个部分,SEGMENTED_10:将血条分为10个部分,SEGMENTED_12:将血条分为12个部分,SEGMENTED_20:将血条分为20个部分 style: 'SOLID' + # [true/false] + # 生成迷雾 + create_frog: true + # 使天空阴暗 + darken_sky: true + # 播放打末影龙时候的BGM + play_boss_music: true + #末影龙火球命中后产生的效果云 effect_cloud: #初始半径,允许小数 diff --git a/src/main/resources/setting/default.yml b/src/main/resources/setting/default.yml index 08c3505..462c0f5 100644 --- a/src/main/resources/setting/default.yml +++ b/src/main/resources/setting/default.yml @@ -1,4 +1,4 @@ -version: 2.4.0 +version: 2.5.0 #This is used for plugin internal identification. #Please make sure the value is unique among all the types of dragons @@ -125,6 +125,11 @@ bossbar: #enable:SOLID,SEGMENTED_6,SEGMENTED_10,SEGMENTED_12,SEGMENTED_20 style: 'SOLID' + # [true/false] + create_frog: true + darken_sky: true + play_boss_music: true + effect_cloud: #enter a double that above 0 original_radius: 5 diff --git a/src/main/resources/setting/special-zhcn.yml b/src/main/resources/setting/special-zhcn.yml index 993daae..d6a74d9 100644 --- a/src/main/resources/setting/special-zhcn.yml +++ b/src/main/resources/setting/special-zhcn.yml @@ -1,5 +1,5 @@ #文件版本,请勿修改 -version: 2.4.0 +version: 2.5.0 #用于插件内部识别,每一种末影龙的unique_name都需要设为不同值! unique_name: 'special001' @@ -117,6 +117,14 @@ bossbar: #SOLID:整条,SEGMENTED_6:将血条分为6个部分,SEGMENTED_10:将血条分为10个部分,SEGMENTED_12:将血条分为12个部分,SEGMENTED_20:将血条分为20个部分 style: 'SEGMENTED_12' + # [true/false] + # 生成迷雾 + create_frog: true + # 使天空阴暗 + darken_sky: true + # 播放打末影龙时候的BGM + play_boss_music: true + #末影龙火球命中后产生的效果云 effect_cloud: #初始半径,允许小数 diff --git a/src/main/resources/setting/special.yml b/src/main/resources/setting/special.yml index 496b3ed..fdf4017 100644 --- a/src/main/resources/setting/special.yml +++ b/src/main/resources/setting/special.yml @@ -1,7 +1,7 @@ ## Special thanks to Phaxius for the translation # File version, do not edit -version: 2.4.0 +version: 2.5.0 # Unique ID used by plugin to identify each type of dragon # unique_name needs to be different in each dragon settings file @@ -140,6 +140,11 @@ bossbar: # SEGMENTED_12 (12 Segments), SEGMENTED_20 (20 Segments) style: 'SEGMENTED_12' + # [true/false] + create_frog: true + darken_sky: true + play_boss_music: true + #The effect cloud produced after the ender dragon fireball hits effect_cloud: