From 24a51684baafff059c4fb0440af4ec17c3e32dde Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Wed, 2 Jul 2025 12:10:36 -0500 Subject: [PATCH] fix: potions not having POTION_CONTENTS to set color --- .../hibiscuscommons/nms/v1_21_R5/NMSUtils.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/v1_21_R5/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R5/NMSUtils.java b/v1_21_R5/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R5/NMSUtils.java index ac20859..17421ba 100644 --- a/v1_21_R5/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R5/NMSUtils.java +++ b/v1_21_R5/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R5/NMSUtils.java @@ -5,17 +5,23 @@ import io.netty.channel.ChannelPipeline; import net.minecraft.core.component.DataComponents; import net.minecraft.network.Connection; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.item.alchemy.PotionContents; import net.minecraft.world.item.component.DyedItemColor; import org.bukkit.Bukkit; import org.bukkit.Color; +import org.bukkit.Material; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.inventory.CraftItemStack; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.PotionMeta; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; +import java.util.Optional; + public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSUtils { @Override @@ -42,8 +48,17 @@ public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nm } @Override - public ItemStack setColor(@NotNull ItemStack itemStack, Color color) { + public ItemStack setColor(@NotNull ItemStack itemStack, @NotNull Color color) { net.minecraft.world.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack); + // Potions needs a bit extra to get the color working properly + if (itemStack.getType() == Material.POTION) { + nmsStack.set(DataComponents.POTION_CONTENTS, new PotionContents( + Optional.empty(), + Optional.of(color.asRGB()), + List.of(), + Optional.empty()) + ); + } nmsStack.set(DataComponents.DYED_COLOR, new DyedItemColor(color.asRGB())); return CraftItemStack.asBukkitCopy(nmsStack); }