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:
@@ -1,7 +1,12 @@
|
|||||||
package me.lojosho.hibiscuscommons.nms;
|
package me.lojosho.hibiscuscommons.nms;
|
||||||
|
|
||||||
|
import org.bukkit.Color;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public interface NMSUtils {
|
public interface NMSUtils {
|
||||||
|
|
||||||
@@ -9,4 +14,9 @@ public interface NMSUtils {
|
|||||||
|
|
||||||
Entity getEntity(int entityId);
|
Entity getEntity(int entityId);
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
Color getColor(ItemStack itemStack);
|
||||||
|
|
||||||
|
ItemStack setColor(@NotNull ItemStack itemStack, Color color);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,13 @@ package me.lojosho.hibiscuscommons.nms.v1_20_R3;
|
|||||||
|
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.craftbukkit.v1_20_R3.CraftServer;
|
import org.bukkit.craftbukkit.v1_20_R3.CraftServer;
|
||||||
|
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 {
|
public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSUtils {
|
||||||
|
|
||||||
@@ -18,6 +24,51 @@ public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nm
|
|||||||
return entity.getBukkitEntity();
|
return entity.getBukkitEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable Color getColor(ItemStack itemStack) {
|
||||||
|
if (itemStack == null) return null;
|
||||||
|
ItemMeta meta = itemStack.getItemMeta();
|
||||||
|
if (meta == null) return null;
|
||||||
|
|
||||||
|
Color color = null;
|
||||||
|
switch (meta) {
|
||||||
|
case LeatherArmorMeta leatherMeta -> color = leatherMeta.getColor();
|
||||||
|
case PotionMeta potionMeta -> color = potionMeta.getColor();
|
||||||
|
case MapMeta mapMeta -> color = mapMeta.getColor();
|
||||||
|
case FireworkEffectMeta fireworkEffectMeta -> {
|
||||||
|
FireworkEffect effect = fireworkEffectMeta.getEffect();
|
||||||
|
if (effect != null) {
|
||||||
|
color = effect.getColors().stream().findFirst().isPresent() ? effect.getColors().stream().findFirst().get() : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default -> {}
|
||||||
|
}
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack setColor(@NotNull ItemStack itemStack, Color color) {
|
||||||
|
ItemMeta meta = itemStack.getItemMeta();
|
||||||
|
switch (meta) {
|
||||||
|
case LeatherArmorMeta leatherMeta -> leatherMeta.setColor(color);
|
||||||
|
case PotionMeta potionMeta -> potionMeta.setColor(color);
|
||||||
|
case MapMeta mapMeta -> mapMeta.setColor(color);
|
||||||
|
case FireworkEffectMeta fireworkMeta -> fireworkMeta.setEffect(
|
||||||
|
FireworkEffect.builder()
|
||||||
|
.with(FireworkEffect.Type.BALL)
|
||||||
|
.withColor(color)
|
||||||
|
.trail(false)
|
||||||
|
.flicker(false)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
case null, default -> {}
|
||||||
|
}
|
||||||
|
|
||||||
|
itemStack.setItemMeta(meta);
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
|
||||||
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
|
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
|
||||||
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
||||||
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
package me.lojosho.hibiscuscommons.nms.v1_20_R4;
|
package me.lojosho.hibiscuscommons.nms.v1_20_R4;
|
||||||
|
|
||||||
|
import net.minecraft.core.component.DataComponents;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.world.item.component.DyedItemColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
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 {
|
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();
|
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) {
|
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
|
||||||
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
||||||
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
package me.lojosho.hibiscuscommons.nms.v1_21_R1;
|
package me.lojosho.hibiscuscommons.nms.v1_21_R1;
|
||||||
|
|
||||||
|
import net.minecraft.core.component.DataComponents;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.world.item.component.DyedItemColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
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 {
|
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();
|
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) {
|
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
|
||||||
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
||||||
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
package me.lojosho.hibiscuscommons.nms.v1_21_R2;
|
package me.lojosho.hibiscuscommons.nms.v1_21_R2;
|
||||||
|
|
||||||
|
import net.minecraft.core.component.DataComponents;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.world.item.component.DyedItemColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
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 {
|
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();
|
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) {
|
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
|
||||||
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
||||||
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
package me.lojosho.hibiscuscommons.nms.v1_21_R3;
|
package me.lojosho.hibiscuscommons.nms.v1_21_R3;
|
||||||
|
|
||||||
|
import net.minecraft.core.component.DataComponents;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.world.item.component.DyedItemColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
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 {
|
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();
|
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) {
|
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
|
||||||
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
||||||
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
package me.lojosho.hibiscuscommons.nms.v1_21_R4;
|
package me.lojosho.hibiscuscommons.nms.v1_21_R4;
|
||||||
|
|
||||||
|
import net.minecraft.core.component.DataComponents;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.world.item.component.DyedItemColor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Color;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSUtils {
|
public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSUtils {
|
||||||
|
|
||||||
@@ -18,6 +25,24 @@ public class NMSUtils extends NMSCommon implements me.lojosho.hibiscuscommons.nm
|
|||||||
return entity.getBukkitEntity();
|
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);
|
||||||
|
nmsStack.set(DataComponents.DYED_COLOR, new DyedItemColor(color.asRGB()));
|
||||||
|
return CraftItemStack.asBukkitCopy(nmsStack);
|
||||||
|
}
|
||||||
|
|
||||||
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
|
private net.minecraft.world.entity.Entity getNMSEntity(int entityId) {
|
||||||
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
for (ServerLevel world : ((CraftServer) Bukkit.getServer()).getHandle().getServer().getAllLevels()) {
|
||||||
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
net.minecraft.world.entity.Entity entity = world.getEntity(entityId);
|
||||||
|
|||||||
Reference in New Issue
Block a user