Skip to content

Commit

Permalink
Add disable-to-invisible-mob
Browse files Browse the repository at this point in the history
  • Loading branch information
toxicity188 committed Nov 30, 2024
1 parent 04c5d9b commit 152b53b
Show file tree
Hide file tree
Showing 8 changed files with 42 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;

import java.util.function.Predicate;

@Getter
@Setter
public class HealthBarCreateEvent extends Event implements Cancellable {
Expand All @@ -24,6 +26,8 @@ public class HealthBarCreateEvent extends Event implements Cancellable {

private boolean cancelled;

private Predicate<HealthBarCreateEvent> predicate = e -> true;

public HealthBarCreateEvent(@NotNull HealthBar healthBar, @NotNull HealthBarTrigger trigger, @NotNull HealthBarPlayer player, @NotNull HealthBarEntity entity) {
super(true);
this.healthBar = healthBar;
Expand All @@ -32,6 +36,15 @@ public HealthBarCreateEvent(@NotNull HealthBar healthBar, @NotNull HealthBarTrig
this.entity = entity;
}

public @NotNull HealthBarCreateEvent addPredicate(@NotNull Predicate<HealthBarCreateEvent> other) {
predicate = predicate.and(other);
return this;
}

public boolean check() {
return predicate.test(this);
}

@Override
public @NotNull HandlerList getHandlers() {
return HANDLER_LIST;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public interface ConfigManager {
@Unmodifiable
Set<EntityType> blacklistEntityType();
boolean disableToInvulnerableMob();
boolean disableToInvisibleMob();
@NotNull
CoreShadersOption shaders();
boolean useCoreShaders();
Expand Down
8 changes: 4 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ allprojects {
apply(plugin = "kotlin")
apply(plugin = "org.jetbrains.dokka")
group = "kr.toxicity.healthbar"
version = "3.5.4"
version = "3.6"
repositories {
mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/")
Expand Down Expand Up @@ -76,8 +76,8 @@ val dist = getApiDependencyProject("dist").spigot()
.dependency("io.lumine:Mythic-Dist:5.7.2")
.dependency("io.github.arcaneplugins:levelledmobs-plugin:4.0.3.1")
.dependency("me.clip:placeholderapi:2.11.6")
.dependency("com.github.toxicity188:BetterHud:1.9.1")
.dependency("com.github.toxicity188:BetterCommand:1.0")
.dependency("io.github.toxicity188:BetterHud-standard-api:1.9.2")
.dependency("io.github.toxicity188:BetterHud-bukkit-api:1.9.2")
.dependency("net.citizensnpcs:citizens-main:2.0.35-SNAPSHOT")
.dependency("com.github.SkriptLang:Skript:2.9.4")
.also {
Expand Down Expand Up @@ -159,7 +159,7 @@ tasks {
version("1.21.1") //TODO set this to 'minecraft' when other plugins support the latest version.
pluginJars(fileTree("plugins"))
downloadPlugins {
hangar("BetterHud", "1.9.1")
hangar("BetterHud", "1.9.2")
hangar("PlaceholderAPI", "2.11.6")
hangar("Skript", "2.9.4")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,26 +75,27 @@ class HealthBarImpl(
return s.hashCode()
}

private abstract inner class AbstractRenderer(val pair: HealthBarCreateEvent) : HealthBarRenderer {
private abstract inner class AbstractRenderer(val event: HealthBarCreateEvent) : HealthBarRenderer {
val indexes = groups.mapNotNull {
it.group()
}.associateWith {
GroupIndex()
}

val render = groups.map {
RenderedLayout(it, pair)
RenderedLayout(it, event)
}.toMutableList()

var d = 0

override fun hasNext(): Boolean {
val entity = pair.entity.entity()
val player = pair.player.player()
if (!event.check()) return false
val entity = event.entity.entity()
val player = event.player.player()
return entity.isValid && entity.world.uid == player.world.uid && player.location.distance(entity.location) < ConfigManagerImpl.lookDistance() && (duration < 0 || ++d <= duration)
}
override fun canRender(): Boolean {
return conditions.apply(pair)
return conditions.apply(event)
}
override fun updateTick() {
d = 0
Expand Down Expand Up @@ -179,7 +180,7 @@ class HealthBarImpl(
} else {
removeUnused()
val render = render()
display.teleport(pair.toEntityLocation())
display.teleport(event.toEntityLocation())
display.text(render.component.build())
return true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ object ConfigManagerImpl : ConfigManager, BetterHealthBerManager {
private var selfHostPort = 8163
private var blackListEntityType = emptySet<EntityType>()
private var disableToInvulnerableMob = true
private var disableToInvisibleMob = true
private var shaders = CoreShadersOption.DEFAULT
private var useCoreShaders = true
private var showMeHealthBar = true
Expand Down Expand Up @@ -81,6 +82,7 @@ object ConfigManagerImpl : ConfigManager, BetterHealthBerManager {
}.getOrNull()
}))
disableToInvulnerableMob = config.getBoolean("disable-to-invulnerable-mob", true)
disableToInvisibleMob = config.getBoolean("disable-to-invisible-mob", true)
config.getConfigurationSection("shaders")?.let { s ->
shaders = CoreShadersOption(
s.getBoolean("rendertype_text.vsh", true),
Expand Down Expand Up @@ -118,6 +120,7 @@ object ConfigManagerImpl : ConfigManager, BetterHealthBerManager {
override fun numberFormat(): NumberFormat = numberFormat
override fun blacklistEntityType(): Set<EntityType> = blackListEntityType
override fun disableToInvulnerableMob(): Boolean = disableToInvulnerableMob
override fun disableToInvisibleMob(): Boolean = disableToInvisibleMob
override fun shaders(): CoreShadersOption = shaders
override fun useCoreShaders(): Boolean = useCoreShaders
override fun showMeHealthBar(): Boolean = showMeHealthBar
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import kr.toxicity.healthbar.util.PLUGIN
import kr.toxicity.healthbar.util.asyncTaskTimer
import kr.toxicity.healthbar.util.call
import org.bukkit.entity.Player
import org.bukkit.potion.PotionEffectType
import java.util.*

class HealthBarPlayerImpl(
Expand Down Expand Up @@ -53,8 +54,6 @@ class HealthBarPlayerImpl(

override fun showHealthBar(healthBar: HealthBar, trigger: HealthBarTrigger, entity: HealthBarEntity) {
if (ConfigManagerImpl.blacklistEntityType().contains(entity.entity().type)) return
if (ConfigManagerImpl.disableToInvulnerableMob() && entity.entity().isInvulnerable) return
if (!ConfigManagerImpl.showMeHealthBar() && player.uniqueId == entity.entity().uniqueId) return
entity.mob()?.let {
if (it.configuration().blacklist()) return
}
Expand All @@ -63,9 +62,17 @@ class HealthBarPlayerImpl(
trigger,
this,
entity
)
if (!data.call()) return
if (!healthBar.condition().apply(data)) return
).addPredicate {
when {
ConfigManagerImpl.disableToInvulnerableMob() && entity.entity().isInvulnerable -> false
ConfigManagerImpl.disableToInvisibleMob() && (entity.entity().isInvisible || entity.entity().hasPotionEffect(PotionEffectType.INVISIBILITY)) -> false
!ConfigManagerImpl.showMeHealthBar() && player.uniqueId == entity.entity().uniqueId -> false
else -> true
}
}.addPredicate {
healthBar.condition().apply(it)
}
if (!data.check() || !data.call()) return
synchronized(updaterMap) {
updaterMap.computeIfAbsent(entity.entity().uniqueId) {
HealthBarUpdaterGroupImpl(this, entity)
Expand Down
1 change: 1 addition & 0 deletions dist/src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ blacklist-entity-type:
- BLOCK_DISPLAY
- ITEM_DISPLAY
disable-to-invulnerable-mob: true
disable-to-invisible-mob: true
shaders:
rendertype_text.vsh: true
rendertype_text.fsh: true
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Thu May 02 01:20:37 KST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

0 comments on commit 152b53b

Please sign in to comment.