Skip to content

Commit

Permalink
Rewrite registrars in Java
Browse files Browse the repository at this point in the history
  • Loading branch information
Juuxel committed Aug 2, 2024
1 parent 30c4638 commit 1ca7696
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 54 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package juuxel.adorn.lib.registry;

import java.util.function.Supplier;

@FunctionalInterface
public interface Registered<T> extends Supplier<T> {
}
10 changes: 10 additions & 0 deletions common/src/main/java/juuxel/adorn/lib/registry/Registrar.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package juuxel.adorn.lib.registry;

import java.util.function.Supplier;

public interface Registrar<T> extends Iterable<T> {
/**
* Registers an object with the id. The object is created using the provider.
*/
<U extends T> Registered<U> register(String id, Supplier<? extends U> provider);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package juuxel.adorn.lib.registry;

import juuxel.adorn.util.InlineServices;
import juuxel.adorn.util.Services;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;

@InlineServices
public interface RegistrarFactory {
<T> Registrar<T> create(RegistryKey<Registry<T>> registryKey);

@InlineServices.Getter
static RegistrarFactory get() {
return Services.load(RegistrarFactory.class);
}
}
11 changes: 0 additions & 11 deletions common/src/main/kotlin/juuxel/adorn/lib/registry/Registered.kt

This file was deleted.

19 changes: 0 additions & 19 deletions common/src/main/kotlin/juuxel/adorn/lib/registry/Registrar.kt

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
import juuxel.adorn.AdornCommon;
import juuxel.adorn.lib.registry.Registered;
import juuxel.adorn.lib.registry.Registrar;
import kotlin.jvm.functions.Function0;
import net.minecraft.registry.Registry;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Supplier;

public final class RegistrarImpl<T> implements Registrar<T> {
private final Registry<T> registry;
Expand All @@ -19,8 +19,8 @@ public RegistrarImpl(Registry<T> registry) {
}

@Override
public <U extends T> Registered<U> register(String id, Function0<? extends U> provider) {
var registered = Registry.register(registry, AdornCommon.id(id), provider.invoke());
public <U extends T> Registered<U> register(String id, Supplier<? extends U> provider) {
var registered = Registry.register(registry, AdornCommon.id(id), provider.get());
objects.add(registered);
return () -> registered;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.google.common.collect.Iterators;
import juuxel.adorn.AdornCommon;
import juuxel.adorn.lib.registry.Registered;
import kotlin.jvm.functions.Function0;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.neoforged.bus.api.IEventBus;
Expand All @@ -13,6 +12,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Supplier;

public final class DeferredRegistrar<T> implements ForgeRegistrar<T> {
private final DeferredRegister<T> register;
Expand All @@ -28,8 +28,8 @@ public void hook(IEventBus modBus) {
}

@Override
public <U extends T> Registered<U> register(String id, Function0<? extends U> provider) {
var registryObject = register.register(id, provider::invoke);
public <U extends T> Registered<U> register(String id, Supplier<? extends U> provider) {
var registryObject = register.register(id, provider);
objects.add(registryObject);
return registryObject::get;
}
Expand Down

0 comments on commit 1ca7696

Please sign in to comment.