27 lines
850 B
Java
27 lines
850 B
Java
package net.minecraft.core.component;
|
|
|
|
import java.util.stream.Stream;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
public interface DataComponentHolder extends DataComponentGetter {
|
|
DataComponentMap getComponents();
|
|
|
|
@Nullable
|
|
@Override
|
|
default <T> T get(DataComponentType<? extends T> component) {
|
|
return this.getComponents().get(component);
|
|
}
|
|
|
|
default <T> Stream<T> getAllOfType(Class<? extends T> type) {
|
|
return this.getComponents().stream().map(TypedDataComponent::value).filter(object -> type.isAssignableFrom(object.getClass())).map(object -> object);
|
|
}
|
|
|
|
@Override
|
|
default <T> T getOrDefault(DataComponentType<? extends T> component, T defaultValue) {
|
|
return this.getComponents().getOrDefault(component, defaultValue);
|
|
}
|
|
|
|
default boolean has(DataComponentType<?> component) {
|
|
return this.getComponents().has(component);
|
|
}
|
|
}
|