Code/net/minecraft/core/HolderGetter.java

37 lines
1.6 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.core;
import java.util.Optional;
import net.minecraft.resources.ResourceKey;
import net.minecraft.tags.TagKey;
public interface HolderGetter<T> {
Optional<Holder.Reference<T>> get(ResourceKey<T> p_255645_);
default Holder.Reference<T> getOrThrow(ResourceKey<T> p_255990_) {
return this.get(p_255990_).orElseThrow(() -> new IllegalStateException("Missing element " + p_255990_));
}
Optional<HolderSet.Named<T>> get(TagKey<T> p_256283_);
default HolderSet.Named<T> getOrThrow(TagKey<T> p_256125_) {
return this.get(p_256125_).orElseThrow(() -> new IllegalStateException("Missing tag " + p_256125_));
}
public interface Provider {
<T> Optional<? extends HolderGetter<T>> lookup(ResourceKey<? extends Registry<? extends T>> p_256648_);
default <T> HolderGetter<T> lookupOrThrow(ResourceKey<? extends Registry<? extends T>> p_255881_) {
return (HolderGetter<T>)this.lookup(p_255881_).orElseThrow(() -> new IllegalStateException("Registry " + p_255881_.location() + " not found"));
}
default <T> Optional<Holder.Reference<T>> get(ResourceKey<T> p_331697_) {
return this.lookup(p_331697_.registryKey()).flatMap(p_325667_ -> p_325667_.get(p_331697_));
}
default <T> Holder.Reference<T> getOrThrow(ResourceKey<T> p_393982_) {
return this.lookup(p_393982_.registryKey())
.flatMap(p_389657_ -> p_389657_.get(p_393982_))
.orElseThrow(() -> new IllegalStateException("Missing element " + p_393982_));
}
}
}