Fix advancements not loading
This commit is contained in:
@@ -8,7 +8,10 @@ import exopandora.worldhandler.event.ClientEventHandler;
|
||||
import exopandora.worldhandler.event.KeyHandler;
|
||||
import exopandora.worldhandler.gui.category.Category;
|
||||
import exopandora.worldhandler.gui.content.Content;
|
||||
import exopandora.worldhandler.helper.AdvancementHelper;
|
||||
import exopandora.worldhandler.helper.CommandHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.resources.SimpleReloadableResourceManager;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
@@ -34,6 +37,8 @@ public class WorldHandler
|
||||
MinecraftForge.EVENT_BUS.addListener(this::serverStarting);
|
||||
DistExecutor.runWhenOn(Dist.CLIENT, () -> () ->
|
||||
{
|
||||
SimpleReloadableResourceManager manager = (SimpleReloadableResourceManager) Minecraft.getInstance().getResourceManager();
|
||||
manager.addReloadListener(AdvancementHelper.getInstance());
|
||||
ModLoadingContext.get().registerConfig(Type.CLIENT, Config.CLIENT_SPEC, Main.MODID + ".toml");
|
||||
modEventBus.register(Config.class);
|
||||
modEventBus.addListener(Content::createRegistry);
|
||||
|
||||
@@ -21,10 +21,10 @@ import exopandora.worldhandler.gui.content.element.impl.ElementPageList;
|
||||
import exopandora.worldhandler.gui.logic.ILogicMapped;
|
||||
import exopandora.worldhandler.gui.logic.ILogicPageList;
|
||||
import exopandora.worldhandler.helper.ActionHelper;
|
||||
import exopandora.worldhandler.helper.AdvancementHelper;
|
||||
import exopandora.worldhandler.helper.CommandHelper;
|
||||
import exopandora.worldhandler.util.ActionHandler;
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementManager;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
@@ -46,7 +46,7 @@ public class ContentAdvancements extends Content
|
||||
@Override
|
||||
public void initGui(Container container, int x, int y)
|
||||
{
|
||||
List<Advancement> advancements = new AdvancementManager().getAllAdvancements().stream()
|
||||
List<Advancement> advancements = AdvancementHelper.getInstance().getAdvancements().stream()
|
||||
.filter(advancement -> advancement.getDisplay() != null)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package exopandora.worldhandler.helper;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementManager;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.profiler.IProfiler;
|
||||
import net.minecraft.resources.IFutureReloadListener;
|
||||
import net.minecraft.resources.IResourceManager;
|
||||
import net.minecraft.resources.ResourcePackInfo;
|
||||
import net.minecraft.resources.ResourcePackType;
|
||||
import net.minecraft.resources.SimpleReloadableResourceManager;
|
||||
import net.minecraft.tags.NetworkTagManager;
|
||||
import net.minecraft.util.Unit;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class AdvancementHelper implements IFutureReloadListener
|
||||
{
|
||||
private static final AdvancementHelper INSTANCE = new AdvancementHelper();
|
||||
private final AdvancementManager manager = new AdvancementManager();
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Void> reload(IStage stage, IResourceManager resourceManager, IProfiler preparationsProfiler, IProfiler reloadProfiler, Executor backgroundExecutor, Executor gameExecutor)
|
||||
{
|
||||
return CompletableFuture.supplyAsync(() ->
|
||||
{
|
||||
SimpleReloadableResourceManager serverResourceManager = new SimpleReloadableResourceManager(ResourcePackType.SERVER_DATA, Thread.currentThread());
|
||||
Minecraft.getInstance().getResourcePackList().getEnabledPacks().stream().map(ResourcePackInfo::getResourcePack).forEach(serverResourceManager::addResourcePack);
|
||||
serverResourceManager.addReloadListener(new NetworkTagManager());
|
||||
serverResourceManager.addReloadListener(this.manager);
|
||||
return serverResourceManager;
|
||||
}).thenCompose(stage::markCompleteAwaitingOthers).thenAcceptAsync(serverResourceManager ->
|
||||
{
|
||||
serverResourceManager.initialReload(backgroundExecutor, gameExecutor, CompletableFuture.completedFuture(Unit.INSTANCE));
|
||||
});
|
||||
}
|
||||
|
||||
public Collection<Advancement> getAdvancements()
|
||||
{
|
||||
return this.manager.getAllAdvancements();
|
||||
}
|
||||
|
||||
public static AdvancementHelper getInstance()
|
||||
{
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user