Add custom skull texture keybind for items

This commit is contained in:
Linnea Gräf
2024-03-17 18:22:50 +01:00
parent ec36c21141
commit 55586a64d7
3 changed files with 33 additions and 3 deletions

View File

@@ -10,7 +10,7 @@ fabric_kotlin = "1.9.4+kotlin.1.8.21"
yarn = "1.20.4+build.3" yarn = "1.20.4+build.3"
libgui = "9.2.2+1.20.2" libgui = "9.2.2+1.20.2"
rei = "14.0.688" rei = "14.0.688"
devauth = "1.0.0" devauth = "1.2.0"
modmenu = "9.0.0" modmenu = "9.0.0"
ktor = "2.3.0" ktor = "2.3.0"
dbus_java = "4.2.1" dbus_java = "4.2.1"

View File

@@ -11,5 +11,11 @@ pkgs.mkShell {
temurin-bin-17 temurin-bin-17
reuse reuse
pre-commit pre-commit
glfw
libGL
]; ];
shellHook = ''
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.glfw}/lib"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.libGL}/lib"
'';
} }

View File

@@ -9,6 +9,8 @@ package moe.nea.firmament.features.debug
import net.minecraft.block.SkullBlock import net.minecraft.block.SkullBlock
import net.minecraft.block.entity.SkullBlockEntity import net.minecraft.block.entity.SkullBlockEntity
import net.minecraft.item.ItemStack import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.nbt.NbtHelper
import net.minecraft.text.Text import net.minecraft.text.Text
import net.minecraft.util.hit.BlockHitResult import net.minecraft.util.hit.BlockHitResult
import net.minecraft.util.hit.HitResult import net.minecraft.util.hit.HitResult
@@ -25,6 +27,7 @@ import moe.nea.firmament.mixins.accessor.AccessorHandledScreen
import moe.nea.firmament.util.ClipboardUtils import moe.nea.firmament.util.ClipboardUtils
import moe.nea.firmament.util.MC import moe.nea.firmament.util.MC
import moe.nea.firmament.util.focusedItemStack import moe.nea.firmament.util.focusedItemStack
import moe.nea.firmament.util.getOrCreateCompoundTag
import moe.nea.firmament.util.skyBlockId import moe.nea.firmament.util.skyBlockId
object PowerUserTools : FirmamentFeature { object PowerUserTools : FirmamentFeature {
@@ -105,7 +108,8 @@ object PowerUserTools : FirmamentFeature {
return@subscribe return@subscribe
} }
ClipboardUtils.setTextContent(sbId.neuItem) ClipboardUtils.setTextContent(sbId.neuItem)
lastCopiedStack = Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.skyblockid", sbId.neuItem)) lastCopiedStack =
Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.skyblockid", sbId.neuItem))
} else if (it.matches(TConfig.copyTexturePackId)) { } else if (it.matches(TConfig.copyTexturePackId)) {
val model = CustomItemModelEvent.getModelIdentifier(item) val model = CustomItemModelEvent.getModelIdentifier(item)
if (model == null) { if (model == null) {
@@ -113,11 +117,31 @@ object PowerUserTools : FirmamentFeature {
return@subscribe return@subscribe
} }
ClipboardUtils.setTextContent(model.toString()) ClipboardUtils.setTextContent(model.toString())
lastCopiedStack = Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.modelid", model.toString())) lastCopiedStack =
Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.modelid", model.toString()))
} else if (it.matches(TConfig.copyNbtData)) { } else if (it.matches(TConfig.copyNbtData)) {
val nbt = item.orCreateNbt.toString() val nbt = item.orCreateNbt.toString()
ClipboardUtils.setTextContent(nbt) ClipboardUtils.setTextContent(nbt)
lastCopiedStack = Pair(item, Text.translatable("firmament.tooltip.copied.nbt")) lastCopiedStack = Pair(item, Text.translatable("firmament.tooltip.copied.nbt"))
} else if (it.matches(TConfig.copySkullTexture)) {
if (item.item != Items.PLAYER_HEAD) {
lastCopiedStack = Pair(item, Text.translatable("firmament.tooltip.copied.skull-id.fail.no-skull"))
return@subscribe
}
val profile = NbtHelper.toGameProfile(item.orCreateNbt.getOrCreateCompoundTag("SkullOwner"))
if (profile == null) {
lastCopiedStack = Pair(item, Text.translatable("firmament.tooltip.copied.skull-id.fail.no-profile"))
return@subscribe
}
val skullTexture = CustomSkyBlockTextures.getSkullTexture(profile)
if (skullTexture == null) {
lastCopiedStack = Pair(item, Text.translatable("firmament.tooltip.copied.skull-id.fail.no-texture"))
return@subscribe
}
ClipboardUtils.setTextContent(skullTexture.toString())
lastCopiedStack =
Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.skull-id", skullTexture.toString()))
println("Copied skull id: $skullTexture")
} }
} }
} }