Files
CatServer/patches/net/minecraft/advancements/PlayerAdvancements.java.patch
2019-02-24 22:29:41 +08:00

67 lines
3.6 KiB
Diff

--- ../src-base/minecraft/net/minecraft/advancements/PlayerAdvancements.java
+++ ../src-work/minecraft/net/minecraft/advancements/PlayerAdvancements.java
@@ -39,7 +39,7 @@
};
private final MinecraftServer server;
private final File progressFile;
- private final Map<Advancement, AdvancementProgress> progress = Maps.<Advancement, AdvancementProgress>newLinkedHashMap();
+ public final Map<Advancement, AdvancementProgress> progress = Maps.<Advancement, AdvancementProgress>newLinkedHashMap(); // CatServer - private -> public
private final Set<Advancement> visible = Sets.<Advancement>newLinkedHashSet();
private final Set<Advancement> visibilityChanged = Sets.<Advancement>newLinkedHashSet();
private final Set<Advancement> progressChanged = Sets.<Advancement>newLinkedHashSet();
@@ -167,6 +167,7 @@
public void save()
{
+ if (org.spigotmc.SpigotConfig.disableAdvancementSaving) return;
Map<ResourceLocation, AdvancementProgress> map = Maps.<ResourceLocation, AdvancementProgress>newHashMap();
for (Entry<Advancement, AdvancementProgress> entry : this.progress.entrySet())
@@ -194,32 +195,38 @@
}
}
- public boolean grantCriterion(Advancement p_192750_1_, String p_192750_2_)
+ public boolean grantCriterion(Advancement advancement, String p_192750_2_)
{
+ // Forge: don't grant advancements for fake players
+ if (this.player instanceof net.minecraftforge.common.util.FakePlayer) return false;
+
boolean flag = false;
- AdvancementProgress advancementprogress = this.getProgress(p_192750_1_);
+ AdvancementProgress advancementprogress = this.getProgress(advancement);
boolean flag1 = advancementprogress.isDone();
if (advancementprogress.grantCriterion(p_192750_2_))
{
- this.unregisterListeners(p_192750_1_);
- this.progressChanged.add(p_192750_1_);
+ this.unregisterListeners(advancement);
+ this.progressChanged.add(advancement);
flag = true;
if (!flag1 && advancementprogress.isDone())
{
- p_192750_1_.getRewards().apply(this.player);
+ this.player.world.getServer().getPluginManager().callEvent(new org.bukkit.event.player.PlayerAdvancementDoneEvent(this.player.getBukkitEntity(), advancement.bukkit));
+ advancement.getRewards().apply(this.player);
- if (p_192750_1_.getDisplay() != null && p_192750_1_.getDisplay().shouldAnnounceToChat() && this.player.world.getGameRules().getBoolean("announceAdvancements"))
+ if (advancement.getDisplay() != null && advancement.getDisplay().shouldAnnounceToChat() && this.player.world.getGameRules().getBoolean("announceAdvancements"))
{
- this.server.getPlayerList().sendMessage(new TextComponentTranslation("chat.type.advancement." + p_192750_1_.getDisplay().getFrame().getName(), new Object[] {this.player.getDisplayName(), p_192750_1_.getDisplayText()}));
+ this.server.getPlayerList().sendMessage(new TextComponentTranslation("chat.type.advancement." + advancement.getDisplay().getFrame().getName(), new Object[] {this.player.getDisplayName(), advancement.getDisplayText()}));
}
+
+ net.minecraftforge.common.ForgeHooks.onAdvancement(this.player, advancement);
}
}
if (advancementprogress.isDone())
{
- this.ensureVisibility(p_192750_1_);
+ this.ensureVisibility(advancement);
}
return flag;