feat(dev): Add copy inventory title button
This commit is contained in:
@@ -1,31 +1,25 @@
|
|||||||
package moe.nea.firmament.features.debug
|
package moe.nea.firmament.features.debug
|
||||||
|
|
||||||
import com.mojang.serialization.Codec
|
|
||||||
import com.mojang.serialization.DynamicOps
|
|
||||||
import com.mojang.serialization.JsonOps
|
import com.mojang.serialization.JsonOps
|
||||||
import com.mojang.serialization.codecs.RecordCodecBuilder
|
|
||||||
import kotlin.jvm.optionals.getOrNull
|
import kotlin.jvm.optionals.getOrNull
|
||||||
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.component.DataComponentTypes
|
import net.minecraft.component.DataComponentTypes
|
||||||
import net.minecraft.component.type.ProfileComponent
|
import net.minecraft.component.type.ProfileComponent
|
||||||
import net.minecraft.entity.Entity
|
import net.minecraft.entity.Entity
|
||||||
import net.minecraft.entity.EntityType
|
|
||||||
import net.minecraft.entity.LivingEntity
|
import net.minecraft.entity.LivingEntity
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
import net.minecraft.item.Items
|
import net.minecraft.item.Items
|
||||||
import net.minecraft.nbt.NbtCompound
|
import net.minecraft.nbt.NbtList
|
||||||
import net.minecraft.nbt.NbtOps
|
import net.minecraft.nbt.NbtOps
|
||||||
import net.minecraft.nbt.NbtString
|
|
||||||
import net.minecraft.predicate.NbtPredicate
|
import net.minecraft.predicate.NbtPredicate
|
||||||
import net.minecraft.text.Text
|
import net.minecraft.text.Text
|
||||||
import net.minecraft.text.TextCodecs
|
import net.minecraft.text.TextCodecs
|
||||||
import net.minecraft.util.Identifier
|
import net.minecraft.util.Identifier
|
||||||
|
import net.minecraft.util.Nameable
|
||||||
import net.minecraft.util.hit.BlockHitResult
|
import net.minecraft.util.hit.BlockHitResult
|
||||||
import net.minecraft.util.hit.EntityHitResult
|
import net.minecraft.util.hit.EntityHitResult
|
||||||
import net.minecraft.util.hit.HitResult
|
import net.minecraft.util.hit.HitResult
|
||||||
import net.minecraft.util.math.Position
|
|
||||||
import net.minecraft.util.math.Vec3d
|
|
||||||
import moe.nea.firmament.annotations.Subscribe
|
import moe.nea.firmament.annotations.Subscribe
|
||||||
import moe.nea.firmament.events.CustomItemModelEvent
|
import moe.nea.firmament.events.CustomItemModelEvent
|
||||||
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
|
import moe.nea.firmament.events.HandledScreenKeyPressedEvent
|
||||||
@@ -46,6 +40,7 @@ import moe.nea.firmament.util.mc.displayNameAccordingToNbt
|
|||||||
import moe.nea.firmament.util.mc.iterableArmorItems
|
import moe.nea.firmament.util.mc.iterableArmorItems
|
||||||
import moe.nea.firmament.util.mc.loreAccordingToNbt
|
import moe.nea.firmament.util.mc.loreAccordingToNbt
|
||||||
import moe.nea.firmament.util.skyBlockId
|
import moe.nea.firmament.util.skyBlockId
|
||||||
|
import moe.nea.firmament.util.tr
|
||||||
|
|
||||||
object PowerUserTools : FirmamentFeature {
|
object PowerUserTools : FirmamentFeature {
|
||||||
override val identifier: String
|
override val identifier: String
|
||||||
@@ -60,6 +55,7 @@ object PowerUserTools : FirmamentFeature {
|
|||||||
val copySkullTexture by keyBindingWithDefaultUnbound("copy-skull-texture")
|
val copySkullTexture by keyBindingWithDefaultUnbound("copy-skull-texture")
|
||||||
val copyEntityData by keyBindingWithDefaultUnbound("entity-data")
|
val copyEntityData by keyBindingWithDefaultUnbound("entity-data")
|
||||||
val copyItemStack by keyBindingWithDefaultUnbound("copy-item-stack")
|
val copyItemStack by keyBindingWithDefaultUnbound("copy-item-stack")
|
||||||
|
val copyTitle by keyBindingWithDefaultUnbound("copy-title")
|
||||||
}
|
}
|
||||||
|
|
||||||
override val config
|
override val config
|
||||||
@@ -185,6 +181,18 @@ object PowerUserTools : FirmamentFeature {
|
|||||||
.orThrow
|
.orThrow
|
||||||
ClipboardUtils.setTextContent(nbt.toPrettyString())
|
ClipboardUtils.setTextContent(nbt.toPrettyString())
|
||||||
lastCopiedStack = Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.stack"))
|
lastCopiedStack = Pair(item, Text.stringifiedTranslatable("firmament.tooltip.copied.stack"))
|
||||||
|
} else if (it.matches(TConfig.copyTitle)) {
|
||||||
|
val allTitles = NbtList()
|
||||||
|
val inventoryNames =
|
||||||
|
it.screen.screenHandler.slots
|
||||||
|
.mapNotNullTo(mutableSetOf()) { it.inventory }
|
||||||
|
.filterIsInstance<Nameable>()
|
||||||
|
.map { it.name }
|
||||||
|
for (it in listOf(it.screen.title) + inventoryNames) {
|
||||||
|
allTitles.add(TextCodecs.CODEC.encodeStart(NbtOps.INSTANCE, it).result().getOrNull()!!)
|
||||||
|
}
|
||||||
|
ClipboardUtils.setTextContent(allTitles.toPrettyString())
|
||||||
|
MC.sendChat(tr("firmament.power-user.title.copied", "Copied screen and inventory titles"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -192,6 +192,8 @@
|
|||||||
"firmament.config.power-user.copy-skull-texture.description": "Copy the texture location that can be used to re-texture the skull under your cross-hair.",
|
"firmament.config.power-user.copy-skull-texture.description": "Copy the texture location that can be used to re-texture the skull under your cross-hair.",
|
||||||
"firmament.config.power-user.copy-texture-pack-id": "Copy Texture Pack Id",
|
"firmament.config.power-user.copy-texture-pack-id": "Copy Texture Pack Id",
|
||||||
"firmament.config.power-user.copy-texture-pack-id.description": "Copy the texture pack id that is used for the item stack under your cursor.",
|
"firmament.config.power-user.copy-texture-pack-id.description": "Copy the texture pack id that is used for the item stack under your cursor.",
|
||||||
|
"firmament.config.power-user.copy-title": "Copy Inventory Title",
|
||||||
|
"firmament.config.power-user.copy-title.description": "Copies Inventory and Screen Titles",
|
||||||
"firmament.config.power-user.entity-data": "Show Entity Data",
|
"firmament.config.power-user.entity-data": "Show Entity Data",
|
||||||
"firmament.config.power-user.entity-data.description": "Print out information about the entity under your cross-hair.",
|
"firmament.config.power-user.entity-data.description": "Print out information about the entity under your cross-hair.",
|
||||||
"firmament.config.power-user.show-item-id": "Show SkyBlock Ids",
|
"firmament.config.power-user.show-item-id": "Show SkyBlock Ids",
|
||||||
|
|||||||
Reference in New Issue
Block a user