Package org.bukkit.metadata

# Interface Metadatable

All Known Subinterfaces:
  `AbstractArrow`, `AbstractHorse`, `AbstractSkeleton`, `AbstractVillager`, `Ageable`, `Allay`, `Ambient`, `Animals`, `AreaEffectCloud`, `ArmorStand`, `Arrow`, `Axolotl`, `Banner`, `Barrel`, `Bat`, `Beacon`, `Bed`, `Bee`, `Beehive`, `Bell`, `BlastFurnace`, `Blaze`, `Block`, `BlockState`, `Boat`, `Boss`, `Breedable`, `BrewingStand`, `Bucketable`, `Camel`, `Campfire`, `Cat`, `CaveSpider`, `Chest`, `ChestBoat`, `ChestedHorse`, `Chicken`, `ChiseledBookshelf`, `Cod`, `CollarColorable`, `CommandBlock`, `CommandMinecart`, `Comparator`, `ComplexEntityPart`, `ComplexLivingEntity`, `Conduit`, `Container`, `Cow`, `Creature`, `CreatureSpawner`, `Creeper`, `Damageable`, `DaylightDetector`, `Dispenser`, `Dolphin`, `Donkey`, `DragonFireball`, `Dropper`, `Drowned`, `Egg`, `ElderGuardian`, `EnchantingTable`, `EnderChest`, `EnderCrystal`, `EnderDragon`, `EnderDragonPart`, `Enderman`, `Endermite`, `EnderPearl`, `EnderSignal`, `EndGateway`, `Entity`, `EntityBlockStorage<T>`, `Evoker`, `EvokerFangs`, `ExperienceOrb`, `Explosive`, `ExplosiveMinecart`, `FallingBlock`, `Fireball`, `Firework`, `Fish`, `FishHook`, `Flying`, `Fox`, `Frog`, `Furnace`, `Ghast`, `Giant`, `GlowItemFrame`, `GlowSquid`, `Goat`, `Golem`, `Guardian`, `Hanging`, `HangingSign`, `Hoglin`, `Hopper`, `HopperMinecart`, `Horse`, `HumanEntity`, `Husk`, `Illager`, `Illusioner`, `IronGolem`, `Item`, `ItemFrame`, `Jigsaw`, `Jukebox`, `LargeFireball`, `LeashHitch`, `Lectern`, `LightningStrike`, `LingeringPotion`, `LivingEntity`, `Llama`, `LlamaSpit`, `MagmaCube`, `Marker`, `Minecart`, `Mob`, `Monster`, `MovingPiston`, `Mule`, `MushroomCow`, `NPC`, `Ocelot`, `Painting`, `Panda`, `Parrot`, `Phantom`, `Pig`, `Piglin`, `PiglinAbstract`, `PiglinBrute`, `PigZombie`, `Pillager`, `Player`, `PolarBear`, `PoweredMinecart`, `Projectile`, `PufferFish`, `Rabbit`, `Raider`, `RangedEntity`, `Ravager`, `RideableMinecart`, `Salmon`, `SchoolableFish`, `SculkCatalyst`, `SculkSensor`, `SculkShrieker`, `Sheep`, `Shulker`, `ShulkerBox`, `ShulkerBullet`, `Sign`, `Silverfish`, `SizedFireball`, `Skeleton`, `SkeletonHorse`, `Skull`, `Slime`, `SmallFireball`, `Smoker`, `Snowball`, `Snowman`, `SpawnerMinecart`, `SpectralArrow`, `Spellcaster`, `Spider`, `SplashPotion`, `Squid`, `Steerable`, `StorageMinecart`, `Stray`, `Strider`, `Structure`, `Tadpole`, `Tameable`, `ThrowableProjectile`, `ThrownExpBottle`, `ThrownPotion`, `TileState`, `TippedArrow`, `TNTPrimed`, `TraderLlama`, `Trident`, `TropicalFish`, `Turtle`, `Vehicle`, `Vex`, `Villager`, `Vindicator`, `WanderingTrader`, `Warden`, `WaterMob`, `Witch`, `Wither`, `WitherSkeleton`, `WitherSkull`, `Wolf`, `World`, `Zoglin`, `Zombie`, `ZombieHorse`, `ZombieVillager`

public interface Metadatable
This interface is implemented by all objects that can provide metadata about themselves.

## Method Summary

Modifier and Type
Method
Description
`@NotNull List<MetadataValue>`
`getMetadata(@NotNull String metadataKey)`
Returns a list of previously set metadata values from the implementing object's metadata store.
`boolean`
`hasMetadata(@NotNull String metadataKey)`
Tests to see whether the implementing object contains the given metadata value in its metadata store.
`void`
`removeMetadata(@NotNull String metadataKey, @NotNull Plugin owningPlugin)`
Removes the given metadata value from the implementing object's metadata store.
`void`
`setMetadata(@NotNull String metadataKey, @NotNull MetadataValue newMetadataValue)`
Sets a metadata value in the implementing object's metadata store.

## Method Details

### setMetadata

void setMetadata(@NotNull @NotNull String metadataKey, @NotNull @NotNull MetadataValue newMetadataValue)
Sets a metadata value in the implementing object's metadata store.

Parameters:
  `metadataKey` - A unique key to identify this metadata.
  `newMetadataValue` - The metadata value to apply.
Throws:
  `IllegalArgumentException` - If value is null, or the owning plugin is null

### getMetadata

@NotNull @NotNull List<MetadataValue> getMetadata(@NotNull @NotNull String metadataKey)
Returns a list of previously set metadata values from the implementing object's metadata store.

Parameters:
  `metadataKey` - the unique metadata key being sought.
Returns:
  A list of values, one for each plugin that has set the requested value.

### hasMetadata

boolean hasMetadata(@NotNull @NotNull String metadataKey)
Tests to see whether the implementing object contains the given metadata value in its metadata store.

Parameters:
  `metadataKey` - the unique metadata key being queried.
Returns:
  the existence of the metadataKey within subject.

### removeMetadata

void removeMetadata(@NotNull @NotNull String metadataKey, @NotNull @NotNull Plugin owningPlugin)
Removes the given metadata value from the implementing object's metadata store.

Parameters:
  `metadataKey` - the unique metadata key identifying the metadata to remove.
  `owningPlugin` - This plugin's metadata value will be removed. All other values will be left untouched.
Throws:
  `IllegalArgumentException` - If plugin is null