From c13620fc9c3851b573fd169bc09da11061fec767 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Mon, 25 Jan 2021 12:26:38 +0800 Subject: [PATCH] Expose raw id from registries --- .../events/client/ClientLifecycleEvent.java | 1 - .../architectury/registry/Registry.java | 5 ++++ .../registry/fabric/RegistriesImpl.java | 10 ++++++++ .../registry/forge/RegistriesImpl.java | 25 +++++++++++++++++-- 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/me/shedaniel/architectury/event/events/client/ClientLifecycleEvent.java b/common/src/main/java/me/shedaniel/architectury/event/events/client/ClientLifecycleEvent.java index ca650224..fb03e34b 100644 --- a/common/src/main/java/me/shedaniel/architectury/event/events/client/ClientLifecycleEvent.java +++ b/common/src/main/java/me/shedaniel/architectury/event/events/client/ClientLifecycleEvent.java @@ -43,7 +43,6 @@ public interface ClientLifecycleEvent { Event CLIENT_WORLD_LOAD = EventFactory.createLoop(); Event CLIENT_SETUP = EventFactory.createLoop(); - @Deprecated @Environment(EnvType.CLIENT) interface ClientState extends LifecycleEvent.InstanceState {} diff --git a/common/src/main/java/me/shedaniel/architectury/registry/Registry.java b/common/src/main/java/me/shedaniel/architectury/registry/Registry.java index b412e383..0c512eeb 100644 --- a/common/src/main/java/me/shedaniel/architectury/registry/Registry.java +++ b/common/src/main/java/me/shedaniel/architectury/registry/Registry.java @@ -49,11 +49,16 @@ public interface Registry extends Iterable { @Nullable ResourceLocation getId(T obj); + int getRawId(T obj); + Optional> getKey(T obj); @Nullable T get(ResourceLocation id); + @Nullable + T byRawId(int rawId); + boolean contains(ResourceLocation id); boolean containsValue(T obj); 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 2287adb8..edbf6590 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 @@ -165,6 +165,11 @@ public class RegistriesImpl { return delegate.getKey(obj); } + @Override + public int getRawId(T obj) { + return delegate.getId(obj); + } + @Override public Optional> getKey(T obj) { return delegate.getResourceKey(obj); @@ -175,6 +180,11 @@ public class RegistriesImpl { return delegate.get(id); } + @Override + public T byRawId(int rawId) { + return delegate.byId(rawId); + } + @Override public boolean contains(ResourceLocation id) { return delegate.containsKey(id); diff --git a/forge/src/main/java/me/shedaniel/architectury/registry/forge/RegistriesImpl.java b/forge/src/main/java/me/shedaniel/architectury/registry/forge/RegistriesImpl.java index cb2f06d1..b57db984 100644 --- a/forge/src/main/java/me/shedaniel/architectury/registry/forge/RegistriesImpl.java +++ b/forge/src/main/java/me/shedaniel/architectury/registry/forge/RegistriesImpl.java @@ -37,6 +37,7 @@ import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistryEntry; import net.minecraftforge.registries.RegistryManager; @@ -82,7 +83,7 @@ public class RegistriesImpl { public Registry get(ResourceKey> registryKey) { return get(RegistryManager.ACTIVE.getRegistry(registryKey.location())); } - + public Registry get(IForgeRegistry registry) { return new ForgeBackedRegistryImpl<>(this.registry, registry); } @@ -162,7 +163,7 @@ public class RegistriesImpl { public @NotNull ResourceLocation getRegistryId() { return delegate.key().location(); } - + @Override public @NotNull ResourceLocation getId() { return id; @@ -210,6 +211,11 @@ public class RegistriesImpl { return delegate.getKey(obj); } + @Override + public int getRawId(T obj) { + return delegate.getId(obj); + } + @Override public Optional> getKey(T t) { return delegate.getResourceKey(t); @@ -221,6 +227,11 @@ public class RegistriesImpl { return delegate.get(id); } + @Override + public T byRawId(int rawId) { + return delegate.byId(rawId); + } + @Override public boolean contains(ResourceLocation resourceLocation) { return delegate.containsKey(resourceLocation); @@ -356,6 +367,11 @@ public class RegistriesImpl { return delegate.getKey(obj); } + @Override + public int getRawId(T obj) { + return ((ForgeRegistry) delegate).getID(obj); + } + @Override public Optional> getKey(T t) { return Optional.ofNullable(getId(t)).map(id -> ResourceKey.create(key(), id)); @@ -367,6 +383,11 @@ public class RegistriesImpl { return delegate.getValue(id); } + @Override + public T byRawId(int rawId) { + return ((ForgeRegistry) delegate).getValue(rawId); + } + @Override public boolean contains(ResourceLocation resourceLocation) { return delegate.containsKey(resourceLocation);