diff --git a/bootstrap/bukkit/src/main/kotlin/kr/toxicity/hud/bootstrap/bukkit/compatibility/mmocore/MMOCoreCompatibility.kt b/bootstrap/bukkit/src/main/kotlin/kr/toxicity/hud/bootstrap/bukkit/compatibility/mmocore/MMOCoreCompatibility.kt index 5e15d86b..75b7abcb 100644 --- a/bootstrap/bukkit/src/main/kotlin/kr/toxicity/hud/bootstrap/bukkit/compatibility/mmocore/MMOCoreCompatibility.kt +++ b/bootstrap/bukkit/src/main/kotlin/kr/toxicity/hud/bootstrap/bukkit/compatibility/mmocore/MMOCoreCompatibility.kt @@ -319,9 +319,16 @@ class MMOCoreCompatibility : Compatibility { ): Function { val skill = MMOCore.plugin.skillManager.getSkill(args[0]) ?: throw RuntimeException("Unable to find that skill: ${args[0]}") return Function { p -> - (p.bukkitPlayer.toMMOCore() ?: return@Function 0.0).boundSkills.entries.firstOrNull { - it.value.classSkill.skill.handler.id == skill.handler.id - }?.key ?: 0 + val bar = p.bukkitPlayer.inventory.heldItemSlot + var i = 0 + for ((index, entry) in (p.bukkitPlayer.toMMOCore() ?: return@Function 0.0).boundSkills.entries.withIndex()) { + if (entry.value.classSkill.skill.handler.id == skill.handler.id) { + i = entry.key + if (index >= bar) i++ + break + } + } + i } } }, diff --git a/bootstrap/bukkit/src/main/kotlin/kr/toxicity/hud/bootstrap/bukkit/player/HudPlayerBukkit.kt b/bootstrap/bukkit/src/main/kotlin/kr/toxicity/hud/bootstrap/bukkit/player/HudPlayerBukkit.kt index 0d037fc2..0c089a3c 100644 --- a/bootstrap/bukkit/src/main/kotlin/kr/toxicity/hud/bootstrap/bukkit/player/HudPlayerBukkit.kt +++ b/bootstrap/bukkit/src/main/kotlin/kr/toxicity/hud/bootstrap/bukkit/player/HudPlayerBukkit.kt @@ -10,12 +10,11 @@ import org.bukkit.Bukkit import org.bukkit.boss.BossBar import org.bukkit.entity.Player import java.util.* -import kotlin.collections.ArrayList class HudPlayerBukkit( private val player: Player, private val audience: Audience -): HudPlayerImpl() { +) : HudPlayerImpl() { override fun uuid(): UUID = player.uniqueId override fun name(): String = player.name override fun handle(): Any = player diff --git a/bootstrap/fabric/src/main/kotlin/kr/toxicity/hud/bootstrap/fabric/player/HudPlayerFabric.kt b/bootstrap/fabric/src/main/kotlin/kr/toxicity/hud/bootstrap/fabric/player/HudPlayerFabric.kt index 3538bc0a..23f1327d 100644 --- a/bootstrap/fabric/src/main/kotlin/kr/toxicity/hud/bootstrap/fabric/player/HudPlayerFabric.kt +++ b/bootstrap/fabric/src/main/kotlin/kr/toxicity/hud/bootstrap/fabric/player/HudPlayerFabric.kt @@ -11,13 +11,12 @@ import net.minecraft.server.MinecraftServer import net.minecraft.server.bossevents.CustomBossEvent import net.minecraft.server.level.ServerPlayer import java.util.* -import kotlin.collections.ArrayList class HudPlayerFabric( server: MinecraftServer, private val player: ServerPlayer, private val audience: Audience -): HudPlayerImpl() { +) : HudPlayerImpl() { init { val event = ArrayList() diff --git a/bootstrap/velocity/src/main/kotlin/kr/toxicity/hud/bootstrap/velocity/player/HudPlayerVelocity.kt b/bootstrap/velocity/src/main/kotlin/kr/toxicity/hud/bootstrap/velocity/player/HudPlayerVelocity.kt index 19248c97..f28654c3 100644 --- a/bootstrap/velocity/src/main/kotlin/kr/toxicity/hud/bootstrap/velocity/player/HudPlayerVelocity.kt +++ b/bootstrap/velocity/src/main/kotlin/kr/toxicity/hud/bootstrap/velocity/player/HudPlayerVelocity.kt @@ -11,7 +11,7 @@ import java.util.* class HudPlayerVelocity( private val player: Player, -): HudPlayerImpl() { +) : HudPlayerImpl() { override fun uuid(): UUID = player.uniqueId override fun name(): String = player.username override fun handle(): Any = player diff --git a/build.gradle.kts b/build.gradle.kts index 0b6eb2a2..fbbde936 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -66,29 +66,6 @@ val supportedVelocityVersions = listOf( "3.4" ) -val legacyNmsVersion = listOf( - //"v1_17_R1", - //"v1_18_R1", - "v1_18_R2", - "v1_19_R1", - "v1_19_R2", - "v1_19_R3", - "v1_20_R1", - "v1_20_R2", - "v1_20_R3", -).map { - project("nms:$it") -} -val currentNmsVersion = listOf( - "v1_20_R4", - "v1_21_R1", - "v1_21_R2", -).map { - project("nms:$it") -} - -val allNmsVersion = legacyNmsVersion + currentNmsVersion - allprojects { apply(plugin = "java") apply(plugin = "kotlin") @@ -158,6 +135,31 @@ subprojects { } } +val legacyNmsVersion = listOf( + //"v1_17_R1", + //"v1_18_R1", + "v1_18_R2", + "v1_19_R1", + "v1_19_R2", + "v1_19_R3", + "v1_20_R1", + "v1_20_R2", + "v1_20_R3", +).map { + project("nms:$it") +}.onEach { + it.legacy() +} + +val currentNmsVersion = listOf( + "v1_20_R4", + "v1_21_R1", + "v1_21_R2", +).map { + project("nms:$it") +} + +val allNmsVersion = legacyNmsVersion + currentNmsVersion fun Project.dependency(any: Any) = also { if (any is Collection<*>) { @@ -238,9 +240,9 @@ fun Project.modrinthPublish(depend: Jar, additionalJar: List, loadersList: } } -val apiShare = project("api:standard-api").adventure().legacy() -val apiBukkit = project("api:bukkit-api").adventure().bukkit().dependency(apiShare).legacy() -val apiVelocity = project("api:velocity-api").velocity().dependency(apiShare).legacy() +val apiShare = project("api:standard-api").adventure() +val apiBukkit = project("api:bukkit-api").adventure().bukkit().dependency(apiShare) +val apiVelocity = project("api:velocity-api").velocity().dependency(apiShare) val apiFabric = project("api:fabric-api").adventure().dependency(apiShare) val api = listOf( @@ -248,10 +250,8 @@ val api = listOf( apiBukkit, apiVelocity, apiFabric -) - -legacyNmsVersion.forEach { - it.legacy() +).onEach { + project -> project.legacy() } fun Project.api() = dependency(api) diff --git a/changelog/1.10.md b/changelog/1.10.md new file mode 100644 index 00000000..219327bc --- /dev/null +++ b/changelog/1.10.md @@ -0,0 +1,8 @@ +# BetterHud 1.10 + +## Fix +- Fix a problem that built core shader has comment. +- Fix mmocore_casting_slot placeholder. + +## Add +- Add more uniform value in shaders json. \ No newline at end of file diff --git a/dist/src/main/kotlin/kr/toxicity/hud/BetterHudImpl.kt b/dist/src/main/kotlin/kr/toxicity/hud/BetterHudImpl.kt index eb542680..9e96c792 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/BetterHudImpl.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/BetterHudImpl.kt @@ -22,7 +22,7 @@ import java.util.function.Consumer import java.util.jar.JarFile @Suppress("UNUSED") -class BetterHudImpl(val bootstrap: BetterHudBootstrap): BetterHud { +class BetterHudImpl(val bootstrap: BetterHudBootstrap) : BetterHud { init { if (!bootstrap.dataFolder().exists() && !bootstrap.isVelocity) loadAssets("default", bootstrap.dataFolder().apply { @@ -36,10 +36,8 @@ class BetterHudImpl(val bootstrap: BetterHudBootstrap): BetterHud { } } - private var managers: List = emptyList() - - fun start() { - managers = listOf( + private val managers: List by lazy { + listOf( ConfigManagerImpl, MinecraftManager, CommandManager, @@ -61,6 +59,9 @@ class BetterHudImpl(val bootstrap: BetterHudBootstrap): BetterHud { ShaderManagerImpl, PlayerManagerImpl, ) + } + + fun start() { managers.forEach { it.start() } diff --git a/dist/src/main/kotlin/kr/toxicity/hud/compass/type/CircleCompass.kt b/dist/src/main/kotlin/kr/toxicity/hud/compass/type/CircleCompass.kt index 8e32be35..7f6eb4b8 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/compass/type/CircleCompass.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/compass/type/CircleCompass.kt @@ -30,7 +30,7 @@ class CircleCompass( override val path: String, private val internalName: String, section: YamlObject -): CompassImpl { +) : CompassImpl { companion object { private val defaultColorEquation = TEquation("255").run { ColorEquation( diff --git a/dist/src/main/kotlin/kr/toxicity/hud/image/HudImage.kt b/dist/src/main/kotlin/kr/toxicity/hud/image/HudImage.kt index 791f446e..a4c24ba3 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/image/HudImage.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/image/HudImage.kt @@ -12,7 +12,7 @@ class HudImage( val image: List, val type: ImageType, setting: YamlObject -): HudConfiguration { +) : HudConfiguration { val conditions = setting.toConditions() val listener = setting.get("listener")?.asObject()?.let { ListenerManagerImpl.getListener(it) diff --git a/dist/src/main/kotlin/kr/toxicity/hud/manager/ShaderManagerImpl.kt b/dist/src/main/kotlin/kr/toxicity/hud/manager/ShaderManagerImpl.kt index 536a2971..ca037ad0 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/manager/ShaderManagerImpl.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/manager/ShaderManagerImpl.kt @@ -187,13 +187,13 @@ object ShaderManagerImpl : BetterHudManager, ShaderManager { if (replaceList.contains(deactivateMatcher.group("name"))) s = deactivateMatcher.replaceAll("") else return@write } - if (s.isEmpty()) return@write + if (s.isEmpty() || s.startsWith("//")) return@write val tagMatcher = tagPattern.matcher(s) if (tagMatcher.find()) { val group = tagMatcher.group("name") (tagBuilders[group]?.invoke() ?: tagSupplier[group])?.let { it.forEach apply@ { methodString -> - if (methodString.isEmpty()) return@apply + if (methodString.isEmpty() || methodString.startsWith("//")) return@apply val appendEnter = methodString.first() == '#' if (appendEnter && (isEmpty() || last() != '\n')) append('\n') append(methodString.replace(" ", "")) diff --git a/dist/src/main/kotlin/kr/toxicity/hud/popup/PopupLayout.kt b/dist/src/main/kotlin/kr/toxicity/hud/popup/PopupLayout.kt index 8fbc07d1..9b8744e8 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/popup/PopupLayout.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/popup/PopupLayout.kt @@ -125,9 +125,9 @@ class PopupLayout( if (hudImage.image.size > 1) hudImage.image.forEach { val fileName = "$NAME_SPACE_ENCODED:${it.name}" - val height = Math.round(it.image.image.height * target.scale).toInt() + val height = (it.image.image.height * target.scale).roundToInt().toInt() val scale = height.toDouble() / it.image.image.height - val xOffset = Math.round(it.image.xOffset * scale).toInt() + val xOffset = (it.image.xOffset * scale).roundToInt().toInt() val ascent = pixel.y val shaderGroup = ShaderGroup(imageShader, fileName, target.scale, ascent) @@ -160,7 +160,8 @@ class PopupLayout( "chars" to jsonArrayOf(char) )) } - val comp = WidthComponent(Component.text().content(char).font(parent.imageKey), Math.round(it.image.image.width.toDouble() * target.scale).toInt()) + NEGATIVE_ONE_SPACE_COMPONENT + val comp = WidthComponent(Component.text().content(char).font(parent.imageKey), (it.image.image.width.toDouble() * target.scale).roundToInt() + .toInt()) + NEGATIVE_ONE_SPACE_COMPONENT list.add(comp.toPixelComponent(pixel.x)) } diff --git a/dist/src/main/kotlin/kr/toxicity/hud/shader/HudShader.kt b/dist/src/main/kotlin/kr/toxicity/hud/shader/HudShader.kt index 54bdbdab..e4595bf4 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/shader/HudShader.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/shader/HudShader.kt @@ -9,7 +9,7 @@ data class HudShader( val outline: Boolean, val opacity: Double, val property: Int, -): Comparable { +) : Comparable { companion object { private val comparator = Comparator.comparing { s: HudShader -> s.gui diff --git a/dist/src/main/kotlin/kr/toxicity/hud/util/Lists.kt b/dist/src/main/kotlin/kr/toxicity/hud/util/Lists.kt index a4daca30..9747f462 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/util/Lists.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/util/Lists.kt @@ -2,7 +2,6 @@ package kr.toxicity.hud.util import java.util.concurrent.CompletableFuture import java.util.concurrent.Executors -import kotlin.collections.ArrayList fun List.split(splitSize: Int): List> { val result = ArrayList>() diff --git a/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlArrayImpl.kt b/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlArrayImpl.kt index d3967540..11284a10 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlArrayImpl.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlArrayImpl.kt @@ -8,7 +8,7 @@ import java.util.* class YamlArrayImpl( path: String, private val list: List<*> -): YamlConfigurationImpl(path), YamlArray { +) : YamlConfigurationImpl(path), YamlArray { @Suppress("UNCHECKED_CAST") override fun get(): MutableList = Collections.unmodifiableList(list as MutableList) diff --git a/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlConfigurationImpl.kt b/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlConfigurationImpl.kt index 31dbdc30..46db5da7 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlConfigurationImpl.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlConfigurationImpl.kt @@ -4,7 +4,7 @@ import kr.toxicity.hud.api.yaml.YamlConfiguration abstract class YamlConfigurationImpl( private val path: String, -): YamlConfiguration { +) : YamlConfiguration { override fun path(): String = path override fun equals(other: Any?): Boolean { if (this === other) return true diff --git a/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlElementImpl.kt b/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlElementImpl.kt index c805a4cd..5a12cc8e 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlElementImpl.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlElementImpl.kt @@ -9,7 +9,7 @@ import java.io.Serializable class YamlElementImpl( path: String, private val any: Any -): YamlConfigurationImpl(path), YamlElement { +) : YamlConfigurationImpl(path), YamlElement { override fun get(): Any = any override fun asString(): String = if (any is Serializable) any.toString() else throw RuntimeException("This is not a string: $any") override fun asInt(): Int = (any as? Number)?.toInt().ifNull("This is not a int: $any") diff --git a/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlObjectImpl.kt b/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlObjectImpl.kt index b4eb6170..9acfd64a 100644 --- a/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlObjectImpl.kt +++ b/dist/src/main/kotlin/kr/toxicity/hud/yaml/YamlObjectImpl.kt @@ -10,7 +10,7 @@ import java.util.* class YamlObjectImpl( path: String, private val map: MutableMap<*, *> -): YamlConfigurationImpl(path), YamlObject { +) : YamlConfigurationImpl(path), YamlObject { override fun save(file: File) { get().saveToYaml(file) diff --git a/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_entity_cutout.json b/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_entity_cutout.json index 69b9e379..92c07842 100644 --- a/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_entity_cutout.json +++ b/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_entity_cutout.json @@ -29,6 +29,7 @@ { "name": "FogEnd", "type": "float", "count": 1, "values": [ 1.0 ] }, { "name": "FogColor", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, { "name": "FogShape", "type": "int", "count": 1, "values": [ 0 ] }, - { "name": "ScreenSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] } + { "name": "ScreenSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "GameTime", "type": "float", "count": 1, "values": [ 0.0 ] } ] } diff --git a/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.json b/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.json index f73c964a..ee44fc8a 100644 --- a/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.json +++ b/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_entity_translucent_cull.json @@ -16,6 +16,7 @@ ], "samplers": [ { "name": "Sampler0" }, + { "name": "Sampler1" }, { "name": "Sampler2" } ], "uniforms": [ @@ -28,6 +29,7 @@ { "name": "FogEnd", "type": "float", "count": 1, "values": [ 1.0 ] }, { "name": "FogColor", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, { "name": "FogShape", "type": "int", "count": 1, "values": [ 0 ] }, - { "name": "ScreenSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] } + { "name": "ScreenSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "GameTime", "type": "float", "count": 1, "values": [ 0.0 ] } ] } diff --git a/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.json b/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.json index f73c964a..ee44fc8a 100644 --- a/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.json +++ b/dist/src/main/resources/pack/assets/minecraft/shaders/core/rendertype_item_entity_translucent_cull.json @@ -16,6 +16,7 @@ ], "samplers": [ { "name": "Sampler0" }, + { "name": "Sampler1" }, { "name": "Sampler2" } ], "uniforms": [ @@ -28,6 +29,7 @@ { "name": "FogEnd", "type": "float", "count": 1, "values": [ 1.0 ] }, { "name": "FogColor", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, { "name": "FogShape", "type": "int", "count": 1, "values": [ 0 ] }, - { "name": "ScreenSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] } + { "name": "ScreenSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }, + { "name": "GameTime", "type": "float", "count": 1, "values": [ 0.0 ] } ] } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7472b783..fe61206a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Feb 29 02:18:16 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