Bump to 1.20.4
This commit is contained in:
@@ -17,17 +17,17 @@ fun ItemStack.appendLore(args: List<Text>) {
|
||||
val compoundTag = getOrCreateSubNbt("display")
|
||||
val loreList = compoundTag.getOrCreateList("Lore", NbtString.STRING_TYPE)
|
||||
for (arg in args) {
|
||||
loreList.add(NbtString.of(Text.Serializer.toJson(arg)))
|
||||
loreList.add(NbtString.of(Text.Serialization.toJsonString(arg)))
|
||||
}
|
||||
}
|
||||
|
||||
fun ItemStack.modifyLore(update: (List<Text>) -> List<Text>) {
|
||||
val compoundTag = getOrCreateSubNbt("display")
|
||||
val loreList = compoundTag.getOrCreateList("Lore", NbtString.STRING_TYPE)
|
||||
val parsed = loreList.map { Text.Serializer.fromJson(it.asString())!! }
|
||||
val parsed = loreList.map { Text.Serialization.fromJson(it.asString())!! }
|
||||
val updated = update(parsed)
|
||||
loreList.clear()
|
||||
loreList.addAll(updated.map { NbtString.of(Text.Serializer.toJson(it)) })
|
||||
loreList.addAll(updated.map { NbtString.of(Text.Serialization.toJsonString(it)) })
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@
|
||||
|
||||
package moe.nea.firmament.util
|
||||
|
||||
import java.util.Optional
|
||||
import java.util.*
|
||||
import net.minecraft.client.gui.hud.InGameHud
|
||||
import net.minecraft.scoreboard.ScoreboardDisplaySlot
|
||||
import net.minecraft.scoreboard.Team
|
||||
import net.minecraft.text.StringVisitable
|
||||
@@ -17,10 +18,14 @@ import net.minecraft.util.Formatting
|
||||
fun getScoreboardLines(): List<Text> {
|
||||
val scoreboard = MC.player?.scoreboard ?: return listOf()
|
||||
val activeObjective = scoreboard.getObjectiveForSlot(ScoreboardDisplaySlot.SIDEBAR) ?: return listOf()
|
||||
return scoreboard.getAllPlayerScores(activeObjective).reversed().take(15).map {
|
||||
val team = scoreboard.getPlayerTeam(it.playerName)
|
||||
Team.decorateName(team, Text.literal(it.playerName))
|
||||
}
|
||||
return scoreboard.getScoreboardEntries(activeObjective)
|
||||
.filter { !it.hidden() }
|
||||
.sortedWith(InGameHud.SCOREBOARD_ENTRY_COMPARATOR)
|
||||
.take(15).map {
|
||||
val team = scoreboard.getScoreHolderTeam(it.owner)
|
||||
val text = it.name()
|
||||
Team.decorateName(team, text)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -17,12 +17,12 @@ fun textFromNbt() {
|
||||
|
||||
val ItemStack.loreAccordingToNbt
|
||||
get() = getOrCreateSubNbt(ItemStack.DISPLAY_KEY).getList(ItemStack.LORE_KEY, NbtElement.STRING_TYPE.toInt())
|
||||
.map { lazy(LazyThreadSafetyMode.NONE) { Text.Serializer.fromJson((it as NbtString).asString()) } }
|
||||
.map { lazy(LazyThreadSafetyMode.NONE) { Text.Serialization.fromJson((it as NbtString).asString()) } }
|
||||
|
||||
val ItemStack.displayNameAccordingToNbt
|
||||
get() = getOrCreateSubNbt(ItemStack.DISPLAY_KEY).let {
|
||||
if (it.contains(ItemStack.NAME_KEY, NbtElement.STRING_TYPE.toInt()))
|
||||
Text.Serializer.fromJson(it.getString(ItemStack.NAME_KEY))
|
||||
Text.Serialization.fromJson(it.getString(ItemStack.NAME_KEY))
|
||||
else
|
||||
null
|
||||
}
|
||||
|
||||
@@ -42,11 +42,13 @@ data class MinecraftTexturesPayloadKt(
|
||||
fun GameProfile.setTextures(textures: MinecraftTexturesPayloadKt) {
|
||||
val json = Firmament.json.encodeToString(textures)
|
||||
val encoded = java.util.Base64.getEncoder().encodeToString(json.encodeToByteArray())
|
||||
properties.put(PlayerSkinProvider.TEXTURES, Property(PlayerSkinProvider.TEXTURES, encoded))
|
||||
properties.put(propertyTextures, Property(propertyTextures, encoded))
|
||||
}
|
||||
|
||||
private val propertyTextures = "textures"
|
||||
|
||||
fun decodeProfileTextureProperty(property: Property): MinecraftTexturesPayloadKt? {
|
||||
assertTrueOr(property.name == PlayerSkinProvider.TEXTURES) { return null }
|
||||
assertTrueOr(property.name == propertyTextures) { return null }
|
||||
return try {
|
||||
var encodedF: String = property.value
|
||||
while (encodedF.length % 4 != 0 && encodedF.last() == '=') {
|
||||
|
||||
@@ -6,9 +6,8 @@
|
||||
|
||||
package moe.nea.firmament.util
|
||||
|
||||
import net.minecraft.text.LiteralTextContent
|
||||
import net.minecraft.text.PlainTextContent
|
||||
import net.minecraft.text.Text
|
||||
import net.minecraft.text.TextContent
|
||||
import net.minecraft.text.TranslatableTextContent
|
||||
import moe.nea.firmament.Firmament
|
||||
|
||||
@@ -33,8 +32,7 @@ class TextMatcher(text: Text) {
|
||||
state.offset = 0
|
||||
state.currentText = firstOrNull
|
||||
state.textContent = when (val content = firstOrNull.content) {
|
||||
is LiteralTextContent -> content.string
|
||||
TextContent.EMPTY -> ""
|
||||
is PlainTextContent.Literal -> content.string
|
||||
else -> {
|
||||
Firmament.logger.warn("TextContent of type ${content.javaClass} not understood.")
|
||||
return false
|
||||
|
||||
Reference in New Issue
Block a user