From 90b99132f9a0903ef69c829894a9ce569e177dc1 Mon Sep 17 00:00:00 2001 From: ZockerAxel Date: Sun, 8 Oct 2023 13:35:53 +0200 Subject: [PATCH] Update to Minecraft 1.20.2 --- .../AdvancementPacketReceiver.java | 6 +++--- .../CrazyAdvancementsAPI.java | 21 +++++-------------- .../advancement/Advancement.java | 2 +- .../advancement/ToastNotification.java | 2 +- .../advancement/criteria/Criteria.java | 18 ++++++++++++---- .../progress/AdvancementProgress.java | 17 +++++++++++++-- .../packet/AdvancementsPacket.java | 7 ++++--- .../packet/PacketConverter.java | 15 +++++++------ .../packet/ToastPacket.java | 7 ++++--- 9 files changed, 56 insertions(+), 39 deletions(-) diff --git a/src/eu/endercentral/crazy_advancements/AdvancementPacketReceiver.java b/src/eu/endercentral/crazy_advancements/AdvancementPacketReceiver.java index 9e1fcf2..b340b08 100644 --- a/src/eu/endercentral/crazy_advancements/AdvancementPacketReceiver.java +++ b/src/eu/endercentral/crazy_advancements/AdvancementPacketReceiver.java @@ -5,7 +5,7 @@ import java.util.List; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer; import org.bukkit.entity.Player; import eu.endercentral.crazy_advancements.event.AdvancementScreenCloseEvent; @@ -115,8 +115,8 @@ public void initPlayer(Player p) { @Override public boolean handle(Player p, PacketPlayInAdvancements packet) { - if(packet.c() == Status.a) { - NameKey name = new NameKey(packet.d()); + if(packet.d() == Status.a) { + NameKey name = new NameKey(packet.e()); AdvancementTabChangeEvent event = new AdvancementTabChangeEvent(p, name); Bukkit.getPluginManager().callEvent(event); diff --git a/src/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java b/src/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java index 6bfe0fb..5c5df83 100644 --- a/src/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java +++ b/src/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java @@ -17,7 +17,7 @@ import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -34,7 +34,6 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import com.google.gson.JsonParser; import eu.endercentral.crazy_advancements.advancement.Advancement; @@ -54,10 +53,8 @@ import eu.endercentral.crazy_advancements.manager.AdvancementManager; import eu.endercentral.crazy_advancements.packet.AdvancementsPacket; import net.minecraft.advancements.Criterion; -import net.minecraft.advancements.CriterionInstance; -import net.minecraft.advancements.critereon.LootSerializationContext; +import net.minecraft.advancements.critereon.CriterionTriggerImpossible; import net.minecraft.network.protocol.game.PacketPlayOutSelectAdvancementTab; -import net.minecraft.resources.MinecraftKey; /** * Represents the API's Plugin @@ -80,17 +77,9 @@ public class CrazyAdvancementsAPI extends JavaPlugin implements Listener { /** * Criterion Instance for Internal Use */ - public static final Criterion CRITERION = new Criterion(new CriterionInstance() { - @Override - public JsonObject a(LootSerializationContext arg0) { - return null; - } - - @Override - public MinecraftKey a() { - return new MinecraftKey("", ""); - } - }); + public static final Criterion CRITERION = new Criterion<>(new CriterionTriggerImpossible(), new CriterionTriggerImpossible.a()); + + private static AdvancementPacketReceiver packetReciever; private static HashMap activeTabs = new HashMap<>(); diff --git a/src/eu/endercentral/crazy_advancements/advancement/Advancement.java b/src/eu/endercentral/crazy_advancements/advancement/Advancement.java index d65e967..55b5b91 100644 --- a/src/eu/endercentral/crazy_advancements/advancement/Advancement.java +++ b/src/eu/endercentral/crazy_advancements/advancement/Advancement.java @@ -342,7 +342,7 @@ public AdvancementProgress getProgress(Player player) { */ public AdvancementProgress getProgress(UUID uuid) { if(!progressMap.containsKey(uuid.toString())) { - progressMap.put(uuid.toString(), new AdvancementProgress(getCriteria().getCriteria(), getCriteria().getRequirements())); + progressMap.put(uuid.toString(), new AdvancementProgress(getCriteria().getRequirements())); } return progressMap.get(uuid.toString()); } diff --git a/src/eu/endercentral/crazy_advancements/advancement/ToastNotification.java b/src/eu/endercentral/crazy_advancements/advancement/ToastNotification.java index 394dc9e..5575a83 100644 --- a/src/eu/endercentral/crazy_advancements/advancement/ToastNotification.java +++ b/src/eu/endercentral/crazy_advancements/advancement/ToastNotification.java @@ -23,7 +23,7 @@ public class ToastNotification { public static final NameKey NOTIFICATION_NAME = new NameKey(CrazyAdvancementsAPI.API_NAMESPACE, "notification"); public static final Criteria NOTIFICATION_CRITERIA = new Criteria(1); - public static final AdvancementProgress NOTIFICATION_PROGRESS = new AdvancementProgress(NOTIFICATION_CRITERIA.getCriteria(), NOTIFICATION_CRITERIA.getRequirements()); + public static final AdvancementProgress NOTIFICATION_PROGRESS = new AdvancementProgress(NOTIFICATION_CRITERIA.getRequirements()); static { NOTIFICATION_PROGRESS.setCriteriaProgress(1); diff --git a/src/eu/endercentral/crazy_advancements/advancement/criteria/Criteria.java b/src/eu/endercentral/crazy_advancements/advancement/criteria/Criteria.java index a8b56bd..5f27de8 100644 --- a/src/eu/endercentral/crazy_advancements/advancement/criteria/Criteria.java +++ b/src/eu/endercentral/crazy_advancements/advancement/criteria/Criteria.java @@ -5,6 +5,7 @@ import java.util.HashMap; import eu.endercentral.crazy_advancements.CrazyAdvancementsAPI; +import net.minecraft.advancements.AdvancementRequirements; import net.minecraft.advancements.Criterion; /** @@ -22,7 +23,7 @@ public class Criteria { private final String[] actionNames; private final String[][] requirements; - private final HashMap criteria = new HashMap<>(); + private final HashMap> criteria = new HashMap<>(); /** * Constructor for creating {@link CriteriaType} NUMBER which will require a certain number @@ -94,19 +95,28 @@ public String[] getActionNames() { /** * Gets the Requirements (auto-generated when using {@link CriteriaType} NUMBER) * - * @return The Requirementsn + * @return The Requirements */ public String[][] getRequirements() { return requirements; } + /** + * Gets the Requirements (auto-generated when using {@link CriteriaType} NUMBER) + * + * @return The Requirements + */ + public AdvancementRequirements getAdvancementRequirements() { + return new AdvancementRequirements(requirements); + } + /** * Gets the generated Criteria * * @return The generated Criteria */ - public HashMap getCriteria() { - return new HashMap(criteria); + public HashMap> getCriteria() { + return new HashMap>(criteria); } diff --git a/src/eu/endercentral/crazy_advancements/advancement/progress/AdvancementProgress.java b/src/eu/endercentral/crazy_advancements/advancement/progress/AdvancementProgress.java index 7814f76..cb8c519 100644 --- a/src/eu/endercentral/crazy_advancements/advancement/progress/AdvancementProgress.java +++ b/src/eu/endercentral/crazy_advancements/advancement/progress/AdvancementProgress.java @@ -6,6 +6,7 @@ import com.google.common.collect.Iterables; +import net.minecraft.advancements.AdvancementRequirements; import net.minecraft.advancements.Criterion; import net.minecraft.advancements.CriterionProgress; @@ -25,9 +26,21 @@ public class AdvancementProgress { * * @param criteria The Criteria * @param requirements The Requirements + * @deprecated Use AdvancementProgress(String[][] requirements) instead */ - public AdvancementProgress(Map criteria, String[][] requirements) { - nmsProgress.a(criteria, requirements); + @Deprecated(forRemoval = true, since = "2.1.15") + public AdvancementProgress(Map> criteria, String[][] requirements) { + nmsProgress.a(new AdvancementRequirements(requirements)); + } + + /** + * Constructor for Creating a Progress Instance + * + * @param criteria The Criteria + * @param requirements The Requirements + */ + public AdvancementProgress(String[][] requirements) { + nmsProgress.a(new AdvancementRequirements(requirements)); } /** diff --git a/src/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java b/src/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java index 6b87e3c..5d810bc 100644 --- a/src/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java +++ b/src/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java @@ -7,11 +7,12 @@ import java.util.Map; import java.util.Set; -import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer; import org.bukkit.entity.Player; import eu.endercentral.crazy_advancements.NameKey; import eu.endercentral.crazy_advancements.advancement.Advancement; +import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.AdvancementProgress; import net.minecraft.network.protocol.game.PacketPlayOutAdvancements; import net.minecraft.resources.MinecraftKey; @@ -87,14 +88,14 @@ public List getRemovedAdvancements() { */ public PacketPlayOutAdvancements build() { //Create Lists - List advancements = new ArrayList<>(); + List advancements = new ArrayList<>(); Set removedAdvancements = new HashSet<>(); Map progress = new HashMap<>(); //Populate Lists for(Advancement advancement : this.advancements) { net.minecraft.advancements.Advancement nmsAdvancement = convertAdvancement(advancement); - advancements.add(nmsAdvancement); + advancements.add(new AdvancementHolder(advancement.getName().getMinecraftKey(), nmsAdvancement)); progress.put(advancement.getName().getMinecraftKey(), advancement.getProgress(getPlayer()).getNmsProgress()); } for(NameKey removed : this.removedAdvancements) { diff --git a/src/eu/endercentral/crazy_advancements/packet/PacketConverter.java b/src/eu/endercentral/crazy_advancements/packet/PacketConverter.java index b90586e..72d17c1 100644 --- a/src/eu/endercentral/crazy_advancements/packet/PacketConverter.java +++ b/src/eu/endercentral/crazy_advancements/packet/PacketConverter.java @@ -1,8 +1,9 @@ package eu.endercentral.crazy_advancements.packet; import java.util.HashMap; +import java.util.Optional; -import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_20_R2.inventory.CraftItemStack; import eu.endercentral.crazy_advancements.JSONMessage; import eu.endercentral.crazy_advancements.NameKey; @@ -11,6 +12,7 @@ import eu.endercentral.crazy_advancements.advancement.AdvancementFlag; import eu.endercentral.crazy_advancements.advancement.ToastNotification; import net.md_5.bungee.api.chat.TextComponent; +import net.minecraft.advancements.AdvancementRequirements; import net.minecraft.advancements.AdvancementRewards; import net.minecraft.resources.MinecraftKey; import net.minecraft.world.item.ItemStack; @@ -70,8 +72,8 @@ public static net.minecraft.advancements.Advancement toNmsAdvancement(Advancemen net.minecraft.advancements.AdvancementDisplay advDisplay = new net.minecraft.advancements.AdvancementDisplay(icon, display.getTitle().getBaseComponent(), display.getDescription().getBaseComponent(), backgroundTexture, display.getFrame().getNMS(), false, false, advancement.hasFlag(AdvancementFlag.SEND_WITH_HIDDEN_BOOLEAN)); advDisplay.a(x, y); - net.minecraft.advancements.Advancement parent = advancement.getParent() == null ? null : createDummy(advancement.getParent().getName()); - net.minecraft.advancements.Advancement adv = new net.minecraft.advancements.Advancement(advancement.getName().getMinecraftKey(), parent, advDisplay, advancementRewards, advancement.getCriteria().getCriteria(), advancement.getCriteria().getRequirements(), false); + Optional parent = advancement.getParent() == null ? Optional.empty() : Optional.of(advancement.getParent().getName().getMinecraftKey()); + net.minecraft.advancements.Advancement adv = new net.minecraft.advancements.Advancement(parent, Optional.of(advDisplay), advancementRewards, advancement.getCriteria().getCriteria(), advancement.getCriteria().getAdvancementRequirements(), false); return adv; } @@ -89,7 +91,7 @@ public static net.minecraft.advancements.Advancement toNmsToastAdvancement(Toast net.minecraft.advancements.AdvancementDisplay advDisplay = new net.minecraft.advancements.AdvancementDisplay(icon, notification.getMessage().getBaseComponent(), new JSONMessage(new TextComponent("Toast Notification")).getBaseComponent(), backgroundTexture, notification.getFrame().getNMS(), true, false, true); - net.minecraft.advancements.Advancement adv = new net.minecraft.advancements.Advancement(ToastNotification.NOTIFICATION_NAME.getMinecraftKey(), null, advDisplay, advancementRewards, ToastNotification.NOTIFICATION_CRITERIA.getCriteria(), ToastNotification.NOTIFICATION_CRITERIA.getRequirements(), false); + net.minecraft.advancements.Advancement adv = new net.minecraft.advancements.Advancement(Optional.empty(), Optional.of(advDisplay), advancementRewards, ToastNotification.NOTIFICATION_CRITERIA.getCriteria(), ToastNotification.NOTIFICATION_CRITERIA.getAdvancementRequirements(), false); return adv; } @@ -99,10 +101,11 @@ public static net.minecraft.advancements.Advancement toNmsToastAdvancement(Toast * * @param name The name of the Advancement * @return the Dummy Advancement + * @deprecated No longer required for parent dummies. Might be removed in a future version. */ + @Deprecated(forRemoval = true, since = "2.1.15") public static net.minecraft.advancements.Advancement createDummy(NameKey name) { -// net.minecraft.advancements.AdvancementDisplay advDisplay = new net.minecraft.advancements.AdvancementDisplay(null, null, null, null, AdvancementFrameType.a, false, false, false); - net.minecraft.advancements.Advancement adv = new net.minecraft.advancements.Advancement(name.getMinecraftKey(), null, null, null, new HashMap<>(), new String[0][0], false); + net.minecraft.advancements.Advancement adv = new net.minecraft.advancements.Advancement(Optional.empty(), Optional.empty(), null, new HashMap<>(), new AdvancementRequirements(new String[0][0]), false); return adv; } diff --git a/src/eu/endercentral/crazy_advancements/packet/ToastPacket.java b/src/eu/endercentral/crazy_advancements/packet/ToastPacket.java index 600db03..5e92532 100644 --- a/src/eu/endercentral/crazy_advancements/packet/ToastPacket.java +++ b/src/eu/endercentral/crazy_advancements/packet/ToastPacket.java @@ -7,10 +7,11 @@ import java.util.Map; import java.util.Set; -import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R2.entity.CraftPlayer; import org.bukkit.entity.Player; import eu.endercentral.crazy_advancements.advancement.ToastNotification; +import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.AdvancementProgress; import net.minecraft.network.protocol.game.PacketPlayOutAdvancements; import net.minecraft.resources.MinecraftKey; @@ -74,13 +75,13 @@ public ToastNotification getNotification() { */ public PacketPlayOutAdvancements build() { //Create Lists - List advancements = new ArrayList<>(); + List advancements = new ArrayList<>(); Set removedAdvancements = new HashSet<>(); Map progress = new HashMap<>(); //Populate Lists if(add) { - advancements.add(PacketConverter.toNmsToastAdvancement(getNotification())); + advancements.add(new AdvancementHolder(ToastNotification.NOTIFICATION_NAME.getMinecraftKey(), PacketConverter.toNmsToastAdvancement(getNotification()))); progress.put(ToastNotification.NOTIFICATION_NAME.getMinecraftKey(), ToastNotification.NOTIFICATION_PROGRESS.getNmsProgress()); } else { removedAdvancements.add(ToastNotification.NOTIFICATION_NAME.getMinecraftKey());