Skyriiis

LazyForgeRegistry

Oct 3rd, 2020
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.15 KB | None | 0 0
  1. package de.blutmondgilde.blutmondrpg.registry;
  2.  
  3. import net.minecraft.util.LazyValue;
  4. import net.minecraft.util.RegistryKey;
  5. import net.minecraft.util.ResourceLocation;
  6. import net.minecraftforge.fml.common.registry.GameRegistry;
  7. import net.minecraftforge.registries.IForgeRegistry;
  8. import net.minecraftforge.registries.IForgeRegistryEntry;
  9. import org.jetbrains.annotations.Nullable;
  10. import javax.annotation.Nonnull;
  11. import java.util.Collection;
  12. import java.util.Iterator;
  13. import java.util.Map;
  14. import java.util.Objects;
  15. import java.util.Set;
  16.  
  17. public class LazyForgeRegistry<V extends IForgeRegistryEntry<V>> implements IForgeRegistry<V> {
  18.     private final LazyValue<IForgeRegistry<V>> registry;
  19.  
  20.     protected LazyForgeRegistry(final Class<V> registryType) {
  21.         registry = new LazyValue<>(() -> Objects.requireNonNull(GameRegistry.findRegistry(registryType),
  22.                                                                 () -> String.format("Registry of type %s not present", registryType.getName())));
  23.     }
  24.  
  25.     public static <V extends IForgeRegistryEntry<V>> LazyForgeRegistry<V> of(final Class<V> registryType) {
  26.         return new LazyForgeRegistry<>(registryType);
  27.     }
  28.  
  29.     private IForgeRegistry<V> getRegistry() {
  30.         return registry.getValue();
  31.     }
  32.  
  33.     @Override
  34.     public ResourceLocation getRegistryName() {
  35.         return getRegistry().getRegistryName();
  36.     }
  37.  
  38.     @Override
  39.     public Class<V> getRegistrySuperType() {
  40.         return getRegistry().getRegistrySuperType();
  41.     }
  42.  
  43.     @Override
  44.     public void register(final V value) {
  45.         getRegistry().register(value);
  46.     }
  47.  
  48.     @SafeVarargs
  49.     @Override
  50.     public final void registerAll(final V... values) {
  51.         getRegistry().registerAll(values);
  52.     }
  53.  
  54.     @Override
  55.     public boolean containsKey(final ResourceLocation key) {
  56.         return getRegistry().containsKey(key);
  57.     }
  58.  
  59.     @Override
  60.     public boolean containsValue(final V value) {
  61.         return getRegistry().containsValue(value);
  62.     }
  63.  
  64.     @Override
  65.     public boolean isEmpty() {
  66.         return getRegistry().isEmpty();
  67.     }
  68.  
  69.     @Override
  70.     public V getValue(final ResourceLocation key) {
  71.         return getRegistry().getValue(key);
  72.     }
  73.  
  74.     @Override
  75.     @Nullable
  76.     public ResourceLocation getKey(final V value) {
  77.         return getRegistry().getKey(value);
  78.     }
  79.  
  80.     @Override
  81.     @Nullable
  82.     public ResourceLocation getDefaultKey() {
  83.         return getRegistry().getDefaultKey();
  84.     }
  85.  
  86.     @Override
  87.     @Nonnull
  88.     public Set<ResourceLocation> getKeys() {
  89.         return getRegistry().getKeys();
  90.     }
  91.  
  92.     @Override
  93.     @Nonnull
  94.     public Collection<V> getValues() {
  95.         return getRegistry().getValues();
  96.     }
  97.  
  98.     @Override
  99.     @Nonnull
  100.     public Set<Map.Entry<RegistryKey<V>, V>> getEntries() {
  101.         return getRegistry().getEntries();
  102.     }
  103.  
  104.     @Override
  105.     public <T> T getSlaveMap(final ResourceLocation slaveMapName, final Class<T> type) {
  106.         return getRegistry().getSlaveMap(slaveMapName, type);
  107.     }
  108.  
  109.     @Override
  110.     public Iterator<V> iterator() {
  111.         return getRegistry().iterator();
  112.     }
  113. }
  114.  
Advertisement
Add Comment
Please, Sign In to add comment