Interface ValueContainer

All Known Subinterfaces:
AcceleratingProjectile, Aerial, Ageable, Agent, Allay, Ambient, Angerable, Animal, Aquatic, Archetype<S,E>, AreaEffectCloud, Armadillo, ArmorStand, Arrow, ArrowLike, Attackable, Axolotl, Banner, Barrel, Bat, Beacon, Bed, Bee, Beehive, Bell, Biome, BlastFurnace, Blaze, BlockDisplay, BlockEntity, BlockEntityArchetype, BlockEntityInventory<T>, BlockOccupiedMinecart, BlockSnapshot, BlockState, BlockType, Boat, Bogged, Boss, Breedable, Breeze, BreezeWindCharge, BrewingStand, Camel, Campfire, CarriedInventory<C>, CarrierBlockEntity, CarrierMinecart<M>, Cat, CaveSpider, Chargeable, Chest, ChestBoat, ChestMinecart, Chicken, ClientPlayer, ClientWorldProperties, Cod, CommandBlock, CommandBlockMinecart, Comparator, ComplexLiving<T>, ComplexLivingPart<P>, Conduit, Container, CopyableDataHolder, CopyableValueContainer, Cow, Crafter, CraftingGridInventory, CraftingInventory, CraftingOutput, Creaking, CreakingHeart, Creeper, DataHolder, DataHolder.Immutable<I>, DataHolder.Mutable, DataManipulator, DataManipulator.Immutable, DataManipulator.Mutable, DaylightDetector, DecoratedPot, DirectionRelativeDataHolder, DirectionRelativeDataHolder.Immutable<I>, DirectionRelativeDataHolder.Mutable, Dispenser, DisplayEntity, Dolphin, Donkey, DragonFireball, Dropper, Drowned, Egg, ElderGuardian, EmptyInventory, EnchantmentTable, EndCrystal, EnderChest, EnderDragon, EnderDragonPart, Enderman, Endermite, EnderPearl, EndGateway, EndPortal, Entity, EntityArchetype, EntitySnapshot, EquipmentInventory, EquipmentSlot, Evoker, EvokerFangs, ExperienceBottle, ExperienceOrb, Explosive, ExplosiveFireball, EyeOfEnder, FallingBlock, FilteringSlot, FireworkRocket, Fish, FishingBobber, FluidStack, FluidStackSnapshot, FluidState, FluidType, Fox, Frog, FuelSlot, Furnace, FurnaceBlockEntity, FurnaceMinecart, FusedExplosive, Ghast, Giant, GlowItemFrame, GlowSquid, Goat, Golem, GridInventory, Guardian, Hanging, Hoglin, Hopper, HopperMinecart, Horse, HorseLike, Hostile, Hotbar, Human, Humanoid, Husk, IgnitingProjectile, Illager, Illusioner, InputSlot, Interaction, Inventory, Inventory2D, InventoryColumn, InventoryRow, IronGolem, Item, ItemDisplay, ItemFrame, ItemRepresentable, ItemStack, ItemStackLike, ItemStackSnapshot, ItemType, Jigsaw, Jukebox, Leashable, LeashKnot, Lectern, LightningBolt, Living, Llama, LlamaSpit, LocalPlayer, LocatableBlock, LocatableSnapshot<T>, MagmaCube, MapInfo, Marker, Merchant, Minecart, MinecartLike, MobSpawner, Monster, Mooshroom, Mule, NameableBlockEntity, NameableCarrierBlockEntity, Ocelot, OminousItemSpawner, OutputSlot, Ownable, PackHorse, Painting, Panda, Parrot, PathfinderAgent, Patroller, PersistentInventory, Phantom, Pig, Piglin, PiglinBrute, PiglinLike, Pillager, Piston, Player, PlayerInventory, PolarBear, Potion, PotionSlot, PrimaryPlayerInventory, PrimedTNT, Projectile, Pufferfish, Rabbit, Raft, Raider, RangedAgent, Ranger, Ravager, RecipeInput, RecipeInput.Crafting, RecipeInput.Single, RecipeInput.Smithing, RemotePlayer, Saddleable, Salmon, SchoolingFish, SculkSensor, SerializableDataHolder, SerializableDataHolder.Immutable<I>, SerializableDataHolder.Mutable, ServerLocation, ServerPlayer, ServerWorldProperties, Sheep, Shulker, ShulkerBox, ShulkerBullet, SidedSlot, Sign, Sign.SignText, Silverfish, Sittable, Skeleton, SkeletonHorse, SkeletonLike, Skull, Slime, Slot, SmallFireball, Smoker, Sniffer, Snowball, SnowGolem, Spawner, SpawnerMinecart, SpectralArrow, Spellcaster, Spider, Squid, State<S>, Stray, Strider, StructureBlock, Tadpole, TameableAnimal, Targeting, TextDisplay, ThrowableItemProjectile, TNTMinecart, TraderLlama, TrappedChest, TrialSpawner, Trident, TropicalFish, Turtle, User, UserInventory, Vehicle, Vex, ViewableInventory, ViewableInventory.Custom, Villager, VillagerLike, Vindicator, WanderingTrader, Warden, WindCharge, WindChargeLike, Witch, Wither, WitherSkeleton, WitherSkull, Wolf, WorldChunk, WorldProperties, WorldTemplate, WorldType, WorldTypeDataFetcher, WorldTypeTemplate, Zoglin, Zombie, ZombieHorse, ZombieVillager, ZombifiedPiglin

public interface ValueContainer
A value holder is a holder of a particular set of Values. While there exists a DataHolder and DataManipulator, the emphasis of ValueContainer is that it only contains "data". It is not known whether a ValueHolder is mutable or immutable.

Being that a ValueHolder is literally a container of Values, it itself does not contain the underlying values of data. A ValueContainer may not always be parented by another ValueContainer, such as the case for DataManipulators and DataHolder.Mutables, it is recommended to knowingly understand the fundamental differences between them.

  • Method Details

    • get

      <E> Optional<E> get(Key<? extends Value<E>> key)
      Attempts to get the underlying value backed by a Value linked to the provided Key. If the Key is not supported, Optional.empty() is returned. It is important to check for support of a Key by either calling supports(Value) or supports(Key).
      Type Parameters:
      E - The type of value
      Parameters:
      key - The key to retrieve the value for
      Returns:
      The value, if available
    • getInt

      default OptionalInt getInt(Key<? extends Value<Integer>> key)
      Attempts to get the underlying int value backed by a Value linked to the provided Key. If the Key is not supported, Optional.empty() is returned. It is important to check for support of a Key by either calling supports(Value) or supports(Key).
      Parameters:
      key - The key to retrieve the value for
      Returns:
      The value, if available
    • getDouble

      default OptionalDouble getDouble(Key<? extends Value<Double>> key)
      Attempts to get the underlying double value backed by a Value linked to the provided Key. If the Key is not supported, Optional.empty() is returned. It is important to check for support of a Key by either calling supports(Value) or supports(Key).
      Parameters:
      key - The key to retrieve the value for
      Returns:
      The value, if available
    • getLong

      default OptionalLong getLong(Key<? extends Value<Long>> key)
      Attempts to get the underlying long value backed by a Value linked to the provided Key. If the Key is not supported, Optional.empty() is returned. It is important to check for support of a Key by either calling supports(Value) or supports(Key).
      Parameters:
      key - The key to retrieve the value for
      Returns:
      The value, if available
    • require

      default <E> E require(Key<? extends Value<E>> key)
      Attempts to get the underlying value backed by a Value linked to the provided Key.

      If the Key is not supported or available, NoSuchElementException will be thrown.

      Type Parameters:
      E - The type of value
      Parameters:
      key - The key
      Returns:
      The value
      Throws:
      NoSuchElementException - If the value is not supported or present
    • getOrNull

      default <E> @Nullable E getOrNull(Key<? extends Value<E>> key)
      Attempts to get the underlying value if available and supported. If the Value is not supported whatsoever by this ValueContainer, an exception is thrown.
      Type Parameters:
      E - The type of value
      Parameters:
      key - The Key backing the Value
      Returns:
      The value, or null if not set
    • getOrElse

      default <E> E getOrElse(Key<? extends Value<E>> key, E defaultValue)
      Attempts to get the underlying value if available. If the value is not set, the given defaultValue is returned, if the Value is even supported.
      Type Parameters:
      E - The type of value
      Parameters:
      key - The key backing the Value
      defaultValue - The value to default to if not set
      Returns:
      The value, or default if not set
    • getValue

      <E, V extends Value<E>> Optional<V> getValue(Key<V> key)
      Gets the Value for the given Key.
      Type Parameters:
      E - The type of the return type
      V - The type of value
      Parameters:
      key - The key linked to the Value
      Returns:
      The value, if available
    • requireValue

      default <E, V extends Value<E>> V requireValue(Key<V> key)
      Attempts to get the underlying value backed by a Value linked to the provided Key.

      If the Key is not supported or available, NoSuchElementException will be thrown.

      Type Parameters:
      E - The type of element wrapped by the value
      V - The type of value
      Parameters:
      key - The key
      Returns:
      The value
      Throws:
      NoSuchElementException - If the value is not supported or present
    • supports

      boolean supports(Key<?> key)
      Checks if the given Key is supported by this ValueContainer.
      Parameters:
      key - The key to check
      Returns:
      True if the key and value backed by the key is supported
    • supports

      default boolean supports(Value<?> value)
      Checks if the provided Value is supported.
      Parameters:
      value - The base value to check
      Returns:
      True if the base value is supported
    • getKeys

      Set<Key<?>> getKeys()
      Gets all applicable Keys for this ValueContainer. Changes can not be made to the set to alter the ValueContainer, nor can the Values be changed with the provided Set.
      Returns:
      An immutable set of known Keys
    • getValues

      Set<Value.Immutable<?>> getValues()
      Gets all applicable Values associated with this ValueContainer. As the data backed by the values are copied, any modifications to the Values will not be reflected onto this ValueContainer.
      Returns:
      An immutable set of copied values