Skip to content

Commit 30c1452

Browse files
KaupenjoeKaupenjoe
authored andcommitted
custom boss bar
1 parent d0c2c94 commit 30c1452

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

src/main/java/net/kaupenjoe/tutorialmod/entity/custom/GeckoEntity.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,16 @@
55
import net.kaupenjoe.tutorialmod.item.ModItems;
66
import net.minecraft.Util;
77
import net.minecraft.nbt.CompoundTag;
8+
import net.minecraft.network.chat.Component;
89
import net.minecraft.network.syncher.EntityDataAccessor;
910
import net.minecraft.network.syncher.EntityDataSerializers;
1011
import net.minecraft.network.syncher.SynchedEntityData;
12+
import net.minecraft.server.level.ServerBossEvent;
1113
import net.minecraft.server.level.ServerLevel;
14+
import net.minecraft.server.level.ServerPlayer;
1215
import net.minecraft.sounds.SoundEvent;
1316
import net.minecraft.sounds.SoundEvents;
17+
import net.minecraft.world.BossEvent;
1418
import net.minecraft.world.DifficultyInstance;
1519
import net.minecraft.world.damagesource.DamageSource;
1620
import 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

Comments
 (0)