Add API to manipulate boss bar of entities and those created by commands

By: Yannick Lamprecht <yannicklamprecht@live.de>
This commit is contained in:
CraftBukkit/Spigot
2018-11-10 20:22:39 +11:00
parent 6f6c96bd33
commit 3433c5e374
8 changed files with 227 additions and 25 deletions

View File

@@ -0,0 +1,30 @@
--- a/net/minecraft/server/BossBattleCustom.java
+++ b/net/minecraft/server/BossBattleCustom.java
@@ -8,12 +8,27 @@
import java.util.UUID;
import java.util.function.Consumer;
+// CraftBukkit start
+import org.bukkit.boss.KeyedBossBar;
+import org.bukkit.craftbukkit.boss.CraftKeyedBossbar;
+// CraftBukkit end
+
public class BossBattleCustom extends BossBattleServer {
private final MinecraftKey h;
private final Set<UUID> i = Sets.newHashSet();
private int j;
private int k = 100;
+ // CraftBukkit start
+ private KeyedBossBar bossBar;
+
+ public KeyedBossBar getBukkitEntity() {
+ if (bossBar == null) {
+ bossBar = new CraftKeyedBossbar(this);
+ }
+ return bossBar;
+ }
+ // CraftBukkit end
public BossBattleCustom(MinecraftKey minecraftkey, IChatBaseComponent ichatbasecomponent) {
super(ichatbasecomponent, BossBattle.BarColor.WHITE, BossBattle.BarStyle.PROGRESS);

View File

@@ -0,0 +1,11 @@
--- a/net/minecraft/server/EnderDragonBattle.java
+++ b/net/minecraft/server/EnderDragonBattle.java
@@ -21,7 +21,7 @@
private static final Logger a = LogManager.getLogger();
private static final Predicate<Entity> b = IEntitySelector.a.and(IEntitySelector.a(0.0D, 128.0D, 0.0D, 192.0D));
- private final BossBattleServer c;
+ public final BossBattleServer c; // PAIL private -> public, rename bossBattleServer
private final WorldServer d;
private final List<Integer> e;
private final ShapeDetector f;

View File

@@ -13,6 +13,15 @@
public class EntityWither extends EntityMonster implements IRangedEntity {
private static final DataWatcherObject<Integer> a = DataWatcher.a(EntityWither.class, DataWatcherRegistry.b);
@@ -19,7 +25,7 @@
private final int[] bI = new int[2];
private final int[] bJ = new int[2];
private int bK;
- private final BossBattleServer bL;
+ public final BossBattleServer bL; // PAIL private -> public, rename bossBattleServer
private static final Predicate<Entity> bM = (entity) -> {
return entity instanceof EntityLiving && ((EntityLiving) entity).getMonsterType() != EnumMonsterType.UNDEAD && ((EntityLiving) entity).df();
};
@@ -181,13 +187,38 @@
if (this.dz() > 0) {
i = this.dz() - 1;