From 55f85ee0eb340faccb569e2913d2c20a297046ce Mon Sep 17 00:00:00 2001 From: Romindous Date: Tue, 15 Apr 2025 02:40:53 -0400 Subject: [PATCH 01/12] 1.21.5 v1 --- build.gradle.kts | 23 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../AdvancementPacketReceiver.java | 68 +++--- .../CrazyAdvancementsAPI.java | 104 ++++----- .../crazy_advancements/JSONMessage.java | 52 +++-- .../advancement/Advancement.java | 55 +++-- .../advancement/AdvancementDisplay.java | 219 +++++++++++------- .../advancement/ToastNotification.java | 57 +++-- .../progress/AdvancementProgress.java | 5 +- .../serialized/message/SerializedMessage.java | 60 ++++- .../crazy_advancements/item/CustomItem.java | 12 +- .../manager/AdvancementManager.java | 70 ++---- .../packet/AdvancementsPacket.java | 3 +- .../packet/PacketConverter.java | 48 ++-- .../packet/ToastPacket.java | 70 +++--- .../crazy_advancements/save/CriteriaData.java | 35 ++- .../crazy_advancements/save/ProgressData.java | 35 ++- .../crazy_advancements/save/SaveFile.java | 8 +- 18 files changed, 503 insertions(+), 423 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index ab41a46..96fbfe5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,21 +1,26 @@ +import io.papermc.paperweight.userdev.ReobfArtifactConfiguration import net.minecrell.pluginyml.bukkit.BukkitPluginDescription plugins { id("java") id("maven-publish") - id("io.papermc.paperweight.userdev") version "1.7.7" + id("io.papermc.paperweight.userdev") version "2.0.0-beta.16" id("net.minecrell.plugin-yml.bukkit") version "0.6.0" } group = "eu.endercentral.crazy_advancements" -version = "2.1.21" +version = "2.21.5" repositories { mavenCentral() + maven { + name = "papermc" + url = uri("https://repo.papermc.io/repository/maven-public/") + } } dependencies { - paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT") + paperweight.paperDevBundle("1.21.5-no-moonrise-SNAPSHOT") } java { @@ -23,13 +28,21 @@ java { } tasks { + build { + paperweight.reobfArtifactConfiguration = ReobfArtifactConfiguration.MOJANG_PRODUCTION + } + compileJava { options.encoding = Charsets.UTF_8.name() options.release.set(21) dependsOn(clean) } - jar.get().archiveFileName = "${name}-${version}-mojmap.jar" + jar { + //from(zipTree("libs/jedis-4.3.1.zip")) + destinationDirectory.set(layout.buildDirectory) + archiveFileName = "${project.name}-${version}.jar" + } } publishing { @@ -44,7 +57,7 @@ publishing { bukkit { main = "eu.endercentral.crazy_advancements.CrazyAdvancementsAPI" author = "ZockerAxel" - apiVersion = "1.20.5" // Should be always same as dev bundle version + apiVersion = "1.21.5" // Should be always same as dev bundle version load = BukkitPluginDescription.PluginLoadOrder.STARTUP commands { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3fa8f86..37f853b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/eu/endercentral/crazy_advancements/AdvancementPacketReceiver.java b/src/main/java/eu/endercentral/crazy_advancements/AdvancementPacketReceiver.java index 5136e13..15491c5 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/AdvancementPacketReceiver.java +++ b/src/main/java/eu/endercentral/crazy_advancements/AdvancementPacketReceiver.java @@ -23,12 +23,12 @@ public class AdvancementPacketReceiver { - private static HashMap handlers = new HashMap<>(); + private static final HashMap handlers = new HashMap<>(); private static Field channelField; private static Field networkManagerField; - { - for(Field f : Connection.class.getDeclaredFields()) { + static { + for (Field f : Connection.class.getDeclaredFields()) { if(f.getType().isAssignableFrom(Channel.class)) { channelField = f; channelField.setAccessible(true); @@ -36,7 +36,7 @@ public class AdvancementPacketReceiver { } } - for(Field f : ServerCommonPacketListenerImpl.class.getDeclaredFields()) { + for (Field f : ServerCommonPacketListenerImpl.class.getDeclaredFields()) { if(f.getType().isAssignableFrom(Connection.class)) { networkManagerField = f; networkManagerField.setAccessible(true); @@ -45,8 +45,8 @@ public class AdvancementPacketReceiver { } } - interface PacketReceivingHandler { - public boolean handle(Player p, ServerboundSeenAdvancementsPacket packet); + public interface PacketReceivingHandler { + boolean handle(Player p, ServerboundSeenAdvancementsPacket packet); } public ChannelHandler listen(final Player p, final PacketReceivingHandler handler) { @@ -55,7 +55,7 @@ public ChannelHandler listen(final Player p, final PacketReceivingHandler handle ChannelHandler handle = new MessageToMessageDecoder>() { @Override - protected void decode(ChannelHandlerContext chc, Packet packet, List out) throws Exception { + protected void decode(ChannelHandlerContext chc, Packet packet, List out) { if(packet instanceof ServerboundSeenAdvancementsPacket) { if(!handler.handle(p, (ServerboundSeenAdvancementsPacket) packet)) { @@ -110,35 +110,31 @@ public HashMap getHandlers() { } public void initPlayer(Player p) { - handlers.put(p.getName(), listen(p, new PacketReceivingHandler() { - - @Override - public boolean handle(Player p, ServerboundSeenAdvancementsPacket packet) { - - if(packet.getAction() == ServerboundSeenAdvancementsPacket.Action.OPENED_TAB) { - NameKey name = new NameKey(packet.getTab()); - AdvancementTabChangeEvent event = new AdvancementTabChangeEvent(p, name); - Bukkit.getPluginManager().callEvent(event); - - if(event.isCancelled()) { - CrazyAdvancementsAPI.clearActiveTab(p); - return false; - } else { - if(!event.getTabAdvancement().equals(name)) { - CrazyAdvancementsAPI.setActiveTab(p, event.getTabAdvancement()); - } else { - CrazyAdvancementsAPI.setActiveTab(p, name, false); - } - } - } else { - AdvancementScreenCloseEvent event = new AdvancementScreenCloseEvent(p); - Bukkit.getPluginManager().callEvent(event); - } - - - return true; - } - })); + handlers.put(p.getName(), listen(p, (p1, packet) -> { + + if(packet.getAction() == ServerboundSeenAdvancementsPacket.Action.OPENED_TAB) { + NameKey name = new NameKey(packet.getTab()); + AdvancementTabChangeEvent event = new AdvancementTabChangeEvent(p1, name); + Bukkit.getPluginManager().callEvent(event); + + if(event.isCancelled()) { + CrazyAdvancementsAPI.clearActiveTab(p1); + return false; + } else { + if(!event.getTabAdvancement().equals(name)) { + CrazyAdvancementsAPI.setActiveTab(p1, event.getTabAdvancement()); + } else { + CrazyAdvancementsAPI.setActiveTab(p1, name, false); + } + } + } else { + AdvancementScreenCloseEvent event = new AdvancementScreenCloseEvent(p1); + Bukkit.getPluginManager().callEvent(event); + } + + + return true; + })); } } \ No newline at end of file diff --git a/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java b/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java index 1ccc5f5..d96d6e6 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java +++ b/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java @@ -1,17 +1,28 @@ package eu.endercentral.crazy_advancements; +import javax.annotation.Nullable; import java.io.File; import java.io.FileReader; import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; - -import javax.annotation.Nullable; - +import java.util.*; +import com.google.gson.*; +import eu.endercentral.crazy_advancements.advancement.*; +import eu.endercentral.crazy_advancements.advancement.AdvancementDisplay.AdvancementFrame; +import eu.endercentral.crazy_advancements.advancement.criteria.CriteriaType; +import eu.endercentral.crazy_advancements.advancement.progress.GenericResult; +import eu.endercentral.crazy_advancements.advancement.progress.GrantCriteriaResult; +import eu.endercentral.crazy_advancements.advancement.serialized.SerializedAdvancement; +import eu.endercentral.crazy_advancements.advancement.serialized.SerializedAdvancementDisplay; +import eu.endercentral.crazy_advancements.command.ProgressChangeOperation; +import eu.endercentral.crazy_advancements.item.CustomItem; +import eu.endercentral.crazy_advancements.item.SerializedCustomItem; +import eu.endercentral.crazy_advancements.manager.AdvancementManager; +import eu.endercentral.crazy_advancements.packet.AdvancementsPacket; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.minecraft.advancements.Criterion; +import net.minecraft.advancements.critereon.ImpossibleTrigger; +import net.minecraft.network.protocol.game.ClientboundSelectAdvancementsTabPacket; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.OfflinePlayer; @@ -30,32 +41,6 @@ import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.plugin.java.JavaPlugin; -import com.google.gson.FieldNamingPolicy; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; - -import eu.endercentral.crazy_advancements.advancement.Advancement; -import eu.endercentral.crazy_advancements.advancement.AdvancementDisplay; -import eu.endercentral.crazy_advancements.advancement.AdvancementDisplay.AdvancementFrame; -import eu.endercentral.crazy_advancements.advancement.AdvancementFlag; -import eu.endercentral.crazy_advancements.advancement.AdvancementVisibility; -import eu.endercentral.crazy_advancements.advancement.ToastNotification; -import eu.endercentral.crazy_advancements.advancement.criteria.CriteriaType; -import eu.endercentral.crazy_advancements.advancement.progress.GenericResult; -import eu.endercentral.crazy_advancements.advancement.progress.GrantCriteriaResult; -import eu.endercentral.crazy_advancements.advancement.serialized.SerializedAdvancement; -import eu.endercentral.crazy_advancements.advancement.serialized.SerializedAdvancementDisplay; -import eu.endercentral.crazy_advancements.command.ProgressChangeOperation; -import eu.endercentral.crazy_advancements.item.CustomItem; -import eu.endercentral.crazy_advancements.item.SerializedCustomItem; -import eu.endercentral.crazy_advancements.manager.AdvancementManager; -import eu.endercentral.crazy_advancements.packet.AdvancementsPacket; -import net.minecraft.advancements.Criterion; -import net.minecraft.advancements.critereon.ImpossibleTrigger; -import net.minecraft.network.protocol.game.ClientboundSelectAdvancementsTabPacket; - /** * Represents the API's Plugin * @@ -66,23 +51,19 @@ public class CrazyAdvancementsAPI extends JavaPlugin implements Listener { public static final String API_NAMESPACE = "crazy_advancements"; - private static final Gson gson; + private static final Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); private static final List SELECTORS = Arrays.asList("@a", "@p", "@s", "@r"); - private static CrazyAdvancementsAPI instance; - - static { - gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); - } + public static final MiniMessage msg = MiniMessage.miniMessage(); /** * Criterion Instance for Internal Use */ public static final Criterion CRITERION = new Criterion<>(new ImpossibleTrigger(), new ImpossibleTrigger.TriggerInstance()); - - - + + + private static CrazyAdvancementsAPI instance; private static AdvancementPacketReceiver packetReciever; - private static HashMap activeTabs = new HashMap<>(); + private static final HashMap activeTabs = new HashMap<>(); private final List customItems = new ArrayList<>(); private AdvancementManager fileAdvancementManager; @@ -207,8 +188,8 @@ private void loadFileAdvancements() { //Generate Display ItemStack icon = getItemStack(serializedAdvancementDisplay.getIcon()); - JSONMessage title = new JSONMessage(serializedAdvancementDisplay.getTitle().deserialize()); - JSONMessage description = new JSONMessage(serializedAdvancementDisplay.getDescription().deserialize()); + Component title = serializedAdvancementDisplay.getTitle().deserial(); + Component description = serializedAdvancementDisplay.getDescription().deserial(); AdvancementFrame frame = AdvancementFrame.parse(serializedAdvancementDisplay.getFrame()); AdvancementVisibility visibility = AdvancementVisibility.parseVisibility(serializedAdvancementDisplay.getVisibility()); @@ -337,13 +318,7 @@ public void onJoin(PlayerJoinEvent e) { //Add Player to File Advancement Manager fileAdvancementManager.loadProgress(player); - Bukkit.getScheduler().runTaskLater(this, new Runnable() { - - @Override - public void run() { - fileAdvancementManager.addPlayer(player); - } - }, 2); + Bukkit.getScheduler().runTaskLater(this, () -> fileAdvancementManager.addPlayer(player), 2); } @EventHandler @@ -402,8 +377,8 @@ public static NameKey getActiveTab(Player player) { return activeTabs.get(player.getUniqueId().toString()); } - private final String noPermission = "§cI'm sorry but you do not have permission to perform this command. Please contact the server administrator if you believe that this is an error."; - private final String commandIncompatible = "§cThis Command is incompatible with your Arguments!"; + private static final String noPermission = "§cI'm sorry but you do not have permission to perform this command. Please contact the server administrator if you believe that this is an error."; + private static final String commandIncompatible = "§cThis Command is incompatible with your Arguments!"; @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { @@ -441,7 +416,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String toast.send(player); } - sender.sendMessage(players.size() == 1 ? "§aSuccessfully displayed Toast to §b" + players.get(0).getName() + "§a!" : "§aSuccessfully displayed Toast to §e" + players.size() + "§aPlayers!"); + sender.sendMessage(players.size() == 1 ? "§aSuccessfully displayed Toast to §b" + players.getFirst().getName() + "§a!" : "§aSuccessfully displayed Toast to §e" + players.size() + "§aPlayers!"); } else { sender.sendMessage("§c'" + args[1] + "' isn't a valid Item Material"); } @@ -833,7 +808,7 @@ private CustomItem getCustomItem(String input) { } return null; } - + private ItemStack getItemStack(String input, CommandSender... commandSender) { int colonIndex = input.indexOf(':'); String materialName = colonIndex == -1 ? input : input.substring(0, colonIndex); @@ -849,8 +824,7 @@ private ItemStack getItemStack(String input, CommandSender... commandSender) { } else { material = customItem.getType(); stack = new ItemStack(material); - ItemMeta meta = stack.getItemMeta(); - meta.setCustomModelData(customItem.getCustomModelData()); + ItemMeta meta = model(stack, customItem); stack.setItemMeta(meta); } } else { @@ -871,7 +845,7 @@ private ItemStack getItemStack(String input, CommandSender... commandSender) { } if(players.size() > 0) { - Player player = players.get(0); + Player player = players.getFirst(); SkullMeta meta = (SkullMeta) stack.getItemMeta(); meta.setOwningPlayer(player); stack.setItemMeta(meta); @@ -898,5 +872,11 @@ private ItemStack getItemStack(String input, CommandSender... commandSender) { return stack; } } - + + @Deprecated(forRemoval = true) + private static ItemMeta model(final ItemStack stack, final CustomItem customItem) { + final ItemMeta meta = stack.getItemMeta(); + meta.setCustomModelData(customItem.getCustomModelData()); + return meta; + } } \ No newline at end of file diff --git a/src/main/java/eu/endercentral/crazy_advancements/JSONMessage.java b/src/main/java/eu/endercentral/crazy_advancements/JSONMessage.java index 9c25ab6..168b7ea 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/JSONMessage.java +++ b/src/main/java/eu/endercentral/crazy_advancements/JSONMessage.java @@ -2,7 +2,7 @@ import java.util.Optional; import java.util.stream.Stream; - +import io.papermc.paper.adventure.PaperAdventure; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; import net.minecraft.core.HolderLookup.Provider; @@ -10,66 +10,68 @@ import net.minecraft.core.Registry; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; +import org.jetbrains.annotations.NotNull; /** * Represents a Message in JSON Format - * - * @author Axel * + * @author Axel */ -public class JSONMessage { - +@Deprecated +public record JSONMessage(BaseComponent json) { + private static final Provider COMPONENT_SERIALIZER_PROVIDER = new TextHolderLookupProvider(); - - - private final BaseComponent json; - + + /** * Constructor for creating a JSON Message - * + * * @param json A JSON representation of an ingame Message Read More */ - public JSONMessage(BaseComponent json) { - this.json = json; + public JSONMessage { } - + /** * Gets the Message as a BaseComponent - * + * * @return the BaseComponent of an ingame Message */ - public BaseComponent getJson() { + @Override + public BaseComponent json() { return json; } - + /** * Gets an NMS representation of an ingame Message - * + * * @return An {@link Component} representation of an ingame Message */ public Component getBaseComponent() { return Component.Serializer.fromJson(ComponentSerializer.toString(json), COMPONENT_SERIALIZER_PROVIDER); } - + + public @NotNull net.kyori.adventure.text.Component getAdventure() { + return PaperAdventure.asAdventure(getBaseComponent()); + } + @Override public String toString() { return json.toPlainText(); } - - - + + private static class TextHolderLookupProvider implements Provider { - + @Override public Stream>> listRegistryKeys() { return Stream.empty(); } - + @Override public Optional> lookup(ResourceKey> registryRef) { return Optional.empty(); } - + } - + } \ No newline at end of file diff --git a/src/main/java/eu/endercentral/crazy_advancements/advancement/Advancement.java b/src/main/java/eu/endercentral/crazy_advancements/advancement/Advancement.java index 4b418ef..3730a4d 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/advancement/Advancement.java +++ b/src/main/java/eu/endercentral/crazy_advancements/advancement/Advancement.java @@ -5,13 +5,13 @@ import eu.endercentral.crazy_advancements.advancement.criteria.Criteria; import eu.endercentral.crazy_advancements.advancement.progress.AdvancementProgress; import eu.endercentral.crazy_advancements.manager.AdvancementManager; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TranslatableComponent; +import net.kyori.adventure.text.event.HoverEvent; +import net.kyori.adventure.text.format.NamedTextColor; import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.HoverEvent.Action; import net.md_5.bungee.api.chat.TextComponent; -import net.md_5.bungee.api.chat.TranslatableComponent; import net.md_5.bungee.api.chat.hover.content.Text; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -33,13 +33,13 @@ public class Advancement { private AdvancementReward reward; private final Advancement parent; - private HashSet children = new HashSet<>(); + private final HashSet children = new HashSet<>(); private final boolean childrenTracked; private final List flags; private HashMap savedVisibilityStatus; - private HashMap progressMap = new HashMap<>(); + private final HashMap progressMap = new HashMap<>(); /** * Constructor for Advancements with a parent @@ -436,7 +436,7 @@ public void unloadVisibilityStatus(Player player) { * Unloads the Visibility Status for a Player
* Should only be run after somebody disconnects to free up RAM * - * @param player The UUID of Player to Unload Visibility + * @param uuid The UUID of Player to Unload Visibility */ public void unloadVisibilityStatus(UUID uuid) { savedVisibilityStatus.remove(uuid.toString()); @@ -448,8 +448,7 @@ public void unloadVisibilityStatus(UUID uuid) { * @return The Toast Notification */ public ToastNotification getToastNotification() { - ToastNotification notification = new ToastNotification(getDisplay().getIcon(), getDisplay().getTitle(), getDisplay().getFrame()); - return notification; + return new ToastNotification(getDisplay().getIcon(), getDisplay().title(), getDisplay().getFrame()); } /** @@ -461,18 +460,33 @@ public void displayToast(Player player) { ToastNotification notification = getToastNotification(); notification.send(player); } - + + /** + * Gets an Advancement Message + * + * @param player Player who has recieved the advancement + * @return The Advancement Message as a Base Component + */ + public Component message(Player player) { + final TranslatableComponent message = Component.translatable("chat.type.advancement." + display.getFrame().name().toLowerCase()); + final Component title = Component.text("[").append(display.title()).append(Component.text("]")) + .color(getDisplay().getFrame() == AdvancementFrame.CHALLENGE ? NamedTextColor.DARK_PURPLE : NamedTextColor.GREEN) + .hoverEvent(HoverEvent.showText(display.title().appendNewline().append(display.description()))); + return player.displayName().append(message).append(title); + } + /** * Gets an Advancement Message * * @param player Player who has recieved the advancement * @return The Advancement Message as a Base Component */ + @Deprecated public BaseComponent getMessage(Player player) { String translation = "chat.type.advancement." + display.getFrame().name().toLowerCase(); boolean challenge = getDisplay().getFrame() == AdvancementFrame.CHALLENGE; - TranslatableComponent message = new TranslatableComponent(); + net.md_5.bungee.api.chat.TranslatableComponent message = new net.md_5.bungee.api.chat.TranslatableComponent(); message.setTranslate(translation); TextComponent playerNameText = new TextComponent(); @@ -480,16 +494,17 @@ public BaseComponent getMessage(Player player) { playerNameText.setExtra(Arrays.asList(playerNameComponents)); TextComponent title = new TextComponent("["); - title.addExtra(display.getTitle().getJson()); + title.addExtra(display.getTitle().json()); title.addExtra("]"); title.setColor(challenge ? ChatColor.DARK_PURPLE : ChatColor.GREEN); - TextComponent titleTextComponent = new TextComponent(display.getTitle().getJson()); + TextComponent titleTextComponent = new TextComponent(display.getTitle().json()); titleTextComponent.setColor(title.getColor()); Text titleText = new Text(new BaseComponent[] {titleTextComponent}); - Text descriptionText = new Text(new BaseComponent[] {display.getDescription().getJson()}); - title.setHoverEvent(new HoverEvent(Action.SHOW_TEXT, titleText, new Text("\n"), descriptionText)); + Text descriptionText = new Text(new BaseComponent[] {display.getDescription().json()}); + title.setHoverEvent(new net.md_5.bungee.api.chat.HoverEvent(net.md_5.bungee.api.chat.HoverEvent.Action + .SHOW_TEXT, titleText, new Text("\n"), descriptionText)); message.setWith(Arrays.asList(playerNameText, title)); @@ -500,20 +515,18 @@ public BaseComponent getMessage(Player player) { * Displays an Advancement Message to every Player saying Player has completed said advancement
* Note that this doesn't grant the advancement * - * * @param player Player who has recieved the advancement */ public void displayMessageToEverybody(Player player) { - BaseComponent message = getMessage(player); - - for(Player online : Bukkit.getOnlinePlayers()) { - online.spigot().sendMessage(ChatMessageType.CHAT, message); + final Component msg = message(player); + for(final Player online : Bukkit.getOnlinePlayers()) { + online.sendMessage(msg); } } @Override public boolean equals(Object obj) { - return getName().equals(((Advancement) obj).getName()); + return obj instanceof final Advancement adv && getName().equals(adv.getName()); } diff --git a/src/main/java/eu/endercentral/crazy_advancements/advancement/AdvancementDisplay.java b/src/main/java/eu/endercentral/crazy_advancements/advancement/AdvancementDisplay.java index 514059d..62990e0 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/advancement/AdvancementDisplay.java +++ b/src/main/java/eu/endercentral/crazy_advancements/advancement/AdvancementDisplay.java @@ -1,14 +1,15 @@ package eu.endercentral.crazy_advancements.advancement; +import javax.annotation.Nullable; +import eu.endercentral.crazy_advancements.CrazyAdvancementsAPI; import eu.endercentral.crazy_advancements.JSONMessage; +import net.kyori.adventure.text.Component; import net.md_5.bungee.api.chat.TextComponent; import net.minecraft.advancements.AdvancementType; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import javax.annotation.Nullable; - /** * Represents the Display Information of an Advancement * @@ -18,13 +19,13 @@ public class AdvancementDisplay { private ItemStack icon; - private JSONMessage title, description; + private Component title, description; private AdvancementFrame frame; private transient AdvancementVisibility vis; private String backgroundTexture; private float x = 0, y = 0; private Advancement positionOrigin; - + //Material Constructors /** @@ -33,53 +34,54 @@ public class AdvancementDisplay { * @param title Title {@link JSONMessage} * @param description Description {@link JSONMessage} * @param frame {@link AdvancementFrame} + * @param backgroundTexture Background texture path * @param visibility When an advancement is visible */ - public AdvancementDisplay(Material icon, JSONMessage title, JSONMessage description, AdvancementFrame frame, AdvancementVisibility visibility) { - this.icon = new ItemStack(icon); - this.title = title; - this.description = description; - this.frame = frame; - setVisibility(visibility); + @Deprecated + public AdvancementDisplay(Material icon, JSONMessage title, JSONMessage description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { + this(new ItemStack(icon), title, description, frame, backgroundTexture, visibility); } - + /** - * + * * @param icon Icon {@link Material} - * @param title Title {@link String} - * @param description Description {@link String} + * @param title Title {@link JSONMessage} + * @param description Description {@link JSONMessage} * @param frame {@link AdvancementFrame} * @param visibility When an advancement is visible */ - public AdvancementDisplay(Material icon, String title, String description, AdvancementFrame frame, AdvancementVisibility visibility) { + @Deprecated + public AdvancementDisplay(Material icon, JSONMessage title, JSONMessage description, AdvancementFrame frame, AdvancementVisibility visibility) { this.icon = new ItemStack(icon); - TextComponent titleComponent = new TextComponent(title); - this.title = new JSONMessage(titleComponent); - this.description = new JSONMessage(new TextComponent(description)); + this.title = title.getAdventure(); + this.description = description.getAdventure(); +// GsonComponentSerializer.gson().deserialize(ComponentSerializer.toString(title.json())); this.frame = frame; - setVisibility(visibility); + this.vis = visibility; } - + /** - * - * @param icon Icon {@link Material} + * + * @param icon Icon {@link ItemStack} * @param title Title {@link JSONMessage} * @param description Description {@link JSONMessage} * @param frame {@link AdvancementFrame} * @param backgroundTexture Background texture path * @param visibility When an advancement is visible */ - public AdvancementDisplay(Material icon, JSONMessage title, JSONMessage description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { - this.icon = new ItemStack(icon); - this.title = title; - this.description = description; + @Deprecated + public AdvancementDisplay(ItemStack icon, JSONMessage title, JSONMessage description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { + this.icon = icon; + this.title = title.getAdventure(); + this.description = description.getAdventure(); +// GsonComponentSerializer.gson().deserialize(ComponentSerializer.toString(title.json())); this.frame = frame; this.backgroundTexture = backgroundTexture; - setVisibility(visibility); + this.vis = visibility; } - + /** - * + * * @param icon Icon {@link Material} * @param title Title {@link String} * @param description Description {@link String} @@ -87,32 +89,26 @@ public AdvancementDisplay(Material icon, JSONMessage title, JSONMessage descript * @param backgroundTexture Background texture path * @param visibility When an advancement is visible */ + @Deprecated public AdvancementDisplay(Material icon, String title, String description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { - this.icon = new ItemStack(icon); - TextComponent titleComponent = new TextComponent(title); - this.title = new JSONMessage(titleComponent); - this.description = new JSONMessage(new TextComponent(description)); - this.frame = frame; - this.backgroundTexture = backgroundTexture; - setVisibility(visibility); + this(new ItemStack(icon), CrazyAdvancementsAPI.msg.deserialize(title), CrazyAdvancementsAPI.msg.deserialize(description), frame, backgroundTexture, visibility); } - - //ItemStack constructors - + /** - * - * @param icon Icon {@link ItemStack} - * @param title Title {@link JSONMessage} - * @param description Description {@link JSONMessage} + * + * @param icon Icon {@link Material} + * @param title Title {@link String} + * @param description Description {@link String} * @param frame {@link AdvancementFrame} * @param visibility When an advancement is visible */ - public AdvancementDisplay(ItemStack icon, JSONMessage title, JSONMessage description, AdvancementFrame frame, AdvancementVisibility visibility) { - this.icon = icon; - this.title = title; - this.description = description; + public AdvancementDisplay(Material icon, String title, String description, AdvancementFrame frame, AdvancementVisibility visibility) { + this.icon = new ItemStack(icon); + this.title = CrazyAdvancementsAPI.msg.deserialize(title); + this.description = CrazyAdvancementsAPI.msg.deserialize(description); +// GsonComponentSerializer.gson().deserialize(ComponentSerializer.toString(title.json())); this.frame = frame; - setVisibility(visibility); + this.vis = visibility; } /** @@ -124,49 +120,55 @@ public AdvancementDisplay(ItemStack icon, JSONMessage title, JSONMessage descrip * @param visibility When an advancement is visible */ public AdvancementDisplay(ItemStack icon, String title, String description, AdvancementFrame frame, AdvancementVisibility visibility) { - this.icon = icon; - TextComponent titleComponent = new TextComponent(title); - this.title = new JSONMessage(titleComponent); - this.description = new JSONMessage(new TextComponent(description)); - this.frame = frame; - setVisibility(visibility); + this(icon, CrazyAdvancementsAPI.msg.deserialize(title), CrazyAdvancementsAPI.msg.deserialize(description), frame, visibility); } - + /** - * + * * @param icon Icon {@link ItemStack} - * @param title Title {@link JSONMessage} - * @param description Description {@link JSONMessage} + * @param title Title {@link String} + * @param description Description {@link String} * @param frame {@link AdvancementFrame} * @param backgroundTexture Background texture path * @param visibility When an advancement is visible */ - public AdvancementDisplay(ItemStack icon, JSONMessage title, JSONMessage description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { + public AdvancementDisplay(ItemStack icon, String title, String description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { + this(icon, CrazyAdvancementsAPI.msg.deserialize(title), CrazyAdvancementsAPI.msg.deserialize(description), frame, backgroundTexture, visibility); + } + + //ItemStack constructors + + /** + * + * @param icon Icon {@link ItemStack} + * @param title Title {@link Component} + * @param description Description {@link Component} + * @param frame {@link AdvancementFrame} + * @param visibility When an advancement is visible + */ + public AdvancementDisplay(ItemStack icon, Component title, Component description, AdvancementFrame frame, AdvancementVisibility visibility) { this.icon = icon; this.title = title; this.description = description; this.frame = frame; - this.backgroundTexture = backgroundTexture; - setVisibility(visibility); + this.vis = visibility; } - + /** - * + * * @param icon Icon {@link ItemStack} - * @param title Title {@link String} - * @param description Description {@link String} + * @param title Title {@link Component} + * @param description Description {@link Component} * @param frame {@link AdvancementFrame} - * @param backgroundTexture Background texture path * @param visibility When an advancement is visible */ - public AdvancementDisplay(ItemStack icon, String title, String description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { + public AdvancementDisplay(ItemStack icon, Component title, Component description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { this.icon = icon; - TextComponent titleComponent = new TextComponent(title); - this.title = new JSONMessage(titleComponent); - this.description = new JSONMessage(new TextComponent(description)); + this.title = title; + this.description = description; this.frame = frame; this.backgroundTexture = backgroundTexture; - setVisibility(visibility); + this.vis = visibility; } /** @@ -175,7 +177,7 @@ public AdvancementDisplay(ItemStack icon, String title, String description, Adva * @author Axel * */ - public static enum AdvancementFrame { + public enum AdvancementFrame { /** * A Task has the default Frame and defaults to a green Color in Completion Messages @@ -191,9 +193,9 @@ public static enum AdvancementFrame { CHALLENGE(AdvancementType.CHALLENGE) ; - private AdvancementType nms; + private final AdvancementType nms; - private AdvancementFrame(AdvancementType nms) { + AdvancementFrame(AdvancementType nms) { this.nms = nms; } @@ -250,7 +252,16 @@ public ItemStack getIcon() { * * @return Title {@link JSONMessage} */ + @Deprecated public JSONMessage getTitle() { + return new JSONMessage(new TextComponent(CrazyAdvancementsAPI.msg.serialize(title))); + } + + /** + * + * @return Title {@link Component} + */ + public Component title() { return title; } @@ -258,7 +269,16 @@ public JSONMessage getTitle() { * * @return Description {@link JSONMessage} */ + @Deprecated public JSONMessage getDescription() { + return new JSONMessage(new TextComponent(CrazyAdvancementsAPI.msg.serialize(description))); + } + + /** + * + * @return Title {@link Component} + */ + public Component description() { return description; } @@ -350,7 +370,7 @@ public AdvancementVisibility getVisibility() { public boolean isVisible(Player player, Advancement advancement) { AdvancementVisibility visibility = getVisibility(); Advancement parent = advancement.getParent(); - boolean parentVisible = parent == null ? true : parent.getDisplay().isVisible(player, parent); + boolean parentVisible = parent == null || parent.getDisplay().isVisible(player, parent); return parentVisible && visibility.isVisible(player, advancement) || advancement.isGranted(player) || (visibility.isAlwaysVisibleWhenAnyChildIsGranted() && advancement.isAnythingGrantedAfter(player)); } @@ -389,8 +409,9 @@ public void setIcon(ItemStack icon) { * * @param title New title {@link JSONMessage} */ + @Deprecated public void setTitle(JSONMessage title) { - this.title = title; + this.title = title.getAdventure(); } /** @@ -398,9 +419,27 @@ public void setTitle(JSONMessage title) { * * @param title New Title {@link String} */ + @Deprecated public void setTitle(String title) { - TextComponent titleComponent = new TextComponent(title); - this.title = new JSONMessage(titleComponent); + this.title = CrazyAdvancementsAPI.msg.deserialize(title); + } + + /** + * Changes the Title + * + * @param title New Title {@link String} + */ + public void title(String title) { + this.title = CrazyAdvancementsAPI.msg.deserialize(title); + } + + /** + * Changes the Title + * + * @param title New Title {@link Component} + */ + public void title(Component title) { + this.title = title; } /** @@ -408,8 +447,9 @@ public void setTitle(String title) { * * @param description New description {@link JSONMessage} */ + @Deprecated public void setDescription(JSONMessage description) { - this.description = description; + this.description = description.getAdventure(); } /** @@ -417,8 +457,27 @@ public void setDescription(JSONMessage description) { * * @param description New Description {@link String} */ + @Deprecated public void setDescription(String description) { - this.description = new JSONMessage(new TextComponent(description)); + this.description = CrazyAdvancementsAPI.msg.deserialize(description); + } + + /** + * Changes the Description + * + * @param description New Description {@link String} + */ + public void description(String description) { + this.title = CrazyAdvancementsAPI.msg.deserialize(description); + } + + /** + * Changes the Description + * + * @param description New Description {@link Component} + */ + public void description(Component description) { + this.title = description; } /** diff --git a/src/main/java/eu/endercentral/crazy_advancements/advancement/ToastNotification.java b/src/main/java/eu/endercentral/crazy_advancements/advancement/ToastNotification.java index 5528212..11514a8 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/advancement/ToastNotification.java +++ b/src/main/java/eu/endercentral/crazy_advancements/advancement/ToastNotification.java @@ -7,6 +7,7 @@ import eu.endercentral.crazy_advancements.advancement.criteria.Criteria; import eu.endercentral.crazy_advancements.advancement.progress.AdvancementProgress; import eu.endercentral.crazy_advancements.packet.ToastPacket; +import net.kyori.adventure.text.Component; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -29,7 +30,7 @@ public class ToastNotification { } private final ItemStack icon; - private final JSONMessage message; + private final Component message; private final AdvancementFrame frame; /** @@ -39,35 +40,38 @@ public class ToastNotification { * @param message The displayed Message * @param frame Determines the displayed Title and Sound Effect (evaluated client-side and modifiable via resource packs) */ + @Deprecated public ToastNotification(ItemStack icon, JSONMessage message, AdvancementFrame frame) { this.icon = icon; - this.message = message; + this.message = message.getAdventure(); this.frame = frame; } - + /** * Constructor for creating Toast Notifications - * + * * @param icon The displayed Icon * @param message The displayed Message * @param frame Determines the displayed Title and Sound Effect (evaluated client-side and modifiable via resource packs) */ - public ToastNotification(ItemStack icon, String message, AdvancementFrame frame) { - this.icon = icon; - this.message = new JSONMessage(new TextComponent(message)); + @Deprecated + public ToastNotification(Material icon, JSONMessage message, AdvancementFrame frame) { + this.icon = new ItemStack(icon); + this.message = message.getAdventure(); this.frame = frame; } - + /** * Constructor for creating Toast Notifications - * + * * @param icon The displayed Icon * @param message The displayed Message * @param frame Determines the displayed Title and Sound Effect (evaluated client-side and modifiable via resource packs) */ - public ToastNotification(Material icon, JSONMessage message, AdvancementFrame frame) { + @Deprecated + public ToastNotification(Material icon, String message, AdvancementFrame frame) { this.icon = new ItemStack(icon); - this.message = message; + this.message = CrazyAdvancementsAPI.msg.deserialize(message); this.frame = frame; } @@ -78,9 +82,22 @@ public ToastNotification(Material icon, JSONMessage message, AdvancementFrame fr * @param message The displayed Message * @param frame Determines the displayed Title and Sound Effect (evaluated client-side and modifiable via resource packs) */ - public ToastNotification(Material icon, String message, AdvancementFrame frame) { - this.icon = new ItemStack(icon); - this.message = new JSONMessage(new TextComponent(message)); + public ToastNotification(ItemStack icon, String message, AdvancementFrame frame) { + this.icon = icon; + this.message = CrazyAdvancementsAPI.msg.deserialize(message); + this.frame = frame; + } + + /** + * Constructor for creating Toast Notifications + * + * @param icon The displayed Icon + * @param message The displayed Message + * @param frame Determines the displayed Title and Sound Effect (evaluated client-side and modifiable via resource packs) + */ + public ToastNotification(ItemStack icon, Component message, AdvancementFrame frame) { + this.icon = icon; + this.message = message; this.frame = frame; } @@ -94,11 +111,21 @@ public ItemStack getIcon() { } /** - * Gets the TItle + * Gets the Title * * @return The Title */ + @Deprecated public JSONMessage getMessage() { + return new JSONMessage(new TextComponent(CrazyAdvancementsAPI.msg.serialize(message))); + } + + /** + * Gets the Title + * + * @return The Title + */ + public Component message() { return message; } diff --git a/src/main/java/eu/endercentral/crazy_advancements/advancement/progress/AdvancementProgress.java b/src/main/java/eu/endercentral/crazy_advancements/advancement/progress/AdvancementProgress.java index 494dcc2..6152628 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/advancement/progress/AdvancementProgress.java +++ b/src/main/java/eu/endercentral/crazy_advancements/advancement/progress/AdvancementProgress.java @@ -16,7 +16,7 @@ */ public class AdvancementProgress { - private net.minecraft.advancements.AdvancementProgress nmsProgress = new net.minecraft.advancements.AdvancementProgress(); + private final net.minecraft.advancements.AdvancementProgress nmsProgress = new net.minecraft.advancements.AdvancementProgress(); private long lastUpdate = -1; /** @@ -39,8 +39,7 @@ public AdvancementProgress(Map> criteria, String[][] requir /** * Constructor for Creating a Progress Instance - * - * @param criteria The Criteria + * * @param requirements The Requirements */ public AdvancementProgress(String[][] requirements) { diff --git a/src/main/java/eu/endercentral/crazy_advancements/advancement/serialized/message/SerializedMessage.java b/src/main/java/eu/endercentral/crazy_advancements/advancement/serialized/message/SerializedMessage.java index 678e0c2..046af41 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/advancement/serialized/message/SerializedMessage.java +++ b/src/main/java/eu/endercentral/crazy_advancements/advancement/serialized/message/SerializedMessage.java @@ -1,14 +1,14 @@ package eu.endercentral.crazy_advancements.advancement.serialized.message; -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.KeybindComponent; -import net.md_5.bungee.api.chat.SelectorComponent; -import net.md_5.bungee.api.chat.TextComponent; -import net.md_5.bungee.api.chat.hover.content.Text; import java.util.List; import java.util.Locale; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.hover.content.Text; public class SerializedMessage { @@ -22,7 +22,7 @@ public class SerializedMessage { private final HoverEvent hoverEvent; private final ClickEvent clickEvent; - private List extra; + private final List extra; public SerializedMessage(String text, String selector, String keybind, String color, boolean bold, boolean italic, boolean underlined, HoverEvent hoverEvent, ClickEvent clickEvent, List extra) { this.text = text; @@ -76,15 +76,51 @@ public ClickEvent getClickEvent() { public List getExtra() { return extra; } - + + public Component deserial() { + Component message = Component.empty(); + if(getText() != null && !getText().isEmpty()) { + message = Component.text(getText()); + } else if(getSelector() != null && !getSelector().isEmpty()) { + message = Component.selector(getSelector()); + } else if(getKeybind() != null && !getKeybind().isEmpty()) { + message = Component.keybind(getKeybind()); + } + + if (getColor() != null && !getColor().isEmpty()) { + message = message.color(NamedTextColor.NAMES.valueOr(getColor().toLowerCase(), NamedTextColor.WHITE)); + } + + if (isBold()) message = message.decoration(TextDecoration.BOLD, TextDecoration.State.TRUE); + if (isItalic()) message = message.decoration(TextDecoration.ITALIC, TextDecoration.State.TRUE); + if (isUnderlined()) message = message.decoration(TextDecoration.UNDERLINED, TextDecoration.State.TRUE); + + if (getHoverEvent() != null) { + message = message.hoverEvent(net.kyori.adventure.text.event.HoverEvent.hoverEvent(net.kyori.adventure.text.event.HoverEvent.Action + .SHOW_TEXT, Component.text(getHoverEvent().getContents()))); + } + + if (getClickEvent() != null) { + message = message.clickEvent(net.kyori.adventure.text.event.ClickEvent.clickEvent(net.kyori.adventure.text.event.ClickEvent.Action + .valueOf(getClickEvent().getAction().toUpperCase(Locale.ROOT)), getClickEvent().getValue())); + } + + if (getExtra() != null) { + message = message.children(getExtra().stream().map(sm -> sm.deserial()).toList()); + } + + return message; + } + + @Deprecated public BaseComponent deserialize() { - BaseComponent message = new TextComponent(""); + BaseComponent message = new net.md_5.bungee.api.chat.TextComponent(""); if(getText() != null && !getText().isEmpty()) { - message = new TextComponent(getText()); + message = new net.md_5.bungee.api.chat.TextComponent(getText()); } else if(getSelector() != null && !getSelector().isEmpty()) { - message = new SelectorComponent(getSelector()); + message = new net.md_5.bungee.api.chat.SelectorComponent(getSelector()); } else if(getKeybind() != null && !getKeybind().isEmpty()) { - message = new KeybindComponent(getKeybind()); + message = new net.md_5.bungee.api.chat.KeybindComponent(getKeybind()); } if(getColor() != null && !getColor().isEmpty()) { diff --git a/src/main/java/eu/endercentral/crazy_advancements/item/CustomItem.java b/src/main/java/eu/endercentral/crazy_advancements/item/CustomItem.java index 0a47f13..fa6c9a1 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/item/CustomItem.java +++ b/src/main/java/eu/endercentral/crazy_advancements/item/CustomItem.java @@ -10,15 +10,9 @@ public class CustomItem { private final int customModelData; public CustomItem(NameKey name, Material type, int customModelData) { - if(name == null) { - throw new RuntimeException("Custom Item Name may not be null"); - } - if(type == null) { - throw new RuntimeException("Custom Item Type may not be null"); - } - if(!type.isItem()) { - throw new RuntimeException("Can't create Custom Item from non-item Type '" + type.name().toLowerCase() + "'"); - } + if (name == null) throw new RuntimeException("Custom Item Name may not be null"); + if (type == null) throw new RuntimeException("Custom Item Type may not be null"); + if (!type.isItem()) throw new RuntimeException("Can't create Custom Item from non-item Type '" + type.name().toLowerCase() + "'"); this.name = name; this.type = type; this.customModelData = customModelData; diff --git a/src/main/java/eu/endercentral/crazy_advancements/manager/AdvancementManager.java b/src/main/java/eu/endercentral/crazy_advancements/manager/AdvancementManager.java index 39a7c5d..8dcd54e 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/manager/AdvancementManager.java +++ b/src/main/java/eu/endercentral/crazy_advancements/manager/AdvancementManager.java @@ -1,5 +1,10 @@ package eu.endercentral.crazy_advancements.manager; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.*; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.gson.JsonElement; @@ -24,12 +29,6 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.*; - /** * Represents a Manager that manages Players and Advancements * @@ -38,7 +37,7 @@ */ public final class AdvancementManager { - private static HashMap accessibleManagers = new HashMap<>(); + private static final HashMap accessibleManagers = new HashMap<>(); /** * Gets an accessible Advancement Manager by it's Name @@ -47,7 +46,7 @@ public final class AdvancementManager { * @return the Manager or null if no matching Manager is found */ public static AdvancementManager getAccessibleManager(NameKey name) { - return accessibleManagers.containsKey(name.toString()) ? accessibleManagers.get(name.toString()) : null; + return accessibleManagers.getOrDefault(name.toString(), null); } /** @@ -60,8 +59,8 @@ public static Collection getAccessibleManagers() { } private final NameKey name; - private ArrayList players; - private ArrayList advancements = new ArrayList<>(); + private final ArrayList players; + private final ArrayList advancements = new ArrayList<>(); /** * Constructor for creating Advancement Managers @@ -140,13 +139,7 @@ public void removePlayer(Player player) { * @return All players that have been added to the manager */ public ArrayList getPlayers() { - Iterator it = players.iterator(); - while(it.hasNext()) { - Player p = it.next(); - if(p == null || !p.isOnline()) { - it.remove(); - } - } + players.removeIf(p -> p == null || !p.isOnline()); return players; } @@ -302,13 +295,7 @@ public ArrayList getAdvancements() { */ public ArrayList getAdvancements(String namespace) { ArrayList advs = getAdvancements(); - Iterator it = advs.iterator(); - while(it.hasNext()) { - Advancement adv = it.next(); - if(!adv.getName().getNamespace().equalsIgnoreCase(namespace)) { - it.remove(); - } - } + advs.removeIf(adv -> !adv.getName().getNamespace().equalsIgnoreCase(namespace)); return advs; } @@ -468,8 +455,7 @@ public GenericResult grantAdvancement(UUID uuid, Advancement advancement) { return grantAdvancement(Bukkit.getPlayer(uuid), advancement); } else { AdvancementProgress progress = advancement.getProgress(uuid); - GenericResult result = progress.grant(); - return result; + return progress.grant(); } } @@ -506,8 +492,7 @@ public GenericResult revokeAdvancement(UUID uuid, Advancement advancement) { return revokeAdvancement(Bukkit.getPlayer(uuid), advancement); } else { AdvancementProgress progress = advancement.getProgress(uuid); - GenericResult result = progress.revoke(); - return result; + return progress.revoke(); } } @@ -561,8 +546,7 @@ public GrantCriteriaResult grantCriteria(UUID uuid, Advancement advancement, Str return grantCriteria(Bukkit.getPlayer(uuid), advancement, criteria); } else { AdvancementProgress progress = advancement.getProgress(uuid); - GrantCriteriaResult result = progress.grantCriteria(criteria); - return result; + return progress.grantCriteria(criteria); } } @@ -602,8 +586,7 @@ public GenericResult revokeCriteria(UUID uuid, Advancement advancement, String.. return revokeCriteria(Bukkit.getPlayer(uuid), advancement, criteria); } else { AdvancementProgress progress = advancement.getProgress(uuid); - GenericResult result = progress.revokeCriteria(criteria); - return result; + return progress.revokeCriteria(criteria); } } @@ -667,9 +650,8 @@ public SetCriteriaResult setCriteriaProgress(UUID uuid, Advancement advancement, } else { if(advancement.getCriteria().getType() == CriteriaType.NUMBER) { AdvancementProgress progress = advancement.getProgress(uuid); - SetCriteriaResult result = progress.setCriteriaProgress(criteriaProgress); - - return result; + + return progress.setCriteriaProgress(criteriaProgress); } return SetCriteriaResult.INVALID; } @@ -741,9 +723,8 @@ public SaveFile createNewSave(UUID uuid, Advancement... advancements) { break; } } - SaveFile saveFile = new SaveFile(progressData, criteriaData); - - return saveFile; + + return new SaveFile(progressData, criteriaData); } /** @@ -834,8 +815,8 @@ public void loadProgress(UUID uuid, SaveFile saveFile, Advancement... advancemen List advancementsList = advancements.length == 0 ? getAdvancements() : Arrays.asList(advancements); for(ProgressData progressData : saveFile.getProgressData()) { - NameKey name = progressData.getName(); - int progress = progressData.getProgress(); + NameKey name = progressData.name(); + int progress = progressData.progress(); for(Advancement advancement: advancementsList) { if(advancement.getCriteria().getType() == CriteriaType.NUMBER && advancement.hasName(name)) { @@ -846,8 +827,8 @@ public void loadProgress(UUID uuid, SaveFile saveFile, Advancement... advancemen } for(CriteriaData progressData : saveFile.getCriteriaData()) { - NameKey name = progressData.getName(); - Iterable criteria = progressData.getCriteria(); + NameKey name = progressData.name(); + Iterable criteria = progressData.criteria(); for(Advancement advancement: advancementsList) { if(advancement.getCriteria().getType() == CriteriaType.LIST && advancement.hasName(name)) { @@ -950,9 +931,8 @@ private static SaveFile generateSaveFile(File file) { JsonElement element = JsonParser.parseReader(os); os.close(); - - SaveFile saveFile = SaveFile.fromJSON(element); - return saveFile; + + return SaveFile.fromJSON(element); } catch (Exception ex) { if(os != null) { try { diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java b/src/main/java/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java index deb559b..aaf6776 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java @@ -103,8 +103,7 @@ public ClientboundUpdateAdvancementsPacket build() { } //Create Packet - ClientboundUpdateAdvancementsPacket packet = new ClientboundUpdateAdvancementsPacket(isReset(), advancements, removedAdvancements, progress); - return packet; + return new ClientboundUpdateAdvancementsPacket(isReset(), advancements, removedAdvancements, progress, true); } protected net.minecraft.advancements.Advancement convertAdvancement(Advancement advancement) { diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java index 7308e2d..7d45bc5 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java @@ -3,27 +3,28 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Optional; - -import org.bukkit.craftbukkit.inventory.CraftItemStack; - -import eu.endercentral.crazy_advancements.JSONMessage; import eu.endercentral.crazy_advancements.NameKey; import eu.endercentral.crazy_advancements.advancement.Advancement; import eu.endercentral.crazy_advancements.advancement.AdvancementDisplay; import eu.endercentral.crazy_advancements.advancement.AdvancementFlag; import eu.endercentral.crazy_advancements.advancement.ToastNotification; -import net.md_5.bungee.api.chat.TextComponent; +import io.papermc.paper.adventure.PaperAdventure; +import net.kyori.adventure.text.Component; import net.minecraft.advancements.AdvancementRequirements; import net.minecraft.advancements.AdvancementRewards; +import net.minecraft.advancements.DisplayInfo; +import net.minecraft.core.ClientAsset; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import org.bukkit.craftbukkit.inventory.CraftItemStack; public class PacketConverter { - private static final AdvancementRewards advancementRewards = new AdvancementRewards(0, new ArrayList<>(), new ArrayList<>(), Optional.empty()); + private static final AdvancementRewards advancementRewards = + new AdvancementRewards(0, new ArrayList<>(), new ArrayList<>(), Optional.empty()); - private static HashMap smallestX = new HashMap<>(); - private static HashMap smallestY = new HashMap<>(); + private static final HashMap smallestX = new HashMap<>(); + private static final HashMap smallestY = new HashMap<>(); public static void setSmallestX(NameKey tab, float smallestX) { PacketConverter.smallestX.put(tab, smallestX); @@ -59,20 +60,22 @@ public static net.minecraft.advancements.Advancement toNmsAdvancement(Advancemen AdvancementDisplay display = advancement.getDisplay(); ItemStack icon = CraftItemStack.asNMSCopy(display.getIcon()); - - boolean hasBackgroundTexture = display.getBackgroundTexture() != null; - Optional backgroundTexture = hasBackgroundTexture ? Optional.of(ResourceLocation.parse(display.getBackgroundTexture())) : Optional.empty(); + + Optional backgroundTexture = display.getBackgroundTexture() == null ? Optional.empty() + : Optional.of(new ClientAsset(ResourceLocation.parse(display.getBackgroundTexture()))); float x = generateX(advancement.getTab(), display.generateX()); float y = generateY(advancement.getTab(), display.generateY()); - net.minecraft.advancements.DisplayInfo advDisplay = new net.minecraft.advancements.DisplayInfo(icon, display.getTitle().getBaseComponent(), display.getDescription().getBaseComponent(), backgroundTexture, display.getFrame().getNMS(), false, false, advancement.hasFlag(AdvancementFlag.SEND_WITH_HIDDEN_BOOLEAN)); + final DisplayInfo advDisplay = new DisplayInfo(icon, PaperAdventure.asVanilla(display.title()), PaperAdventure.asVanilla(display.description()), + backgroundTexture, display.getFrame().getNMS(), false, false, advancement.hasFlag(AdvancementFlag.SEND_WITH_HIDDEN_BOOLEAN)); advDisplay.setLocation(x, y); - 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; + Optional parent = advancement.getParent() == null + ? Optional.empty() : Optional.of(advancement.getParent().getName().getMinecraftKey()); + + return new net.minecraft.advancements.Advancement(parent, Optional.of(advDisplay), advancementRewards, + advancement.getCriteria().getCriteria(), advancement.getCriteria().getAdvancementRequirements(), false); } /** @@ -84,11 +87,11 @@ public static net.minecraft.advancements.Advancement toNmsAdvancement(Advancemen public static net.minecraft.advancements.Advancement toNmsToastAdvancement(ToastNotification notification) { ItemStack icon = CraftItemStack.asNMSCopy(notification.getIcon()); - net.minecraft.advancements.DisplayInfo advDisplay = new net.minecraft.advancements.DisplayInfo(icon, notification.getMessage().getBaseComponent(), new JSONMessage(new TextComponent("Toast Notification")).getBaseComponent(), Optional.empty(), notification.getFrame().getNMS(), true, false, true); - - 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; + DisplayInfo advDisplay = new DisplayInfo(icon, PaperAdventure.asVanilla(notification.message()), PaperAdventure.asVanilla(Component.text("Toast Notification")), + Optional.empty(), notification.getFrame().getNMS(), true, false, true); + + return new net.minecraft.advancements.Advancement(Optional.empty(), Optional.of(advDisplay), advancementRewards, + ToastNotification.NOTIFICATION_CRITERIA.getCriteria(), ToastNotification.NOTIFICATION_CRITERIA.getAdvancementRequirements(), false); } /** @@ -100,8 +103,7 @@ public static net.minecraft.advancements.Advancement toNmsToastAdvancement(Toast */ @Deprecated(forRemoval = true, since = "2.1.15") public static net.minecraft.advancements.Advancement createDummy(NameKey name) { - net.minecraft.advancements.Advancement adv = new net.minecraft.advancements.Advancement(Optional.empty(), Optional.empty(), null, new HashMap<>(), new AdvancementRequirements(new ArrayList<>()), false); - return adv; + return new net.minecraft.advancements.Advancement(Optional.empty(), Optional.empty(), null, new HashMap<>(), new AdvancementRequirements(new ArrayList<>()), false); } } \ No newline at end of file diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/ToastPacket.java b/src/main/java/eu/endercentral/crazy_advancements/packet/ToastPacket.java index b385aeb..32ac523 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/ToastPacket.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/ToastPacket.java @@ -18,59 +18,54 @@ /** * Represents an Advancements Packet for Toast Notifications - * - * @author Axel * + * @author Axel */ -public class ToastPacket { - - private final Player player; - private final boolean add; - private final ToastNotification notification; - +public record ToastPacket(Player player, boolean add, ToastNotification notification) { + /** * Constructor for creating Toast Packets - * - * @param player The target Player - * @param add Whether to add or remove the Advancement + * + * @param player The target Player + * @param add Whether to add or remove the Advancement * @param notification The Notification */ - public ToastPacket(Player player, boolean add, ToastNotification notification) { - this.player = player; - this.add = add; - this.notification = notification; + public ToastPacket { } - + /** * Gets the target Player - * + * * @return The target Player */ - public Player getPlayer() { + @Override + public Player player() { return player; } - + /** * Gets whether the Advancement is added or removed - * + * * @return Whether the Advancement is added or removed */ - public boolean isAdd() { + @Override + public boolean add() { return add; } - + /** * Gets the Notification - * + * * @return The Notification */ - public ToastNotification getNotification() { + @Override + public ToastNotification notification() { return notification; } - + /** * Builds a packet that can be sent to a Player - * + * * @return The Packet */ public ClientboundUpdateAdvancementsPacket build() { @@ -78,30 +73,25 @@ public ClientboundUpdateAdvancementsPacket build() { List advancements = new ArrayList<>(); Set removedAdvancements = new HashSet<>(); Map progress = new HashMap<>(); - + //Populate Lists - if(add) { - advancements.add(new AdvancementHolder(ToastNotification.NOTIFICATION_NAME.getMinecraftKey(), PacketConverter.toNmsToastAdvancement(getNotification()))); + if (add) { + advancements.add(new AdvancementHolder(ToastNotification.NOTIFICATION_NAME.getMinecraftKey(), PacketConverter.toNmsToastAdvancement(notification()))); progress.put(ToastNotification.NOTIFICATION_NAME.getMinecraftKey(), ToastNotification.NOTIFICATION_PROGRESS.getNmsProgress()); } else { removedAdvancements.add(ToastNotification.NOTIFICATION_NAME.getMinecraftKey()); } - - //Create Packet - ClientboundUpdateAdvancementsPacket packet = new ClientboundUpdateAdvancementsPacket(false, advancements, removedAdvancements, progress); - return packet; + + return new ClientboundUpdateAdvancementsPacket(false, advancements, removedAdvancements, progress, true); } - + /** * Sends the Packet to the target Player - * */ public void send() { ClientboundUpdateAdvancementsPacket packet = build(); - ((CraftPlayer) getPlayer()).getHandle().connection.send(packet); + ((CraftPlayer) player()).getHandle().connection.send(packet); } - - - - + + } \ No newline at end of file diff --git a/src/main/java/eu/endercentral/crazy_advancements/save/CriteriaData.java b/src/main/java/eu/endercentral/crazy_advancements/save/CriteriaData.java index 72af8f0..26f62c5 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/save/CriteriaData.java +++ b/src/main/java/eu/endercentral/crazy_advancements/save/CriteriaData.java @@ -7,42 +7,37 @@ /** * Represents the Save Data for an Advancement saved by {@link CriteriaType} LIST - * - * @author Axel * + * @author Axel */ -public class CriteriaData { - - private final NameKey name; - private final List criteria; - +public record CriteriaData(NameKey name, List criteria) { + /** * Constructor for creating CriteriaData - * - * @param name The Unique Name of the Advancement + * + * @param name The Unique Name of the Advancement * @param criteria The Criteria that has been awarded */ - public CriteriaData(NameKey name, List criteria) { - this.name = name; - this.criteria = criteria; - } - + public CriteriaData {} + /** * Gets the Unique Name of the Advancement - * + * * @return The Unique Name */ - public NameKey getName() { + @Override + public NameKey name() { return name; } - + /** * Gets the Criteria that has been awarded - * + * * @return The Criteria */ - public List getCriteria() { + @Override + public List criteria() { return criteria; } - + } \ No newline at end of file diff --git a/src/main/java/eu/endercentral/crazy_advancements/save/ProgressData.java b/src/main/java/eu/endercentral/crazy_advancements/save/ProgressData.java index 37e5c5d..140b318 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/save/ProgressData.java +++ b/src/main/java/eu/endercentral/crazy_advancements/save/ProgressData.java @@ -5,42 +5,37 @@ /** * Represents the Save Data for an Advancement saved by {@link CriteriaType} NUMBER - * - * @author Axel * + * @author Axel */ -public class ProgressData { - - private final NameKey name; - private final int progress; - +public record ProgressData(NameKey name, int progress) { + /** * Constructor for creating ProgressData - * - * @param name The Unique Name of the Advancement + * + * @param name The Unique Name of the Advancement * @param progress The Progress */ - public ProgressData(NameKey name, int progress) { - this.name = name; - this.progress = progress; - } - + public ProgressData {} + /** * Gets the Unique Name of the Advancement - * + * * @return The Unique Name */ - public NameKey getName() { + @Override + public NameKey name() { return name; } - + /** * Gets the Progress - * + * * @return The Progress */ - public int getProgress() { + @Override + public int progress() { return progress; } - + } \ No newline at end of file diff --git a/src/main/java/eu/endercentral/crazy_advancements/save/SaveFile.java b/src/main/java/eu/endercentral/crazy_advancements/save/SaveFile.java index 895d427..aea2746 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/save/SaveFile.java +++ b/src/main/java/eu/endercentral/crazy_advancements/save/SaveFile.java @@ -30,12 +30,12 @@ public class SaveFile { public SaveFile(List progressData, List criteriaData) { this.progressData = new HashMap<>(); for(ProgressData progress : progressData) { - this.progressData.put(progress.getName().toString(), progress); + this.progressData.put(progress.name().toString(), progress); } this.criteriaData = new HashMap<>(); for(CriteriaData criteria : criteriaData) { - this.criteriaData.put(criteria.getName().toString(), criteria); + this.criteriaData.put(criteria.name().toString(), criteria); } } @@ -68,12 +68,12 @@ public Collection getCriteriaData() { public void merge(SaveFile saveFile) { //Merge Progress Data for(ProgressData progress : saveFile.getProgressData()) { - this.progressData.put(progress.getName().toString(), progress); + this.progressData.put(progress.name().toString(), progress); } //Merge Criteria Data for(CriteriaData criteria : saveFile.getCriteriaData()) { - this.criteriaData.put(criteria.getName().toString(), criteria); + this.criteriaData.put(criteria.name().toString(), criteria); } } From a69961710dab6f151c70231a4dbe2da185da25c4 Mon Sep 17 00:00:00 2001 From: Romindous Date: Tue, 15 Apr 2025 21:08:09 -0400 Subject: [PATCH 02/12] Update to 1.21.5, Json replacement / deprecation --- build.gradle.kts | 5 ---- .../advancement/ToastNotification.java | 7 ++---- .../manager/AdvancementManager.java | 24 +++++++------------ .../packet/PacketConverter.java | 18 +++++++------- 4 files changed, 20 insertions(+), 34 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 96fbfe5..e1797d4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,3 @@ -import io.papermc.paperweight.userdev.ReobfArtifactConfiguration import net.minecrell.pluginyml.bukkit.BukkitPluginDescription plugins { @@ -28,10 +27,6 @@ java { } tasks { - build { - paperweight.reobfArtifactConfiguration = ReobfArtifactConfiguration.MOJANG_PRODUCTION - } - compileJava { options.encoding = Charsets.UTF_8.name() options.release.set(21) diff --git a/src/main/java/eu/endercentral/crazy_advancements/advancement/ToastNotification.java b/src/main/java/eu/endercentral/crazy_advancements/advancement/ToastNotification.java index 11514a8..ee81aa3 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/advancement/ToastNotification.java +++ b/src/main/java/eu/endercentral/crazy_advancements/advancement/ToastNotification.java @@ -144,11 +144,8 @@ public AdvancementFrame getFrame() { * @param player The target Player */ public void send(Player player) { - ToastPacket addPacket = new ToastPacket(player, true, this); - ToastPacket removePacket = new ToastPacket(player, false, this); - - addPacket.send(); - removePacket.send(); + new ToastPacket(player, true, this).send(); + new ToastPacket(player, false, this).send(); } } \ No newline at end of file diff --git a/src/main/java/eu/endercentral/crazy_advancements/manager/AdvancementManager.java b/src/main/java/eu/endercentral/crazy_advancements/manager/AdvancementManager.java index 8dcd54e..50abcb5 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/manager/AdvancementManager.java +++ b/src/main/java/eu/endercentral/crazy_advancements/manager/AdvancementManager.java @@ -394,22 +394,14 @@ public void updateProgress(Player player, Advancement... advancements) { * @param player The target Player */ public void updateVisibility(Player player) { - for(Advancement advancement : getAdvancements()) { - boolean visibleBefore = advancement.getVisibilityStatus(player); - boolean visible = advancement.getDisplay().isVisible(player, advancement); - - if(visibleBefore != visible) { - advancement.saveVisibilityStatus(player, visible); - - if(visible) { - AdvancementsPacket packet = new AdvancementsPacket(player, false, Arrays.asList(advancement), null); - packet.send(); - } else { - AdvancementsPacket packet = new AdvancementsPacket(player, false, null, Arrays.asList(advancement.getName())); - packet.send(); - } - } - } + for (Advancement advancement : getAdvancements()) { + boolean visible = advancement.getDisplay().isVisible(player, advancement); + if (advancement.getVisibilityStatus(player) == visible) continue; + advancement.saveVisibilityStatus(player, visible); + + (visible ? new AdvancementsPacket(player, false, Arrays.asList(advancement), null) + : new AdvancementsPacket(player, false, null, Arrays.asList(advancement.getName()))).send(); + } } /** diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java index 7d45bc5..3f50ad0 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java @@ -10,6 +10,7 @@ import eu.endercentral.crazy_advancements.advancement.ToastNotification; import io.papermc.paper.adventure.PaperAdventure; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.ShadowColor; import net.minecraft.advancements.AdvancementRequirements; import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.DisplayInfo; @@ -57,22 +58,23 @@ public static float generateY(NameKey tab, float displayY) { * @return The NMS Advancement */ public static net.minecraft.advancements.Advancement toNmsAdvancement(Advancement advancement) { - AdvancementDisplay display = advancement.getDisplay(); + final AdvancementDisplay display = advancement.getDisplay(); - ItemStack icon = CraftItemStack.asNMSCopy(display.getIcon()); + final ItemStack icon = CraftItemStack.asNMSCopy(display.getIcon()); - Optional backgroundTexture = display.getBackgroundTexture() == null ? Optional.empty() + final Optional backgroundTexture = display.getBackgroundTexture() == null ? Optional.empty() : Optional.of(new ClientAsset(ResourceLocation.parse(display.getBackgroundTexture()))); + + final Optional parent = advancement.isRoot() ? Optional.empty() + : Optional.of(advancement.getParent().getName().getMinecraftKey()); float x = generateX(advancement.getTab(), display.generateX()); float y = generateY(advancement.getTab(), display.generateY()); - final DisplayInfo advDisplay = new DisplayInfo(icon, PaperAdventure.asVanilla(display.title()), PaperAdventure.asVanilla(display.description()), - backgroundTexture, display.getFrame().getNMS(), false, false, advancement.hasFlag(AdvancementFlag.SEND_WITH_HIDDEN_BOOLEAN)); + final DisplayInfo advDisplay = new DisplayInfo(icon, PaperAdventure.asVanilla(advancement.isRoot() ? display.title().shadowColor(ShadowColor + .shadowColor(0, 0, 0, 255)) : display.title()), PaperAdventure.asVanilla(display.description()), backgroundTexture, + display.getFrame().getNMS(), false, false, advancement.hasFlag(AdvancementFlag.SEND_WITH_HIDDEN_BOOLEAN)); advDisplay.setLocation(x, y); - - Optional parent = advancement.getParent() == null - ? Optional.empty() : Optional.of(advancement.getParent().getName().getMinecraftKey()); return new net.minecraft.advancements.Advancement(parent, Optional.of(advDisplay), advancementRewards, advancement.getCriteria().getCriteria(), advancement.getCriteria().getAdvancementRequirements(), false); From 659e3eb859e9074ae7ebadbb3b22329cc962bc0f Mon Sep 17 00:00:00 2001 From: Romindous Date: Tue, 15 Apr 2025 21:20:30 -0400 Subject: [PATCH 03/12] Background Display constructors --- .../advancement/AdvancementDisplay.java | 43 +++++++++++++++++-- .../packet/PacketConverter.java | 5 ++- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/endercentral/crazy_advancements/advancement/AdvancementDisplay.java b/src/main/java/eu/endercentral/crazy_advancements/advancement/AdvancementDisplay.java index 62990e0..5f30f22 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/advancement/AdvancementDisplay.java +++ b/src/main/java/eu/endercentral/crazy_advancements/advancement/AdvancementDisplay.java @@ -3,6 +3,7 @@ import javax.annotation.Nullable; import eu.endercentral.crazy_advancements.CrazyAdvancementsAPI; import eu.endercentral.crazy_advancements.JSONMessage; +import eu.endercentral.crazy_advancements.NameKey; import net.kyori.adventure.text.Component; import net.md_5.bungee.api.chat.TextComponent; import net.minecraft.advancements.AdvancementType; @@ -22,7 +23,7 @@ public class AdvancementDisplay { private Component title, description; private AdvancementFrame frame; private transient AdvancementVisibility vis; - private String backgroundTexture; + private NameKey backgroundTexture; private float x = 0, y = 0; private Advancement positionOrigin; @@ -76,7 +77,7 @@ public AdvancementDisplay(ItemStack icon, JSONMessage title, JSONMessage descrip this.description = description.getAdventure(); // GsonComponentSerializer.gson().deserialize(ComponentSerializer.toString(title.json())); this.frame = frame; - this.backgroundTexture = backgroundTexture; + this.backgroundTexture = new NameKey(backgroundTexture); this.vis = visibility; } @@ -163,6 +164,23 @@ public AdvancementDisplay(ItemStack icon, Component title, Component description * @param visibility When an advancement is visible */ public AdvancementDisplay(ItemStack icon, Component title, Component description, AdvancementFrame frame, String backgroundTexture, AdvancementVisibility visibility) { + this.icon = icon; + this.title = title; + this.description = description; + this.frame = frame; + this.backgroundTexture = new NameKey(backgroundTexture); + this.vis = visibility; + } + + /** + * + * @param icon Icon {@link ItemStack} + * @param title Title {@link Component} + * @param description Description {@link Component} + * @param frame {@link AdvancementFrame} + * @param visibility When an advancement is visible + */ + public AdvancementDisplay(ItemStack icon, Component title, Component description, AdvancementFrame frame, NameKey backgroundTexture, AdvancementVisibility visibility) { this.icon = icon; this.title = title; this.description = description; @@ -296,6 +314,15 @@ public AdvancementFrame getFrame() { */ @Nullable public String getBackgroundTexture() { + return backgroundTexture == null ? null : backgroundTexture.toString(); + } + + /** + * + * @return Background texture path + */ + @Nullable + public NameKey background() { return backgroundTexture; } @@ -304,8 +331,18 @@ public String getBackgroundTexture() { * * @param backgroundTexture Background Texture path */ + @Deprecated public void setBackgroundTexture(@Nullable String backgroundTexture) { - this.backgroundTexture = backgroundTexture; + this.backgroundTexture = backgroundTexture == null ? null : new NameKey(backgroundTexture); + } + + /** + * Sets the background texture + * + * @param background Background Texture path + */ + public void background(@Nullable NameKey background) { + this.backgroundTexture = background; } /** diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java index 3f50ad0..af6b921 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java @@ -62,8 +62,9 @@ public static net.minecraft.advancements.Advancement toNmsAdvancement(Advancemen final ItemStack icon = CraftItemStack.asNMSCopy(display.getIcon()); - final Optional backgroundTexture = display.getBackgroundTexture() == null ? Optional.empty() - : Optional.of(new ClientAsset(ResourceLocation.parse(display.getBackgroundTexture()))); + final NameKey back = display.background(); + final Optional backgroundTexture = back == null + ? Optional.empty() : Optional.of(new ClientAsset(back.getMinecraftKey())); final Optional parent = advancement.isRoot() ? Optional.empty() : Optional.of(advancement.getParent().getName().getMinecraftKey()); From a5f474078d514376ef78f214944d9264fb61253d Mon Sep 17 00:00:00 2001 From: Romindous Date: Thu, 17 Apr 2025 12:57:15 -0400 Subject: [PATCH 04/12] Polishing up + stable Paper release --- build.gradle.kts | 2 +- .../endercentral/crazy_advancements/CrazyAdvancementsAPI.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e1797d4..afbb4d0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,7 +19,7 @@ repositories { } dependencies { - paperweight.paperDevBundle("1.21.5-no-moonrise-SNAPSHOT") + paperweight.paperDevBundle("1.21.5-R0.1-SNAPSHOT") } java { diff --git a/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java b/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java index d96d6e6..679a3ae 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java +++ b/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java @@ -196,7 +196,7 @@ private void loadFileAdvancements() { AdvancementDisplay display = new AdvancementDisplay(icon, title, description, frame, visibility); if(serializedAdvancementDisplay.getBackgroundTexture() != null) { - display.setBackgroundTexture(serializedAdvancementDisplay.getBackgroundTexture()); + display.background(new NameKey(serializedAdvancementDisplay.getBackgroundTexture())); } display.setX(serializedAdvancementDisplay.getX()); From 885e7d31bbb5fb8b10c74e2902c1166d5146e311 Mon Sep 17 00:00:00 2001 From: Romindous Date: Sat, 28 Jun 2025 12:51:11 -0400 Subject: [PATCH 05/12] 1.21.6 it works trust --- build.gradle.kts | 4 +-- gradle/wrapper/gradle-wrapper.properties | 2 +- .../crazy_advancements/JSONMessage.java | 34 ++++++++----------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e1797d4..cb6693e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import net.minecrell.pluginyml.bukkit.BukkitPluginDescription plugins { id("java") id("maven-publish") - id("io.papermc.paperweight.userdev") version "2.0.0-beta.16" + id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" id("net.minecrell.plugin-yml.bukkit") version "0.6.0" } @@ -19,7 +19,7 @@ repositories { } dependencies { - paperweight.paperDevBundle("1.21.5-no-moonrise-SNAPSHOT") + paperweight.paperDevBundle("1.21.6-R0.1-SNAPSHOT") } java { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37f853b..ff23a68 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/eu/endercentral/crazy_advancements/JSONMessage.java b/src/main/java/eu/endercentral/crazy_advancements/JSONMessage.java index 168b7ea..9ba9557 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/JSONMessage.java +++ b/src/main/java/eu/endercentral/crazy_advancements/JSONMessage.java @@ -1,15 +1,11 @@ package eu.endercentral.crazy_advancements; -import java.util.Optional; -import java.util.stream.Stream; +import com.google.gson.Gson; import io.papermc.paper.adventure.PaperAdventure; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.chat.ComponentSerializer; -import net.minecraft.core.HolderLookup.Provider; -import net.minecraft.core.HolderLookup.RegistryLookup; -import net.minecraft.core.Registry; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceKey; import org.jetbrains.annotations.NotNull; /** @@ -20,16 +16,14 @@ @Deprecated public record JSONMessage(BaseComponent json) { - private static final Provider COMPONENT_SERIALIZER_PROVIDER = new TextHolderLookupProvider(); - + private static final Gson GSON = GsonComponentSerializer.gson().serializer(); /** * Constructor for creating a JSON Message * * @param json A JSON representation of an ingame Message Read More */ - public JSONMessage { - } + public JSONMessage {} /** * Gets the Message as a BaseComponent @@ -41,17 +35,19 @@ public BaseComponent json() { return json; } + /*public Component getBaseComponent() { + return PaperAdventure.asAdventureFromJson(ComponentSerializer.toString(json)); + }*/ + /** * Gets an NMS representation of an ingame Message * * @return An {@link Component} representation of an ingame Message */ - public Component getBaseComponent() { - return Component.Serializer.fromJson(ComponentSerializer.toString(json), COMPONENT_SERIALIZER_PROVIDER); - } - - public @NotNull net.kyori.adventure.text.Component getAdventure() { - return PaperAdventure.asAdventure(getBaseComponent()); + public @NotNull Component getAdventure() { + return PaperAdventure.asAdventure(GSON + .fromJson(ComponentSerializer.toString(json), + net.minecraft.network.chat.Component.class)); } @Override @@ -60,7 +56,7 @@ public String toString() { } - private static class TextHolderLookupProvider implements Provider { + /*private static class TextHolderLookupProvider implements Provider { @Override public Stream>> listRegistryKeys() { @@ -72,6 +68,6 @@ public Optional> lookup(ResourceKey Date: Sat, 28 Jun 2025 13:00:58 -0400 Subject: [PATCH 06/12] 1.21.6 it works trust --- .../serialized/message/SerializedMessage.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/endercentral/crazy_advancements/advancement/serialized/message/SerializedMessage.java b/src/main/java/eu/endercentral/crazy_advancements/advancement/serialized/message/SerializedMessage.java index 046af41..b89a282 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/advancement/serialized/message/SerializedMessage.java +++ b/src/main/java/eu/endercentral/crazy_advancements/advancement/serialized/message/SerializedMessage.java @@ -101,8 +101,14 @@ public Component deserial() { } if (getClickEvent() != null) { - message = message.clickEvent(net.kyori.adventure.text.event.ClickEvent.clickEvent(net.kyori.adventure.text.event.ClickEvent.Action - .valueOf(getClickEvent().getAction().toUpperCase(Locale.ROOT)), getClickEvent().getValue())); + switch (net.kyori.adventure.text.event.ClickEvent.Action + .valueOf(getClickEvent().getAction().toUpperCase(Locale.ROOT))) { + case OPEN_URL -> net.kyori.adventure.text.event.ClickEvent.openUrl(getClickEvent().getValue()); + case OPEN_FILE -> net.kyori.adventure.text.event.ClickEvent.openFile(getClickEvent().getValue()); + case RUN_COMMAND -> net.kyori.adventure.text.event.ClickEvent.runCommand(getClickEvent().getValue()); + case SUGGEST_COMMAND -> net.kyori.adventure.text.event.ClickEvent.suggestCommand(getClickEvent().getValue()); + case COPY_TO_CLIPBOARD -> net.kyori.adventure.text.event.ClickEvent.copyToClipboard(getClickEvent().getValue()); + } } if (getExtra() != null) { From 160f6dcf9dada515d04fa5aedaf7a89cdb166fea Mon Sep 17 00:00:00 2001 From: Romindous Date: Mon, 30 Jun 2025 12:46:11 -0400 Subject: [PATCH 07/12] 1.21.7 it works trust --- build.gradle.kts | 6 +++--- .../java/eu/endercentral/crazy_advancements/NameKey.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index cb6693e..f1663b6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "eu.endercentral.crazy_advancements" -version = "2.21.5" +version = "2.21.7" repositories { mavenCentral() @@ -19,7 +19,7 @@ repositories { } dependencies { - paperweight.paperDevBundle("1.21.6-R0.1-SNAPSHOT") + paperweight.paperDevBundle("1.21.7-R0.1-SNAPSHOT") } java { @@ -52,7 +52,7 @@ publishing { bukkit { main = "eu.endercentral.crazy_advancements.CrazyAdvancementsAPI" author = "ZockerAxel" - apiVersion = "1.21.5" // Should be always same as dev bundle version + apiVersion = "1.21.7" // Should be always same as dev bundle version load = BukkitPluginDescription.PluginLoadOrder.STARTUP commands { diff --git a/src/main/java/eu/endercentral/crazy_advancements/NameKey.java b/src/main/java/eu/endercentral/crazy_advancements/NameKey.java index 40b0423..8117ed6 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/NameKey.java +++ b/src/main/java/eu/endercentral/crazy_advancements/NameKey.java @@ -94,7 +94,7 @@ public ResourceLocation getMinecraftKey() { @Override public boolean equals(Object obj) { - return isSimilar((NameKey) obj); + return obj instanceof final NameKey nk && isSimilar(nk); } @Override From b5d9966d2f34b5fa62a7c7c156437d9c3079e691 Mon Sep 17 00:00:00 2001 From: Romindous Date: Thu, 14 Aug 2025 14:27:10 -0400 Subject: [PATCH 08/12] 1.21.8 Update --- build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f1663b6..4707573 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import net.minecrell.pluginyml.bukkit.BukkitPluginDescription plugins { id("java") id("maven-publish") - id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" + id("io.papermc.paperweight.userdev") version "2.0.0-beta.18" id("net.minecrell.plugin-yml.bukkit") version "0.6.0" } @@ -19,7 +19,7 @@ repositories { } dependencies { - paperweight.paperDevBundle("1.21.7-R0.1-SNAPSHOT") + paperweight.paperDevBundle("1.21.8-R0.1-SNAPSHOT") } java { @@ -52,7 +52,7 @@ publishing { bukkit { main = "eu.endercentral.crazy_advancements.CrazyAdvancementsAPI" author = "ZockerAxel" - apiVersion = "1.21.7" // Should be always same as dev bundle version + apiVersion = "1.21.8" // Should be always same as dev bundle version load = BukkitPluginDescription.PluginLoadOrder.STARTUP commands { From 11c41aff1a2af2b143456ce2610baf5cc7d6c3a9 Mon Sep 17 00:00:00 2001 From: Romindous Date: Thu, 14 Aug 2025 14:28:50 -0400 Subject: [PATCH 09/12] 1.21.8 Update --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 4707573..eb97d9f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "eu.endercentral.crazy_advancements" -version = "2.21.7" +version = "2.21.8" repositories { mavenCentral() From d0bdb6592162b2ef5fa4680d1ba98eb61a17a6f4 Mon Sep 17 00:00:00 2001 From: Romindous Date: Wed, 1 Oct 2025 22:40:20 -0400 Subject: [PATCH 10/12] 1.21.9 Update --- build.gradle.kts | 8 ++++---- gradle/wrapper/gradle-wrapper.properties | 2 +- .../crazy_advancements/packet/PacketConverter.java | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index eb97d9f..27d3fc1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,12 +3,12 @@ import net.minecrell.pluginyml.bukkit.BukkitPluginDescription plugins { id("java") id("maven-publish") - id("io.papermc.paperweight.userdev") version "2.0.0-beta.18" + id("io.papermc.paperweight.userdev") version "2.0.0-beta.19" id("net.minecrell.plugin-yml.bukkit") version "0.6.0" } group = "eu.endercentral.crazy_advancements" -version = "2.21.8" +version = "2.21.9" repositories { mavenCentral() @@ -19,7 +19,7 @@ repositories { } dependencies { - paperweight.paperDevBundle("1.21.8-R0.1-SNAPSHOT") + paperweight.paperDevBundle("1.21.9-R0.1-SNAPSHOT") } java { @@ -52,7 +52,7 @@ publishing { bukkit { main = "eu.endercentral.crazy_advancements.CrazyAdvancementsAPI" author = "ZockerAxel" - apiVersion = "1.21.8" // Should be always same as dev bundle version + apiVersion = "1.21.9" // Should be always same as dev bundle version load = BukkitPluginDescription.PluginLoadOrder.STARTUP commands { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ff23a68..2e11132 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java index af6b921..abb285b 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java @@ -63,8 +63,8 @@ public static net.minecraft.advancements.Advancement toNmsAdvancement(Advancemen final ItemStack icon = CraftItemStack.asNMSCopy(display.getIcon()); final NameKey back = display.background(); - final Optional backgroundTexture = back == null - ? Optional.empty() : Optional.of(new ClientAsset(back.getMinecraftKey())); + final Optional backgroundTexture = back == null + ? Optional.empty() : Optional.of(new ClientAsset.ResourceTexture(back.getMinecraftKey())); final Optional parent = advancement.isRoot() ? Optional.empty() : Optional.of(advancement.getParent().getName().getMinecraftKey()); From a0146df35f4015bbaba3831a3b58e336d9d013b9 Mon Sep 17 00:00:00 2001 From: Romindous Date: Tue, 28 Oct 2025 03:03:48 -0400 Subject: [PATCH 11/12] 1.21.10 Update --- build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 27d3fc1..e72e7ab 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "eu.endercentral.crazy_advancements" -version = "2.21.9" +version = "2.21.10" repositories { mavenCentral() @@ -19,7 +19,7 @@ repositories { } dependencies { - paperweight.paperDevBundle("1.21.9-R0.1-SNAPSHOT") + paperweight.paperDevBundle("1.21.10-R0.1-SNAPSHOT") } java { @@ -52,7 +52,7 @@ publishing { bukkit { main = "eu.endercentral.crazy_advancements.CrazyAdvancementsAPI" author = "ZockerAxel" - apiVersion = "1.21.9" // Should be always same as dev bundle version + apiVersion = "1.21.10" // Should be always same as dev bundle version load = BukkitPluginDescription.PluginLoadOrder.STARTUP commands { From 61624fa0b1eb6e9d389f9302caf7e47d681ece20 Mon Sep 17 00:00:00 2001 From: Romindous Date: Fri, 26 Dec 2025 19:59:08 -0500 Subject: [PATCH 12/12] 1.21.11 update --- build.gradle.kts | 6 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- .../crazy_advancements/CrazyAdvancementsAPI.java | 2 +- .../eu/endercentral/crazy_advancements/NameKey.java | 12 ++++++------ .../packet/AdvancementsPacket.java | 6 +++--- .../crazy_advancements/packet/PacketConverter.java | 4 ++-- .../crazy_advancements/packet/ToastPacket.java | 6 +++--- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e72e7ab..e3b6b2f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "eu.endercentral.crazy_advancements" -version = "2.21.10" +version = "2.21.11" repositories { mavenCentral() @@ -19,7 +19,7 @@ repositories { } dependencies { - paperweight.paperDevBundle("1.21.10-R0.1-SNAPSHOT") + paperweight.paperDevBundle("1.21.11-R0.1-SNAPSHOT") } java { @@ -52,7 +52,7 @@ publishing { bukkit { main = "eu.endercentral.crazy_advancements.CrazyAdvancementsAPI" author = "ZockerAxel" - apiVersion = "1.21.10" // Should be always same as dev bundle version + apiVersion = "1.21.11" // Should be always same as dev bundle version load = BukkitPluginDescription.PluginLoadOrder.STARTUP commands { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2e11132..bad7c24 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java b/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java index 679a3ae..12bd735 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java +++ b/src/main/java/eu/endercentral/crazy_advancements/CrazyAdvancementsAPI.java @@ -21,7 +21,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.minecraft.advancements.Criterion; -import net.minecraft.advancements.critereon.ImpossibleTrigger; +import net.minecraft.advancements.criterion.ImpossibleTrigger; import net.minecraft.network.protocol.game.ClientboundSelectAdvancementsTabPacket; import org.bukkit.Bukkit; import org.bukkit.Material; diff --git a/src/main/java/eu/endercentral/crazy_advancements/NameKey.java b/src/main/java/eu/endercentral/crazy_advancements/NameKey.java index 8117ed6..ea50534 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/NameKey.java +++ b/src/main/java/eu/endercentral/crazy_advancements/NameKey.java @@ -2,7 +2,7 @@ import java.util.Objects; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * Represents a Unique Name @@ -15,7 +15,7 @@ public class NameKey { private final String namespace; private final String key; - private transient ResourceLocation mcKey; + private transient Identifier mcKey; /** * Constructor for creating a NameKey @@ -49,7 +49,7 @@ public NameKey(String key) { * * @param from The MinecraftKey to generate from */ - public NameKey(ResourceLocation from) { + public NameKey(Identifier from) { this.namespace = from.getNamespace().toLowerCase(); this.key = from.getPath().toLowerCase(); } @@ -85,10 +85,10 @@ public boolean isSimilar(NameKey anotherNameKey) { /** * Gets the MinecraftKey equivalent of this NameKey * - * @return A {@link ResourceLocation} representation of this NameKey + * @return A {@link Identifier} representation of this NameKey */ - public ResourceLocation getMinecraftKey() { - if(mcKey == null) mcKey = ResourceLocation.fromNamespaceAndPath(namespace, key); + public Identifier getMinecraftKey() { + if(mcKey == null) mcKey = Identifier.fromNamespaceAndPath(namespace, key); return mcKey; } diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java b/src/main/java/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java index aaf6776..ba64eac 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/AdvancementsPacket.java @@ -15,7 +15,7 @@ import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.AdvancementProgress; import net.minecraft.network.protocol.game.ClientboundUpdateAdvancementsPacket; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * Represents an Advancements Packet @@ -89,8 +89,8 @@ public List getRemovedAdvancements() { public ClientboundUpdateAdvancementsPacket build() { //Create Lists List advancements = new ArrayList<>(); - Set removedAdvancements = new HashSet<>(); - Map progress = new HashMap<>(); + Set removedAdvancements = new HashSet<>(); + Map progress = new HashMap<>(); //Populate Lists for(Advancement advancement : this.advancements) { diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java index abb285b..4f7c3c5 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/PacketConverter.java @@ -15,7 +15,7 @@ import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.DisplayInfo; import net.minecraft.core.ClientAsset; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import net.minecraft.world.item.ItemStack; import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -66,7 +66,7 @@ public static net.minecraft.advancements.Advancement toNmsAdvancement(Advancemen final Optional backgroundTexture = back == null ? Optional.empty() : Optional.of(new ClientAsset.ResourceTexture(back.getMinecraftKey())); - final Optional parent = advancement.isRoot() ? Optional.empty() + final Optional parent = advancement.isRoot() ? Optional.empty() : Optional.of(advancement.getParent().getName().getMinecraftKey()); float x = generateX(advancement.getTab(), display.generateX()); diff --git a/src/main/java/eu/endercentral/crazy_advancements/packet/ToastPacket.java b/src/main/java/eu/endercentral/crazy_advancements/packet/ToastPacket.java index 32ac523..b5fe24d 100644 --- a/src/main/java/eu/endercentral/crazy_advancements/packet/ToastPacket.java +++ b/src/main/java/eu/endercentral/crazy_advancements/packet/ToastPacket.java @@ -14,7 +14,7 @@ import net.minecraft.advancements.AdvancementHolder; import net.minecraft.advancements.AdvancementProgress; import net.minecraft.network.protocol.game.ClientboundUpdateAdvancementsPacket; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; /** * Represents an Advancements Packet for Toast Notifications @@ -71,8 +71,8 @@ public ToastNotification notification() { public ClientboundUpdateAdvancementsPacket build() { //Create Lists List advancements = new ArrayList<>(); - Set removedAdvancements = new HashSet<>(); - Map progress = new HashMap<>(); + Set removedAdvancements = new HashSet<>(); + Map progress = new HashMap<>(); //Populate Lists if (add) {