Skip to content

Commit 137c266

Browse files
committed
Migrate to adventure-nbt
1 parent 476342a commit 137c266

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1019
-415
lines changed

buildSrc/src/main/kotlin/LibsConfig.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ fun Project.applyLibrariesConfiguration() {
2828

2929
val relocations = mapOf(
3030
"net.kyori.text" to "com.sk89q.worldedit.util.formatting.text",
31-
"net.kyori.minecraft" to "com.sk89q.worldedit.util.kyori"
31+
"net.kyori.minecraft" to "com.sk89q.worldedit.util.kyori",
32+
"net.kyori.adventure.nbt" to "com.sk89q.worldedit.util.nbt"
3233
)
3334

3435
tasks.register<ShadowJar>("jar") {

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ public <B extends BlockStateHolder<B>> void sendFakeBlock(BlockVector3 pos, B bl
295295
player.sendBlockChange(loc, player.getWorld().getBlockAt(loc).getBlockData());
296296
} else {
297297
player.sendBlockChange(loc, BukkitAdapter.adapt(block));
298-
if (block instanceof BaseBlock && ((BaseBlock) block).hasNbtData()) {
298+
if (block instanceof BaseBlock && ((BaseBlock) block).hasNbt()) {
299299
BukkitImplAdapter adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
300300
if (adapter != null) {
301301
if (block.getBlockType() == BlockTypes.STRUCTURE_BLOCK) {

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

+4-4
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ public com.sk89q.worldedit.entity.Entity createEntity(com.sk89q.worldedit.util.L
149149
}
150150
} catch (Exception e) {
151151
logger.warn("Corrupt entity found when creating: " + entity.getType().getId());
152-
if (entity.getNbtData() != null) {
153-
logger.warn(entity.getNbtData().toString());
152+
if (entity.getNbt() != null) {
153+
logger.warn(entity.getNbt().toString());
154154
}
155155
e.printStackTrace();
156156
return null;
@@ -457,9 +457,9 @@ public <B extends BlockStateHolder<B>> boolean setBlock(BlockVector3 position, B
457457
try {
458458
return worldNativeAccess.setBlock(position, block, sideEffects);
459459
} catch (Exception e) {
460-
if (block instanceof BaseBlock && ((BaseBlock) block).getNbtData() != null) {
460+
if (block instanceof BaseBlock && ((BaseBlock) block).getNbt() != null) {
461461
logger.warn("Tried to set a corrupt tile entity at " + position.toString()
462-
+ ": " + ((BaseBlock) block).getNbtData(), e);
462+
+ ": " + ((BaseBlock) block).getNbt(), e);
463463
} else {
464464
logger.warn("Failed to set block via adapter, falling back to generic", e);
465465
}

worldedit-core/src/legacy/java/com/sk89q/worldedit/blocks/MobSpawnerBlock.java

+60-60
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,18 @@
2121

2222
import com.google.common.collect.ImmutableList;
2323
import com.google.common.collect.ImmutableMap;
24-
import com.sk89q.jnbt.CompoundTag;
25-
import com.sk89q.jnbt.IntTag;
26-
import com.sk89q.jnbt.ListTag;
27-
import com.sk89q.jnbt.NBTUtils;
28-
import com.sk89q.jnbt.ShortTag;
29-
import com.sk89q.jnbt.StringTag;
30-
import com.sk89q.jnbt.Tag;
24+
import com.sk89q.worldedit.util.NbtUtils;
25+
import com.sk89q.worldedit.util.nbt.BinaryTag;
26+
import com.sk89q.worldedit.util.nbt.BinaryTagTypes;
27+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
28+
import com.sk89q.worldedit.util.nbt.IntBinaryTag;
29+
import com.sk89q.worldedit.util.nbt.ListBinaryTag;
30+
import com.sk89q.worldedit.util.nbt.ShortBinaryTag;
31+
import com.sk89q.worldedit.util.nbt.StringBinaryTag;
3132
import com.sk89q.worldedit.world.block.BaseBlock;
3233
import com.sk89q.worldedit.world.block.BlockState;
3334
import com.sk89q.worldedit.world.storage.InvalidFormatException;
3435

35-
import java.util.HashMap;
36-
import java.util.Map;
37-
3836
/**
3937
* A mob spawner block.
4038
*/
@@ -46,8 +44,8 @@ public class MobSpawnerBlock extends BaseBlock {
4644
// advanced mob spawner features
4745
private short spawnCount = 4;
4846
private short spawnRange = 4;
49-
private CompoundTag spawnData;
50-
private ListTag spawnPotentials;
47+
private CompoundBinaryTag spawnData;
48+
private ListBinaryTag spawnPotentials;
5149
private short minSpawnDelay = 200;
5250
private short maxSpawnDelay = 800;
5351
private short maxNearbyEntities = 6;
@@ -110,7 +108,7 @@ public void setDelay(short delay) {
110108
}
111109

112110
@Override
113-
public boolean hasNbtData() {
111+
public boolean hasNbt() {
114112
return true;
115113
}
116114

@@ -120,50 +118,52 @@ public String getNbtId() {
120118
}
121119

122120
@Override
123-
public CompoundTag getNbtData() {
124-
Map<String, Tag> values = new HashMap<>();
125-
values.put("Delay", new ShortTag(delay));
126-
values.put("SpawnCount", new ShortTag(spawnCount));
127-
values.put("SpawnRange", new ShortTag(spawnRange));
128-
values.put("MinSpawnDelay", new ShortTag(minSpawnDelay));
129-
values.put("MaxSpawnDelay", new ShortTag(maxSpawnDelay));
130-
values.put("MaxNearbyEntities", new ShortTag(maxNearbyEntities));
131-
values.put("RequiredPlayerRange", new ShortTag(requiredPlayerRange));
121+
public CompoundBinaryTag getNbt() {
122+
CompoundBinaryTag.Builder values = CompoundBinaryTag.builder();
123+
values.put("Delay", ShortBinaryTag.of(delay));
124+
values.put("SpawnCount", ShortBinaryTag.of(spawnCount));
125+
values.put("SpawnRange", ShortBinaryTag.of(spawnRange));
126+
values.put("MinSpawnDelay", ShortBinaryTag.of(minSpawnDelay));
127+
values.put("MaxSpawnDelay", ShortBinaryTag.of(maxSpawnDelay));
128+
values.put("MaxNearbyEntities", ShortBinaryTag.of(maxNearbyEntities));
129+
values.put("RequiredPlayerRange", ShortBinaryTag.of(requiredPlayerRange));
132130
if (spawnData == null) {
133-
values.put("SpawnData", new CompoundTag(ImmutableMap.of("id", new StringTag(mobType))));
131+
values.put("SpawnData", CompoundBinaryTag.builder().put("id", StringBinaryTag.of(mobType)).build());
134132
} else {
135-
values.put("SpawnData", new CompoundTag(spawnData.getValue()));
133+
values.put("SpawnData", spawnData);
136134
}
137135
if (spawnPotentials == null) {
138-
values.put("SpawnPotentials", new ListTag(CompoundTag.class, ImmutableList.of(
139-
new CompoundTag(ImmutableMap.of("Weight", new IntTag(1), "Entity",
140-
new CompoundTag(ImmutableMap.of("id", new StringTag(mobType))))))));
136+
values.put("SpawnPotentials", ListBinaryTag.of(
137+
BinaryTagTypes.COMPOUND,
138+
ImmutableList.of(CompoundBinaryTag.from(ImmutableMap.of(
139+
"Weight", IntBinaryTag.of(1),
140+
"Entity", CompoundBinaryTag.from(ImmutableMap.of("id", StringBinaryTag.of(mobType)))
141+
)))
142+
));
141143
} else {
142-
values.put("SpawnPotentials", new ListTag(CompoundTag.class, spawnPotentials.getValue()));
144+
values.put("SpawnPotentials", spawnPotentials);
143145
}
144146

145-
return new CompoundTag(values);
147+
return values.build();
146148
}
147149

148150
@Override
149-
public void setNbtData(CompoundTag rootTag) {
151+
public void setNbt(CompoundBinaryTag rootTag) {
150152
if (rootTag == null) {
151153
return;
152154
}
153155

154-
Map<String, Tag> values = rootTag.getValue();
155-
156-
Tag t = values.get("id");
157-
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals(getNbtId())) {
156+
BinaryTag t = rootTag.get("id");
157+
if (!(t instanceof StringBinaryTag) || !((StringBinaryTag) t).value().equals(getNbtId())) {
158158
throw new RuntimeException(String.format("'%s' tile entity expected", getNbtId()));
159159
}
160160

161-
CompoundTag spawnDataTag;
161+
CompoundBinaryTag spawnDataTag;
162162
String mobType;
163-
ShortTag delayTag;
163+
ShortBinaryTag delayTag;
164164

165165
try {
166-
spawnDataTag = NBTUtils.getChildTag(values, "SpawnData", CompoundTag.class);
166+
spawnDataTag = NbtUtils.getChildTag(rootTag, "SpawnData", CompoundBinaryTag.class);
167167
mobType = spawnDataTag.getString("id");
168168
if (mobType.equals("")) {
169169
throw new InvalidFormatException("No spawn id.");
@@ -174,68 +174,68 @@ public void setNbtData(CompoundTag rootTag) {
174174
throw new RuntimeException("Invalid mob spawner data: no SpawnData and/or no Delay");
175175
}
176176
try {
177-
delayTag = NBTUtils.getChildTag(values, "Delay", ShortTag.class);
178-
this.delay = delayTag.getValue();
177+
delayTag = NbtUtils.getChildTag(rootTag, "Delay", ShortBinaryTag.class);
178+
this.delay = delayTag.value();
179179
} catch (InvalidFormatException ignored) {
180180
this.delay = -1;
181181
}
182182

183-
ShortTag spawnCountTag = null;
184-
ShortTag spawnRangeTag = null;
185-
ShortTag minSpawnDelayTag = null;
186-
ShortTag maxSpawnDelayTag = null;
187-
ShortTag maxNearbyEntitiesTag = null;
188-
ShortTag requiredPlayerRangeTag = null;
189-
ListTag spawnPotentialsTag = null;
183+
ShortBinaryTag spawnCountTag = null;
184+
ShortBinaryTag spawnRangeTag = null;
185+
ShortBinaryTag minSpawnDelayTag = null;
186+
ShortBinaryTag maxSpawnDelayTag = null;
187+
ShortBinaryTag maxNearbyEntitiesTag = null;
188+
ShortBinaryTag requiredPlayerRangeTag = null;
189+
ListBinaryTag spawnPotentialsTag = null;
190190
try {
191-
spawnCountTag = NBTUtils.getChildTag(values, "SpawnCount", ShortTag.class);
191+
spawnCountTag = NbtUtils.getChildTag(rootTag, "SpawnCount", ShortBinaryTag.class);
192192
} catch (InvalidFormatException ignored) {
193193
}
194194
try {
195-
spawnRangeTag = NBTUtils.getChildTag(values, "SpawnRange", ShortTag.class);
195+
spawnRangeTag = NbtUtils.getChildTag(rootTag, "SpawnRange", ShortBinaryTag.class);
196196
} catch (InvalidFormatException ignored) {
197197
}
198198
try {
199-
minSpawnDelayTag = NBTUtils.getChildTag(values, "MinSpawnDelay", ShortTag.class);
199+
minSpawnDelayTag = NbtUtils.getChildTag(rootTag, "MinSpawnDelay", ShortBinaryTag.class);
200200
} catch (InvalidFormatException ignored) {
201201
}
202202
try {
203-
maxSpawnDelayTag = NBTUtils.getChildTag(values, "MaxSpawnDelay", ShortTag.class);
203+
maxSpawnDelayTag = NbtUtils.getChildTag(rootTag, "MaxSpawnDelay", ShortBinaryTag.class);
204204
} catch (InvalidFormatException ignored) {
205205
}
206206
try {
207-
maxNearbyEntitiesTag = NBTUtils.getChildTag(values, "MaxNearbyEntities", ShortTag.class);
207+
maxNearbyEntitiesTag = NbtUtils.getChildTag(rootTag, "MaxNearbyEntities", ShortBinaryTag.class);
208208
} catch (InvalidFormatException ignored) {
209209
}
210210
try {
211-
requiredPlayerRangeTag = NBTUtils.getChildTag(values, "RequiredPlayerRange", ShortTag.class);
211+
requiredPlayerRangeTag = NbtUtils.getChildTag(rootTag, "RequiredPlayerRange", ShortBinaryTag.class);
212212
} catch (InvalidFormatException ignored) {
213213
}
214214
try {
215-
spawnPotentialsTag = NBTUtils.getChildTag(values, "SpawnPotentials", ListTag.class);
215+
spawnPotentialsTag = NbtUtils.getChildTag(rootTag, "SpawnPotentials", ListBinaryTag.class);
216216
} catch (InvalidFormatException ignored) {
217217
}
218218

219219
if (spawnCountTag != null) {
220-
this.spawnCount = spawnCountTag.getValue();
220+
this.spawnCount = spawnCountTag.value();
221221
}
222222
if (spawnRangeTag != null) {
223-
this.spawnRange = spawnRangeTag.getValue();
223+
this.spawnRange = spawnRangeTag.value();
224224
}
225225
if (minSpawnDelayTag != null) {
226-
this.minSpawnDelay = minSpawnDelayTag.getValue();
226+
this.minSpawnDelay = minSpawnDelayTag.value();
227227
}
228228
if (maxSpawnDelayTag != null) {
229-
this.maxSpawnDelay = maxSpawnDelayTag.getValue();
229+
this.maxSpawnDelay = maxSpawnDelayTag.value();
230230
}
231231
if (maxNearbyEntitiesTag != null) {
232-
this.maxNearbyEntities = maxNearbyEntitiesTag.getValue();
232+
this.maxNearbyEntities = maxNearbyEntitiesTag.value();
233233
}
234234
if (requiredPlayerRangeTag != null) {
235-
this.requiredPlayerRange = requiredPlayerRangeTag.getValue();
235+
this.requiredPlayerRange = requiredPlayerRangeTag.value();
236236
}
237237
if (spawnPotentialsTag != null) {
238-
this.spawnPotentials = new ListTag(CompoundTag.class, spawnPotentialsTag.getValue());
238+
this.spawnPotentials = spawnPotentialsTag;
239239
}
240240
}
241241

worldedit-core/src/legacy/java/com/sk89q/worldedit/blocks/SignBlock.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@
2323
import com.sk89q.jnbt.StringTag;
2424
import com.sk89q.jnbt.Tag;
2525
import com.sk89q.worldedit.util.gson.GsonUtil;
26+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
27+
import com.sk89q.worldedit.util.nbt.StringBinaryTag;
2628
import com.sk89q.worldedit.world.block.BaseBlock;
2729
import com.sk89q.worldedit.world.block.BlockState;
2830

29-
import java.util.HashMap;
3031
import java.util.Map;
3132

3233
/**
@@ -82,7 +83,7 @@ public void setText(String[] text) {
8283
}
8384

8485
@Override
85-
public boolean hasNbtData() {
86+
public boolean hasNbt() {
8687
return true;
8788
}
8889

@@ -92,13 +93,13 @@ public String getNbtId() {
9293
}
9394

9495
@Override
95-
public CompoundTag getNbtData() {
96-
Map<String, Tag> values = new HashMap<>();
97-
values.put("Text1", new StringTag(text[0]));
98-
values.put("Text2", new StringTag(text[1]));
99-
values.put("Text3", new StringTag(text[2]));
100-
values.put("Text4", new StringTag(text[3]));
101-
return new CompoundTag(values);
96+
public CompoundBinaryTag getNbt() {
97+
CompoundBinaryTag.Builder values = CompoundBinaryTag.builder();
98+
values.put("Text1", StringBinaryTag.of(text[0]));
99+
values.put("Text2", StringBinaryTag.of(text[1]));
100+
values.put("Text3", StringBinaryTag.of(text[2]));
101+
values.put("Text4", StringBinaryTag.of(text[3]));
102+
return values.build();
102103
}
103104

104105
@Override

worldedit-core/src/legacy/java/com/sk89q/worldedit/blocks/SkullBlock.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@
1919

2020
package com.sk89q.worldedit.blocks;
2121

22+
import com.google.common.collect.ImmutableMap;
2223
import com.sk89q.jnbt.CompoundTag;
2324
import com.sk89q.jnbt.StringTag;
2425
import com.sk89q.jnbt.Tag;
2526
import com.sk89q.worldedit.internal.util.DeprecationUtil;
27+
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
28+
import com.sk89q.worldedit.util.nbt.StringBinaryTag;
2629
import com.sk89q.worldedit.world.block.BaseBlock;
2730
import com.sk89q.worldedit.world.block.BlockState;
2831

29-
import java.util.HashMap;
3032
import java.util.Map;
3133

3234
/**
@@ -81,7 +83,7 @@ public String getOwner() {
8183
}
8284

8385
@Override
84-
public boolean hasNbtData() {
86+
public boolean hasNbt() {
8587
return true;
8688
}
8789

@@ -91,12 +93,12 @@ public String getNbtId() {
9193
}
9294

9395
@Override
94-
public CompoundTag getNbtData() {
95-
Map<String, Tag> values = new HashMap<>();
96-
Map<String, Tag> inner = new HashMap<>();
97-
inner.put("Name", new StringTag(owner));
98-
values.put(DeprecationUtil.getHeadOwnerKey(), new CompoundTag(inner));
99-
return new CompoundTag(values);
96+
public CompoundBinaryTag getNbt() {
97+
CompoundBinaryTag.Builder values = CompoundBinaryTag.builder();
98+
values.put(DeprecationUtil.getHeadOwnerKey(), CompoundBinaryTag.from(
99+
ImmutableMap.of("Name", StringBinaryTag.of(owner))
100+
));
101+
return values.build();
100102
}
101103

102104
@Override

0 commit comments

Comments
 (0)