Skip to content

Commit 4b802b7

Browse files
committed
Registered: Add key accessor
1 parent 5ee6166 commit 4b802b7

File tree

4 files changed

+30
-5
lines changed

4 files changed

+30
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package juuxel.adorn.lib.registry;
22

3+
import net.minecraft.registry.RegistryKey;
4+
35
import java.util.function.Supplier;
46

5-
@FunctionalInterface
67
public interface Registered<T> extends Supplier<T> {
8+
RegistryKey<? super T> key();
79
}

common/src/main/java/juuxel/adorn/lib/registry/RegisteredMap.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import java.util.function.Supplier;
1111
import java.util.stream.Stream;
1212

13-
public final class RegisteredMap<K, V> implements Registered<Map<K, V>> {
13+
public final class RegisteredMap<K, V> implements Supplier<Map<K, V>> {
1414
private final Map<K, Registered<? extends V>> map;
1515
private final Supplier<Map<K, V>> builtMap;
1616

fabric/src/main/java/juuxel/adorn/platform/fabric/RegistrarImpl.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import juuxel.adorn.lib.registry.Registered;
55
import juuxel.adorn.lib.registry.Registrar;
66
import net.minecraft.registry.Registry;
7+
import net.minecraft.registry.RegistryKey;
78

89
import java.util.ArrayList;
910
import java.util.Iterator;
@@ -20,9 +21,20 @@ public RegistrarImpl(Registry<T> registry) {
2021

2122
@Override
2223
public <U extends T> Registered<U> register(String id, Supplier<? extends U> provider) {
23-
var registered = Registry.register(registry, AdornCommon.id(id), provider.get());
24+
var key = RegistryKey.of(registry.getKey(), AdornCommon.id(id));
25+
var registered = Registry.register(registry, key, provider.get());
2426
objects.add(registered);
25-
return () -> registered;
27+
return new Registered<>() {
28+
@Override
29+
public U get() {
30+
return registered;
31+
}
32+
33+
@Override
34+
public RegistryKey<? super U> key() {
35+
return key;
36+
}
37+
};
2638
}
2739

2840
@Override

forge/src/main/java/juuxel/adorn/platform/forge/registrar/DeferredRegistrar.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.minecraft.registry.Registry;
77
import net.minecraft.registry.RegistryKey;
88
import net.neoforged.bus.api.IEventBus;
9+
import net.neoforged.neoforge.common.extensions.IHolderExtension;
910
import net.neoforged.neoforge.registries.DeferredHolder;
1011
import net.neoforged.neoforge.registries.DeferredRegister;
1112

@@ -31,7 +32,17 @@ public void hook(IEventBus modBus) {
3132
public <U extends T> Registered<U> register(String id, Supplier<? extends U> provider) {
3233
var registryObject = register.register(id, provider);
3334
objects.add(registryObject);
34-
return registryObject::get;
35+
return new Registered<>() {
36+
@Override
37+
public RegistryKey<? super U> key() {
38+
return ((IHolderExtension<T>) registryObject).getKey();
39+
}
40+
41+
@Override
42+
public U get() {
43+
return registryObject.get();
44+
}
45+
};
3546
}
3647

3748
@Override

0 commit comments

Comments
 (0)