From 1e30c893704ec31fb37f6dd265dbeeb92a9618a9 Mon Sep 17 00:00:00 2001 From: CheaterCodes <cheater.codes@outlook.com> Date: Wed, 19 Aug 2020 21:21:15 +0200 Subject: [PATCH] Fixed some generics --- .../DynamicRegistryEntryAddedCallback.java | 9 ++++---- .../registry/sync/DynamicRegistryEvents.java | 22 +++++++++---------- .../sync/DynamicRegistryManagerMixin.java | 6 ++--- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/api/event/registry/DynamicRegistryEntryAddedCallback.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/api/event/registry/DynamicRegistryEntryAddedCallback.java index 8363a4d2c..ad4f7d129 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/api/event/registry/DynamicRegistryEntryAddedCallback.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/api/event/registry/DynamicRegistryEntryAddedCallback.java @@ -24,14 +24,15 @@ import net.fabricmc.fabric.api.event.Event; import net.fabricmc.fabric.impl.registry.sync.DynamicRegistryEvents; @FunctionalInterface -public interface DynamicRegistryEntryAddedCallback { - void onEntryAdded(int rawId, RegistryKey<?> key, Object object, MutableRegistry<?> registry); +public interface DynamicRegistryEntryAddedCallback<T> { + void onEntryAdded(int rawId, RegistryKey<T> key, T object, MutableRegistry<T> registry); - static Event<DynamicRegistryEntryAddedCallback> event(RegistryKey<? extends Registry<?>> registryKey) { + @SuppressWarnings("unchecked") + static <T> Event<DynamicRegistryEntryAddedCallback<T>> event(RegistryKey<? extends Registry<T>> registryKey) { if (!DynamicRegistryEvents.ADD_ENTRY_EVENTS.containsKey(registryKey)) { throw new IllegalArgumentException("Unsupported registry: " + registryKey); } - return DynamicRegistryEvents.ADD_ENTRY_EVENTS.get(registryKey); + return (Event<DynamicRegistryEntryAddedCallback<T>>) DynamicRegistryEvents.ADD_ENTRY_EVENTS.get(registryKey); } } diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/DynamicRegistryEvents.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/DynamicRegistryEvents.java index e8827b160..e0509c88c 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/DynamicRegistryEvents.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/impl/registry/sync/DynamicRegistryEvents.java @@ -28,24 +28,22 @@ import net.fabricmc.fabric.api.event.EventFactory; import net.fabricmc.fabric.api.event.registry.DynamicRegistryEntryAddedCallback; import net.fabricmc.fabric.mixin.registry.sync.DynamicRegistryManagerAccessor; +@SuppressWarnings({"rawtypes", "unchecked"}) public final class DynamicRegistryEvents { - public static Map<RegistryKey<? extends Registry<?>>, Event<DynamicRegistryEntryAddedCallback>> ADD_ENTRY_EVENTS; - - private DynamicRegistryEvents() { - } + public static final Map<RegistryKey<? extends Registry<?>>, Event<?>> ADD_ENTRY_EVENTS; static { ADD_ENTRY_EVENTS = Maps.newLinkedHashMap(); for (RegistryKey<? extends Registry<?>> registryKey : DynamicRegistryManagerAccessor.getInfos().keySet()) { - ADD_ENTRY_EVENTS.put(registryKey, - EventFactory.createArrayBacked( - DynamicRegistryEntryAddedCallback.class, - callbacks -> (rawId, key, object, registry) -> { - for (DynamicRegistryEntryAddedCallback callback : callbacks) { - callback.onEntryAdded(rawId, key, object, registry); - } - })); + ADD_ENTRY_EVENTS.put(registryKey, EventFactory.createArrayBacked(DynamicRegistryEntryAddedCallback.class, + callbacks -> (rawId, key, object, registry) -> { + for (DynamicRegistryEntryAddedCallback callback : callbacks) { + callback.onEntryAdded(rawId, key, object, registry); + } + })); } } + + private DynamicRegistryEvents() { } } diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/DynamicRegistryManagerMixin.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/DynamicRegistryManagerMixin.java index 95128b71d..28ed013bd 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/DynamicRegistryManagerMixin.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/DynamicRegistryManagerMixin.java @@ -35,14 +35,14 @@ import net.fabricmc.fabric.impl.registry.sync.DynamicRegistryEvents; @Mixin(DynamicRegistryManager.class) public class DynamicRegistryManagerMixin { + @SuppressWarnings({"unchecked", "rawtypes"}) @Inject(method = "create", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/dynamic/RegistryOps$class_5506$class_5507;<init>()V"), locals = LocalCapture.CAPTURE_FAILHARD) private static void onCreateImpl(CallbackInfoReturnable<DynamicRegistryManager.Impl> cir, DynamicRegistryManager.Impl registryManager) { - for (Map.Entry<RegistryKey<? extends Registry<?>>, Event<DynamicRegistryEntryAddedCallback>> event : DynamicRegistryEvents.ADD_ENTRY_EVENTS.entrySet()) { - //noinspection unchecked + for (Map.Entry<RegistryKey<? extends Registry<?>>, Event<?>> event : DynamicRegistryEvents.ADD_ENTRY_EVENTS.entrySet()) { RegistryKey<? extends Registry<Object>> registryKey = (RegistryKey<? extends Registry<Object>>) event.getKey(); RegistryEntryAddedCallback.event(registryManager.get(registryKey)).register((rawId, id, object) -> { RegistryKey<?> key = RegistryKey.of(registryKey, id); - event.getValue().invoker().onEntryAdded(rawId, key, object, registryManager.get(registryKey)); + ((DynamicRegistryEntryAddedCallback) event.getValue().invoker()).onEntryAdded(rawId, key, object, registryManager.get(registryKey)); }); } }