From e9c90d7f2e67625f7e40920f6f79e3c89fc00ebe Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Mon, 14 Dec 2020 20:23:30 +1000 Subject: [PATCH] Print NBT data for BaseBlock and BaseItem --- .../com/sk89q/worldedit/blocks/BaseItem.java | 18 ++++++++++++++++++ .../sk89q/worldedit/world/block/BaseBlock.java | 16 ++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BaseItem.java b/worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BaseItem.java index a365bc4b14..a18cc8650a 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BaseItem.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BaseItem.java @@ -19,10 +19,14 @@ package com.sk89q.worldedit.blocks; +import com.sk89q.jnbt.AdventureNBTConverter; import com.sk89q.jnbt.CompoundTag; +import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.world.NbtValued; import com.sk89q.worldedit.world.item.ItemType; +import net.kyori.adventure.nbt.TagStringIO; +import java.io.IOException; import javax.annotation.Nullable; import static com.google.common.base.Preconditions.checkNotNull; @@ -94,4 +98,18 @@ public CompoundTag getNbtData() { public void setNbtData(@Nullable CompoundTag nbtData) { this.nbtData = nbtData; } + + @Override + public String toString() { + String nbtString = ""; + if (hasNbtData()) { + try { + nbtString = TagStringIO.get().asString(AdventureNBTConverter.toAdventure(getNbtData())); + } catch (IOException e) { + WorldEdit.logger.error("Failed to parse NBT of Item", e); + } + } + + return getType().getId() + nbtString; + } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BaseBlock.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BaseBlock.java index a7d50f6b1c..333cd14d41 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BaseBlock.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BaseBlock.java @@ -19,12 +19,16 @@ package com.sk89q.worldedit.world.block; +import com.sk89q.jnbt.AdventureNBTConverter; import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.StringTag; import com.sk89q.jnbt.Tag; +import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.blocks.TileEntityBlock; import com.sk89q.worldedit.registry.state.Property; +import net.kyori.adventure.nbt.TagStringIO; +import java.io.IOException; import java.util.Map; import java.util.Objects; import javax.annotation.Nullable; @@ -189,8 +193,16 @@ public int hashCode() { @Override public String toString() { - // TODO use a json serializer for the NBT data - return blockState.getAsString() + (hasNbtData() ? "{hasNbt}" : ""); + String nbtString = ""; + if (hasNbtData()) { + try { + nbtString = TagStringIO.get().asString(AdventureNBTConverter.toAdventure(getNbtData())); + } catch (IOException e) { + WorldEdit.logger.error("Failed to parse NBT of Block", e); + } + } + + return blockState.getAsString() + nbtString; } }