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