Interface ValueContainer

All Known Subinterfaces:
Aerial, Ageable, Agent, Ambient, Animal, Aquatic, Archetype<S,​E>, AreaEffectCloud, ArmorStand, Arrow, ArrowEntity, Axolotl, Banner, Barrel, Bat, Beacon, Bed, Bee, Beehive, Bell, BlastFurnace, Blaze, BlockEntity, BlockEntityArchetype, BlockEntityInventory<T>, BlockOccupiedMinecart, BlockSnapshot, BlockState, BlockType, Boat, Boss, BrewingStand, Campfire, CarriedInventory<C>, CarrierBlockEntity, CarrierMinecart<M>, Cat, CaveSpider, Chest, ChestMinecart, Chicken, ClientPlayer, Cod, CommandBlock, CommandBlockMinecart, Comparator, ComplexLiving<T>, ComplexLivingPart<P>, Conduit, Container, CopyableDataHolder, CopyableValueContainer, Cow, CraftingGridInventory, CraftingInventory, CraftingOutput, Creature, Creeper, DamagingProjectile, DataHolder, DataHolder.Immutable<I>, DataHolder.Mutable, DataManipulator, DataManipulator.Immutable, DataManipulator.Mutable, DaylightDetector, DirectionRelativeDataHolder, DirectionRelativeDataHolder.Immutable<I>, DirectionRelativeDataHolder.Mutable, Dispenser, Dolphin, Donkey, DragonFireball, Dropper, Drowned, Egg, ElderGuardian, EmptyInventory, EnchantmentTable, EndCrystal, EnderChest, EnderDragon, EnderDragonPart, Enderman, Endermite, EnderPearl, EndGateway, EndPortal, Entity, EntityArchetype, EntitySnapshot, EntityTargetingProjectile, EquipmentInventory, EquipmentSlot, Evoker, EvokerFangs, ExperienceBottle, ExperienceOrb, Explosive, ExplosiveFireball, EyeOfEnder, FallingBlock, FilteringSlot, FireballEntity, FireworkRocket, Fish, FishingBobber, FluidStack, FluidStackSnapshot, FluidState, FluidType, Fox, FuelSlot, Furnace, FurnaceBlockEntity, FurnaceMinecart, FusedExplosive, Ghast, Giant, GlowSquid, Goat, Golem, GridInventory, Guardian, Hanging, Hoglin, Hopper, HopperMinecart, Horse, HorseLike, Hostile, Hotbar, Human, Humanoid, Husk, Illager, Illusioner, InputSlot, Inventory, Inventory2D, InventoryColumn, InventoryRow, IronGolem, Item, ItemFrame, ItemStack, ItemStackSnapshot, ItemType, Jigsaw, Jukebox, LeashKnot, Lectern, LightningBolt, Living, Llama, LlamaLike, LlamaSpit, LocalPlayer, LocatableBlock, LocatableSnapshot<T>, MagmaCube, MapInfo, Marker, Merchant, Minecart, MinecartLike, MobSpawner, Monster, Mooshroom, Mule, NameableBlockEntity, NameableCarrierBlockEntity, Ocelot, OutputSlot, PackHorse, Painting, Panda, Parrot, Patroller, PersistentInventory, Phantom, Pig, Piglin, PiglinBrute, PiglinLike, Pillager, Piston, Player, PlayerInventory, PolarBear, Potion, PrimaryPlayerInventory, PrimedTNT, Projectile, Pufferfish, Rabbit, Raider, Ranger, Ravager, RemotePlayer, Salmon, SchoolingFish, SerializableDataHolder, SerializableDataHolder.Immutable<I>, SerializableDataHolder.Mutable, ServerLocation, ServerPlayer, Sheep, Shulker, ShulkerBox, ShulkerBullet, SidedSlot, Sign, Silverfish, Sittable, Skeleton, SkeletonHorse, SkeletonLike, Skull, Slime, Slot, SmallFireball, Smoker, Snowball, SnowGolem, Spawner, SpawnerMinecart, SpectralArrow, Spellcaster, Spider, Squid, State<S>, Stray, Strider, StructureBlock, TameableAnimal, TameableHorse, TNTMinecart, Trader, TraderLlama, TrappedChest, Trident, TropicalFish, Turtle, User, UserInventory, Vehicle, Vex, ViewableInventory, Villager, Vindicator, WanderingTrader, WeatherEffect, Witch, Wither, WitherSkeleton, WitherSkull, Wolf, Zoglin, Zombie, ZombieHorse, ZombieLike, 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 ImmutableSet.
      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