From 87b5dcf7d9cd7224f4cafe47e7881bcc80ec40b1 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 7 Nov 2020 18:24:16 +0800 Subject: [PATCH] Allow only using `getRegistryName` --- .../architectury/registry/Registries.java | 14 +++++++++++-- .../registry/fabric/RegistriesImpl.java | 20 +++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/me/shedaniel/architectury/registry/Registries.java b/common/src/main/java/me/shedaniel/architectury/registry/Registries.java index 0259b0db..2c2e99cc 100644 --- a/common/src/main/java/me/shedaniel/architectury/registry/Registries.java +++ b/common/src/main/java/me/shedaniel/architectury/registry/Registries.java @@ -53,7 +53,7 @@ public final class Registries { * Fabric: Use registry */ @Nullable - public static ResourceLocation getId(T object, ResourceKey> fallback) { + public static ResourceLocation getId(T object, @Nullable ResourceKey> fallback) { return IMPL.getId(object, fallback); } @@ -63,10 +63,20 @@ public final class Registries { */ @Nullable @Deprecated - public static ResourceLocation getId(T object, net.minecraft.core.Registry fallback) { + public static ResourceLocation getId(T object, @Nullable net.minecraft.core.Registry fallback) { return IMPL.getId(object, fallback); } + /** + * Forge: If the object is {@code IForgeRegistryEntry}, use `getRegistryName`, else null + * Fabric: null + */ + @Deprecated + @Nullable + public static ResourceLocation getRegistryName(T object) { + return IMPL.getId(object, (ResourceKey>) null); + } + public interface Impl { RegistryProvider get(String modId); diff --git a/fabric/src/main/java/me/shedaniel/architectury/registry/fabric/RegistriesImpl.java b/fabric/src/main/java/me/shedaniel/architectury/registry/fabric/RegistriesImpl.java index 63025ad2..686008f9 100644 --- a/fabric/src/main/java/me/shedaniel/architectury/registry/fabric/RegistriesImpl.java +++ b/fabric/src/main/java/me/shedaniel/architectury/registry/fabric/RegistriesImpl.java @@ -38,11 +38,15 @@ public class RegistriesImpl implements Registries.Impl { @Override public ResourceLocation getId(T object, ResourceKey> fallback) { + if (fallback == null) + return null; return RegistryProviderImpl.INSTANCE.get(fallback).getId(object); } @Override public ResourceLocation getId(T object, net.minecraft.core.Registry fallback) { + if (fallback == null) + return null; return RegistryProviderImpl.INSTANCE.get(fallback).getId(object); } @@ -83,42 +87,42 @@ public class RegistriesImpl implements Registries.Impl { public @Nullable ResourceLocation getId(T obj) { return delegate.getKey(obj); } - + @Override public Optional> getKey(T obj) { return delegate.getResourceKey(obj); } - + @Override public @Nullable T get(ResourceLocation id) { return delegate.get(id); } - + @Override public boolean contains(ResourceLocation id) { return delegate.containsKey(id); } - + @Override public boolean containsValue(T obj) { return delegate.getResourceKey(obj).isPresent(); } - + @Override public Set getIds() { return delegate.keySet(); } - + @Override public Set, T>> entrySet() { return delegate.entrySet(); } - + @Override public ResourceKey> key() { return delegate.key(); } - + @NotNull @Override public Iterator iterator() {