Co-authored-by: Bjarne Koll <git@lynxplay.dev> Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com> Co-authored-by: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Co-authored-by: MiniDigger | Martin <admin@minidigger.dev> Co-authored-by: Nassim Jahnke <nassim@njahnke.dev> Co-authored-by: Noah van der Aa <ndvdaa@gmail.com> Co-authored-by: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Co-authored-by: Shane Freeder <theboyetronic@gmail.com> Co-authored-by: Spottedleaf <Spottedleaf@users.noreply.github.com> Co-authored-by: Tamion <70228790+notTamion@users.noreply.github.com> Co-authored-by: Warrior <50800980+Warriorrrr@users.noreply.github.com>
49 lines
1.7 KiB
Java
49 lines
1.7 KiB
Java
package io.papermc.paper.datacomponent;
|
|
|
|
import org.bukkit.Utility;
|
|
import org.bukkit.persistence.PersistentDataContainer;
|
|
import org.jetbrains.annotations.ApiStatus;
|
|
import org.jetbrains.annotations.NotNull;
|
|
import org.jspecify.annotations.NullMarked;
|
|
|
|
/**
|
|
* This represents an object capable of holding and mutating data components.
|
|
*
|
|
* @see PersistentDataContainer
|
|
*/
|
|
@NullMarked
|
|
@ApiStatus.NonExtendable
|
|
public interface DataComponentHolder extends DataComponentView {
|
|
|
|
/**
|
|
* Sets the value of the data component type for this holder.
|
|
*
|
|
* @param type the data component type
|
|
* @param valueBuilder value builder
|
|
* @param <T> value type
|
|
*/
|
|
@Utility
|
|
@org.jetbrains.annotations.ApiStatus.Experimental
|
|
public <T> void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> type, final @NotNull io.papermc.paper.datacomponent.DataComponentBuilder<T> valueBuilder);
|
|
|
|
/**
|
|
* Sets the value of the data component type for this holder.
|
|
*
|
|
* @param type the data component type
|
|
* @param value value to set
|
|
* @param <T> value type
|
|
*/
|
|
@org.jetbrains.annotations.ApiStatus.Experimental
|
|
public <T> void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull Valued<T> type, final @NotNull T value);
|
|
|
|
/**
|
|
* Marks this non-valued data component type as present in this itemstack.
|
|
*
|
|
* @param type the data component type
|
|
*/
|
|
@org.jetbrains.annotations.ApiStatus.Experimental
|
|
public void setData(final io.papermc.paper.datacomponent.DataComponentType.@NotNull NonValued type);
|
|
|
|
// TODO: Do we even want to have the concept of overriding here? Not sure what is going on with entity components
|
|
}
|