diff options
author | Linnea Gräf <nea@nea.moe> | 2025-06-18 00:35:51 +0200 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2025-06-18 00:35:51 +0200 |
commit | 4a29d86e477c41327bc97f75c332e37e3dae9bbe (patch) | |
tree | 2b9b61bad629f160d974b8fbccb6fce21972cd8d | |
parent | 4b9e966ca7e8a9291f307850f715820e122d69fd (diff) | |
download | Firmament-4a29d86e477c41327bc97f75c332e37e3dae9bbe.tar.gz Firmament-4a29d86e477c41327bc97f75c332e37e3dae9bbe.tar.bz2 Firmament-4a29d86e477c41327bc97f75c332e37e3dae9bbe.zip |
feat: Add 1.8.9 item exporter
-rw-r--r-- | src/main/kotlin/Firmament.kt | 13 | ||||
-rw-r--r-- | src/main/kotlin/features/debug/PowerUserTools.kt | 10 | ||||
-rw-r--r-- | src/main/kotlin/features/debug/itemeditor/ItemExporter.kt | 246 | ||||
-rw-r--r-- | src/main/kotlin/features/debug/itemeditor/LegacyItemData.kt | 73 | ||||
-rw-r--r-- | src/main/kotlin/util/LegacyTagWriter.kt | 103 | ||||
-rw-r--r-- | src/main/kotlin/util/SkyblockId.kt | 2 | ||||
-rw-r--r-- | src/main/kotlin/util/json/KJsonUtils.kt | 11 | ||||
-rw-r--r-- | src/main/kotlin/util/mc/NbtUtil.kt | 10 | ||||
-rw-r--r-- | src/main/kotlin/util/mc/SNbtFormatter.kt | 7 | ||||
-rw-r--r-- | src/main/kotlin/util/textutil.kt | 41 | ||||
-rw-r--r-- | src/main/resources/legacy_data/enchantments.json | 560 | ||||
-rw-r--r-- | src/main/resources/legacy_data/items.json | 3733 |
12 files changed, 4796 insertions, 13 deletions
diff --git a/src/main/kotlin/Firmament.kt b/src/main/kotlin/Firmament.kt index 7bc7d44..e89fc99 100644 --- a/src/main/kotlin/Firmament.kt +++ b/src/main/kotlin/Firmament.kt @@ -26,7 +26,6 @@ import net.fabricmc.loader.api.Version import net.fabricmc.loader.api.metadata.ModMetadata import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger -import org.spongepowered.asm.launch.MixinBootstrap import kotlinx.coroutines.CoroutineName import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -74,10 +73,22 @@ object Firmament { allowTrailingComma = true ignoreUnknownKeys = true encodeDefaults = true + prettyPrintIndent = "\t" + } + + /** + * FUCK two space indentation + */ + val twoSpaceJson = Json(from = json) { + prettyPrintIndent = " " } val gson = Gson() val tightJson = Json(from = json) { prettyPrint = false + // Reset pretty print indent back to default to prevent getting yelled at by json + prettyPrintIndent = " " + encodeDefaults = false + explicitNulls = false } diff --git a/src/main/kotlin/features/debug/PowerUserTools.kt b/src/main/kotlin/features/debug/PowerUserTools.kt index 893b176..b29411b 100644 --- a/src/main/kotlin/features/debug/PowerUserTools.kt +++ b/src/main/kotlin/features/debug/PowerUserTools.kt @@ -56,6 +56,7 @@ object PowerUserTools : FirmamentFeature { val copyEntityData by keyBindingWithDefaultUnbound("entity-data") val copyItemStack by keyBindingWithDefaultUnbound("copy-item-stack") val copyTitle by keyBindingWithDefaultUnbound("copy-title") + val exportItemStackToRepo by keyBindingWithDefaultUnbound("export-item-stack") } override val config @@ -64,14 +65,13 @@ object PowerUserTools : FirmamentFeature { var lastCopiedStack: Pair<ItemStack, Text>? = null set(value) { field = value - if (value != null) lastCopiedStackViewTime = true + if (value != null) lastCopiedStackViewTime = 2 } - var lastCopiedStackViewTime = false + var lastCopiedStackViewTime = 0 @Subscribe fun resetLastCopiedStack(event: TickEvent) { - if (!lastCopiedStackViewTime) lastCopiedStack = null - lastCopiedStackViewTime = false + if (lastCopiedStackViewTime-- < 0) lastCopiedStack = null } @Subscribe @@ -232,7 +232,7 @@ object PowerUserTools : FirmamentFeature { lastCopiedStack = null return } - lastCopiedStackViewTime = true + lastCopiedStackViewTime = 0 it.lines.add(text) } diff --git a/src/main/kotlin/features/debug/itemeditor/ItemExporter.kt b/src/main/kotlin/features/debug/itemeditor/ItemExporter.kt new file mode 100644 index 0000000..740648f --- /dev/null +++ b/src/main/kotlin/features/debug/itemeditor/ItemExporter.kt @@ -0,0 +1,246 @@ +package moe.nea.firmament.features.debug.itemeditor + +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put +import kotlin.concurrent.thread +import kotlin.io.path.createParentDirectories +import kotlin.io.path.relativeTo +import kotlin.io.path.writeText +import net.minecraft.component.DataComponentTypes +import net.minecraft.item.ItemStack +import net.minecraft.nbt.NbtCompound +import net.minecraft.nbt.NbtInt +import net.minecraft.nbt.NbtString +import net.minecraft.text.Text +import net.minecraft.util.Unit +import moe.nea.firmament.Firmament +import moe.nea.firmament.annotations.Subscribe +import moe.nea.firmament.events.ClientStartedEvent +import moe.nea.firmament.events.HandledScreenKeyPressedEvent +import moe.nea.firmament.features.debug.PowerUserTools +import moe.nea.firmament.repo.RepoDownloadManager +import moe.nea.firmament.util.HypixelPetInfo +import moe.nea.firmament.util.LegacyTagWriter.Companion.toLegacyString +import moe.nea.firmament.util.StringUtil.words +import moe.nea.firmament.util.directLiteralStringContent +import moe.nea.firmament.util.extraAttributes +import moe.nea.firmament.util.focusedItemStack +import moe.nea.firmament.util.getLegacyFormatString +import moe.nea.firmament.util.json.toJsonArray +import moe.nea.firmament.util.mc.displayNameAccordingToNbt +import moe.nea.firmament.util.mc.loreAccordingToNbt +import moe.nea.firmament.util.mc.toNbtList +import moe.nea.firmament.util.skyBlockId +import moe.nea.firmament.util.skyblock.Rarity +import moe.nea.firmament.util.tr +import moe.nea.firmament.util.transformEachRecursively +import moe.nea.firmament.util.unformattedString + +class ItemExporter(var itemStack: ItemStack) { + var lore = itemStack.loreAccordingToNbt + var name = itemStack.displayNameAccordingToNbt + val extraAttribs = itemStack.extraAttributes.copy() + val legacyNbt = NbtCompound() + val warnings = mutableListOf<String>() + + fun preprocess() { + // TODO: split up preprocess steps into preprocess actions that can be toggled in a ui + extraAttribs.remove("timestamp") + extraAttribs.remove("uuid") + extraAttribs.remove("modifier") + extraAttribs.getString("petInfo").ifPresent { petInfoJson -> + var petInfo = Firmament.json.decodeFromString<HypixelPetInfo>(petInfoJson) + petInfo = petInfo.copy(candyUsed = 0, heldItem = null, exp = 0.0, active = null, uuid = null) + extraAttribs.putString("petInfo", Firmament.tightJson.encodeToString(petInfo)) + } + itemStack.skyBlockId?.let { + extraAttribs.putString("id", it.neuItem) + } + trimLore() + } + + fun trimLore() { + val rarityIdx = lore.indexOfLast { + val firstWordInLine = it.unformattedString.words().filter { it.length > 2 }.firstOrNull() + firstWordInLine?.let(Rarity::fromString) != null + } + if (rarityIdx >= 0) { + lore = lore.subList(0, rarityIdx + 1) + } + deleteLineUntilNextSpace { it.startsWith("Held Item: ") } + deleteLineUntilNextSpace { it.startsWith("Progress to Level ") } + deleteLineUntilNextSpace { it.startsWith("MAX LEVEL") } + collapseWhitespaces() + + name = name.transformEachRecursively { + var string = it.directLiteralStringContent ?: return@transformEachRecursively it + string = string.replace("Lvl \\d+".toRegex(), "Lvl {LVL}") + Text.literal(string).setStyle(it.style) + } + } + + fun collapseWhitespaces() { + lore = (listOf(null as Text?) + lore).zipWithNext() + .filter { !it.first?.unformattedString.isNullOrBlank() || !it.second?.unformattedString.isNullOrBlank() } + .map { it.second!! } + } + + fun deleteLineUntilNextSpace(search: (String) -> Boolean) { + val idx = lore.indexOfFirst { search(it.unformattedString) } + if (idx < 0) return + val l = lore.toMutableList() + val p = l.subList(idx, l.size) + val nextBlank = p.indexOfFirst { it.unformattedString.isEmpty() } + if (nextBlank < 0) + p.clear() + else + p.subList(0, nextBlank).clear() + lore = l + } + + fun processNbt() { + // TODO: calculate hideflags + legacyNbt.put("HideFlags", NbtInt.of(254)) + copyUnbreakable() + copyExtraAttributes() + copyLegacySkullNbt() + copyDisplay() + copyEnchantments() + copyEnchantGlint() + // TODO: copyDisplay + } + + private fun copyDisplay() { + legacyNbt.put("display", NbtCompound().apply { + put("Lore", lore.map { NbtString.of(it.getLegacyFormatString(trimmed = true)) }.toNbtList()) + putString("Name", name.getLegacyFormatString(trimmed = true)) + }) + } + + fun exportJson(): JsonElement { + preprocess() + processNbt() + return buildJsonObject { + val (itemId, damage) = legacyifyItemStack() + put("itemid", itemId) + put("displayname", name.getLegacyFormatString(trimmed = true)) + put("nbttag", legacyNbt.toLegacyString()) + put("damage", damage) + put("lore", lore.map { it.getLegacyFormatString(trimmed = true) }.toJsonArray()) + val sbId = itemStack.skyBlockId + if (sbId == null) + warnings.add("Could not find skyblock id") + put("internalname", sbId?.neuItem) + put("clickcommand", "") + put("crafttext", "") + put("modver", "Firmament ${Firmament.version.friendlyString}") + put("infoType", "") + put("info", JsonArray(listOf())) + } + + } + + companion object { + @Subscribe + fun load(event: ClientStartedEvent) { + thread(start = true, name = "ItemExporter Meta Load Thread") { + LegacyItemData.itemLut + } + } + + @Subscribe + fun onKeyBind(event: HandledScreenKeyPressedEvent) { + if (event.matches(PowerUserTools.TConfig.exportItemStackToRepo)) { + val itemStack = event.screen.focusedItemStack ?: return + val exporter = ItemExporter(itemStack) + val json = exporter.exportJson() + val jsonFormatted = Firmament.twoSpaceJson.encodeToString(json) + val itemFile = RepoDownloadManager.repoSavedLocation.resolve("items") + .resolve("${json.jsonObject["internalname"]!!.jsonPrimitive.content}.json") + itemFile.createParentDirectories() + itemFile.writeText(jsonFormatted) + PowerUserTools.lastCopiedStack = Pair( + itemStack, + tr( + "firmament.repoexport.success", + "Exported item to ${itemFile.relativeTo(RepoDownloadManager.repoSavedLocation)}${ + exporter.warnings.joinToString( + "" + ) { "\nWarning: $it" } + }" + ) + ) + } + } + } + + fun copyEnchantGlint() { + if (itemStack.get(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE) == true) { + val ench = legacyNbt.getListOrEmpty("ench") + legacyNbt.put("ench", ench) + } + } + + private fun copyUnbreakable() { + if (itemStack.get(DataComponentTypes.UNBREAKABLE) == Unit.INSTANCE) { + legacyNbt.putBoolean("Unbreakable", true) + } + } + + fun copyEnchantments() { + val enchantments = itemStack.get(DataComponentTypes.ENCHANTMENTS)?.takeIf { !it.isEmpty } ?: return + val enchTag = legacyNbt.getListOrEmpty("ench") + legacyNbt.put("ench", enchTag) + enchantments.enchantmentEntries.forEach { entry -> + val id = entry.key.key.get().value + val legacyId = LegacyItemData.enchantmentLut[id] + if (legacyId == null) { + warnings.add("Could not find legacy enchantment id for ${id}") + return@forEach + } + enchTag.add(NbtCompound().apply { + putShort("lvl", entry.intValue.toShort()) + putShort( + "id", + legacyId.id.toShort() + ) + }) + } + } + + fun copyExtraAttributes() { + legacyNbt.put("ExtraAttributes", extraAttribs) + } + + fun copyLegacySkullNbt() { + val profile = itemStack.get(DataComponentTypes.PROFILE) ?: return + legacyNbt.put("SkullOwner", NbtCompound().apply { + profile.id.ifPresent { + putString("Id", it.toString()) + } + putBoolean("hypixelPopulated", true) + put("Properties", NbtCompound().apply { + profile.properties().forEach { prop, value -> + val list = getListOrEmpty(prop) + put(prop, list) + list.add(NbtCompound().apply { + value.signature?.let { + putString("Signature", it) + } + putString("Value", value.value) + putString("Name", value.name) + }) + } + }) + }) + } + + fun legacyifyItemStack(): LegacyItemData.LegacyItemType { + // TODO: add a default here + return LegacyItemData.itemLut[itemStack.item]!! + } +} diff --git a/src/main/kotlin/features/debug/itemeditor/LegacyItemData.kt b/src/main/kotlin/features/debug/itemeditor/LegacyItemData.kt new file mode 100644 index 0000000..2332e2d --- /dev/null +++ b/src/main/kotlin/features/debug/itemeditor/LegacyItemData.kt @@ -0,0 +1,73 @@ +package moe.nea.firmament.features.debug.itemeditor + +import kotlinx.serialization.Serializable +import kotlin.jvm.optionals.getOrNull +import net.minecraft.item.ItemStack +import net.minecraft.nbt.NbtCompound +import net.minecraft.util.Identifier +import moe.nea.firmament.Firmament +import moe.nea.firmament.repo.ItemCache +import moe.nea.firmament.util.MC + +/** + * Load data based on [prismarine.js' 1.8 item data](https://github.com/PrismarineJS/minecraft-data/blob/master/data/pc/1.8/items.json) + */ +object LegacyItemData { + @Serializable + data class ItemData( + val id: Int, + val name: String, + val displayName: String, + val stackSize: Int, + val variations: List<Variation> = listOf() + ) { + val properId = if (name.contains(":")) name else "minecraft:$name" + + fun allVariants() = + variations.map { LegacyItemType(properId, it.metadata.toShort()) } + LegacyItemType(properId, 0) + } + + @Serializable + data class Variation( + val metadata: Int, val displayName: String + ) + + data class LegacyItemType( + val name: String, + val metadata: Short + ) { + override fun toString(): String { + return "$name:$metadata" + } + } + + @Serializable + data class EnchantmentData( + val id: Int, + val name: String, + val displayName: String, + ) + + inline fun <reified T : Any> getLegacyData(name: String) = + Firmament.tryDecodeJsonFromStream<T>( + LegacyItemData::class.java.getResourceAsStream("/legacy_data/$name.json")!! + ).getOrThrow() + + val enchantmentData = getLegacyData<List<EnchantmentData>>("enchantments") + val enchantmentLut = enchantmentData.associateBy { Identifier.ofVanilla(it.name) } + + val itemDat = getLegacyData<List<ItemData>>("items") + val itemLut = itemDat.flatMap { item -> + item.allVariants().map { legacyItemType -> + val nbt = ItemCache.convert189ToModern(NbtCompound().apply { + putString("id", legacyItemType.name) + putByte("Count", 1) + putShort("Damage", legacyItemType.metadata) + })!! + val stack = ItemStack.fromNbt(MC.defaultRegistries, nbt).getOrNull() + ?: error("Could not transform ${legacyItemType}") + stack.item to legacyItemType + } + }.toMap() + +} diff --git a/src/main/kotlin/util/LegacyTagWriter.kt b/src/main/kotlin/util/LegacyTagWriter.kt new file mode 100644 index 0000000..9889b2c --- /dev/null +++ b/src/main/kotlin/util/LegacyTagWriter.kt @@ -0,0 +1,103 @@ +package moe.nea.firmament.util + +import kotlinx.serialization.json.JsonPrimitive +import net.minecraft.nbt.AbstractNbtList +import net.minecraft.nbt.NbtByte +import net.minecraft.nbt.NbtCompound +import net.minecraft.nbt.NbtDouble +import net.minecraft.nbt.NbtElement +import net.minecraft.nbt.NbtEnd +import net.minecraft.nbt.NbtFloat +import net.minecraft.nbt.NbtInt +import net.minecraft.nbt.NbtLong +import net.minecraft.nbt.NbtShort +import net.minecraft.nbt.NbtString +import moe.nea.firmament.util.mc.SNbtFormatter.Companion.SIMPLE_NAME + +class LegacyTagWriter(val compact: Boolean) { + companion object { + fun stringify(nbt: NbtElement, compact: Boolean): String { + return LegacyTagWriter(compact).also { it.writeElement(nbt) } + .stringWriter.toString() + } + + fun NbtElement.toLegacyString(pretty: Boolean = false): String { + return stringify(this, !pretty) + } + } + + val stringWriter = StringBuilder() + var indent = 0 + fun newLine() { + if (compact) return + stringWriter.append('\n') + repeat(indent) { + stringWriter.append(" ") + } + } + + fun writeElement(nbt: NbtElement) { + when (nbt) { + is NbtInt -> stringWriter.append(nbt.value.toString()) + is NbtString -> stringWriter.append(escapeString(nbt.value)) + is NbtFloat -> stringWriter.append(nbt.value).append('F') + is NbtDouble -> stringWriter.append(nbt.value).append('D') + is NbtByte -> stringWriter.append(nbt.value).append('B') + is NbtLong -> stringWriter.append(nbt.value).append('L') + is NbtShort -> stringWriter.append(nbt.value).append('S') + is NbtCompound -> writeCompound(nbt) + is NbtEnd -> {} + is AbstractNbtList -> writeArray(nbt) + } + } + + fun writeArray(nbt: AbstractNbtList) { + stringWriter.append('[') + indent++ + newLine() + nbt.forEachIndexed { index, element -> + writeName(index.toString()) + writeElement(element) + if (index != nbt.size() - 1) { + stringWriter.append(',') + newLine() + } + } + indent-- + if (nbt.size() != 0) + newLine() + stringWriter.append(']') + } + + fun writeCompound(nbt: NbtCompound) { + stringWriter.append('{') + indent++ + newLine() + val entries = nbt.entrySet().sortedBy { it.key } + entries.forEachIndexed { index, it -> + writeName(it.key) + writeElement(it.value) + if (index != entries.lastIndex) { + stringWriter.append(',') + newLine() + } + } + indent-- + if (nbt.size != 0) + newLine() + stringWriter.append('}') + } + + fun escapeString(string: String): String { + return JsonPrimitive(string).toString() + } + + fun escapeName(key: String): String = + if (key.matches(SIMPLE_NAME)) key else escapeString(key) + + fun writeName(key: String) { + stringWriter.append(escapeName(key)) + stringWriter.append(':') + if (!compact) stringWriter.append(' ') + } +} diff --git a/src/main/kotlin/util/SkyblockId.kt b/src/main/kotlin/util/SkyblockId.kt index a2c586a..58aa24c 100644 --- a/src/main/kotlin/util/SkyblockId.kt +++ b/src/main/kotlin/util/SkyblockId.kt @@ -104,7 +104,7 @@ data class HypixelPetInfo( val exp: Double = 0.0, val candyUsed: Int = 0, val uuid: UUID? = null, - val active: Boolean = false, + val active: Boolean? = false, val heldItem: String? = null, ) { val skyblockId get() = SkyblockId("${type.uppercase()};${tier.ordinal}") // TODO: is this ordinal set up correctly? diff --git a/src/main/kotlin/util/json/KJsonUtils.kt b/src/main/kotlin/util/json/KJsonUtils.kt new file mode 100644 index 0000000..b15119b --- /dev/null +++ b/src/main/kotlin/util/json/KJsonUtils.kt @@ -0,0 +1,11 @@ +package moe.nea.firmament.util.json + +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive + +fun <T : JsonElement> List<T>.asJsonArray(): JsonArray { + return JsonArray(this) +} + +fun Iterable<String>.toJsonArray(): JsonArray = map { JsonPrimitive(it) }.asJsonArray() diff --git a/src/main/kotlin/util/mc/NbtUtil.kt b/src/main/kotlin/util/mc/NbtUtil.kt new file mode 100644 index 0000000..cc98142 --- /dev/null +++ b/src/main/kotlin/util/mc/NbtUtil.kt @@ -0,0 +1,10 @@ +package moe.nea.firmament.util.mc + +import net.minecraft.nbt.NbtElement +import net.minecraft.nbt.NbtList + +fun Iterable<NbtElement>.toNbtList() = NbtList().also { + for(element in this) { + it.add(element) + } +} diff --git a/src/main/kotlin/util/mc/SNbtFormatter.kt b/src/main/kotlin/util/mc/SNbtFormatter.kt index e2c24f6..7617d17 100644 --- a/src/main/kotlin/util/mc/SNbtFormatter.kt +++ b/src/main/kotlin/util/mc/SNbtFormatter.kt @@ -110,7 +110,7 @@ class SNbtFormatter private constructor() : NbtElementVisitor { keys.forEachIndexed { index, key -> writeIndent() val element = compound[key] ?: error("Key '$key' found but not present in compound: $compound") - val escapedName = if (key.matches(SIMPLE_NAME)) key else NbtString.escape(key) + val escapedName = escapeName(key) result.append(escapedName).append(": ") element.accept(this) if (keys.size != index + 1) { @@ -134,6 +134,9 @@ class SNbtFormatter private constructor() : NbtElementVisitor { fun NbtElement.toPrettyString() = prettify(this) - private val SIMPLE_NAME = "[A-Za-z0-9._+-]+".toRegex() + fun escapeName(key: String): String = + if (key.matches(SIMPLE_NAME)) key else NbtString.escape(key) + + val SIMPLE_NAME = "[A-Za-z0-9._+-]+".toRegex() } } diff --git a/src/main/kotlin/util/textutil.kt b/src/main/kotlin/util/textutil.kt index 2458891..cfda2e9 100644 --- a/src/main/kotlin/util/textutil.kt +++ b/src/main/kotlin/util/textutil.kt @@ -56,6 +56,7 @@ fun OrderedText.reconstitute(): MutableText { return base } + fun StringVisitable.reconstitute(): MutableText { val base = Text.literal("") base.setStyle(Style.EMPTY.withItalic(false)) @@ -82,15 +83,47 @@ val Text.unformattedString: String val Text.directLiteralStringContent: String? get() = (this.content as? PlainTextContent)?.string() -fun Text.getLegacyFormatString() = +fun Text.getLegacyFormatString(trimmed: Boolean = false): String = run { + var lastCode = "§r" val sb = StringBuilder() + fun appendCode(code: String) { + if (code != lastCode || !trimmed) { + sb.append(code) + lastCode = code + } + } for (component in iterator()) { - sb.append(component.style.color?.toChatFormatting()?.toString() ?: "§r") + if (component.directLiteralStringContent.isNullOrEmpty() && component.siblings.isEmpty()) { + continue + } + appendCode(component.style.let { style -> + var color = style.color?.toChatFormatting()?.toString() ?: "§r" + if (style.isBold) + color += LegacyFormattingCode.BOLD.formattingCode + if (style.isItalic) + color += LegacyFormattingCode.ITALIC.formattingCode + if (style.isUnderlined) + color += LegacyFormattingCode.UNDERLINE.formattingCode + if (style.isObfuscated) + color += LegacyFormattingCode.OBFUSCATED.formattingCode + if (style.isStrikethrough) + color += LegacyFormattingCode.STRIKETHROUGH.formattingCode + color + }) sb.append(component.directLiteralStringContent) - sb.append("§r") + if (!trimmed) + appendCode("§r") } sb.toString() + }.also { + var it = it + if (trimmed) { + it = it.removeSuffix("§r") + if (it.length == 2 && it.startsWith("§")) + it = "" + } + it } private val textColorLUT = Formatting.entries @@ -127,7 +160,7 @@ fun MutableText.darkGrey() = withColor(Formatting.DARK_GRAY) fun MutableText.red() = withColor(Formatting.RED) fun MutableText.white() = withColor(Formatting.WHITE) fun MutableText.bold(): MutableText = styled { it.withBold(true) } -fun MutableText.hover(text: Text): MutableText = styled {it.withHoverEvent(HoverEvent.ShowText(text))} +fun MutableText.hover(text: Text): MutableText = styled { it.withHoverEvent(HoverEvent.ShowText(text)) } fun MutableText.clickCommand(command: String): MutableText { diff --git a/src/main/resources/legacy_data/enchantments.json b/src/main/resources/legacy_data/enchantments.json new file mode 100644 index 0000000..8eeaa6e --- /dev/null +++ b/src/main/resources/legacy_data/enchantments.json @@ -0,0 +1,560 @@ +[ + { + "id": 0, + "name": "protection", + "displayName": "Protection", + "maxLevel": 4, + "minCost": { + "a": 11, + "b": -10 + }, + "maxCost": { + "a": 11, + "b": 1 + }, + "exclude": [ + "blast_protection", + "fire_protection", + "projectile_protection" + ], + "category": "armor", + "weight": 10, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 1, + "name": "fire_protection", + "displayName": "Fire Protection", + "maxLevel": 4, + "minCost": { + "a": 8, + "b": 2 + }, + "maxCost": { + "a": 8, + "b": 10 + }, + "exclude": [ + "blast_protection", + "protection", + "projectile_protection" + ], + "category": "armor", + "weight": 5, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 2, + "name": "feather_falling", + "displayName": "Feather Falling", + "maxLevel": 4, + "minCost": { + "a": 6, + "b": -1 + }, + "maxCost": { + "a": 6, + "b": 5 + }, + "exclude": [], + "category": "armor_feet", + "weight": 5, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 3, + "name": "blast_protection", + "displayName": "Blast Protection", + "maxLevel": 4, + "minCost": { + "a": 8, + "b": -3 + }, + "maxCost": { + "a": 8, + "b": 5 + }, + "exclude": [ + "fire_protection", + "protection", + "projectile_protection" + ], + "category": "armor", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 4, + "name": "projectile_protection", + "displayName": "Projectile Protection", + "maxLevel": 4, + "minCost": { + "a": 6, + "b": -3 + }, + "maxCost": { + "a": 6, + "b": 3 + }, + "exclude": [ + "protection", + "blast_protection", + "fire_protection" + ], + "category": "armor", + "weight": 5, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 5, + "name": "respiration", + "displayName": "Respiration", + "maxLevel": 3, + "minCost": { + "a": 10, + "b": 0 + }, + "maxCost": { + "a": 10, + "b": 30 + }, + "exclude": [], + "category": "armor_head", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 6, + "name": "aqua_affinity", + "displayName": "Aqua Affinity", + "maxLevel": 1, + "minCost": { + "a": 0, + "b": 1 + }, + "maxCost": { + "a": 0, + "b": 41 + }, + "exclude": [], + "category": "armor_head", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 7, + "name": "thorns", + "displayName": "Thorns", + "maxLevel": 3, + "minCost": { + "a": 20, + "b": -10 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [], + "category": "armor_chest", + "weight": 1, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 8, + "name": "depth_strider", + "displayName": "Depth Strider", + "maxLevel": 3, + "minCost": { + "a": 10, + "b": 0 + }, + "maxCost": { + "a": 10, + "b": 15 + }, + "exclude": [ + "frost_walker" + ], + "category": "armor_feet", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 16, + "name": "sharpness", + "displayName": "Sharpness", + "maxLevel": 5, + "minCost": { + "a": 11, + "b": -10 + }, + "maxCost": { + "a": 11, + "b": 10 + }, + "exclude": [ + "smite", + "bane_of_arthropods" + ], + "category": "weapon", + "weight": 10, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 17, + "name": "smite", + "displayName": "Smite", + "maxLevel": 5, + "minCost": { + "a": 8, + "b": -3 + }, + "maxCost": { + "a": 8, + "b": 17 + }, + "exclude": [ + "sharpness", + "bane_of_arthropods" + ], + "category": "weapon", + "weight": 5, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 18, + "name": "bane_of_arthropods", + "displayName": "Bane of Arthropods", + "maxLevel": 5, + "minCost": { + "a": 8, + "b": -3 + }, + "maxCost": { + "a": 8, + "b": 17 + }, + "exclude": [ + "smite", + "sharpness" + ], + "category": "weapon", + "weight": 5, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 19, + "name": "knockback", + "displayName": "Knockback", + "maxLevel": 2, + "minCost": { + "a": 20, + "b": -15 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [], + "category": "weapon", + "weight": 5, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 20, + "name": "fire_aspect", + "displayName": "Fire Aspect", + "maxLevel": 2, + "minCost": { + "a": 20, + "b": -10 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [], + "category": "weapon", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 21, + "name": "looting", + "displayName": "Looting", + "maxLevel": 3, + "minCost": { + "a": 9, + "b": 6 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [], + "category": "weapon", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 32, + "name": "efficiency", + "displayName": "Efficiency", + "maxLevel": 5, + "minCost": { + "a": 10, + "b": -9 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [], + "category": "digger", + "weight": 10, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 33, + "name": "silk_touch", + "displayName": "Silk Touch", + "maxLevel": 1, + "minCost": { + "a": 0, + "b": 15 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [ + "fortune" + ], + "category": "digger", + "weight": 1, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 34, + "name": "unbreaking", + "displayName": "Unbreaking", + "maxLevel": 3, + "minCost": { + "a": 8, + "b": -3 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [], + "category": "breakable", + "weight": 5, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 35, + "name": "fortune", + "displayName": "Fortune", + "maxLevel": 3, + "minCost": { + "a": 9, + "b": 6 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [ + "silk_touch" + ], + "category": "digger", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 48, + "name": "power", + "displayName": "Power", + "maxLevel": 5, + "minCost": { + "a": 10, + "b": -9 + }, + "maxCost": { + "a": 10, + "b": 6 + }, + "exclude": [], + "category": "bow", + "weight": 10, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 49, + "name": "punch", + "displayName": "Punch", + "maxLevel": 2, + "minCost": { + "a": 20, + "b": -8 + }, + "maxCost": { + "a": 20, + "b": 17 + }, + "exclude": [], + "category": "bow", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 50, + "name": "flame", + "displayName": "Flame", + "maxLevel": 1, + "minCost": { + "a": 0, + "b": 20 + }, + "maxCost": { + "a": 0, + "b": 50 + }, + "exclude": [], + "category": "bow", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 51, + "name": "infinity", + "displayName": "Infinity", + "maxLevel": 1, + "minCost": { + "a": 0, + "b": 20 + }, + "maxCost": { + "a": 0, + "b": 50 + }, + "exclude": [ + "mending" + ], + "category": "bow", + "weight": 1, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 61, + "name": "luck_of_the_sea", + "displayName": "Luck of the Sea", + "maxLevel": 3, + "minCost": { + "a": 9, + "b": 6 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [], + "category": "fishing_rod", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + }, + { + "id": 62, + "name": "lure", + "displayName": "Lure", + "maxLevel": 3, + "minCost": { + "a": 9, + "b": 6 + }, + "maxCost": { + "a": 10, + "b": 51 + }, + "exclude": [], + "category": "fishing_rod", + "weight": 2, + "treasureOnly": false, + "curse": false, + "tradeable": true, + "discoverable": true + } +] diff --git a/src/main/resources/legacy_data/items.json b/src/main/resources/legacy_data/items.json new file mode 100644 index 0000000..a32702c --- /dev/null +++ b/src/main/resources/legacy_data/items.json @@ -0,0 +1,3733 @@ +[ + { + "id": 1, + "displayName": "Stone", + "name": "stone", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Stone" + }, + { + "metadata": 1, + "displayName": "Granite" + }, + { + "metadata": 2, + "displayName": "Polished Granite" + }, + { + "metadata": 3, + "displayName": "Diorite" + }, + { + "metadata": 4, + "displayName": "Polished Diorite" + }, + { + "metadata": 5, + "displayName": "Andesite" + }, + { + "metadata": 6, + "displayName": "Polished Andesite" + } + ] + }, + { + "id": 2, + "displayName": "Grass Block", + "name": "grass", + "stackSize": 64 + }, + { + "id": 3, + "displayName": "Dirt", + "name": "dirt", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Dirt" + }, + { + "metadata": 1, + "displayName": "Coarse Dirt" + }, + { + "metadata": 2, + "displayName": "Podzol" + } + ] + }, + { + "id": 4, + "displayName": "Cobblestone", + "name": "cobblestone", + "stackSize": 64 + }, + { + "id": 5, + "displayName": "Wooden Planks", + "name": "planks", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Oak Wood Planks" + }, + { + "metadata": 1, + "displayName": "Spruce Wood Planks" + }, + { + "metadata": 2, + "displayName": "Birch Wood Planks" + }, + { + "metadata": 3, + "displayName": "Jungle Wood Planks" + }, + { + "metadata": 4, + "displayName": "Acacia Wood Planks" + }, + { + "metadata": 5, + "displayName": "Dark Oak Wood Planks" + } + ] + }, + { + "id": 6, + "displayName": "Sapling", + "name": "sapling", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Oak Sapling" + }, + { + "metadata": 1, + "displayName": "Spruce Sapling" + }, + { + "metadata": 2, + "displayName": "Birch Sapling" + }, + { + "metadata": 3, + "displayName": "Jungle Sapling" + }, + { + "metadata": 4, + "displayName": "Acacia Sapling" + }, + { + "metadata": 5, + "displayName": "Dark Oak Sapling" + } + ] + }, + { + "id": 7, + "displayName": "Bedrock", + "name": "bedrock", + "stackSize": 64 + }, + { + "id": 12, + "displayName": "Sand", + "name": "sand", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Sand" + }, + { + "metadata": 1, + "displayName": "Red Sand" + } + ] + }, + { + "id": 13, + "displayName": "Gravel", + "name": "gravel", + "stackSize": 64 + }, + { + "id": 14, + "displayName": "Gold Ore", + "name": "gold_ore", + "stackSize": 64 + }, + { + "id": 15, + "displayName": "Iron Ore", + "name": "iron_ore", + "stackSize": 64 + }, + { + "id": 16, + "displayName": "Coal Ore", + "name": "coal_ore", + "stackSize": 64 + }, + { + "id": 17, + "displayName": "Wood", + "name": "log", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Oak Wood" + }, + { + "metadata": 1, + "displayName": "Spruce Wood" + }, + { + "metadata": 2, + "displayName": "Birch Wood" + }, + { + "metadata": 3, + "displayName": "Jungle Wood" + }, + { + "metadata": 4, + "displayName": "Acacia Wood" + }, + { + "metadata": 5, + "displayName": "Dark Oak Wood" + } + ] + }, + { + "id": 18, + "displayName": "Leaves", + "name": "leaves", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Oak Leaves" + }, + { + "metadata": 1, + "displayName": "Spruce Leaves" + }, + { + "metadata": 2, + "displayName": "Birch Leaves" + }, + { + "metadata": 3, + "displayName": "Jungle Leaves" + } + ] + }, + { + "id": 19, + "displayName": "Sponge", + "name": "sponge", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Sponge" + }, + { + "metadata": 1, + "displayName": "Wet Sponge" + } + ] + }, + { + "id": 20, + "displayName": "Glass", + "name": "glass", + "stackSize": 64 + }, + { + "id": 21, + "displayName": "Lapis Lazuli Ore", + "name": "lapis_ore", + "stackSize": 64 + }, + { + "id": 22, + "displayName": "Lapis Lazuli Block", + "name": "lapis_block", + "stackSize": 64 + }, + { + "id": 23, + "displayName": "Dispenser", + "name": "dispenser", + "stackSize": 64 + }, + { + "id": 24, + "displayName": "Sandstone", + "name": "sandstone", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Sandstone" + }, + { + "metadata": 1, + "displayName": "Chiseled Sandstone" + }, + { + "metadata": 2, + "displayName": "Smooth Sandstone" + } + ] + }, + { + "id": 25, + "displayName": "Note Block", + "name": "noteblock", + "stackSize": 64 + }, + { + "id": 27, + "displayName": "Powered Rail", + "name": "golden_rail", + "stackSize": 64 + }, + { + "id": 28, + "displayName": "Detector Rail", + "name": "detector_rail", + "stackSize": 64 + }, + { + "id": 29, + "displayName": "Sticky Piston", + "name": "sticky_piston", + "stackSize": 64 + }, + { + "id": 30, + "displayName": "Cobweb", + "name": "web", + "stackSize": 64 + }, + { + "id": 31, + "displayName": "Grass", + "name": "tallgrass", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Shrub" + }, + { + "metadata": 1, + "displayName": "Tall Grass" + }, + { + "metadata": 2, + "displayName": "Fern" + } + ] + }, + { + "id": 32, + "displayName": "Dead Bush", + "name": "deadbush", + "stackSize": 64 + }, + { + "id": 33, + "displayName": "Piston", + "name": "piston", + "stackSize": 64 + }, + { + "id": 35, + "displayName": "Wool", + "name": "wool", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "White Wool" + }, + { + "metadata": 1, + "displayName": "Orange Wool" + }, + { + "metadata": 2, + "displayName": "Magenta Wool" + }, + { + "metadata": 3, + "displayName": "Light blue Wool" + }, + { + "metadata": 4, + "displayName": "Yellow Wool" + }, + { + "metadata": 5, + "displayName": "Lime Wool" + }, + { + "metadata": 6, + "displayName": "Pink Wool" + }, + { + "metadata": 7, + "displayName": "Gray Wool" + }, + { + "metadata": 8, + "displayName": "Light gray Wool" + }, + { + "metadata": 9, + "displayName": "Cyan Wool" + }, + { + "metadata": 10, + "displayName": "Purple Wool" + }, + { + "metadata": 11, + "displayName": "Blue Wool" + }, + { + "metadata": 12, + "displayName": "Brown Wool" + }, + { + "metadata": 13, + "displayName": "Green Wool" + }, + { + "metadata": 14, + "displayName": "Red Wool" + }, + { + "metadata": 15, + "displayName": "Black Wool" + } + ] + }, + { + "id": 37, + "displayName": "Dandelion", + "name": "yellow_flower", + "stackSize": 64 + }, + { + "id": 38, + "displayName": "Poppy", + "name": "red_flower", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Poppy" + }, + { + "metadata": 1, + "displayName": "Blue Orchid" + }, + { + "metadata": 2, + "displayName": "Allium" + }, + { + "metadata": 3, + "displayName": "Azure Bluet" + }, + { + "metadata": 4, + "displayName": "Red Tulip" + }, + { + "metadata": 5, + "displayName": "Orange Tulip" + }, + { + "metadata": 6, + "displayName": "White Tulip" + }, + { + "metadata": 7, + "displayName": "Pink Tulip" + }, + { + "metadata": 8, + "displayName": "Oxeye Daisy" + } + ] + }, + { + "id": 39, + "displayName": "Brown Mushroom", + "name": "brown_mushroom", + "stackSize": 64 + }, + { + "id": 40, + "displayName": "Red Mushroom", + "name": "red_mushroom", + "stackSize": 64 + }, + { + "id": 41, + "displayName": "Block of Gold", + "name": "gold_block", + "stackSize": 64 + }, + { + "id": 42, + "displayName": "Block of Iron", + "name": "iron_block", + "stackSize": 64 + }, + { + "id": 44, + "displayName": "Stone Slab", + "name": "stone_slab", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Stone Slab" + }, + { + "metadata": 1, + "displayName": "Sandstone Slab" + }, + { + "metadata": 2, + "displayName": "Wooden Slab" + }, + { + "metadata": 3, + "displayName": "Cobblestone Slab" + }, + { + "metadata": 4, + "displayName": "Bricks Slab" + }, + { + "metadata": 5, + "displayName": "Stone Bricks Slab" + }, + { + "metadata": 6, + "displayName": "Nether Brick Slab" + }, + { + "metadata": 7, + "displayName": "Quartz Slab" + } + ] + }, + { + "id": 45, + "displayName": "Brick", + "name": "brick_block", + "stackSize": 64 + }, + { + "id": 46, + "displayName": "TNT", + "name": "tnt", + "stackSize": 64 + }, + { + "id": 47, + "displayName": "Bookshelf", + "name": "bookshelf", + "stackSize": 64 + }, + { + "id": 48, + "displayName": "Moss Stone", + "name": "mossy_cobblestone", + "stackSize": 64 + }, + { + "id": 49, + "displayName": "Obsidian", + "name": "obsidian", + "stackSize": 64 + }, + { + "id": 50, + "displayName": "Torch", + "name": "torch", + "stackSize": 64 + }, + { + "id": 52, + "displayName": "Monster Spawner", + "name": "mob_spawner", + "stackSize": 64 + }, + { + "id": 53, + "displayName": "Oak Wood Stairs", + "name": "oak_stairs", + "stackSize": 64 + }, + { + "id": 54, + "displayName": "Chest", + "name": "chest", + "stackSize": 64 + }, + { + "id": 56, + "displayName": "Diamond Ore", + "name": "diamond_ore", + "stackSize": 64 + }, + { + "id": 57, + "displayName": "Block of Diamond", + "name": "diamond_block", + "stackSize": 64 + }, + { + "id": 58, + "displayName": "Crafting Table", + "name": "crafting_table", + "stackSize": 64 + }, + { + "id": 60, + "displayName": "Farmland", + "name": "farmland", + "stackSize": 64 + }, + { + "id": 61, + "displayName": "Furnace", + "name": "furnace", + "stackSize": 64 + }, + { + "id": 65, + "displayName": "Ladder", + "name": "ladder", + "stackSize": 64 + }, + { + "id": 66, + "displayName": "Rail", + "name": "rail", + "stackSize": 64 + }, + { + "id": 67, + "displayName": "Cobblestone Stairs", + "name": "stone_stairs", + "stackSize": 64 + }, + { + "id": 69, + "displayName": "Lever", + "name": "lever", + "stackSize": 64 + }, + { + "id": 70, + "displayName": "Stone Pressure Plate", + "name": "stone_pressure_plate", + "stackSize": 64 + }, + { + "id": 72, + "displayName": "Wooden Pressure Plate", + "name": "wooden_pressure_plate", + "stackSize": 64 + }, + { + "id": 73, + "displayName": "Redstone Ore", + "name": "redstone_ore", + "stackSize": 64 + }, + { + "id": 76, + "displayName": "Redstone Torch", + "name": "redstone_torch", + "stackSize": 64 + }, + { + "id": 77, + "displayName": "Stone Button", + "name": "stone_button", + "stackSize": 64 + }, + { + "id": 78, + "displayName": "Snow", + "name": "snow_layer", + "stackSize": 64 + }, + { + "id": 79, + "displayName": "Ice", + "name": "ice", + "stackSize": 64 + }, + { + "id": 80, + "displayName": "Snow", + "name": "snow", + "stackSize": 64 + }, + { + "id": 81, + "displayName": "Cactus", + "name": "cactus", + "stackSize": 64 + }, + { + "id": 82, + "displayName": "Clay", + "name": "clay", + "stackSize": 64 + }, + { + "id": 84, + "displayName": "Jukebox", + "name": "jukebox", + "stackSize": 64 + }, + { + "id": 85, + "displayName": "Oak Fence", + "name": "fence", + "stackSize": 64 + }, + { + "id": 86, + "displayName": "Pumpkin", + "name": "pumpkin", + "stackSize": 64 + }, + { + "id": 87, + "displayName": "Netherrack", + "name": "netherrack", + "stackSize": 64 + }, + { + "id": 88, + "displayName": "Soul Sand", + "name": "soul_sand", + "stackSize": 64 + }, + { + "id": 89, + "displayName": "Glowstone", + "name": "glowstone", + "stackSize": 64 + }, + { + "id": 91, + "displayName": "Jack o'Lantern", + "name": "lit_pumpkin", + "stackSize": 64 + }, + { + "id": 95, + "displayName": "Stained Glass", + "name": "stained_glass", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "White Stained Glass" + }, + { + "metadata": 1, + "displayName": "Orange Stained Glass" + }, + { + "metadata": 2, + "displayName": "Magenta Stained Glass" + }, + { + "metadata": 3, + "displayName": "Light Blue Stained Glass" + }, + { + "metadata": 4, + "displayName": "Yellow Stained Glass" + }, + { + "metadata": 5, + "displayName": "Lime Stained Glass" + }, + { + "metadata": 6, + "displayName": "Pink Stained Glass" + }, + { + "metadata": 7, + "displayName": "Gray Stained Glass" + }, + { + "metadata": 8, + "displayName": "Light Gray Stained Glass" + }, + { + "metadata": 9, + "displayName": "Cyan Stained Glass" + }, + { + "metadata": 10, + "displayName": "Purple Stained Glass" + }, + { + "metadata": 11, + "displayName": "Blue Stained Glass" + }, + { + "metadata": 12, + "displayName": "Brown Stained Glass" + }, + { + "metadata": 13, + "displayName": "Green Stained Glass" + }, + { + "metadata": 14, + "displayName": "Red Stained Glass" + }, + { + "metadata": 15, + "displayName": "Black Stained Glass" + } + ] + }, + { + "id": 96, + "displayName": "Wooden Trapdoor", + "name": "trapdoor", + "stackSize": 64 + }, + { + "id": 97, + "displayName": "Monster Egg", + "name": "monster_egg", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Stone Monster Egg" + }, + { + "metadata": 1, + "displayName": "Cobblestone Monster Egg" + }, + { + "metadata": 2, + "displayName": "Stone Brick Monster Egg" + }, + { + "metadata": 3, + "displayName": "Mossy Stone Brick Monster Egg" + }, + { + "metadata": 4, + "displayName": "Cracked Stone Brick Monster Egg" + }, + { + "metadata": 5, + "displayName": "Chiseled Stone Brick Monster Egg" + } + ] + }, + { + "id": 98, + "displayName": "Stone Bricks", + "name": "stonebrick", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Stone Bricks" + }, + { + "metadata": 1, + "displayName": "Mossy Stone Bricks" + }, + { + "metadata": 2, + "displayName": "Cracked Stone Bricks" + }, + { + "metadata": 3, + "displayName": "Chiseled Stone Bricks" + } + ] + }, + { + "id": 99, + "displayName": "Brown Mushroom Block", + "name": "brown_mushroom_block", + "stackSize": 64 + }, + { + "id": 100, + "displayName": "Red Mushroom Block", + "name": "red_mushroom_block", + "stackSize": 64 + }, + { + "id": 101, + "displayName": "Iron Bars", + "name": "iron_bars", + "stackSize": 64 + }, + { + "id": 102, + "displayName": "Glass Pane", + "name": "glass_pane", + "stackSize": 64 + }, + { + "id": 103, + "displayName": "Melon", + "name": "melon_block", + "stackSize": 64 + }, + { + "id": 106, + "displayName": "Vines", + "name": "vine", + "stackSize": 64 + }, + { + "id": 107, + "displayName": "Oak Fence Gate", + "name": "fence_gate", + "stackSize": 64 + }, + { + "id": 108, + "displayName": "Brick Stairs", + "name": "brick_stairs", + "stackSize": 64 + }, + { + "id": 109, + "displayName": "Stone Brick Stairs", + "name": "stone_brick_stairs", + "stackSize": 64 + }, + { + "id": 110, + "displayName": "Mycelium", + "name": "mycelium", + "stackSize": 64 + }, + { + "id": 111, + "displayName": "Lily Pad", + "name": "waterlily", + "stackSize": 64 + }, + { + "id": 112, + "displayName": "Nether Brick", + "name": "nether_brick", + "stackSize": 64 + }, + { + "id": 113, + "displayName": "Nether Brick Fence", + "name": "nether_brick_fence", + "stackSize": 64 + }, + { + "id": 114, + "displayName": "Nether Brick Stairs", + "name": "nether_brick_stairs", + "stackSize": 64 + }, + { + "id": 116, + "displayName": "Enchantment Table", + "name": "enchanting_table", + "stackSize": 64 + }, + { + "id": 120, + "displayName": "End Portal Frame", + "name": "end_portal_frame", + "stackSize": 64 + }, + { + "id": 121, + "displayName": "End Stone", + "name": "end_stone", + "stackSize": 64 + }, + { + "id": 122, + "displayName": "Dragon Egg", + "name": "dragon_egg", + "stackSize": 64 + }, + { + "id": 123, + "displayName": "Redstone Lamp", + "name": "redstone_lamp", + "stackSize": 64 + }, + { + "id": 126, + "displayName": "Wood Slab", + "name": "wooden_slab", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Oak Wood Slab" + }, + { + "metadata": 1, + "displayName": "Spruce Wood Slab" + }, + { + "metadata": 2, + "displayName": "Birch Wood Slab" + }, + { + "metadata": 3, + "displayName": "Jungle Wood Slab" + }, + { + "metadata": 4, + "displayName": "Acacia Wood Slab" + }, + { + "metadata": 5, + "displayName": "Dark Oak Wood Slab" + } + ] + }, + { + "id": 128, + "displayName": "Sandstone Stairs", + "name": "sandstone_stairs", + "stackSize": 64 + }, + { + "id": 129, + "displayName": "Emerald Ore", + "name": "emerald_ore", + "stackSize": 64 + }, + { + "id": 130, + "displayName": "Ender Chest", + "name": "ender_chest", + "stackSize": 64 + }, + { + "id": 131, + "displayName": "Tripwire Hook", + "name": "tripwire_hook", + "stackSize": 64 + }, + { + "id": 133, + "displayName": "Block of Emerald", + "name": "emerald_block", + "stackSize": 64 + }, + { + "id": 134, + "displayName": "Spruce Wood Stairs", + "name": "spruce_stairs", + "stackSize": 64 + }, + { + "id": 135, + "displayName": "Birch Wood Stairs", + "name": "birch_stairs", + "stackSize": 64 + }, + { + "id": 136, + "displayName": "Jungle Wood Stairs", + "name": "jungle_stairs", + "stackSize": 64 + }, + { + "id": 137, + "displayName": "Command Block", + "name": "command_block", + "stackSize": 64 + }, + { + "id": 138, + "displayName": "Beacon", + "name": "beacon", + "stackSize": 64 + }, + { + "id": 139, + "displayName": "Cobblestone Wall", + "name": "cobblestone_wall", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Cobblestone Wall" + }, + { + "metadata": 1, + "displayName": "Mossy Cobblestone Wall" + } + ] + }, + { + "id": 143, + "displayName": "Wooden Button", + "name": "wooden_button", + "stackSize": 64 + }, + { + "id": 145, + "displayName": "Anvil", + "name": "anvil", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Anvil" + }, + { + "metadata": 1, + "displayName": "Slightly Damaged Anvil" + }, + { + "metadata": 2, + "displayName": "Very Damaged Anvil" + } + ] + }, + { + "id": 146, + "displayName": "Trapped Chest", + "name": "trapped_chest", + "stackSize": 64 + }, + { + "id": 147, + "displayName": "Weighted Pressure Plate (Light)", + "name": "light_weighted_pressure_plate", + "stackSize": 64 + }, + { + "id": 148, + "displayName": "Weighted Pressure Plate (Heavy)", + "name": "heavy_weighted_pressure_plate", + "stackSize": 64 + }, + { + "id": 151, + "displayName": "Daylight Detector", + "name": "daylight_detector", + "stackSize": 64 + }, + { + "id": 152, + "displayName": "Block of Redstone", + "name": "redstone_block", + "stackSize": 64 + }, + { + "id": 153, + "displayName": "Nether Quartz", + "name": "quartz_ore", + "stackSize": 64 + }, + { + "id": 154, + "displayName": "Hopper", + "name": "hopper", + "stackSize": 64 + }, + { + "id": 155, + "displayName": "Block of Quartz", + "name": "quartz_block", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Block of Quartz" + }, + { + "metadata": 1, + "displayName": "Chiseled Quartz Block" + }, + { + "metadata": 2, + "displayName": "Pillar Quartz Block" + } + ] + }, + { + "id": 156, + "displayName": "Quartz Stairs", + "name": "quartz_stairs", + "stackSize": 64 + }, + { + "id": 157, + "displayName": "Activator Rail", + "name": "activator_rail", + "stackSize": 64 + }, + { + "id": 158, + "displayName": "Dropper", + "name": "dropper", + "stackSize": 64 + }, + { + "id": 159, + "displayName": "Stained Clay", + "name": "stained_hardened_clay", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "White Stained Clay" + }, + { + "metadata": 1, + "displayName": "Orange Stained Clay" + }, + { + "metadata": 2, + "displayName": "Magenta Stained Clay" + }, + { + "metadata": 3, + "displayName": "Light Blue Stained Clay" + }, + { + "metadata": 4, + "displayName": "Yellow Stained Clay" + }, + { + "metadata": 5, + "displayName": "Lime Stained Clay" + }, + { + "metadata": 6, + "displayName": "Pink Stained Clay" + }, + { + "metadata": 7, + "displayName": "Gray Stained Clay" + }, + { + "metadata": 8, + "displayName": "Light Gray Stained Clay" + }, + { + "metadata": 9, + "displayName": "Cyan Stained Clay" + }, + { + "metadata": 10, + "displayName": "Purple Stained Clay" + }, + { + "metadata": 11, + "displayName": "Blue Stained Clay" + }, + { + "metadata": 12, + "displayName": "Brown Stained Clay" + }, + { + "metadata": 13, + "displayName": "Green Stained Clay" + }, + { + "metadata": 14, + "displayName": "Red Stained Clay" + }, + { + "metadata": 15, + "displayName": "Black Stained Clay" + } + ] + }, + { + "id": 160, + "displayName": "Stained Glass Pane", + "name": "stained_glass_pane", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "White Stained Glass Pane" + }, + { + "metadata": 1, + "displayName": "Orange Stained Glass Pane" + }, + { + "metadata": 2, + "displayName": "Magenta Stained Glass Pane" + }, + { + "metadata": 3, + "displayName": "Light Blue Stained Glass Pane" + }, + { + "metadata": 4, + "displayName": "Yellow Stained Glass Pane" + }, + { + "metadata": 5, + "displayName": "Lime Stained Glass Pane" + }, + { + "metadata": 6, + "displayName": "Pink Stained Glass Pane" + }, + { + "metadata": 7, + "displayName": "Gray Stained Glass Pane" + }, + { + "metadata": 8, + "displayName": "Light Gray Stained Glass Pane" + }, + { + "metadata": 9, + "displayName": "Cyan Stained Glass Pane" + }, + { + "metadata": 10, + "displayName": "Purple Stained Glass Pane" + }, + { + "metadata": 11, + "displayName": "Blue Stained Glass Pane" + }, + { + "metadata": 12, + "displayName": "Brown Stained Glass Pane" + }, + { + "metadata": 13, + "displayName": "Green Stained Glass Pane" + }, + { + "metadata": 14, + "displayName": "Red Stained Glass Pane" + }, + { + "metadata": 15, + "displayName": "Black Stained Glass Pane" + } + ] + }, + { + "id": 161, + "displayName": "Leaves", + "name": "leaves2", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Acacia Leaves" + }, + { + "metadata": 1, + "displayName": "Dark Oak Leaves" + } + ] + }, + { + "id": 162, + "displayName": "Wood", + "name": "log2", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Acacia Wood" + }, + { + "metadata": 1, + "displayName": "Dark Oak Wood" + } + ] + }, + { + "id": 163, + "displayName": "Acacia Wood Stairs", + "name": "acacia_stairs", + "stackSize": 64 + }, + { + "id": 164, + "displayName": "Dark Oak Wood Stairs", + "name": "dark_oak_stairs", + "stackSize": 64 + }, + { + "id": 165, + "displayName": "Slime Block", + "name": "slime", + "stackSize": 64 + }, + { + "id": 166, + "displayName": "Barrier", + "name": "barrier", + "stackSize": 64 + }, + { + "id": 167, + "displayName": "Iron Trapdoor", + "name": "iron_trapdoor", + "stackSize": 64 + }, + { + "id": 168, + "displayName": "Prismarine", + "name": "prismarine", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Prismarine" + }, + { + "metadata": 1, + "displayName": "Prismarine Bricks" + }, + { + "metadata": 2, + "displayName": "Dark Prismarine" + } + ] + }, + { + "id": 169, + "displayName": "Sea Lantern", + "name": "sea_lantern", + "stackSize": 64 + }, + { + "id": 170, + "displayName": "Hay Bale", + "name": "hay_block", + "stackSize": 64 + }, + { + "id": 171, + "displayName": "Carpet", + "name": "carpet", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "White Carpet" + }, + { + "metadata": 1, + "displayName": "Orange Carpet" + }, + { + "metadata": 2, + "displayName": "Magenta Carpet" + }, + { + "metadata": 3, + "displayName": "Light Blue Carpet" + }, + { + "metadata": 4, + "displayName": "Yellow Carpet" + }, + { + "metadata": 5, + "displayName": "Lime Carpet" + }, + { + "metadata": 6, + "displayName": "Pink Carpet" + }, + { + "metadata": 7, + "displayName": "Gray Carpet" + }, + { + "metadata": 8, + "displayName": "Light Gray Carpet" + }, + { + "metadata": 9, + "displayName": "Cyan Carpet" + }, + { + "metadata": 10, + "displayName": "Purple Carpet" + }, + { + "metadata": 11, + "displayName": "Blue Carpet" + }, + { + "metadata": 12, + "displayName": "Brown Carpet" + }, + { + "metadata": 13, + "displayName": "Green Carpet" + }, + { + "metadata": 14, + "displayName": "Red Carpet" + }, + { + "metadata": 15, + "displayName": "Black Carpet" + } + ] + }, + { + "id": 172, + "displayName": "Hardened Clay", + "name": "hardened_clay", + "stackSize": 64 + }, + { + "id": 173, + "displayName": "Block of Coal", + "name": "coal_block", + "stackSize": 64 + }, + { + "id": 174, + "displayName": "Packed Ice", + "name": "packed_ice", + "stackSize": 64 + }, + { + "id": 175, + "displayName": "Large Flowers", + "name": "double_plant", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Sunflower" + }, + { + "metadata": 1, + "displayName": "Lilac" + }, + { + "metadata": 2, + "displayName": "Double Tallgrass" + }, + { + "metadata": 3, + "displayName": "Large Fern" + }, + { + "metadata": 4, + "displayName": "Rose Bush" + }, + { + "metadata": 5, + "displayName": "Peony" + } + ] + }, + { + "id": 179, + "displayName": "Red Sandstone", + "name": "red_sandstone", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Red Sandstone" + }, + { + "metadata": 1, + "displayName": "Chiseled Red Sandstone" + }, + { + "metadata": 2, + "displayName": "Smooth Red Sandstone" + } + ] + }, + { + "id": 180, + "displayName": "Red Sandstone Stairs", + "name": "red_sandstone_stairs", + "stackSize": 64 + }, + { + "id": 182, + "displayName": "Red Sandstone Slab", + "name": "stone_slab2", + "stackSize": 64 + }, + { + "id": 183, + "displayName": "Spruce Fence Gate", + "name": "spruce_fence_gate", + "stackSize": 64 + }, + { + "id": 184, + "displayName": "Birch Fence Gate", + "name": "birch_fence_gate", + "stackSize": 64 + }, + { + "id": 185, + "displayName": "Jungle Fence Gate", + "name": "jungle_fence_gate", + "stackSize": 64 + }, + { + "id": 186, + "displayName": "Dark Oak Fence Gate", + "name": "dark_oak_fence_gate", + "stackSize": 64 + }, + { + "id": 187, + "displayName": "Acacia Fence Gate", + "name": "acacia_fence_gate", + "stackSize": 64 + }, + { + "id": 188, + "displayName": "Spruce Fence", + "name": "spruce_fence", + "stackSize": 64 + }, + { + "id": 189, + "displayName": "Birch Fence", + "name": "birch_fence", + "stackSize": 64 + }, + { + "id": 190, + "displayName": "Jungle Fence", + "name": "jungle_fence", + "stackSize": 64 + }, + { + "id": 191, + "displayName": "Dark Oak Fence", + "name": "dark_oak_fence", + "stackSize": 64 + }, + { + "id": 192, + "displayName": "Acacia Fence", + "name": "acacia_fence", + "stackSize": 64 + }, + { + "id": 256, + "displayName": "Iron Shovel", + "name": "iron_shovel", + "stackSize": 1, + "maxDurability": 250, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 257, + "displayName": "Iron Pickaxe", + "name": "iron_pickaxe", + "stackSize": 1, + "maxDurability": 250, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 258, + "displayName": "Iron Axe", + "name": "iron_axe", + "stackSize": 1, + "maxDurability": 250, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 259, + "displayName": "Flint and Steel", + "name": "flint_and_steel", + "stackSize": 1, + "maxDurability": 64, + "enchantCategories": [ + "breakable", + "vanishable" + ] + }, + { + "id": 260, + "displayName": "Apple", + "name": "apple", + "stackSize": 64 + }, + { + "id": 261, + "displayName": "Bow", + "name": "bow", + "stackSize": 1, + "maxDurability": 384, + "enchantCategories": [ + "breakable", + "bow", + "vanishable" + ] + }, + { + "id": 262, + "displayName": "Arrow", + "name": "arrow", + "stackSize": 64 + }, + { + "id": 263, + "displayName": "Coal", + "name": "coal", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Coal" + }, + { + "metadata": 1, + "displayName": "Charcoal" + } + ] + }, + { + "id": 264, + "displayName": "Diamond", + "name": "diamond", + "stackSize": 64 + }, + { + "id": 265, + "displayName": "Iron Ingot", + "name": "iron_ingot", + "stackSize": 64 + }, + { + "id": 266, + "displayName": "Gold Ingot", + "name": "gold_ingot", + "stackSize": 64 + }, + { + "id": 267, + "displayName": "Iron Sword", + "name": "iron_sword", + "stackSize": 1, + "maxDurability": 250, + "enchantCategories": [ + "weapon", + "breakable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 268, + "displayName": "Wooden Sword", + "name": "wooden_sword", + "stackSize": 1, + "maxDurability": 59, + "enchantCategories": [ + "weapon", + "breakable", + "vanishable" + ], + "repairWith": [ + "oak_planks", + "spruce_planks", + "birch_planks", + "jungle_planks", + "acacia_planks", + "dark_oak_planks", + "crimson_planks", + "warped_planks" + ] + }, + { + "id": 269, + "displayName": "Wooden Shovel", + "name": "wooden_shovel", + "stackSize": 1, + "maxDurability": 59, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "oak_planks", + "spruce_planks", + "birch_planks", + "jungle_planks", + "acacia_planks", + "dark_oak_planks", + "crimson_planks", + "warped_planks" + ] + }, + { + "id": 270, + "displayName": "Wooden Pickaxe", + "name": "wooden_pickaxe", + "stackSize": 1, + "maxDurability": 59, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "oak_planks", + "spruce_planks", + "birch_planks", + "jungle_planks", + "acacia_planks", + "dark_oak_planks", + "crimson_planks", + "warped_planks" + ] + }, + { + "id": 271, + "displayName": "Wooden Axe", + "name": "wooden_axe", + "stackSize": 1, + "maxDurability": 59, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "oak_planks", + "spruce_planks", + "birch_planks", + "jungle_planks", + "acacia_planks", + "dark_oak_planks", + "crimson_planks", + "warped_planks" + ] + }, + { + "id": 272, + "displayName": "Stone Sword", + "name": "stone_sword", + "stackSize": 1, + "maxDurability": 131, + "enchantCategories": [ + "weapon", + "breakable", + "vanishable" + ], + "repairWith": [ + "cobblestone", + "blackstone" + ] + }, + { + "id": 273, + "displayName": "Stone Shovel", + "name": "stone_shovel", + "stackSize": 1, + "maxDurability": 131, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "cobblestone", + "blackstone" + ] + }, + { + "id": 274, + "displayName": "Stone Pickaxe", + "name": "stone_pickaxe", + "stackSize": 1, + "maxDurability": 131, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "cobblestone", + "blackstone" + ] + }, + { + "id": 275, + "displayName": "Stone Axe", + "name": "stone_axe", + "stackSize": 1, + "maxDurability": 131, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "cobblestone", + "blackstone" + ] + }, + { + "id": 276, + "displayName": "Diamond Sword", + "name": "diamond_sword", + "stackSize": 1, + "maxDurability": 1561, + "enchantCategories": [ + "weapon", + "breakable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 277, + "displayName": "Diamond Shovel", + "name": "diamond_shovel", + "stackSize": 1, + "maxDurability": 1561, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 278, + "displayName": "Diamond Pickaxe", + "name": "diamond_pickaxe", + "stackSize": 1, + "maxDurability": 1561, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 279, + "displayName": "Diamond Axe", + "name": "diamond_axe", + "stackSize": 1, + "maxDurability": 1561, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 280, + "displayName": "Stick", + "name": "stick", + "stackSize": 64 + }, + { + "id": 281, + "displayName": "Bowl", + "name": "bowl", + "stackSize": 64 + }, + { + "id": 282, + "displayName": "Mushroom Stew", + "name": "mushroom_stew", + "stackSize": 1 + }, + { + "id": 283, + "displayName": "Golden Sword", + "name": "golden_sword", + "stackSize": 1, + "maxDurability": 32, + "enchantCategories": [ + "weapon", + "breakable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 284, + "displayName": "Golden Shovel", + "name": "golden_shovel", + "stackSize": 1, + "maxDurability": 32, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 285, + "displayName": "Golden Pickaxe", + "name": "golden_pickaxe", + "stackSize": 1, + "maxDurability": 32, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 286, + "displayName": "Golden Axe", + "name": "golden_axe", + "stackSize": 1, + "maxDurability": 32, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 287, + "displayName": "String", + "name": "string", + "stackSize": 64 + }, + { + "id": 288, + "displayName": "Feather", + "name": "feather", + "stackSize": 64 + }, + { + "id": 289, + "displayName": "Gunpowder", + "name": "gunpowder", + "stackSize": 64 + }, + { + "id": 290, + "displayName": "Wooden Hoe", + "name": "wooden_hoe", + "stackSize": 1, + "maxDurability": 59, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "oak_planks", + "spruce_planks", + "birch_planks", + "jungle_planks", + "acacia_planks", + "dark_oak_planks", + "crimson_planks", + "warped_planks" + ] + }, + { + "id": 291, + "displayName": "Stone Hoe", + "name": "stone_hoe", + "stackSize": 1, + "maxDurability": 131, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "cobblestone", + "blackstone" + ] + }, + { + "id": 292, + "displayName": "Iron Hoe", + "name": "iron_hoe", + "stackSize": 1, + "maxDurability": 250, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 293, + "displayName": "Diamond Hoe", + "name": "diamond_hoe", + "stackSize": 1, + "maxDurability": 1561, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 294, + "displayName": "Golden Hoe", + "name": "golden_hoe", + "stackSize": 1, + "maxDurability": 32, + "enchantCategories": [ + "digger", + "breakable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 295, + "displayName": "Seeds", + "name": "wheat_seeds", + "stackSize": 64 + }, + { + "id": 296, + "displayName": "Wheat", + "name": "wheat", + "stackSize": 64 + }, + { + "id": 297, + "displayName": "Bread", + "name": "bread", + "stackSize": 64 + }, + { + "id": 298, + "displayName": "Leather Cap", + "name": "leather_helmet", + "stackSize": 1, + "maxDurability": 55, + "enchantCategories": [ + "armor", + "armor_head", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "leather" + ] + }, + { + "id": 299, + "displayName": "Leather Tunic", + "name": "leather_chestplate", + "stackSize": 1, + "maxDurability": 80, + "enchantCategories": [ + "armor", + "armor_chest", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "leather" + ] + }, + { + "id": 300, + "displayName": "Leather Pants", + "name": "leather_leggings", + "stackSize": 1, + "maxDurability": 75, + "enchantCategories": [ + "armor", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "leather" + ] + }, + { + "id": 301, + "displayName": "Leather Boots", + "name": "leather_boots", + "stackSize": 1, + "maxDurability": 65, + "enchantCategories": [ + "armor", + "armor_feet", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "leather" + ] + }, + { + "id": 302, + "displayName": "Chain Helmet", + "name": "chainmail_helmet", + "stackSize": 1, + "maxDurability": 165, + "enchantCategories": [ + "armor", + "armor_head", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 303, + "displayName": "Chain Chestplate", + "name": "chainmail_chestplate", + "stackSize": 1, + "maxDurability": 240, + "enchantCategories": [ + "armor", + "armor_chest", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 304, + "displayName": "Chain Leggings", + "name": "chainmail_leggings", + "stackSize": 1, + "maxDurability": 225, + "enchantCategories": [ + "armor", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 305, + "displayName": "Chain Boots", + "name": "chainmail_boots", + "stackSize": 1, + "maxDurability": 195, + "enchantCategories": [ + "armor", + "armor_feet", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 306, + "displayName": "Iron Helmet", + "name": "iron_helmet", + "stackSize": 1, + "maxDurability": 165, + "enchantCategories": [ + "armor", + "armor_head", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 307, + "displayName": "Iron Chestplate", + "name": "iron_chestplate", + "stackSize": 1, + "maxDurability": 240, + "enchantCategories": [ + "armor", + "armor_chest", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 308, + "displayName": "Iron Leggings", + "name": "iron_leggings", + "stackSize": 1, + "maxDurability": 225, + "enchantCategories": [ + "armor", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 309, + "displayName": "Iron Boots", + "name": "iron_boots", + "stackSize": 1, + "maxDurability": 195, + "enchantCategories": [ + "armor", + "armor_feet", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "iron_ingot" + ] + }, + { + "id": 310, + "displayName": "Diamond Helmet", + "name": "diamond_helmet", + "stackSize": 1, + "maxDurability": 363, + "enchantCategories": [ + "armor", + "armor_head", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 311, + "displayName": "Diamond Chestplate", + "name": "diamond_chestplate", + "stackSize": 1, + "maxDurability": 528, + "enchantCategories": [ + "armor", + "armor_chest", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 312, + "displayName": "Diamond Leggings", + "name": "diamond_leggings", + "stackSize": 1, + "maxDurability": 495, + "enchantCategories": [ + "armor", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 313, + "displayName": "Diamond Boots", + "name": "diamond_boots", + "stackSize": 1, + "maxDurability": 429, + "enchantCategories": [ + "armor", + "armor_feet", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "diamond" + ] + }, + { + "id": 314, + "displayName": "Golden Helmet", + "name": "golden_helmet", + "stackSize": 1, + "maxDurability": 77, + "enchantCategories": [ + "armor", + "armor_head", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 315, + "displayName": "Golden Chestplate", + "name": "golden_chestplate", + "stackSize": 1, + "maxDurability": 112, + "enchantCategories": [ + "armor", + "armor_chest", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 316, + "displayName": "Golden Leggings", + "name": "golden_leggings", + "stackSize": 1, + "maxDurability": 105, + "enchantCategories": [ + "armor", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 317, + "displayName": "Golden Boots", + "name": "golden_boots", + "stackSize": 1, + "maxDurability": 91, + "enchantCategories": [ + "armor", + "armor_feet", + "breakable", + "wearable", + "vanishable" + ], + "repairWith": [ + "gold_ingot" + ] + }, + { + "id": 318, + "displayName": "Flint", + "name": "flint", + "stackSize": 64 + }, + { + "id": 319, + "displayName": "Raw Porkchop", + "name": "porkchop", + "stackSize": 64 + }, + { + "id": 320, + "displayName": "Cooked Porkchop", + "name": "cooked_porkchop", + "stackSize": 64 + }, + { + "id": 321, + "displayName": "Painting", + "name": "painting", + "stackSize": 64 + }, + { + "id": 322, + "displayName": "Golden Apple", + "name": "golden_apple", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Golden Apple" + }, + { + "metadata": 1, + "displayName": "Enchanted Golden Apple" + } + ] + }, + { + "id": 323, + "displayName": "Sign", + "name": "sign", + "stackSize": 16 + }, + { + "id": 324, + "displayName": "Oak Door", + "name": "wooden_door", + "stackSize": 64 + }, + { + "id": 325, + "displayName": "Bucket", + "name": "bucket", + "stackSize": 16 + }, + { + "id": 326, + "displayName": "Water Bucket", + "name": "water_bucket", + "stackSize": 1 + }, + { + "id": 327, + "displayName": "Lava Bucket", + "name": "lava_bucket", + "stackSize": 1 + }, + { + "id": 328, + "displayName": "Minecart", + "name": "minecart", + "stackSize": 1 + }, + { + "id": 329, + "displayName": "Saddle", + "name": "saddle", + "stackSize": 1 + }, + { + "id": 330, + "displayName": "Iron Door", + "name": "iron_door", + "stackSize": 64 + }, + { + "id": 331, + "displayName": "Redstone", + "name": "redstone", + "stackSize": 64 + }, + { + "id": 332, + "displayName": "Snowball", + "name": "snowball", + "stackSize": 16 + }, + { + "id": 333, + "displayName": "Boat", + "name": "boat", + "stackSize": 1 + }, + { + "id": 334, + "displayName": "Leather", + "name": "leather", + "stackSize": 64 + }, + { + "id": 335, + "displayName": "Milk", + "name": "milk_bucket", + "stackSize": 1 + }, + { + "id": 336, + "displayName": "Brick", + "name": "brick", + "stackSize": 64 + }, + { + "id": 337, + "displayName": "Clay", + "name": "clay_ball", + "stackSize": 64 + }, + { + "id": 338, + "displayName": "Sugar Canes", + "name": "reeds", + "stackSize": 64 + }, + { + "id": 339, + "displayName": "Paper", + "name": "paper", + "stackSize": 64 + }, + { + "id": 340, + "displayName": "Book", + "name": "book", + "stackSize": 64 + }, + { + "id": 341, + "displayName": "Slimeball", + "name": "slime_ball", + "stackSize": 64 + }, + { + "id": 342, + "displayName": "Minecart with Chest", + "name": "chest_minecart", + "stackSize": 1 + }, + { + "id": 343, + "displayName": "Minecart with Furnace", + "name": "furnace_minecart", + "stackSize": 1 + }, + { + "id": 344, + "displayName": "Egg", + "name": "egg", + "stackSize": 16 + }, + { + "id": 345, + "displayName": "Compass", + "name": "compass", + "stackSize": 64 + }, + { + "id": 346, + "displayName": "Fishing Rod", + "name": "fishing_rod", + "stackSize": 1, + "maxDurability": 64, + "enchantCategories": [ + "breakable", + "fishing_rod", + "vanishable" + ] + }, + { + "id": 347, + "displayName": "Clock", + "name": "clock", + "stackSize": 64 + }, + { + "id": 348, + "displayName": "Glowstone Dust", + "name": "glowstone_dust", + "stackSize": 64 + }, + { + "id": 349, + "displayName": "Fish", + "name": "fish", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Raw Fish" + }, + { + "metadata": 1, + "displayName": "Raw Salmon" + }, + { + "metadata": 2, + "displayName": "Clownfish" + }, + { + "metadata": 3, + "displayName": "Pufferfish" + } + ] + }, + { + "id": 350, + "displayName": "Cooked Fish", + "name": "cooked_fish", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Cooked Fish" + }, + { + "metadata": 1, + "displayName": "Cooked Salmon" + } + ] + }, + { + "id": 351, + "displayName": "Dye", + "name": "dye", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Ink Sac" + }, + { + "metadata": 1, + "displayName": "Rose Red" + }, + { + "metadata": 2, + "displayName": "Cactus Green" + }, + { + "metadata": 3, + "displayName": "Cocoa Beans" + }, + { + "metadata": 4, + "displayName": "Lapis Lazuli" + }, + { + "metadata": 5, + "displayName": "Purple Dye" + }, + { + "metadata": 6, + "displayName": "Cyan Dye" + }, + { + "metadata": 7, + "displayName": "Light Gray Dye" + }, + { + "metadata": 8, + "displayName": "Gray Dye" + }, + { + "metadata": 9, + "displayName": "Pink Dye" + }, + { + "metadata": 10, + "displayName": "Lime Dye" + }, + { + "metadata": 11, + "displayName": "Dandelion Yellow" + }, + { + "metadata": 12, + "displayName": "Light Blue Dye" + }, + { + "metadata": 13, + "displayName": "Magenta Dye" + }, + { + "metadata": 14, + "displayName": "Orange Dye" + }, + { + "metadata": 15, + "displayName": "Bone Meal" + } + ] + }, + { + "id": 352, + "displayName": "Bone", + "name": "bone", + "stackSize": 64 + }, + { + "id": 353, + "displayName": "Sugar", + "name": "sugar", + "stackSize": 64 + }, + { + "id": 354, + "displayName": "Cake", + "name": "cake", + "stackSize": 1 + }, + { + "id": 355, + "displayName": "Bed", + "name": "bed", + "stackSize": 1 + }, + { + "id": 356, + "displayName": "Redstone Repeater", + "name": "repeater", + "stackSize": 64 + }, + { + "id": 357, + "displayName": "Cookie", + "name": "cookie", + "stackSize": 64 + }, + { + "id": 358, + "displayName": "Map", + "name": "filled_map", + "stackSize": 64 + }, + { + "id": 359, + "displayName": "Shears", + "name": "shears", + "stackSize": 1, + "maxDurability": 238, + "enchantCategories": [ + "breakable", + "vanishable" + ] + }, + { + "id": 360, + "displayName": "Melon", + "name": "melon", + "stackSize": 64 + }, + { + "id": 361, + "displayName": "Pumpkin Seeds", + "name": "pumpkin_seeds", + "stackSize": 64 + }, + { + "id": 362, + "displayName": "Melon Seeds", + "name": "melon_seeds", + "stackSize": 64 + }, + { + "id": 363, + "displayName": "Raw Beef", + "name": "beef", + "stackSize": 64 + }, + { + "id": 364, + "displayName": "Steak", + "name": "cooked_beef", + "stackSize": 64 + }, + { + "id": 365, + "displayName": "Raw Chicken", + "name": "chicken", + "stackSize": 64 + }, + { + "id": 366, + "displayName": "Cooked Chicken", + "name": "cooked_chicken", + "stackSize": 64 + }, + { + "id": 367, + "displayName": "Rotten Flesh", + "name": "rotten_flesh", + "stackSize": 64 + }, + { + "id": 368, + "displayName": "Ender Pearl", + "name": "ender_pearl", + "stackSize": 16 + }, + { + "id": 369, + "displayName": "Blaze Rod", + "name": "blaze_rod", + "stackSize": 64 + }, + { + "id": 370, + "displayName": "Ghast Tear", + "name": "ghast_tear", + "stackSize": 64 + }, + { + "id": 371, + "displayName": "Gold Nugget", + "name": "gold_nugget", + "stackSize": 64 + }, + { + "id": 372, + "displayName": "Nether Wart", + "name": "nether_wart", + "stackSize": 64 + }, + { + "id": 373, + "displayName": "Potion", + "name": "potion", + "stackSize": 1 + }, + { + "id": 374, + "displayName": "Glass Bottle", + "name": "glass_bottle", + "stackSize": 64 + }, + { + "id": 375, + "displayName": "Spider Eye", + "name": "spider_eye", + "stackSize": 64 + }, + { + "id": 376, + "displayName": "Fermented Spider Eye", + "name": "fermented_spider_eye", + "stackSize": 64 + }, + { + "id": 377, + "displayName": "Blaze Powder", + "name": "blaze_powder", + "stackSize": 64 + }, + { + "id": 378, + "displayName": "Magma Cream", + "name": "magma_cream", + "stackSize": 64 + }, + { + "id": 379, + "displayName": "Brewing Stand", + "name": "brewing_stand", + "stackSize": 64 + }, + { + "id": 380, + "displayName": "Cauldron", + "name": "cauldron", + "stackSize": 64 + }, + { + "id": 381, + "displayName": "Eye of Ender", + "name": "ender_eye", + "stackSize": 64 + }, + { + "id": 382, + "displayName": "Glistering Melon", + "name": "speckled_melon", + "stackSize": 64 + }, + { + "id": 383, + "displayName": "Spawn Egg", + "name": "spawn_egg", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Spawn" + }, + { + "metadata": 1, + "displayName": "Spawn Dropped item" + }, + { + "metadata": 7, + "displayName": "Spawn Thrown egg" + }, + { + "metadata": 8, + "displayName": "Spawn Lead knot" + }, + { + "metadata": 10, + "displayName": "Spawn Shot arrow" + }, + { + "metadata": 11, + "displayName": "Spawn Thrown snowball" + }, + { + "metadata": 12, + "displayName": "Spawn Ghast fireball" + }, + { + "metadata": 13, + "displayName": "Spawn Blaze fireball" + }, + { + "metadata": 14, + "displayName": "Spawn Thrown Ender Pearl" + }, + { + "metadata": 15, + "displayName": "Spawn Thrown Eye of Ender" + }, + { + "metadata": 16, + "displayName": "Spawn Thrown splash potion" + }, + { + "metadata": 17, + "displayName": "Spawn Thrown Bottle o' Enchanting" + }, + { + "metadata": 18, + "displayName": "Spawn Item Frame" + }, + { + "metadata": 19, + "displayName": "Spawn Wither Skull" + }, + { + "metadata": 20, + "displayName": "Spawn Primed TNT" + }, + { + "metadata": 21, + "displayName": "Spawn Falling block" + }, + { + "metadata": 21, + "displayName": "Spawn Falling block" + }, + { + "metadata": 22, + "displayName": "Spawn Firework Rocket" + }, + { + "metadata": 30, + "displayName": "Spawn Armor Stand" + }, + { + "metadata": 41, + "displayName": "Spawn Boat" + }, + { + "metadata": 42, + "displayName": "Spawn Minecart" + }, + { + "metadata": 42, + "displayName": "Spawn Minecart" + }, + { + "metadata": 42, + "displayName": "Spawn Minecart" + }, + { + "metadata": 48, + "displayName": "Spawn Mob" + }, + { + "metadata": 49, + "displayName": "Spawn Monster" + }, + { + "metadata": 50, + "displayName": "Spawn Creeper" + }, + { + "metadata": 51, + "displayName": "Spawn Skeleton" + }, + { + "metadata": 52, + "displayName": "Spawn Spider" + }, + { + "metadata": 53, + "displayName": "Spawn Giant" + }, + { + "metadata": 54, + "displayName": "Spawn Zombie" + }, + { + "metadata": 55, + "displayName": "Spawn Slime" + }, + { + "metadata": 56, + "displayName": "Spawn Ghast" + }, + { + "metadata": 57, + "displayName": "Spawn Zombie Pigman" + }, + { + "metadata": 58, + "displayName": "Spawn Enderman" + }, + { + "metadata": 59, + "displayName": "Spawn Cave Spider" + }, + { + "metadata": 60, + "displayName": "Spawn Silverfish" + }, + { + "metadata": 61, + "displayName": "Spawn Blaze" + }, + { + "metadata": 62, + "displayName": "Spawn Magma Cube" + }, + { + "metadata": 63, + "displayName": "Spawn Ender Dragon" + }, + { + "metadata": 64, + "displayName": "Spawn Wither" + }, + { + "metadata": 65, + "displayName": "Spawn Bat" + }, + { + "metadata": 66, + "displayName": "Spawn Witch" + }, + { + "metadata": 67, + "displayName": "Spawn Endermite" + }, + { + "metadata": 68, + "displayName": "Spawn Guardian" + }, + { + "metadata": 90, + "displayName": "Spawn Pig" + }, + { + "metadata": 91, + "displayName": "Spawn Sheep" + }, + { + "metadata": 92, + "displayName": "Spawn Cow" + }, + { + "metadata": 93, + "displayName": "Spawn Chicken" + }, + { + "metadata": 94, + "displayName": "Spawn Squid" + }, + { + "metadata": 95, + "displayName": "Spawn Wolf" + }, + { + "metadata": 96, + "displayName": "Spawn Mooshroom" + }, + { + "metadata": 97, + "displayName": "Spawn Snow Golem" + }, + { + "metadata": 98, + "displayName": "Spawn Ocelot" + }, + { + "metadata": 99, + "displayName": "Spawn Iron Golem" + }, + { + "metadata": 100, + "displayName": "Spawn Horse" + }, + { + "metadata": 101, + "displayName": "Spawn Rabbit" + }, + { + "metadata": 120, + "displayName": "Spawn Villager" + }, + { + "metadata": 200, + "displayName": "Spawn Ender Crystal" + } + ] + }, + { + "id": 384, + "displayName": "Bottle o' Enchanting", + "name": "experience_bottle", + "stackSize": 64 + }, + { + "id": 385, + "displayName": "Fire Charge", + "name": "fire_charge", + "stackSize": 64 + }, + { + "id": 386, + "displayName": "Book and Quill", + "name": "writable_book", + "stackSize": 1 + }, + { + "id": 387, + "displayName": "Written Book", + "name": "written_book", + "stackSize": 16 + }, + { + "id": 388, + "displayName": "Emerald", + "name": "emerald", + "stackSize": 64 + }, + { + "id": 389, + "displayName": "Item Frame", + "name": "item_frame", + "stackSize": 64 + }, + { + "id": 390, + "displayName": "Flower Pot", + "name": "flower_pot", + "stackSize": 64 + }, + { + "id": 391, + "displayName": "Carrot", + "name": "carrot", + "stackSize": 64 + }, + { + "id": 392, + "displayName": "Potato", + "name": "potato", + "stackSize": 64 + }, + { + "id": 393, + "displayName": "Baked Potato", + "name": "baked_potato", + "stackSize": 64 + }, + { + "id": 394, + "displayName": "Poisonous Potato", + "name": "poisonous_potato", + "stackSize": 64 + }, + { + "id": 395, + "displayName": "Empty Map", + "name": "map", + "stackSize": 64 + }, + { + "id": 396, + "displayName": "Golden Carrot", + "name": "golden_carrot", + "stackSize": 64 + }, + { + "id": 397, + "displayName": "Skull", + "name": "skull", + "stackSize": 64, + "variations": [ + { + "metadata": 0, + "displayName": "Skeleton Skull" + }, + { + "metadata": 1, + "displayName": "Wither Skeleton Skull" + }, + { + "metadata": 2, + "displayName": "Zombie Head" + }, + { + "metadata": 3, + "displayName": "Head" + }, + { + "metadata": 4, + "displayName": "Creeper Head" + } + ] + }, + { + "id": 398, + "displayName": "Carrot on a Stick", + "name": "carrot_on_a_stick", + "stackSize": 1, + "maxDurability": 25, + "enchantCategories": [ + "breakable", + "vanishable" + ] + }, + { + "id": 399, + "displayName": "Nether Star", + "name": "nether_star", + "stackSize": 64 + }, + { + "id": 400, + "displayName": "Pumpkin Pie", + "name": "pumpkin_pie", + "stackSize": 64 + }, + { + "id": 401, + "displayName": "Firework Rocket", + "name": "fireworks", + "stackSize": 64 + }, + { + "id": 402, + "displayName": "Firework Star", + "name": "firework_charge", + "stackSize": 64 + }, + { + "id": 403, + "displayName": "Enchanted Book", + "name": "enchanted_book", + "stackSize": 1 + }, + { + "id": 404, + "displayName": "Redstone Comparator", + "name": "comparator", + "stackSize": 64 + }, + { + "id": 405, + "displayName": "Nether Brick", + "name": "netherbrick", + "stackSize": 64 + }, + { + "id": 406, + "displayName": "Nether Quartz", + "name": "quartz", + "stackSize": 64 + }, + { + "id": 407, + "displayName": "Minecart with TNT", + "name": "tnt_minecart", + "stackSize": 1 + }, + { + "id": 408, + "displayName": "Minecart with Hopper", + "name": "hopper_minecart", + "stackSize": 1 + }, + { + "id": 409, + "displayName": "Prismarine Shard", + "name": "prismarine_shard", + "stackSize": 64 + }, + { + "id": 410, + "displayName": "Prismarine Crystals", + "name": "prismarine_crystals", + "stackSize": 64 + }, + { + "id": 411, + "displayName": "Raw Rabbit", + "name": "rabbit", + "stackSize": 64 + }, + { + "id": 412, + "displayName": "Cooked Rabbit", + "name": "cooked_rabbit", + "stackSize": 64 + }, + { + "id": 413, + "displayName": "Rabbit Stew", + "name": "rabbit_stew", + "stackSize": 1 + }, + { + "id": 414, + "displayName": "Rabbit's Foot", + "name": "rabbit_foot", + "stackSize": 64 + }, + { + "id": 415, + "displayName": "Rabbit Hide", + "name": "rabbit_hide", + "stackSize": 64 + }, + { + "id": 416, + "displayName": "Armor Stand", + "name": "armor_stand", + "stackSize": 16 + }, + { + "id": 417, + "displayName": "Iron Horse Armor", + "name": "iron_horse_armor", + "stackSize": 1 + }, + { + "id": 418, + "displayName": "Gold Horse Armor", + "name": "golden_horse_armor", + "stackSize": 1 + }, + { + "id": 419, + "displayName": "Diamond Horse Armor", + "name": "diamond_horse_armor", + "stackSize": 1 + }, + { + "id": 420, + "displayName": "Lead", + "name": "lead", + "stackSize": 64 + }, + { + "id": 421, + "displayName": "Name Tag", + "name": "name_tag", + "stackSize": 64 + }, + { + "id": 422, + "displayName": "Minecart with Command Block", + "name": "command_block_minecart", + "stackSize": 1 + }, + { + "id": 423, + "displayName": "Raw Mutton", + "name": "mutton", + "stackSize": 64 + }, + { + "id": 424, + "displayName": "Cooked Mutton", + "name": "cooked_mutton", + "stackSize": 64 + }, + { + "id": 425, + "displayName": "Banner", + "name": "banner", + "stackSize": 16, + "variations": [ + { + "metadata": 0, + "displayName": "Black Banner" + }, + { + "metadata": 1, + "displayName": "Red Banner" + }, + { + "metadata": 2, + "displayName": "Green Banner" + }, + { + "metadata": 3, + "displayName": "Brown Banner" + }, + { + "metadata": 4, + "displayName": "Blue Banner" + }, + { + "metadata": 5, + "displayName": "Purple Banner" + }, + { + "metadata": 6, + "displayName": "Cyan Banner" + }, + { + "metadata": 7, + "displayName": "Light Gray Banner" + }, + { + "metadata": 8, + "displayName": "Gray Banner" + }, + { + "metadata": 9, + "displayName": "Pink Banner" + }, + { + "metadata": 10, + "displayName": "Lime Banner" + }, + { + "metadata": 11, + "displayName": "Yellow Banner" + }, + { + "metadata": 12, + "displayName": "Light Blue Banner" + }, + { + "metadata": 13, + "displayName": "Magenta Banner" + }, + { + "metadata": 14, + "displayName": "Orange Banner" + }, + { + "metadata": 15, + "displayName": "White Banner" + } + ] + }, + { + "id": 427, + "displayName": "Spruce Door", + "name": "spruce_door", + "stackSize": 64 + }, + { + "id": 428, + "displayName": "Birch Door", + "name": "birch_door", + "stackSize": 64 + }, + { + "id": 429, + "displayName": "Jungle Door", + "name": "jungle_door", + "stackSize": 64 + }, + { + "id": 430, + "displayName": "Acacia Door", + "name": "acacia_door", + "stackSize": 64 + }, + { + "id": 431, + "displayName": "Dark Oak Door", + "name": "dark_oak_door", + "stackSize": 64 + }, + { + "id": 2256, + "displayName": "13 Disc", + "name": "record_13", + "stackSize": 1 + }, + { + "id": 2257, + "displayName": "Cat Disc", + "name": "record_cat", + "stackSize": 1 + }, + { + "id": 2258, + "displayName": "Blocks Disc", + "name": "record_blocks", + "stackSize": 1 + }, + { + "id": 2259, + "displayName": "Chirp Disc", + "name": "record_chirp", + "stackSize": 1 + }, + { + "id": 2260, + "displayName": "Far Disc", + "name": "record_far", + "stackSize": 1 + }, + { + "id": 2261, + "displayName": "Mall Disc", + "name": "record_mall", + "stackSize": 1 + }, + { + "id": 2262, + "displayName": "Mellohi Disc", + "name": "record_mellohi", + "stackSize": 1 + }, + { + "id": 2263, + "displayName": "Stal Disc", + "name": "record_stal", + "stackSize": 1 + }, + { + "id": 2264, + "displayName": "Strad Disc", + "name": "record_strad", + "stackSize": 1 + }, + { + "id": 2265, + "displayName": "Ward Disc", + "name": "record_ward", + "stackSize": 1 + }, + { + "id": 2266, + "displayName": "11 Disc", + "name": "record_11", + "stackSize": 1 + }, + { + "id": 2267, + "displayName": "Wait Disc", + "name": "record_wait", + "stackSize": 1 + } +]
\ No newline at end of file |