package net.minecraft.command.collections; import net.minecraft.command.construction.NBTConstructor; import net.minecraft.command.construction.NBTConstructor.ConstructionHelper; import net.minecraft.command.construction.NBTConstructorList; import net.minecraft.command.type.custom.TypeScoreObjective; public final class NBTDescriptors extends ConstructionHelper { public static final NBTConstructor entity = compound(); public static final NBTConstructor block = compound(); public static final NBTConstructor item = compound(); private NBTDescriptors() { } static { final NBTConstructorList resultStats = list(compound() .key("AffectedBlocksName", Completers.scoreHolder) .key("AffectedBlocksObjective", TypeScoreObjective.writeableCompleter) .key("AffectedEntitiesName", Completers.scoreHolder) .key("AffectedEntitiesObjective", TypeScoreObjective.writeableCompleter) .key("AffectedItemsName", Completers.scoreHolder) .key("AffectedItemsObjective", TypeScoreObjective.writeableCompleter) .key("QueryResultName", Completers.scoreHolder) .key("QueryResultObjective", TypeScoreObjective.writeableCompleter) .key("SuccessCountName", Completers.scoreHolder) .key("SuccessCountObjective", TypeScoreObjective.writeableCompleter)); final NBTConstructorList blockList = list(Completers.blockCompleter); final NBTConstructorList effectList = list(compound() .key("Ambient", "Amplifier", "Duration", "Id", "ShowParticles")); final NBTConstructorList enchantmentList = list(compound() .key("id", "lvl")); final NBTConstructorList itemList = list(item); item.key("Count", "Damage") .key("id", Completers.itemCompleter) .sKey("Slot") .key("tag", compound() .key("CanDestroy", blockList) .key("CanPlaceOn", blockList) .key("display", compound() .key("Name") .key("Lore", defList)) .key("HideFlags", "Unbreakable") .sKey("map_is_scaling") .sKey("author", "generation", "resolved", "title") .sKey("pages", defList) .sKey("Fireworks", compound() .key("Explosions", defList) .key("Flight")) .sKey("Explosion", compound() .key("Colors", defList) .key("FadeColors", defList) .key("Flicker", "Trail", "Type")) .sKey("RepairCost") .sKey("display", compound() .key("color")) .key("AttributeModifiers", list(compound() .key("Amount", "Name", "AttributeName", "Operation") .sKey("UUIDLeast", "UUIDMost"))) .sKey("SkullOwner") .key("BlockEntityTag", block) .sKey("CustomPotionEffects", effectList) .sKey("pages", defList) .sKey("StoredEnchantments", enchantmentList) .sKey("ench", enchantmentList)); entity.sKey("Air") .key("CommandStats", resultStats) .key("CustomName", "Invulnerable") .sKey("CustomNameVisible", "Dimension", "FallDistance", "Fire") .key("id", Completers.entityID) .key("Equipment", itemList) .key("Motion", defList) .key("Rotation", defList) .key("Pos", defList) .sKey("OnGround", "PortalCooldown") .key("Riding", entity) .sKey("UUID", "UUIDLeast", "UUIDMost") .sKey("AbsorptionAmount") .key("ActiveEffects", effectList) .sKey("AttackTime") .key("Attributes", list(compound() .key("Name", "Base") .key("Modifiers", list(compound() .key("Amount", "Name", "Operation") .sKey("UUIDLeast", "UUIDMost"))))) .sKey("CanPickUpLoot", "DeathTime", "HealF", "Health", "HurtByTimestamp", "HurtTime") .sKey("DropChances", defList) .sKey("Leash", compound() .key("UUIDLeast", "UUIDMost", "X", "Y", "Z")) .sKey("Leashed") .key("NoAI", "PersistenceRequired", "Silent") .sKey("Inventory", itemList) .sKey("Offers", compound() .key("Recipies", list(compound() .key("buy", item) .key("buyB", item) .key("sell", item) .key("maxUses", "rewardExp", "uses")))) .sKey("carried", Completers.blockCompleter) .sKey("ArmorItem", item) .sKey("Items", itemList) .sKey("SaddleItem", item) .sKey("DisplayTile", Completers.blockCompleter) .sKey("Block", Completers.blockCompleter) .sKey("TileEntityData", block) .sKey("TileID", Completers.blockCompleter) .key("Item", item) .sKey("inTile", Completers.blockCompleter) .sKey("direction", defList) .sKey("FireworksItem", item) .sKey("ownerName", Completers.userCompleter) .sKey("Potion", item) .sKey("Pose", compound() .key("Head", defList) .key("Body", defList) .key("LeftArm", defList) .key("RightArm", defList) .key("LeftLeg", defList) .key("RightLeg", defList)); block.key("CustomName", "Lock") .key("id", Completers.blockCompleter) .key("x", "y", "z") .sKey("Base") .sKey("Patterns", list(compound() .key("Color", "Pattern"))) .key("Command") .sKey("CommandStats", resultStats) .sKey("LastOutput", "SuccessCount", "TrackOutput") .sKey("Data") .sKey("Item", Completers.blockCompleter) .sKey("BrewTime") .key("Items", itemList) .sKey("OutputSignal") .sKey("ExtraType", "Rot", "SkullType") .sKey("Owner", compound() .key("Id") .key("Name", Completers.userCompleter) .key("Properties", compound() .key("textures", list(compound() .key("Signature", "Value"))))) .sKey("EntityId", Completers.entityID) .sKey("SpawnData", entity) .sKey("SpawnPotentials", list(compound() .key("Properties", entity) .key("Type", Completers.entityID) .key("Weight"))) .sKey("RecordItem", item) .sKey("blockId", Completers.blockCompleter); } }