From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: tr7zw Date: Thu, 2 Apr 2020 18:49:56 +0200 Subject: [PATCH] Add NBT-API as first-class lib diff --git a/pom.xml b/pom.xml index 1d705769fb9d7764c1b9e4a16e791cd7764dcc50..897f536837bd33e25c7a1a0f7a2c6bc8575291c9 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,11 @@ mojang https://libraries.minecraft.net/ + + + codemc-repo + https://repo.codemc.org/repository/maven-public/ + @@ -157,6 +162,11 @@ asm-commons 8.0.1 + + de.tr7zw + item-nbt-api + 2.4.1 + @@ -232,6 +242,12 @@ ${project.build.directory}/dependency-reduced-pom.xml true + + + de.tr7zw.changeme.nbtapi + de.tr7zw.nbtapi + + diff --git a/src/main/java/org/bukkit/block/TileState.java b/src/main/java/org/bukkit/block/TileState.java index 3b10fcc13893403b29f0260b8605144679e89b82..acb13596874191f9356a25befa49af73dab3dc58 100644 --- a/src/main/java/org/bukkit/block/TileState.java +++ b/src/main/java/org/bukkit/block/TileState.java @@ -4,6 +4,8 @@ import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataHolder; import org.jetbrains.annotations.NotNull; +import de.tr7zw.changeme.nbtapi.NBTTileEntity; + /** * Represents a block state that also hosts a tile entity at the given location. * @@ -36,4 +38,12 @@ public interface TileState extends BlockState, PersistentDataHolder { @NotNull @Override PersistentDataContainer getPersistentDataContainer(); + + // YAPFA start + + public default NBTTileEntity getNBT() { + return new NBTTileEntity(this); + } + + // YAPFA end } diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java index 7808ade92ccd3553056c57cdf77464fb8bdf9312..54c213b6e9c4046fdadb93a650ca5976c83c5643 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -23,6 +23,9 @@ import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import de.tr7zw.changeme.nbtapi.NBTCompound; +import de.tr7zw.changeme.nbtapi.NBTEntity; + /** * Represents a base entity in the world */ @@ -695,4 +698,16 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ public boolean isInLava(); // Paper end + + // YAPFA start + + public default NBTEntity getNBT() { + return new NBTEntity(this); + } + + public default NBTCompound getNBTC() { + return getNBT().getPersistentDataContainer(); + } + + // YAPFA end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java index ccd81fca25233c2a9c2a8c3f4dda3053d7b2e723..433d29ba0efd9782f556266fed33492c195c13c2 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java @@ -1,6 +1,10 @@ package org.bukkit.inventory; import com.google.common.collect.ImmutableMap; + +import de.tr7zw.changeme.nbtapi.NBTItem; +import de.tr7zw.changeme.nbtapi.NBTType; + import java.util.LinkedHashMap; import java.util.List; // Paper import java.util.Map; @@ -791,4 +795,20 @@ public class ItemStack implements Cloneable, ConfigurationSerializable { return itemMeta.hasItemFlag(flag); } // Paper end + + // YAPFA start + + public NBTItem getNBT() { + return new NBTItem(this); + } + + public void setNBT(NBTItem nbt) { + ItemStack nbtItem = nbt.getItem(); + setType(nbtItem.getType()); + setAmount(nbtItem.getAmount()); + setData(nbtItem.getData()); + setItemMeta(nbtItem.getItemMeta()); + } + + // YAPFA end }