• Recently Browsing

    No registered users viewing this page.

  • Posts

    • 1.7 is no longer supported on this forum. Please update to a modern version of Minecraft to receive support.
    • Open your .minecraft folder. Open the logs folder. Select the debug.log file and post it here.
    • diesieben07 how do I do that, sry im not a os wizz.
    • It's a 1:1 of DeferredRegister.java because after updating from 1.15.2 to 1.16.1 it gave me the error that the particular method called to wasn't accessible because it's been changed to private. Why it suddenly works copied into another class, I don't know.   package com.jemmy.core; import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.IForgeRegistryEntry; import net.minecraftforge.registries.RegistryBuilder; import net.minecraftforge.registries.RegistryManager; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; import java.util.Set; import java.util.function.Supplier; public class JemRegistry<T extends IForgeRegistryEntry<T>> { public static <B extends IForgeRegistryEntry<B>> JemRegistry<B> create(IForgeRegistry<B> reg, String modid) { return new JemRegistry<B>(reg, modid); } public static <B extends IForgeRegistryEntry<B>> JemRegistry<B> create(Class<B> base, String modid) { return new JemRegistry<B>(base, modid); } private final Class<T> superType; private final String modid; private final Map<RegistryObject<T>, Supplier<? extends T>> entries = new LinkedHashMap<>(); private final Set<RegistryObject<T>> entriesView = Collections.unmodifiableSet(entries.keySet()); private IForgeRegistry<T> type; private Supplier<RegistryBuilder<T>> registryFactory; private boolean seenRegisterEvent = false; private JemRegistry(Class<T> base, String modid) { this.superType = base; this.modid = modid; } public JemRegistry(IForgeRegistry<T> reg, String modid) { this(reg.getRegistrySuperType(), modid); this.type = reg; } @SuppressWarnings("unchecked") public <I extends T> RegistryObject<I> register(final String name, final Supplier<? extends I> sup) { if (seenRegisterEvent) throw new IllegalStateException("Cannot register new entries to DeferredRegister after RegistryEvent.Register has been fired."); Objects.requireNonNull(name); Objects.requireNonNull(sup); final ResourceLocation key = new ResourceLocation(modid, name); RegistryObject<I> ret; if (this.type != null) ret = RegistryObject.of(key, this.type); else if (this.superType != null) ret = RegistryObject.of(key, this.superType, this.modid); else throw new IllegalStateException("Could not create RegistryObject in DeferredRegister"); if (entries.putIfAbsent((RegistryObject<T>) ret, () -> sup.get().setRegistryName(key)) != null) { throw new IllegalArgumentException("Duplicate registration " + name); } return ret; } public Supplier<IForgeRegistry<T>> makeRegistry(final String name, final Supplier<RegistryBuilder<T>> sup) { if (this.superType == null) throw new IllegalStateException("Cannot create a registry without specifying a base type"); if (this.type != null || this.registryFactory != null) throw new IllegalStateException("Cannot create a registry for a type that already exists"); this.registryFactory = () -> sup.get().setName(new ResourceLocation(modid, name)).setType(this.superType); return () -> this.type; } public void register(IEventBus bus) { bus.addListener(this::addEntries); if (this.type == null) { if (this.registryFactory != null) bus.addListener(this::createRegistry); else bus.addListener(EventPriority.LOWEST, this::captureRegistry); } } public Collection<RegistryObject<T>> getEntries() { return entriesView; } private void addEntries(RegistryEvent.Register<?> event) { if (this.type != null && event.getGenericType() == this.type.getRegistrySuperType()) { this.seenRegisterEvent = true; @SuppressWarnings("unchecked") IForgeRegistry<T> reg = (IForgeRegistry<T>)event.getRegistry(); for (Entry<RegistryObject<T>, Supplier<? extends T>> e : entries.entrySet()) { reg.register(e.getValue().get()); e.getKey().updateReference(reg); } } } private void createRegistry(RegistryEvent.NewRegistry event) { this.type = this.registryFactory.get().create(); } private void captureRegistry(RegistryEvent.NewRegistry event) { if (this.superType != null) { this.type = RegistryManager.ACTIVE.getRegistry(this.superType); if (this.type == null) throw new IllegalStateException("Unable to find registry for type " + this.superType.getName() + " for modid \"" + modid + "\" after NewRegistry event"); } else throw new IllegalStateException("Unable to find registry for mod \"" + modid + "\" No lookup criteria specified."); } }  
    • There is an ongoing effort in creating a spreadsheet for 1.16 mappings. It is not complete, and will be eventually merged into the MMMS (Mod Mapping Management System, a replacement for MCPBot).   Although the effort is not complete, and not all names in the spreadsheet have been verified (to not include Official mappings because of licensing poison), a snapshot of those verified names have been produced and now is being hosted by Forge. (For details, look through the #mcpconfig and #mms channels on Discord)   Note that this is a manual upload of the mappings, the same as the first mapping. MCPBot will not recognize these names.
  • Topics

  • Who's Online (See full list)