mirror of
https://github.com/Minestom/Minestom.git
synced 2025-03-02 11:21:15 +01:00
Support item stacking, cleanup
This commit is contained in:
parent
22be400fb3
commit
7dcc52de57
@ -84,13 +84,27 @@ public class ItemMeta implements Cloneable {
|
||||
return customModelData;
|
||||
}
|
||||
|
||||
public NBTCompound toNBT() {
|
||||
public @NotNull NBTCompound toNBT() {
|
||||
if (cache == null) {
|
||||
this.cache = NBTUtils.metaToNBT(this);
|
||||
}
|
||||
return cache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
ItemMeta itemMeta = (ItemMeta) o;
|
||||
return toNBT().equals(itemMeta.toNBT());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return toNBT().hashCode();
|
||||
}
|
||||
|
||||
protected @NotNull ItemMetaBuilder builder() {
|
||||
return builder.clone();
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import java.util.function.UnaryOperator;
|
||||
|
||||
public class ItemStack {
|
||||
|
||||
public static final ItemStack AIR = ItemStack.builder(Material.AIR).build();
|
||||
public static final ItemStack AIR = ItemStack.of(Material.AIR);
|
||||
|
||||
private final UUID uuid = UUID.randomUUID();
|
||||
private final StackingRule stackingRule = new VanillaStackingRule(64);
|
||||
@ -34,7 +34,7 @@ public class ItemStack {
|
||||
return new ItemBuilder(material);
|
||||
}
|
||||
|
||||
@Contract(value = "_ -> new", pure = true)
|
||||
@Contract(value = "_ ,_ -> new", pure = true)
|
||||
public static @NotNull ItemStack of(@NotNull Material material, int amount) {
|
||||
return builder(material).amount(amount).build();
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ import net.minestom.server.utils.chunk.ChunkUtils;
|
||||
import net.minestom.server.world.biomes.Biome;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBT;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTCompound;
|
||||
import org.jglrxavpok.hephaistos.nbt.NBTException;
|
||||
|
||||
|
@ -6,15 +6,11 @@ import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import net.kyori.adventure.util.Codec;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.adventure.AdventureSerializer;
|
||||
import net.minestom.server.attribute.Attribute;
|
||||
import net.minestom.server.attribute.AttributeOperation;
|
||||
import net.minestom.server.data.Data;
|
||||
import net.minestom.server.inventory.Inventory;
|
||||
import net.minestom.server.item.Enchantment;
|
||||
import net.minestom.server.item.ItemMeta;
|
||||
import net.minestom.server.item.ItemStack;
|
||||
import net.minestom.server.item.Material;
|
||||
import net.minestom.server.item.attribute.AttributeSlot;
|
||||
import net.minestom.server.item.attribute.ItemAttribute;
|
||||
import net.minestom.server.registry.Registries;
|
||||
import net.minestom.server.utils.binary.BinaryReader;
|
||||
@ -28,8 +24,6 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
@ -286,7 +280,7 @@ public final class NBTUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static NBTCompound metaToNBT(@NotNull ItemMeta itemMeta) {
|
||||
public static @NotNull NBTCompound metaToNBT(@NotNull ItemMeta itemMeta) {
|
||||
final NBTCompound itemNBT = new NBTCompound();
|
||||
|
||||
// Unbreakable
|
||||
@ -302,7 +296,7 @@ public final class NBTUtils {
|
||||
}
|
||||
}
|
||||
|
||||
// Display
|
||||
// Start display
|
||||
{
|
||||
final var displayName = itemMeta.getDisplayName();
|
||||
final var lore = itemMeta.getLore();
|
||||
@ -326,14 +320,16 @@ public final class NBTUtils {
|
||||
itemNBT.set("display", displayNBT);
|
||||
}
|
||||
}
|
||||
// End display
|
||||
|
||||
// Enchantment
|
||||
// Start enchantment
|
||||
{
|
||||
final var enchantmentMap = itemMeta.getEnchantmentMap();
|
||||
if (!enchantmentMap.isEmpty()) {
|
||||
NBTUtils.writeEnchant(itemNBT, "Enchantments", enchantmentMap);
|
||||
}
|
||||
}
|
||||
// End enchantment
|
||||
|
||||
// Start attribute
|
||||
{
|
||||
@ -358,14 +354,14 @@ public final class NBTUtils {
|
||||
}
|
||||
// End attribute
|
||||
|
||||
// Start hide flags
|
||||
// Start hide flag
|
||||
{
|
||||
final int hideFlag = itemMeta.getHideFlag();
|
||||
if (hideFlag != 0) {
|
||||
itemNBT.setInt("HideFlags", hideFlag);
|
||||
}
|
||||
}
|
||||
// End hide flags
|
||||
// End hide flag
|
||||
|
||||
// Start custom model data
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user