Skip to content

Commit

Permalink
Prevent exceeding y limit.
Browse files Browse the repository at this point in the history
  • Loading branch information
toxicity188 committed Nov 18, 2024
1 parent 4c482be commit 04c5d9b
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public interface TextLayout extends Layout {
@NotNull
Function<HealthBarCreateEvent, Component> pattern();

int height();

@NotNull
TextRenderer createRenderer(@NotNull HealthBarCreateEvent pair);
}
6 changes: 3 additions & 3 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.3"
version = "3.5.4"
repositories {
mavenCentral()
maven("https://repo.papermc.io/repository/maven-public/")
Expand Down Expand Up @@ -76,7 +76,7 @@ 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.8")
.dependency("com.github.toxicity188:BetterHud:1.9.1")
.dependency("com.github.toxicity188:BetterCommand:1.0")
.dependency("net.citizensnpcs:citizens-main:2.0.35-SNAPSHOT")
.dependency("com.github.SkriptLang:Skript:2.9.4")
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 {
modrinth("betterhud2", "1.8")
hangar("BetterHud", "1.9.1")
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,18 +75,18 @@ class HealthBarImpl(
return s.hashCode()
}

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

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

protected var d = 0
var d = 0

override fun hasNext(): Boolean {
val entity = pair.entity.entity()
Expand All @@ -102,7 +102,7 @@ class HealthBarImpl(
}
private inner class MultiRenderer(
pair: HealthBarCreateEvent
): AbstractRenderer(pair) {
) : AbstractRenderer(pair) {

private val displays = render.map {
it.createPool(pair, indexes)
Expand Down Expand Up @@ -147,7 +147,7 @@ class HealthBarImpl(
}
private inner class SingleRenderer(
pair: HealthBarCreateEvent
): AbstractRenderer(pair) {
) : AbstractRenderer(pair) {

private val display = pair.createEntity(render())

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class ImageLayoutImpl(
override fun listener(): HealthBarListener = listener
override fun duration(): Int = duration

fun build(resource: PackResource, count: Int, jsonArray: JsonArray) {
fun build(resource: PackResource, max: Int, count: Int, jsonArray: JsonArray) {
val componentMap = HashMap<BitmapData, WidthComponent>()
image.images().forEach {
val list = ArrayList<PixelComponent>()
Expand All @@ -48,7 +48,7 @@ class ImageLayoutImpl(
val newHeight = (it.image.image.height.toDouble() * scale()).roundToInt()
val div = newHeight.toDouble() / it.image.image.height.toDouble()
for (i in 0..<count) {
val y = y() + groupY() * i
val y = y() + groupY() * i + max
list.add(componentMap.computeIfAbsent(BitmapData(dir, y, newHeight)) { _ ->
val component = parent.index++.parseChar()
jsonArray.add(JsonObject().apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@ import com.google.gson.JsonObject
import kr.toxicity.healthbar.api.layout.ImageLayout
import kr.toxicity.healthbar.api.layout.LayoutGroup
import kr.toxicity.healthbar.api.layout.TextLayout
import kr.toxicity.healthbar.manager.ConfigManagerImpl
import kr.toxicity.healthbar.pack.PackResource
import kr.toxicity.healthbar.util.*
import net.kyori.adventure.key.Key
import org.bukkit.configuration.ConfigurationSection
import kotlin.math.max
import kotlin.math.min

class LayoutGroupImpl(
private val path: String,
Expand Down Expand Up @@ -46,19 +49,32 @@ class LayoutGroupImpl(
)
}
}
val min get() = if (ConfigManagerImpl.useCoreShaders()) 0 else min(
-max(
images.maxOfOrNull {
it.y() - (it.image().images().maxOfOrNull { image ->
image.image.image.height
} ?: 0)
} ?: 0,
texts.maxOfOrNull {
it.y() - it.height()
} ?: 0
),
0
)

fun build(resource: PackResource, count: Int) {
fun build(resource: PackResource, min: Int, count: Int) {
val json = JsonArray()
images.forEach {
it.build(resource, count, json)
it.build(resource, min, count, json)
}
resource.font.add("$name/images.json") {
JsonObject().apply {
add("providers", json)
}.save()
}
texts.forEach {
it.build(resource, count)
it.build(resource, min, count)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,14 @@ class TextLayoutImpl(
override fun align(): TextAlign = align
override fun property(): PlaceholderOption.Property = property
override fun pattern(): Function<HealthBarCreateEvent, Component> = pattern
override fun height(): Int = height

private class WidthKey(
val key: Key,
val x: Int,
)

fun build(resource: PackResource, count: Int) {
fun build(resource: PackResource, max: Int, count: Int) {
val dataList = ArrayList<JsonData>()
val fileParent = "${parent.name}/text/${layer()}"
text.bitmap().forEachIndexed { index, textBitmap ->
Expand All @@ -81,7 +82,7 @@ class TextLayoutImpl(

val map = HashMap<BitmapData, WidthKey>()
for (i in 0..<count) {
val y = y() + groupY() * i
val y = y() + groupY() * i + max
val keyName = "${parent.name}/$name/${i + 1}"
keys.add(map.computeIfAbsent(BitmapData(keyName, y, height)) {
resource.font.add("$keyName.json") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,19 @@ object LayoutManagerImpl : LayoutManager, BetterHealthBerManager {
}
}
}
val min = layoutMap.minOfOrNull {
it.value.min
} ?: 0
layoutMap.forEach {
it.value.group()?.let { group ->
groupData.computeIfAbsent(group) {
Collections.synchronizedSet(HashSet())
}.add(it.value)
} ?: it.value.build(resource, 1)
} ?: it.value.build(resource, min, 1)
}
groupData.values.forEach {
it.forEach { group ->
group.build(resource, it.size)
group.build(resource, min, it.size)
}
}
}
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.10.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

0 comments on commit 04c5d9b

Please sign in to comment.