private static void buildSyncSet(EntityPlayerMP player) { if(syncedAdvancements == null) { AdvancementManager manager = player.getServer().getAdvancementManager(); Iterable<Advancement> allAdvancements = manager.getAdvancements(); syncedAdvancements = new ArrayList<>(); for(Advancement a : allAdvancements) if(trackedNamespaces.contains(a.getId().getResourceDomain())) syncedAdvancements.add(a.getId()); } }
public GuiEditMenuAdvancement (GuiQuestBook gui, QuestTaskAdvancement task, final QuestTaskAdvancement.AdvancementTask advancement, int id, EntityPlayer player) { super(gui, player, false, 180, 70, 180, 150); this.task = task; this.advancement = advancement; this.id = id; scrollBar = new ScrollBar(160, 18, 186, 171, 69, START_X) { @Override public boolean isVisible(GuiBase gui) { return advancementNames.size() > VISIBLE_MOBS; } }; textBoxes.add(new TextBoxGroup.TextBox(gui, "", 250, 18, false) { @Override public void textChanged(GuiBase gui) { super.textChanged(gui); updateAdvancements(getText()); } }); rawAdvancemenNames = new ArrayList<>(); advancementNames = new ArrayList<>(); // Just using this to gain access to the advancement manager WorldServer world = DimensionManager.getWorld(0); for (Advancement a: world.getAdvancementManager().getAdvancements()) { String adv = a.getId().toString(); rawAdvancemenNames.add(adv); advancementNames.add(adv); } Collections.sort(advancementNames); updateAdvancements(""); }
@SubscribeEvent public static void onAdvancement(AdvancementEvent event) { if(event.getEntityPlayer() instanceof EntityPlayerMP) { EntityPlayerMP player = (EntityPlayerMP) event.getEntityPlayer(); buildSyncSet(player); if(syncedAdvancements.contains(event.getAdvancement().getId())) syncPlayer(player, true); } }
public GuiAdvancementsExt(ClientAdvancementManager manager, GuiScreen parent, String tab) { super(manager); this.parent = parent; Advancement start = manager.getAdvancementList().getAdvancement(new ResourceLocation(tab, "root")); if(start != null && ClientAdvancements.hasDone(start.getId().toString())) manager.setSelectedTab(start, false); }