55import net .kaupenjoe .tutorialmod .item .ModItems ;
66import net .minecraft .Util ;
77import net .minecraft .nbt .CompoundTag ;
8+ import net .minecraft .network .chat .Component ;
89import net .minecraft .network .syncher .EntityDataAccessor ;
910import net .minecraft .network .syncher .EntityDataSerializers ;
1011import net .minecraft .network .syncher .SynchedEntityData ;
12+ import net .minecraft .server .level .ServerBossEvent ;
1113import net .minecraft .server .level .ServerLevel ;
14+ import net .minecraft .server .level .ServerPlayer ;
1215import net .minecraft .sounds .SoundEvent ;
1316import net .minecraft .sounds .SoundEvents ;
17+ import net .minecraft .world .BossEvent ;
1418import net .minecraft .world .DifficultyInstance ;
1519import net .minecraft .world .damagesource .DamageSource ;
1620import net .minecraft .world .entity .*;
@@ -31,6 +35,9 @@ public class GeckoEntity extends Animal {
3135 private static final EntityDataAccessor <Integer > VARIANT =
3236 SynchedEntityData .defineId (GeckoEntity .class , EntityDataSerializers .INT );
3337
38+ private final ServerBossEvent bossEvent =
39+ new ServerBossEvent (Component .literal ("Our Mighty Gecko" ), BossEvent .BossBarColor .GREEN , BossEvent .BossBarOverlay .NOTCHED_10 );
40+
3441 public GeckoEntity (EntityType <? extends Animal > entityType , Level level ) {
3542 super (entityType , level );
3643 }
@@ -147,4 +154,23 @@ protected SoundEvent getHurtSound(DamageSource damageSource) {
147154 protected SoundEvent getDeathSound () {
148155 return SoundEvents .BAT_DEATH ;
149156 }
157+
158+ /* BOSS BAR */
159+ @ Override
160+ public void startSeenByPlayer (ServerPlayer serverPlayer ) {
161+ super .startSeenByPlayer (serverPlayer );
162+ this .bossEvent .addPlayer (serverPlayer );
163+ }
164+
165+ @ Override
166+ public void stopSeenByPlayer (ServerPlayer serverPlayer ) {
167+ super .stopSeenByPlayer (serverPlayer );
168+ this .bossEvent .removePlayer (serverPlayer );
169+ }
170+
171+ @ Override
172+ public void aiStep () {
173+ super .aiStep ();
174+ this .bossEvent .setProgress (this .getHealth () / this .getMaxHealth ());
175+ }
150176}
0 commit comments