--- a/net/minecraft/server/PlayerAdvancements.java +++ b/net/minecraft/server/PlayerAdvancements.java @@ -62,21 +62,21 @@ @Nullable private AdvancementHolder lastSelectedTab; private boolean isFirstPacket = true; - private final Codec codec; + private final Codec codec; - public PlayerAdvancements(DataFixer datafixer, PlayerList playerlist, ServerAdvancementManager serveradvancementmanager, Path path, ServerPlayer serverplayer) { - this.playerList = playerlist; - this.playerSavePath = path; - this.player = serverplayer; - this.tree = serveradvancementmanager.tree(); + public PlayerAdvancements(DataFixer dataFixer, PlayerList playerList, ServerAdvancementManager manager, Path playerSavePath, ServerPlayer player) { + this.playerList = playerList; + this.playerSavePath = playerSavePath; + this.player = player; + this.tree = manager.tree(); boolean flag = true; - this.codec = DataFixTypes.ADVANCEMENTS.wrapCodec(PlayerAdvancements.Data.CODEC, datafixer, 1343); - this.load(serveradvancementmanager); + this.codec = DataFixTypes.ADVANCEMENTS.wrapCodec(PlayerAdvancements.a.CODEC, dataFixer, 1343); + this.load(manager); } - public void setPlayer(ServerPlayer serverplayer) { - this.player = serverplayer; + public void setPlayer(ServerPlayer player) { + this.player = player; } public void stopListening() { @@ -90,7 +90,7 @@ } - public void reload(ServerAdvancementManager serveradvancementmanager) { + public void reload(ServerAdvancementManager manager) { this.stopListening(); this.progress.clear(); this.visible.clear(); @@ -98,12 +98,12 @@ this.progressChanged.clear(); this.isFirstPacket = true; this.lastSelectedTab = null; - this.tree = serveradvancementmanager.tree(); - this.load(serveradvancementmanager); + this.tree = manager.tree(); + this.load(manager); } - private void registerListeners(ServerAdvancementManager serveradvancementmanager) { - Iterator iterator = serveradvancementmanager.getAllAdvancements().iterator(); + private void registerListeners(ServerAdvancementManager manager) { + Iterator iterator = manager.getAllAdvancements().iterator(); while (iterator.hasNext()) { AdvancementHolder advancementholder = (AdvancementHolder) iterator.next(); @@ -113,8 +113,8 @@ } - private void checkForAutomaticTriggers(ServerAdvancementManager serveradvancementmanager) { - Iterator iterator = serveradvancementmanager.getAllAdvancements().iterator(); + private void checkForAutomaticTriggers(ServerAdvancementManager manager) { + Iterator iterator = manager.getAllAdvancements().iterator(); while (iterator.hasNext()) { AdvancementHolder advancementholder = (AdvancementHolder) iterator.next(); @@ -128,7 +128,7 @@ } - private void load(ServerAdvancementManager serveradvancementmanager) { + private void load(ServerAdvancementManager manager) { if (Files.isRegularFile(this.playerSavePath, new LinkOption[0])) { try { JsonReader jsonreader = new JsonReader(Files.newBufferedReader(this.playerSavePath, StandardCharsets.UTF_8)); @@ -136,9 +136,9 @@ try { jsonreader.setLenient(false); JsonElement jsonelement = Streams.parse(jsonreader); - PlayerAdvancements.Data playeradvancements_data = (PlayerAdvancements.Data) Util.getOrThrow(this.codec.parse(JsonOps.INSTANCE, jsonelement), JsonParseException::new); + PlayerAdvancements.a advancementdataplayer_a = (PlayerAdvancements.a) Util.getOrThrow(this.codec.parse(JsonOps.INSTANCE, jsonelement), JsonParseException::new); - this.applyFrom(serveradvancementmanager, playeradvancements_data); + this.applyFrom(manager, advancementdataplayer_a); } catch (Throwable throwable) { try { jsonreader.close(); @@ -157,8 +157,8 @@ } } - this.checkForAutomaticTriggers(serveradvancementmanager); - this.registerListeners(serveradvancementmanager); + this.checkForAutomaticTriggers(manager); + this.registerListeners(manager); } public void save() { @@ -191,12 +191,13 @@ } - private void applyFrom(ServerAdvancementManager serveradvancementmanager, PlayerAdvancements.Data playeradvancements_data) { - playeradvancements_data.forEach((resourcelocation, advancementprogress) -> { - AdvancementHolder advancementholder = serveradvancementmanager.get(resourcelocation); + private void applyFrom(ServerAdvancementManager advancementdataworld, PlayerAdvancements.a advancementdataplayer_a) { + advancementdataplayer_a.forEach((minecraftkey, advancementprogress) -> { + AdvancementHolder advancementholder = advancementdataworld.get(minecraftkey); if (advancementholder == null) { - PlayerAdvancements.LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", resourcelocation, this.playerSavePath); + if (!minecraftkey.getNamespace().equals("minecraft")) return; // CraftBukkit + PlayerAdvancements.LOGGER.warn("Ignored advancement '{}' in progress file {} - it doesn't exist anymore?", minecraftkey, this.playerSavePath); } else { this.startProgress(advancementholder, advancementprogress); this.progressChanged.add(advancementholder); @@ -205,7 +206,7 @@ }); } - private PlayerAdvancements.Data asData() { + private PlayerAdvancements.a asData() { Map map = new LinkedHashMap(); this.progress.forEach((advancementholder, advancementprogress) -> { @@ -214,7 +215,7 @@ } }); - return new PlayerAdvancements.Data(map); + return new PlayerAdvancements.a(map); } public boolean award(AdvancementHolder advancementholder, String s) { @@ -227,10 +228,11 @@ this.progressChanged.add(advancementholder); flag = true; if (!flag1 && advancementprogress.isDone()) { + this.player.level().getCraftServer().getPluginManager().callEvent(new org.bukkit.event.player.PlayerAdvancementDoneEvent(this.player.getBukkitEntity(), advancementholder.toBukkit())); // CraftBukkit advancementholder.value().rewards().grant(this.player); - advancementholder.value().display().ifPresent((displayinfo) -> { - if (displayinfo.shouldAnnounceChat() && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { - this.playerList.broadcastSystemMessage(displayinfo.getType().createAnnouncement(advancementholder, this.player), false); + advancementholder.value().display().ifPresent((advancementdisplay) -> { + if (advancementdisplay.shouldAnnounceChat() && this.player.level().getGameRules().getBoolean(GameRules.RULE_ANNOUNCE_ADVANCEMENTS)) { + this.playerList.broadcastSystemMessage(advancementdisplay.getType().createAnnouncement(advancementholder, this.player), false); } }); @@ -312,7 +314,7 @@ criterion.trigger().removePlayerListener(this, new CriterionTrigger.Listener<>(criterion.triggerInstance(), advancementholder, s)); } - public void flushDirty(ServerPlayer serverplayer) { + public void flushDirty(ServerPlayer serverPlayer) { if (this.isFirstPacket || !this.rootsToUpdate.isEmpty() || !this.progressChanged.isEmpty()) { Map map = new HashMap(); Set set = new HashSet(); @@ -338,7 +340,7 @@ this.progressChanged.clear(); if (!map.isEmpty() || !set.isEmpty() || !set1.isEmpty()) { - serverplayer.connection.send(new ClientboundUpdateAdvancementsPacket(this.isFirstPacket, set, set1, map)); + serverPlayer.connection.send(new ClientboundUpdateAdvancementsPacket(this.isFirstPacket, set, set1, map)); } } @@ -396,9 +398,9 @@ }); } - private static record Data(Map map) { + private static record a(Map map) { - public static final Codec CODEC = Codec.unboundedMap(ResourceLocation.CODEC, AdvancementProgress.CODEC).xmap(PlayerAdvancements.Data::new, PlayerAdvancements.Data::map); + public static final Codec CODEC = Codec.unboundedMap(ResourceLocation.CODEC, AdvancementProgress.CODEC).xmap(PlayerAdvancements.a::new, PlayerAdvancements.a::map); public void forEach(BiConsumer biconsumer) { this.map.entrySet().stream().sorted(Entry.comparingByValue()).forEach((entry) -> {