9
0
mirror of https://github.com/HibiscusMC/HibiscusCommons.git synced 2025-12-19 15:09:26 +00:00

feat: add nms-methods for getting color of item

This commit is contained in:
Boy0000
2025-05-09 15:12:08 +02:00
parent 111d323b70
commit 7ef40c1f0f
7 changed files with 198 additions and 0 deletions

View File

@@ -1,8 +1,17 @@
package me.lojosho.hibiscuscommons.nms.v1_21_R2;
import net.minecraft.core.component.DataComponents;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.item.component.DyedItemColor;
import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSUtils {
@@ -18,6 +27,25 @@ public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nm
return entity.getBukkitEntity();
}
@Override
public @Nullable Color getColor(ItemStack itemStack) {
if (itemStack == null) return null;
net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(itemStack);
if (nmsItem == null) return null;
DyedItemColor color = nmsItem.get(DataComponents.DYED_COLOR);
if (color == null) return null;
return Color.fromRGB(color.rgb());
}
@Override
public ItemStack setColor(@NotNull ItemStack itemStack, Color color) {
net.minecraft.world.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack);
boolean tooltip = !nmsStack.has(DataComponents.DYED_COLOR) || nmsStack.get(DataComponents.DYED_COLOR).showInTooltip();
nmsStack.set(DataComponents.DYED_COLOR, new DyedItemColor(color.asRGB(), tooltip));
return CraftItemStack.asBukkitCopy(nmsStack);
}
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);