From 5eb67a92c5254c7046df63d5fa150eedfb0b4c4c Mon Sep 17 00:00:00 2001 From: zml Date: Wed, 2 Sep 2020 18:29:40 -0700 Subject: [PATCH] registry: Pass specific catalog type from event (#3152) This allows registering implementations of types, not just instances of concrete types --- .../common/event/lifecycle/RegisterCatalogEventImpl.java | 2 +- .../spongepowered/common/registry/SpongeCatalogRegistry.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/spongepowered/common/event/lifecycle/RegisterCatalogEventImpl.java b/src/main/java/org/spongepowered/common/event/lifecycle/RegisterCatalogEventImpl.java index 77ba49df12a..3ad95b19245 100644 --- a/src/main/java/org/spongepowered/common/event/lifecycle/RegisterCatalogEventImpl.java +++ b/src/main/java/org/spongepowered/common/event/lifecycle/RegisterCatalogEventImpl.java @@ -52,7 +52,7 @@ public TypeToken getGenericType() { public C register(C catalog) throws DuplicateRegistrationException { Preconditions.checkNotNull(catalog); - return ((SpongeCatalogRegistry) Sponge.getRegistry().getCatalogRegistry()).registerCatalog(catalog); + return ((SpongeCatalogRegistry) Sponge.getRegistry().getCatalogRegistry()).registerCatalog(this.token, catalog); } @Override diff --git a/src/main/java/org/spongepowered/common/registry/SpongeCatalogRegistry.java b/src/main/java/org/spongepowered/common/registry/SpongeCatalogRegistry.java index eb6f54c3596..595ee1b34b5 100644 --- a/src/main/java/org/spongepowered/common/registry/SpongeCatalogRegistry.java +++ b/src/main/java/org/spongepowered/common/registry/SpongeCatalogRegistry.java @@ -457,10 +457,10 @@ private SpongeCatalogRegistry registerMappedRegistry( return registry; } - public C registerCatalog(final C catalogType) { + public C registerCatalog(final TypeToken catalog, final C catalogType) { Objects.requireNonNull(catalogType); - final Registry registry = (Registry) this.registriesByType.get(catalogType.getClass()); + final Registry registry = (Registry) this.registriesByType.get(catalog.getRawType()); if (registry == null) { throw new UnknownTypeException(String.format("Catalog '%s' with id '%s' has no registry registered!", catalogType.getClass(), catalogType.getKey())); }