Skip to content

Commit 4ac2bb3

Browse files
committed
Further work on migrating to Adventure NBT
1 parent 85c150e commit 4ac2bb3

File tree

18 files changed

+260
-269
lines changed

18 files changed

+260
-269
lines changed

worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitPlayer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ public <B extends BlockStateHolder<B>> void sendFakeBlock(BlockVector3 pos, B bl
299299
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
300300
if (adapter != null) {
301301
if (block.getBlockType() == BlockTypes.STRUCTURE_BLOCK) {
302-
adapter.sendFakeNBT(player, pos, ((BaseBlock) block).getNbtData());
302+
adapter.sendFakeNBT(player, pos, ((BaseBlock) block).getNbt());
303303
adapter.sendFakeOP(player);
304304
}
305305
}

worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/adapter/BukkitImplAdapter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
package com.sk89q.worldedit.bukkit.adapter;
2121

22-
import com.sk89q.jnbt.CompoundTag;
2322
import com.sk89q.worldedit.blocks.BaseItem;
2423
import com.sk89q.worldedit.blocks.BaseItemStack;
2524
import com.sk89q.worldedit.entity.BaseEntity;
@@ -31,6 +30,7 @@
3130
import com.sk89q.worldedit.util.Direction;
3231
import com.sk89q.worldedit.util.SideEffect;
3332
import com.sk89q.worldedit.util.formatting.text.Component;
33+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
3434
import com.sk89q.worldedit.world.DataFixer;
3535
import com.sk89q.worldedit.world.RegenOptions;
3636
import com.sk89q.worldedit.world.block.BaseBlock;
@@ -151,7 +151,7 @@ default void tickWatchdog() {
151151
* @param pos The position
152152
* @param nbtData The NBT Data
153153
*/
154-
void sendFakeNBT(Player player, BlockVector3 pos, CompoundTag nbtData);
154+
void sendFakeNBT(Player player, BlockVector3 pos, CompoundBinaryTag nbtData);
155155

156156
/**
157157
* Make the client think it has operator status.
Binary file not shown.

worldedit-core/src/main/java/com/sk89q/worldedit/blocks/BaseItem.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ public BaseItem(ItemType itemType) {
6060
* @param nbtData NBT Compound tag
6161
*/
6262
@Deprecated
63-
public BaseItem(ItemType itemType, CompoundTag nbtData) {
64-
this(itemType, checkNotNull(nbtData).asBinaryTag());
63+
public BaseItem(ItemType itemType, @Nullable CompoundTag nbtData) {
64+
this(itemType, nbtData == null ? null : nbtData.asBinaryTag());
6565
}
6666

6767
/**

worldedit-core/src/main/java/com/sk89q/worldedit/internal/wna/WorldNativeAccess.java

+13-9
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919

2020
package com.sk89q.worldedit.internal.wna;
2121

22-
import com.sk89q.jnbt.CompoundTag;
22+
import com.google.common.collect.ImmutableMap;
2323
import com.sk89q.worldedit.WorldEditException;
2424
import com.sk89q.worldedit.math.BlockVector3;
2525
import com.sk89q.worldedit.util.SideEffect;
2626
import com.sk89q.worldedit.util.SideEffectSet;
27+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
28+
import com.sk89q.worldedit.util.nbt.IntBinaryTag;
29+
import com.sk89q.worldedit.util.nbt.StringBinaryTag;
2730
import com.sk89q.worldedit.world.block.BaseBlock;
2831
import com.sk89q.worldedit.world.block.BlockState;
2932
import com.sk89q.worldedit.world.block.BlockStateHolder;
@@ -66,14 +69,15 @@ default <B extends BlockStateHolder<B>> boolean setBlock(BlockVector3 position,
6669
if (successful || old == newState) {
6770
if (block instanceof BaseBlock) {
6871
BaseBlock baseBlock = (BaseBlock) block;
69-
CompoundTag tag = baseBlock.getNbtData();
72+
CompoundBinaryTag tag = baseBlock.getNbt();
7073
if (tag != null) {
71-
tag = tag.createBuilder()
72-
.putString("id", baseBlock.getNbtId())
73-
.putInt("x", position.getX())
74-
.putInt("y", position.getY())
75-
.putInt("z", position.getZ())
76-
.build();
74+
tag = tag.put(ImmutableMap.of(
75+
"id", StringBinaryTag.of(baseBlock.getNbtId()),
76+
"x", IntBinaryTag.of(position.getX()),
77+
"y", IntBinaryTag.of(position.getY()),
78+
"z", IntBinaryTag.of(position.getZ())
79+
));
80+
7781
// update if TE changed as well
7882
successful = updateTileEntity(pos, tag);
7983
}
@@ -136,7 +140,7 @@ default void setCurrentSideEffectSet(SideEffectSet sideEffectSet) {
136140

137141
void updateLightingForBlock(NP position);
138142

139-
boolean updateTileEntity(NP position, CompoundTag tag);
143+
boolean updateTileEntity(NP position, CompoundBinaryTag tag);
140144

141145
void notifyBlockUpdate(NP position, NBS oldState, NBS newState);
142146

worldedit-core/src/main/java/com/sk89q/worldedit/world/NbtValued.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ default boolean hasNbtData() {
6262
@Deprecated
6363
@Nullable
6464
default CompoundTag getNbtData() {
65-
return AdventureNBTConverter.fromAdventure(getNbt());
65+
CompoundBinaryTag tag = getNbt();
66+
return tag == null ? null : AdventureNBTConverter.fromAdventure(tag);
6667
}
6768

6869
/**

worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricAdapter.java

+9-9
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
package com.sk89q.worldedit.fabric;
2121

2222
import com.google.common.collect.ImmutableList;
23-
import com.sk89q.jnbt.CompoundTag;
24-
import com.sk89q.jnbt.Tag;
2523
import com.sk89q.worldedit.blocks.BaseItemStack;
2624
import com.sk89q.worldedit.fabric.internal.NBTConverter;
2725
import com.sk89q.worldedit.math.BlockVector3;
@@ -32,6 +30,8 @@
3230
import com.sk89q.worldedit.registry.state.IntegerProperty;
3331
import com.sk89q.worldedit.registry.state.Property;
3432
import com.sk89q.worldedit.util.Direction;
33+
import com.sk89q.worldedit.util.nbt.BinaryTag;
34+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
3535
import com.sk89q.worldedit.world.World;
3636
import com.sk89q.worldedit.world.biome.BiomeType;
3737
import com.sk89q.worldedit.world.biome.BiomeTypes;
@@ -228,22 +228,22 @@ public static ItemType adapt(Item item) {
228228

229229
public static ItemStack adapt(BaseItemStack baseItemStack) {
230230
net.minecraft.nbt.CompoundTag fabricCompound = null;
231-
if (baseItemStack.getNbtData() != null) {
232-
fabricCompound = NBTConverter.toNative(baseItemStack.getNbtData());
231+
if (baseItemStack.getNbt() != null) {
232+
fabricCompound = NBTConverter.toNative(baseItemStack.getNbt());
233233
}
234234
final ItemStack itemStack = new ItemStack(adapt(baseItemStack.getType()), baseItemStack.getAmount());
235235
itemStack.setTag(fabricCompound);
236236
return itemStack;
237237
}
238238

239239
public static BaseItemStack adapt(ItemStack itemStack) {
240-
CompoundTag tag = NBTConverter.fromNative(itemStack.toTag(new net.minecraft.nbt.CompoundTag()));
241-
if (tag.getValue().isEmpty()) {
240+
CompoundBinaryTag tag = NBTConverter.fromNative(itemStack.toTag(new net.minecraft.nbt.CompoundTag()));
241+
if (tag.keySet().isEmpty()) {
242242
tag = null;
243243
} else {
244-
final Tag tagTag = tag.getValue().get("tag");
245-
if (tagTag instanceof CompoundTag) {
246-
tag = ((CompoundTag) tagTag);
244+
final BinaryTag tagTag = tag.get("tag");
245+
if (tagTag instanceof CompoundBinaryTag) {
246+
tag = ((CompoundBinaryTag) tagTag);
247247
} else {
248248
tag = null;
249249
}

worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
import com.mojang.datafixers.DataFixerBuilder;
3636
import com.mojang.datafixers.schemas.Schema;
3737
import com.mojang.serialization.Dynamic;
38-
import com.sk89q.jnbt.CompoundTag;
3938
import com.sk89q.worldedit.fabric.internal.NBTConverter;
39+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
4040
import net.minecraft.datafixer.Schemas;
4141
import net.minecraft.datafixer.TypeReferences;
4242
import net.minecraft.nbt.FloatTag;
@@ -92,11 +92,11 @@ class FabricDataFixer extends DataFixerBuilder implements com.sk89q.worldedit.wo
9292
@Override
9393
public <T> T fixUp(FixType<T> type, T original, int srcVer) {
9494
if (type == FixTypes.CHUNK) {
95-
return (T) fixChunk((CompoundTag) original, srcVer);
95+
return (T) fixChunk((CompoundBinaryTag) original, srcVer);
9696
} else if (type == FixTypes.BLOCK_ENTITY) {
97-
return (T) fixBlockEntity((CompoundTag) original, srcVer);
97+
return (T) fixBlockEntity((CompoundBinaryTag) original, srcVer);
9898
} else if (type == FixTypes.ENTITY) {
99-
return (T) fixEntity((CompoundTag) original, srcVer);
99+
return (T) fixEntity((CompoundBinaryTag) original, srcVer);
100100
} else if (type == FixTypes.BLOCK_STATE) {
101101
return (T) fixBlockState((String) original, srcVer);
102102
} else if (type == FixTypes.ITEM_TYPE) {
@@ -107,19 +107,19 @@ public <T> T fixUp(FixType<T> type, T original, int srcVer) {
107107
return original;
108108
}
109109

110-
private CompoundTag fixChunk(CompoundTag originalChunk, int srcVer) {
110+
private CompoundBinaryTag fixChunk(CompoundBinaryTag originalChunk, int srcVer) {
111111
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(originalChunk);
112112
net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.CHUNK, tag, srcVer);
113113
return NBTConverter.fromNative(fixed);
114114
}
115115

116-
private CompoundTag fixBlockEntity(CompoundTag origTileEnt, int srcVer) {
116+
private CompoundBinaryTag fixBlockEntity(CompoundBinaryTag origTileEnt, int srcVer) {
117117
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(origTileEnt);
118118
net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.BLOCK_ENTITY, tag, srcVer);
119119
return NBTConverter.fromNative(fixed);
120120
}
121121

122-
private CompoundTag fixEntity(CompoundTag origEnt, int srcVer) {
122+
private CompoundBinaryTag fixEntity(CompoundBinaryTag origEnt, int srcVer) {
123123
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(origEnt);
124124
net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.ENTITY, tag, srcVer);
125125
return NBTConverter.fromNative(fixed);

worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
package com.sk89q.worldedit.fabric;
2121

22-
import com.sk89q.jnbt.CompoundTag;
2322
import com.sk89q.util.StringUtil;
2423
import com.sk89q.worldedit.blocks.BaseItemStack;
2524
import com.sk89q.worldedit.entity.BaseEntity;
@@ -38,6 +37,7 @@
3837
import com.sk89q.worldedit.util.formatting.component.TextUtils;
3938
import com.sk89q.worldedit.util.formatting.text.Component;
4039
import com.sk89q.worldedit.util.formatting.text.serializer.gson.GsonComponentSerializer;
40+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
4141
import com.sk89q.worldedit.world.World;
4242
import com.sk89q.worldedit.world.block.BaseBlock;
4343
import com.sk89q.worldedit.world.block.BlockStateHolder;
@@ -55,7 +55,6 @@
5555
import net.minecraft.text.Text;
5656
import net.minecraft.util.Formatting;
5757
import net.minecraft.util.Hand;
58-
import net.minecraft.util.Identifier;
5958
import net.minecraft.util.math.BlockPos;
6059

6160
import java.io.IOException;
@@ -243,7 +242,7 @@ public <B extends BlockStateHolder<B>> void sendFakeBlock(BlockVector3 pos, B bl
243242
player.networkHandler.sendPacket(packetOut);
244243
if (block instanceof BaseBlock && block.getBlockType().equals(BlockTypes.STRUCTURE_BLOCK)) {
245244
final BaseBlock baseBlock = (BaseBlock) block;
246-
final CompoundTag nbtData = baseBlock.getNbtData();
245+
final CompoundBinaryTag nbtData = baseBlock.getNbt();
247246
if (nbtData != null) {
248247
player.networkHandler.sendPacket(new BlockEntityUpdateS2CPacket(
249248
new BlockPos(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()),

worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import com.google.common.collect.Sets;
2929
import com.google.common.util.concurrent.Futures;
3030
import com.mojang.serialization.Dynamic;
31-
import com.sk89q.jnbt.CompoundTag;
3231
import com.sk89q.worldedit.EditSession;
3332
import com.sk89q.worldedit.WorldEditException;
3433
import com.sk89q.worldedit.blocks.BaseItem;
@@ -53,6 +52,7 @@
5352
import com.sk89q.worldedit.util.SideEffectSet;
5453
import com.sk89q.worldedit.util.TreeGenerator.TreeType;
5554
import com.sk89q.worldedit.util.io.file.SafeFiles;
55+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
5656
import com.sk89q.worldedit.world.AbstractWorld;
5757
import com.sk89q.worldedit.world.RegenOptions;
5858
import com.sk89q.worldedit.world.biome.BiomeType;
@@ -248,7 +248,7 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) {
248248

249249
@Override
250250
public boolean useItem(BlockVector3 position, BaseItem item, Direction face) {
251-
ItemStack stack = FabricAdapter.adapt(new BaseItemStack(item.getType(), item.getNbtData(), 1));
251+
ItemStack stack = FabricAdapter.adapt(new BaseItemStack(item.getType(), item.getNbt(), 1));
252252
ServerWorld world = (ServerWorld) getWorld();
253253
final WorldEditFakePlayer fakePlayer;
254254
try {
@@ -667,9 +667,9 @@ public Entity createEntity(Location location, BaseEntity entity) {
667667
}
668668
net.minecraft.entity.Entity createdEntity = entityType.get().create(world);
669669
if (createdEntity != null) {
670-
CompoundTag nativeTag = entity.getNbtData();
670+
CompoundBinaryTag nativeTag = entity.getNbt();
671671
if (nativeTag != null) {
672-
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(entity.getNbtData());
672+
net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(nativeTag);
673673
for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) {
674674
tag.remove(name);
675675
}

worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.sk89q.worldedit.internal.wna.WorldNativeAccess;
2525
import com.sk89q.worldedit.util.SideEffect;
2626
import com.sk89q.worldedit.util.SideEffectSet;
27+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
2728
import net.minecraft.block.Block;
2829
import net.minecraft.block.BlockState;
2930
import net.minecraft.block.entity.BlockEntity;
@@ -103,7 +104,7 @@ public void updateLightingForBlock(BlockPos position) {
103104
}
104105

105106
@Override
106-
public boolean updateTileEntity(BlockPos position, com.sk89q.jnbt.CompoundTag tag) {
107+
public boolean updateTileEntity(BlockPos position, CompoundBinaryTag tag) {
107108
CompoundTag nativeTag = NBTConverter.toNative(tag);
108109
BlockEntity tileEntity = getWorld().getWorldChunk(position).getBlockEntity(position);
109110
if (tileEntity == null) {

0 commit comments

Comments
 (0)