Fix top skin layers not being rendered in mob drop recipes

This commit is contained in:
Linnea Gräf
2024-07-30 19:18:19 +02:00
parent df29eccdcc
commit 95c1b75a14
3 changed files with 27 additions and 1 deletions

View File

@@ -39,6 +39,10 @@ class GuiPlayer(world: ClientWorld?, profile: GameProfile?) : AbstractClientPlay
return false return false
} }
override fun shouldRenderName(): Boolean {
return false
}
var skinTexture: Identifier = DefaultSkinHelper.getSkinTextures(this.getUuid()).texture var skinTexture: Identifier = DefaultSkinHelper.getSkinTextures(this.getUuid()).texture
var capeTexture: Identifier? = null var capeTexture: Identifier? = null
var model: Model = Model.WIDE var model: Model = Model.WIDE

View File

@@ -7,11 +7,17 @@
package moe.nea.firmament.gui.entity package moe.nea.firmament.gui.entity
import com.google.gson.JsonObject import com.google.gson.JsonObject
import com.google.gson.JsonPrimitive
import kotlin.experimental.and
import kotlin.experimental.or
import net.minecraft.client.util.SkinTextures import net.minecraft.client.util.SkinTextures
import net.minecraft.entity.LivingEntity import net.minecraft.entity.LivingEntity
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.entity.player.PlayerModelPart
import net.minecraft.util.Identifier import net.minecraft.util.Identifier
object ModifyPlayerSkin : EntityModifier { object ModifyPlayerSkin : EntityModifier {
val playerModelPartIndex = PlayerModelPart.entries.associateBy { it.getName() }
override fun apply(entity: LivingEntity, info: JsonObject): LivingEntity { override fun apply(entity: LivingEntity, info: JsonObject): LivingEntity {
require(entity is GuiPlayer) require(entity is GuiPlayer)
info["cape"]?.let { info["cape"]?.let {
@@ -24,7 +30,21 @@ object ModifyPlayerSkin : EntityModifier {
entity.model = if (it.asBoolean) SkinTextures.Model.SLIM else SkinTextures.Model.WIDE entity.model = if (it.asBoolean) SkinTextures.Model.SLIM else SkinTextures.Model.WIDE
} }
info["parts"]?.let { info["parts"]?.let {
// TODO: support parts var trackedData = entity.dataTracker.get(PlayerEntity.PLAYER_MODEL_PARTS)
if (it is JsonPrimitive && it.isBoolean) {
trackedData = (if (it.asBoolean) -1 else 0).toByte()
} else {
val obj = it.asJsonObject
for ((k, v) in obj.entrySet()) {
val part = playerModelPartIndex[k]!!
trackedData = if (v.asBoolean) {
trackedData and (part.bitFlag.inv().toByte())
} else {
trackedData or (part.bitFlag.toByte())
}
}
}
entity.dataTracker.set(PlayerEntity.PLAYER_MODEL_PARTS, trackedData)
} }
return entity return entity
} }

View File

@@ -19,3 +19,5 @@ accessible method net/minecraft/client/gui/DrawContext drawTexturedQuad (Lnet/mi
mutable field net/minecraft/screen/slot/Slot x I mutable field net/minecraft/screen/slot/Slot x I
mutable field net/minecraft/screen/slot/Slot y I mutable field net/minecraft/screen/slot/Slot y I
accessible field net/minecraft/entity/player/PlayerEntity PLAYER_MODEL_PARTS Lnet/minecraft/entity/data/TrackedData;