add bossbar flag options

This commit is contained in:
Xanadu13
2024-01-05 09:05:24 +08:00
parent 392e189451
commit 4d29813394
16 changed files with 82 additions and 38 deletions
@@ -3,6 +3,7 @@ package pers.xanadu.enderdragon.listener;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.attribute.Attribute; import org.bukkit.attribute.Attribute;
import org.bukkit.boss.BarColor; import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarFlag;
import org.bukkit.boss.BarStyle; import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar; import org.bukkit.boss.BossBar;
import org.bukkit.entity.*; import org.bukkit.entity.*;
@@ -70,18 +71,22 @@ public class DragonSpawnListener implements Listener {
String color = myDragon.glow_color.toUpperCase(); String color = myDragon.glow_color.toUpperCase();
if(color.equals("NONE")) dragon.setGlowing(false); if(color.equals("NONE")) dragon.setGlowing(false);
else setGlowingColor(dragon,getGlowColor(color)); else setGlowingColor(dragon,getGlowColor(color));
String bossBar_color = myDragon.bossbar_color.toUpperCase();
String bossBar_style = myDragon.bossbar_style.toUpperCase();
if(Version.mcMainVersion >= 14){ if(Version.mcMainVersion >= 14){
BossBar bossBar = dragon.getBossBar(); BossBar bossBar = dragon.getBossBar();
if(bossBar != null){ if(bossBar != null){
bossBar.setColor(BarColor.valueOf(bossBar_color)); bossBar.setColor(BarColor.valueOf(myDragon.bossbar_color));
bossBar.setStyle(BarStyle.valueOf(bossBar_style)); 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){ 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){ if(Config.advanced_setting_save_bossbar){
getInstance().getBossBarManager().saveBossBarData(Collections.singletonList(dragon.getWorld())); getInstance().getBossBarManager().saveBossBarData(Collections.singletonList(dragon.getWorld()));
@@ -220,8 +220,11 @@ public class DragonManager {
myDragon.death_broadcast_msg = f.getStringList("death_broadcast_msg"); myDragon.death_broadcast_msg = f.getStringList("death_broadcast_msg");
myDragon.msg_to_killer = f.getStringList("msg_to_killer"); myDragon.msg_to_killer = f.getStringList("msg_to_killer");
myDragon.glow_color = f.getString("glow_color","random"); myDragon.glow_color = f.getString("glow_color","random");
myDragon.bossbar_color = f.getString("bossbar.color","WHITE"); myDragon.bossbar_color = f.getString("bossbar.color","WHITE").toUpperCase();
myDragon.bossbar_style = f.getString("bossbar.style","SOLID"); 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_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_expand_speed = f.getDouble("effect_cloud.expand_speed",0.1333333);
myDragon.effect_cloud_duration = f.getInt("effect_cloud.duration",60); myDragon.effect_cloud_duration = f.getInt("effect_cloud.duration",60);
@@ -47,6 +47,9 @@ public class MyDragon implements Comparable<MyDragon>{
public String glow_color; public String glow_color;
public String bossbar_color; public String bossbar_color;
public String bossbar_style; 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_original_radius;
public double effect_cloud_expand_speed; public double effect_cloud_expand_speed;
public int effect_cloud_duration; public int effect_cloud_duration;
@@ -1,11 +1,12 @@
package pers.xanadu.enderdragon.nms.BossBar; package pers.xanadu.enderdragon.nms.BossBar;
import org.bukkit.World; import org.bukkit.World;
import pers.xanadu.enderdragon.metadata.MyDragon;
import java.util.List; import java.util.List;
public interface I_BossBarManager { public interface I_BossBarManager {
void saveBossBarData(List<World> worlds); void saveBossBarData(List<World> worlds);
void loadBossBarData(List<World> worlds); void loadBossBarData(List<World> worlds);
void setBossBar(World world,String title,String color,String style); void setBossBar(World world, final MyDragon myDragon);
} }
@@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.craftbukkit.v1_12_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_12_R1.util.CraftChatMessage;
import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DragonManager; import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager;
import java.io.File; 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( BossBattleServer bbs = new BossBattleServer(
CraftChatMessage.fromString(title, true)[0], CraftChatMessage.fromString(myDragon.display_name, true)[0],
convertColor(color), convertColor(myDragon.bossbar_color),
convertStyle(style) convertStyle(myDragon.bossbar_style)
); );
bbs.setCreateFog(true); bbs.setCreateFog(myDragon.bossbar_create_frog);
bbs.setDarkenSky(true); bbs.setDarkenSky(myDragon.bossbar_darken_sky);
bbs.setPlayMusic(true); bbs.setPlayMusic(myDragon.bossbar_play_boss_music);
try{ try{
Object edb = DragonManager.getEnderDragonBattle(world); Object edb = DragonManager.getEnderDragonBattle(world);
assert edb != null; assert edb != null;
@@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.craftbukkit.v1_13_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_13_R1.util.CraftChatMessage;
import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DragonManager; import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager;
import java.io.File; 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( BossBattleServer bbs = new BossBattleServer(
CraftChatMessage.fromString(title, true)[0], CraftChatMessage.fromString(myDragon.display_name, true)[0],
convertColor(color), convertColor(myDragon.bossbar_color),
convertStyle(style) convertStyle(myDragon.bossbar_style)
); );
bbs.setCreateFog(true); bbs.setCreateFog(myDragon.bossbar_create_frog);
bbs.setDarkenSky(true); bbs.setDarkenSky(myDragon.bossbar_darken_sky);
bbs.setPlayMusic(true); bbs.setPlayMusic(myDragon.bossbar_play_boss_music);
try{ try{
Object edb = DragonManager.getEnderDragonBattle(world); Object edb = DragonManager.getEnderDragonBattle(world);
assert edb != null; assert edb != null;
@@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.craftbukkit.v1_13_R2.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_13_R2.util.CraftChatMessage;
import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DragonManager; import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager;
import java.io.File; 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( BossBattleServer bbs = new BossBattleServer(
CraftChatMessage.fromString(title, true)[0], CraftChatMessage.fromString(myDragon.display_name, true)[0],
convertColor(color), convertColor(myDragon.bossbar_color),
convertStyle(style) convertStyle(myDragon.bossbar_style)
); );
bbs.setCreateFog(true); bbs.setCreateFog(myDragon.bossbar_create_frog);
bbs.setDarkenSky(true); bbs.setDarkenSky(myDragon.bossbar_darken_sky);
bbs.setPlayMusic(true); bbs.setPlayMusic(myDragon.bossbar_play_boss_music);
try{ try{
Object edb = DragonManager.getEnderDragonBattle(world); Object edb = DragonManager.getEnderDragonBattle(world);
assert edb != null; assert edb != null;
@@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.craftbukkit.v1_14_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_14_R1.util.CraftChatMessage;
import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DragonManager; import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager;
import java.io.File; 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){
} }
} }
@@ -8,6 +8,7 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.craftbukkit.v1_15_R1.util.CraftChatMessage; import org.bukkit.craftbukkit.v1_15_R1.util.CraftChatMessage;
import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.manager.DragonManager; import pers.xanadu.enderdragon.manager.DragonManager;
import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager;
import java.io.File; 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){
} }
} }
@@ -8,6 +8,7 @@ import org.bukkit.boss.DragonBattle;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import pers.xanadu.enderdragon.config.Lang; import pers.xanadu.enderdragon.config.Lang;
import pers.xanadu.enderdragon.metadata.MyDragon;
import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager; import pers.xanadu.enderdragon.nms.BossBar.I_BossBarManager;
import java.io.File; import java.io.File;
@@ -57,6 +58,6 @@ public class BossBarManager implements I_BossBarManager {
bossBar.setStyle(BarStyle.valueOf(yml.getString(path+"style"))); 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){
} }
} }
@@ -9,7 +9,7 @@ import pers.xanadu.enderdragon.nms.WorldData.I_WorldDataManager;
import static org.bukkit.Bukkit.getServer; import static org.bukkit.Bukkit.getServer;
public class Version { 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 lang = "2.2.0";
public static final String config = "2.3.0"; public static final String config = "2.3.0";
public static final String data = "2.2.0"; public static final String data = "2.2.0";
+1 -1
View File
@@ -1,5 +1,5 @@
name: EnderDragon name: EnderDragon
version: 2.4.0 version: 2.5.0-dev
main: pers.xanadu.enderdragon.EnderDragon main: pers.xanadu.enderdragon.EnderDragon
author: Xanadu13 author: Xanadu13
api-version: 1.13 api-version: 1.13
+9 -1
View File
@@ -1,5 +1,5 @@
#文件版本,请勿修改 #文件版本,请勿修改
version: 2.4.0 version: 2.5.0
#用于插件内部识别,每一种末影龙的unique_name都需要设为不同值! #用于插件内部识别,每一种末影龙的unique_name都需要设为不同值!
unique_name: 'default' unique_name: 'default'
@@ -118,6 +118,14 @@ bossbar:
#SOLID:整条,SEGMENTED_6:将血条分为6个部分,SEGMENTED_10:将血条分为10个部分,SEGMENTED_12:将血条分为12个部分,SEGMENTED_20:将血条分为20个部分 #SOLID:整条,SEGMENTED_6:将血条分为6个部分,SEGMENTED_10:将血条分为10个部分,SEGMENTED_12:将血条分为12个部分,SEGMENTED_20:将血条分为20个部分
style: 'SOLID' style: 'SOLID'
# [true/false]
# 生成迷雾
create_frog: true
# 使天空阴暗
darken_sky: true
# 播放打末影龙时候的BGM
play_boss_music: true
#末影龙火球命中后产生的效果云 #末影龙火球命中后产生的效果云
effect_cloud: effect_cloud:
#初始半径,允许小数 #初始半径,允许小数
+6 -1
View File
@@ -1,4 +1,4 @@
version: 2.4.0 version: 2.5.0
#This is used for plugin internal identification. #This is used for plugin internal identification.
#Please make sure the value is unique among all the types of dragons #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 #enable:SOLID,SEGMENTED_6,SEGMENTED_10,SEGMENTED_12,SEGMENTED_20
style: 'SOLID' style: 'SOLID'
# [true/false]
create_frog: true
darken_sky: true
play_boss_music: true
effect_cloud: effect_cloud:
#enter a double that above 0 #enter a double that above 0
original_radius: 5 original_radius: 5
+9 -1
View File
@@ -1,5 +1,5 @@
#文件版本,请勿修改 #文件版本,请勿修改
version: 2.4.0 version: 2.5.0
#用于插件内部识别,每一种末影龙的unique_name都需要设为不同值! #用于插件内部识别,每一种末影龙的unique_name都需要设为不同值!
unique_name: 'special001' unique_name: 'special001'
@@ -117,6 +117,14 @@ bossbar:
#SOLID:整条,SEGMENTED_6:将血条分为6个部分,SEGMENTED_10:将血条分为10个部分,SEGMENTED_12:将血条分为12个部分,SEGMENTED_20:将血条分为20个部分 #SOLID:整条,SEGMENTED_6:将血条分为6个部分,SEGMENTED_10:将血条分为10个部分,SEGMENTED_12:将血条分为12个部分,SEGMENTED_20:将血条分为20个部分
style: 'SEGMENTED_12' style: 'SEGMENTED_12'
# [true/false]
# 生成迷雾
create_frog: true
# 使天空阴暗
darken_sky: true
# 播放打末影龙时候的BGM
play_boss_music: true
#末影龙火球命中后产生的效果云 #末影龙火球命中后产生的效果云
effect_cloud: effect_cloud:
#初始半径,允许小数 #初始半径,允许小数
+6 -1
View File
@@ -1,7 +1,7 @@
## Special thanks to Phaxius for the translation ## Special thanks to Phaxius for the translation
# File version, do not edit # 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 ID used by plugin to identify each type of dragon
# unique_name needs to be different in each dragon settings file # unique_name needs to be different in each dragon settings file
@@ -140,6 +140,11 @@ bossbar:
# SEGMENTED_12 (12 Segments), SEGMENTED_20 (20 Segments) # SEGMENTED_12 (12 Segments), SEGMENTED_20 (20 Segments)
style: 'SEGMENTED_12' 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 #The effect cloud produced after the ender dragon fireball hits
effect_cloud: effect_cloud: