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.event.KeyHandler;
|
||||||
import exopandora.worldhandler.gui.category.Category;
|
import exopandora.worldhandler.gui.category.Category;
|
||||||
import exopandora.worldhandler.gui.content.Content;
|
import exopandora.worldhandler.gui.content.Content;
|
||||||
|
import exopandora.worldhandler.helper.AdvancementHelper;
|
||||||
import exopandora.worldhandler.helper.CommandHelper;
|
import exopandora.worldhandler.helper.CommandHelper;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.resources.SimpleReloadableResourceManager;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
@@ -34,6 +37,8 @@ public class WorldHandler
|
|||||||
MinecraftForge.EVENT_BUS.addListener(this::serverStarting);
|
MinecraftForge.EVENT_BUS.addListener(this::serverStarting);
|
||||||
DistExecutor.runWhenOn(Dist.CLIENT, () -> () ->
|
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");
|
ModLoadingContext.get().registerConfig(Type.CLIENT, Config.CLIENT_SPEC, Main.MODID + ".toml");
|
||||||
modEventBus.register(Config.class);
|
modEventBus.register(Config.class);
|
||||||
modEventBus.addListener(Content::createRegistry);
|
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.ILogicMapped;
|
||||||
import exopandora.worldhandler.gui.logic.ILogicPageList;
|
import exopandora.worldhandler.gui.logic.ILogicPageList;
|
||||||
import exopandora.worldhandler.helper.ActionHelper;
|
import exopandora.worldhandler.helper.ActionHelper;
|
||||||
|
import exopandora.worldhandler.helper.AdvancementHelper;
|
||||||
import exopandora.worldhandler.helper.CommandHelper;
|
import exopandora.worldhandler.helper.CommandHelper;
|
||||||
import exopandora.worldhandler.util.ActionHandler;
|
import exopandora.worldhandler.util.ActionHandler;
|
||||||
import net.minecraft.advancements.Advancement;
|
import net.minecraft.advancements.Advancement;
|
||||||
import net.minecraft.advancements.AdvancementManager;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
@@ -46,7 +46,7 @@ public class ContentAdvancements extends Content
|
|||||||
@Override
|
@Override
|
||||||
public void initGui(Container container, int x, int y)
|
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)
|
.filter(advancement -> advancement.getDisplay() != null)
|
||||||
.collect(Collectors.toList());
|
.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