minecraft-src/net/minecraft/core/component/DataComponentHolder.java
2025-07-04 03:45:38 +03:00

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);
}
}