Fix components

This commit is contained in:
Navoei
2025-05-24 20:48:25 -05:00
parent 8283c53e56
commit e9e276aa85
4 changed files with 23 additions and 22 deletions

View File

@@ -1,5 +1,7 @@
package me.Navoei.customdiscsplugin;
import io.papermc.paper.datacomponent.DataComponentTypes;
import io.papermc.paper.datacomponent.item.TooltipDisplay;
import me.Navoei.customdiscsplugin.language.Lang;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
@@ -24,6 +26,8 @@ import org.bukkit.persistence.PersistentDataType;
import java.nio.file.Path;
import java.util.Objects;
import java.util.Optional;
import org.bukkit.entity.minecart.HopperMinecart;
import org.bukkit.inventory.InventoryHolder;
@@ -58,14 +62,12 @@ public class HopperManager implements Listener {
NamespacedKey customSoundRangeKey = new NamespacedKey(customDiscs, "range");
if(persistentDataContainer.has(customSoundRangeKey, PersistentDataType.FLOAT)) {
range = Math.min(persistentDataContainer.get(customSoundRangeKey, PersistentDataType.FLOAT), CustomDiscs.getInstance().musicDiscMaxDistance);
float soundRange = Optional.ofNullable(persistentDataContainer.get(customSoundRangeKey, PersistentDataType.FLOAT)).orElse(0f);
range = Math.min(soundRange, CustomDiscs.getInstance().musicDiscMaxDistance);
}
if (discMeta.getJukeboxPlayable().isShowInTooltip()) {
JukeboxPlayableComponent jpc = discMeta.getJukeboxPlayable();
jpc.setShowInTooltip(false);
discMeta.setJukeboxPlayable(jpc);
event.getItem().setItemMeta(discMeta);
if (!event.getItem().hasData(DataComponentTypes.TOOLTIP_DISPLAY) || !event.getItem().getData(DataComponentTypes.TOOLTIP_DISPLAY).hiddenComponents().contains(DataComponentTypes.JUKEBOX_PLAYABLE)) {
event.getItem().setData(DataComponentTypes.TOOLTIP_DISPLAY, TooltipDisplay.tooltipDisplay().addHiddenComponents(DataComponentTypes.JUKEBOX_PLAYABLE).build());
}
Path soundFilePath = Path.of(customDiscs.getDataFolder().getPath(), "musicdata", soundFileName);

View File

@@ -5,6 +5,8 @@ import dev.jorel.commandapi.arguments.ArgumentSuggestions;
import dev.jorel.commandapi.arguments.StringArgument;
import dev.jorel.commandapi.arguments.TextArgument;
import dev.jorel.commandapi.executors.CommandArguments;
import io.papermc.paper.datacomponent.DataComponentTypes;
import io.papermc.paper.datacomponent.item.TooltipDisplay;
import me.Navoei.customdiscsplugin.CustomDiscs;
import me.Navoei.customdiscsplugin.language.Lang;
import net.kyori.adventure.text.Component;
@@ -17,7 +19,6 @@ import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.components.JukeboxPlayableComponent;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
@@ -94,16 +95,13 @@ public class CreateSubCommand extends CommandAPICommand {
String song_name = Objects.requireNonNull(arguments.getByClass("song_name", String.class));
ItemStack disc = new ItemStack(player.getInventory().getItemInMainHand());
disc.setData(DataComponentTypes.TOOLTIP_DISPLAY, TooltipDisplay.tooltipDisplay().addHiddenComponents(DataComponentTypes.JUKEBOX_PLAYABLE).build());
ItemMeta meta = disc.getItemMeta();
@Nullable List<Component> itemLore = new ArrayList<>();
final TextComponent customLoreSong = Component.text().decoration(TextDecoration.ITALIC, false).content(song_name).color(NamedTextColor.GRAY).build();
itemLore.add(customLoreSong);
meta.lore(itemLore);
JukeboxPlayableComponent jpc = meta.getJukeboxPlayable();
jpc.setShowInTooltip(false);
meta.setJukeboxPlayable(jpc);
PersistentDataContainer data = meta.getPersistentDataContainer();
data.set(new NamespacedKey(this.plugin, "customdisc"), PersistentDataType.STRING, filename);
player.getInventory().getItemInMainHand().setItemMeta(meta);

View File

@@ -1,5 +1,7 @@
package me.Navoei.customdiscsplugin.event;
import io.papermc.paper.datacomponent.DataComponentTypes;
import io.papermc.paper.datacomponent.item.TooltipDisplay;
import me.Navoei.customdiscsplugin.CustomDiscs;
import me.Navoei.customdiscsplugin.PlayerManager;
import me.Navoei.customdiscsplugin.VoicePlugin;
@@ -30,6 +32,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Objects;
import java.util.Optional;
public class JukeBox implements Listener{
@@ -51,19 +54,17 @@ public class JukeBox implements Listener{
ItemMeta discMeta = event.getItem().getItemMeta();
String soundFileName = discMeta.getPersistentDataContainer().get(new NamespacedKey(customDiscs, "customdisc"), PersistentDataType.STRING);
PersistentDataContainer persistentDataContainer = event.getItem().getItemMeta().getPersistentDataContainer();
PersistentDataContainer persistentDataContainer = discMeta.getPersistentDataContainer();
float range = CustomDiscs.getInstance().musicDiscDistance;
NamespacedKey customSoundRangeKey = new NamespacedKey(customDiscs, "range");
if(persistentDataContainer.has(customSoundRangeKey, PersistentDataType.FLOAT)) {
range = Math.min(persistentDataContainer.get(customSoundRangeKey, PersistentDataType.FLOAT), CustomDiscs.getInstance().musicDiscMaxDistance);
float soundRange = Optional.ofNullable(persistentDataContainer.get(customSoundRangeKey, PersistentDataType.FLOAT)).orElse(0f);
range = Math.min(soundRange, CustomDiscs.getInstance().musicDiscMaxDistance);
}
if (discMeta.getJukeboxPlayable().isShowInTooltip()) {
JukeboxPlayableComponent jpc = discMeta.getJukeboxPlayable();
jpc.setShowInTooltip(false);
discMeta.setJukeboxPlayable(jpc);
event.getItem().setItemMeta(discMeta);
if (!event.getItem().hasData(DataComponentTypes.TOOLTIP_DISPLAY) || !event.getItem().getData(DataComponentTypes.TOOLTIP_DISPLAY).hiddenComponents().contains(DataComponentTypes.JUKEBOX_PLAYABLE)) {
event.getItem().setData(DataComponentTypes.TOOLTIP_DISPLAY, TooltipDisplay.tooltipDisplay().addHiddenComponents(DataComponentTypes.JUKEBOX_PLAYABLE).build());
Component textComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.PREFIX + Lang.DISC_CONVERTED.toString());
player.sendMessage(textComponent);
}
@@ -71,7 +72,7 @@ public class JukeBox implements Listener{
Path soundFilePath = Path.of(customDiscs.getDataFolder().getPath(), "musicdata", soundFileName);
if (soundFilePath.toFile().exists()) {
Component songNameComponent = Objects.requireNonNull(event.getItem().getItemMeta().lore()).get(0).asComponent();
Component songNameComponent = Objects.requireNonNull(discMeta.lore()).get(0).asComponent();
String songName = PlainTextComponentSerializer.plainText().serialize(songNameComponent);
Component customActionBarSongPlaying = LegacyComponentSerializer.legacyAmpersand().deserialize(Lang.NOW_PLAYING.toString().replace("%song_name%", songName));

View File

@@ -14,6 +14,6 @@ successful-download: "&aFile successfully downloaded to &7%file_path%&a."
create-disc: "&aCreate a disc by doing &7/cd create %filename% \"Custom Lore\"&a."
download-error: "&cAn error has occurred while downloading."
now-playing: "&6Now playing: %song_name%"
disc-converted: "&aConverted disc to new format! &fThis is due to changes in newer Minecraft versions which introduced &7JukeboxPlayableComponent&f."
disc-converted: "&aConverted disc to new format! &fThis is due to changes in newer Minecraft versions which introduced &7ToolTipDisplay&f."
invalid-range: "&cYou need to chose a range between 1 and %range_value%"
create-custom-range: "&7Your range is set to: &a\"%custom_range%\"."