Skip to content

Commit e1cc6bc

Browse files
committed
Revert changes to legacy files, deprecate
1 parent 3b25230 commit e1cc6bc

File tree

4 files changed

+97
-84
lines changed

4 files changed

+97
-84
lines changed

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

+64-60
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,27 @@
2121

2222
import com.google.common.collect.ImmutableList;
2323
import com.google.common.collect.ImmutableMap;
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;
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;
3231
import com.sk89q.worldedit.world.block.BaseBlock;
3332
import com.sk89q.worldedit.world.block.BlockState;
3433
import com.sk89q.worldedit.world.storage.InvalidFormatException;
3534

35+
import java.util.HashMap;
36+
import java.util.Map;
37+
3638
/**
3739
* A mob spawner block.
40+
*
41+
* @deprecated WorldEdit does not handle interpreting NBT,
42+
* deprecated for removal without replacement
3843
*/
44+
@Deprecated
3945
public class MobSpawnerBlock extends BaseBlock {
4046

4147
private String mobType;
@@ -44,8 +50,8 @@ public class MobSpawnerBlock extends BaseBlock {
4450
// advanced mob spawner features
4551
private short spawnCount = 4;
4652
private short spawnRange = 4;
47-
private CompoundBinaryTag spawnData;
48-
private ListBinaryTag spawnPotentials;
53+
private CompoundTag spawnData;
54+
private ListTag spawnPotentials;
4955
private short minSpawnDelay = 200;
5056
private short maxSpawnDelay = 800;
5157
private short maxNearbyEntities = 6;
@@ -108,7 +114,7 @@ public void setDelay(short delay) {
108114
}
109115

110116
@Override
111-
public boolean hasNbt() {
117+
public boolean hasNbtData() {
112118
return true;
113119
}
114120

@@ -118,52 +124,50 @@ public String getNbtId() {
118124
}
119125

120126
@Override
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));
127+
public CompoundTag getNbtData() {
128+
Map<String, Tag> values = new HashMap<>();
129+
values.put("Delay", new ShortTag(delay));
130+
values.put("SpawnCount", new ShortTag(spawnCount));
131+
values.put("SpawnRange", new ShortTag(spawnRange));
132+
values.put("MinSpawnDelay", new ShortTag(minSpawnDelay));
133+
values.put("MaxSpawnDelay", new ShortTag(maxSpawnDelay));
134+
values.put("MaxNearbyEntities", new ShortTag(maxNearbyEntities));
135+
values.put("RequiredPlayerRange", new ShortTag(requiredPlayerRange));
130136
if (spawnData == null) {
131-
values.put("SpawnData", CompoundBinaryTag.builder().put("id", StringBinaryTag.of(mobType)).build());
137+
values.put("SpawnData", new CompoundTag(ImmutableMap.of("id", new StringTag(mobType))));
132138
} else {
133-
values.put("SpawnData", spawnData);
139+
values.put("SpawnData", new CompoundTag(spawnData.getValue()));
134140
}
135141
if (spawnPotentials == null) {
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-
));
142+
values.put("SpawnPotentials", new ListTag(CompoundTag.class, ImmutableList.of(
143+
new CompoundTag(ImmutableMap.of("Weight", new IntTag(1), "Entity",
144+
new CompoundTag(ImmutableMap.of("id", new StringTag(mobType))))))));
143145
} else {
144-
values.put("SpawnPotentials", spawnPotentials);
146+
values.put("SpawnPotentials", new ListTag(CompoundTag.class, spawnPotentials.getValue()));
145147
}
146148

147-
return values.build();
149+
return new CompoundTag(values);
148150
}
149151

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

156-
BinaryTag t = rootTag.get("id");
157-
if (!(t instanceof StringBinaryTag) || !((StringBinaryTag) t).value().equals(getNbtId())) {
158+
Map<String, Tag> values = rootTag.getValue();
159+
160+
Tag t = values.get("id");
161+
if (!(t instanceof StringTag) || !((StringTag) t).getValue().equals(getNbtId())) {
158162
throw new RuntimeException(String.format("'%s' tile entity expected", getNbtId()));
159163
}
160164

161-
CompoundBinaryTag spawnDataTag;
165+
CompoundTag spawnDataTag;
162166
String mobType;
163-
ShortBinaryTag delayTag;
167+
ShortTag delayTag;
164168

165169
try {
166-
spawnDataTag = NbtUtils.getChildTag(rootTag, "SpawnData", CompoundBinaryTag.class);
170+
spawnDataTag = NBTUtils.getChildTag(values, "SpawnData", CompoundTag.class);
167171
mobType = spawnDataTag.getString("id");
168172
if (mobType.equals("")) {
169173
throw new InvalidFormatException("No spawn id.");
@@ -174,68 +178,68 @@ public void setNbt(CompoundBinaryTag rootTag) {
174178
throw new RuntimeException("Invalid mob spawner data: no SpawnData and/or no Delay");
175179
}
176180
try {
177-
delayTag = NbtUtils.getChildTag(rootTag, "Delay", ShortBinaryTag.class);
178-
this.delay = delayTag.value();
181+
delayTag = NBTUtils.getChildTag(values, "Delay", ShortTag.class);
182+
this.delay = delayTag.getValue();
179183
} catch (InvalidFormatException ignored) {
180184
this.delay = -1;
181185
}
182186

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;
187+
ShortTag spawnCountTag = null;
188+
ShortTag spawnRangeTag = null;
189+
ShortTag minSpawnDelayTag = null;
190+
ShortTag maxSpawnDelayTag = null;
191+
ShortTag maxNearbyEntitiesTag = null;
192+
ShortTag requiredPlayerRangeTag = null;
193+
ListTag spawnPotentialsTag = null;
190194
try {
191-
spawnCountTag = NbtUtils.getChildTag(rootTag, "SpawnCount", ShortBinaryTag.class);
195+
spawnCountTag = NBTUtils.getChildTag(values, "SpawnCount", ShortTag.class);
192196
} catch (InvalidFormatException ignored) {
193197
}
194198
try {
195-
spawnRangeTag = NbtUtils.getChildTag(rootTag, "SpawnRange", ShortBinaryTag.class);
199+
spawnRangeTag = NBTUtils.getChildTag(values, "SpawnRange", ShortTag.class);
196200
} catch (InvalidFormatException ignored) {
197201
}
198202
try {
199-
minSpawnDelayTag = NbtUtils.getChildTag(rootTag, "MinSpawnDelay", ShortBinaryTag.class);
203+
minSpawnDelayTag = NBTUtils.getChildTag(values, "MinSpawnDelay", ShortTag.class);
200204
} catch (InvalidFormatException ignored) {
201205
}
202206
try {
203-
maxSpawnDelayTag = NbtUtils.getChildTag(rootTag, "MaxSpawnDelay", ShortBinaryTag.class);
207+
maxSpawnDelayTag = NBTUtils.getChildTag(values, "MaxSpawnDelay", ShortTag.class);
204208
} catch (InvalidFormatException ignored) {
205209
}
206210
try {
207-
maxNearbyEntitiesTag = NbtUtils.getChildTag(rootTag, "MaxNearbyEntities", ShortBinaryTag.class);
211+
maxNearbyEntitiesTag = NBTUtils.getChildTag(values, "MaxNearbyEntities", ShortTag.class);
208212
} catch (InvalidFormatException ignored) {
209213
}
210214
try {
211-
requiredPlayerRangeTag = NbtUtils.getChildTag(rootTag, "RequiredPlayerRange", ShortBinaryTag.class);
215+
requiredPlayerRangeTag = NBTUtils.getChildTag(values, "RequiredPlayerRange", ShortTag.class);
212216
} catch (InvalidFormatException ignored) {
213217
}
214218
try {
215-
spawnPotentialsTag = NbtUtils.getChildTag(rootTag, "SpawnPotentials", ListBinaryTag.class);
219+
spawnPotentialsTag = NBTUtils.getChildTag(values, "SpawnPotentials", ListTag.class);
216220
} catch (InvalidFormatException ignored) {
217221
}
218222

219223
if (spawnCountTag != null) {
220-
this.spawnCount = spawnCountTag.value();
224+
this.spawnCount = spawnCountTag.getValue();
221225
}
222226
if (spawnRangeTag != null) {
223-
this.spawnRange = spawnRangeTag.value();
227+
this.spawnRange = spawnRangeTag.getValue();
224228
}
225229
if (minSpawnDelayTag != null) {
226-
this.minSpawnDelay = minSpawnDelayTag.value();
230+
this.minSpawnDelay = minSpawnDelayTag.getValue();
227231
}
228232
if (maxSpawnDelayTag != null) {
229-
this.maxSpawnDelay = maxSpawnDelayTag.value();
233+
this.maxSpawnDelay = maxSpawnDelayTag.getValue();
230234
}
231235
if (maxNearbyEntitiesTag != null) {
232-
this.maxNearbyEntities = maxNearbyEntitiesTag.value();
236+
this.maxNearbyEntities = maxNearbyEntitiesTag.getValue();
233237
}
234238
if (requiredPlayerRangeTag != null) {
235-
this.requiredPlayerRange = requiredPlayerRangeTag.value();
239+
this.requiredPlayerRange = requiredPlayerRangeTag.getValue();
236240
}
237241
if (spawnPotentialsTag != null) {
238-
this.spawnPotentials = spawnPotentialsTag;
242+
this.spawnPotentials = new ListTag(CompoundTag.class, spawnPotentialsTag.getValue());
239243
}
240244
}
241245

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

+13-10
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,19 @@
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;
2826
import com.sk89q.worldedit.world.block.BaseBlock;
2927
import com.sk89q.worldedit.world.block.BlockState;
3028

29+
import java.util.HashMap;
3130
import java.util.Map;
3231

3332
/**
3433
* Represents a sign block.
34+
*
35+
* @deprecated WorldEdit does not handle interpreting NBT,
36+
* deprecated for removal without replacement
3537
*/
38+
@Deprecated
3639
public class SignBlock extends BaseBlock {
3740

3841
private String[] text;
@@ -83,7 +86,7 @@ public void setText(String[] text) {
8386
}
8487

8588
@Override
86-
public boolean hasNbt() {
89+
public boolean hasNbtData() {
8790
return true;
8891
}
8992

@@ -93,13 +96,13 @@ public String getNbtId() {
9396
}
9497

9598
@Override
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();
99+
public CompoundTag getNbtData() {
100+
Map<String, Tag> values = new HashMap<>();
101+
values.put("Text1", new StringTag(text[0]));
102+
values.put("Text2", new StringTag(text[1]));
103+
values.put("Text3", new StringTag(text[2]));
104+
values.put("Text4", new StringTag(text[3]));
105+
return new CompoundTag(values);
103106
}
104107

105108
@Override

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

+12-10
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,23 @@
1919

2020
package com.sk89q.worldedit.blocks;
2121

22-
import com.google.common.collect.ImmutableMap;
2322
import com.sk89q.jnbt.CompoundTag;
2423
import com.sk89q.jnbt.StringTag;
2524
import com.sk89q.jnbt.Tag;
2625
import com.sk89q.worldedit.internal.util.DeprecationUtil;
27-
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
28-
import com.sk89q.worldedit.util.nbt.StringBinaryTag;
2926
import com.sk89q.worldedit.world.block.BaseBlock;
3027
import com.sk89q.worldedit.world.block.BlockState;
3128

29+
import java.util.HashMap;
3230
import java.util.Map;
3331

3432
/**
3533
* A skull block.
34+
*
35+
* @deprecated WorldEdit does not handle interpreting NBT,
36+
* deprecated for removal without replacement
3637
*/
38+
@Deprecated
3739
public class SkullBlock extends BaseBlock {
3840

3941
private String owner = ""; // notchian
@@ -83,7 +85,7 @@ public String getOwner() {
8385
}
8486

8587
@Override
86-
public boolean hasNbt() {
88+
public boolean hasNbtData() {
8789
return true;
8890
}
8991

@@ -93,12 +95,12 @@ public String getNbtId() {
9395
}
9496

9597
@Override
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();
98+
public CompoundTag getNbtData() {
99+
Map<String, Tag> values = new HashMap<>();
100+
Map<String, Tag> inner = new HashMap<>();
101+
inner.put("Name", new StringTag(owner));
102+
values.put(DeprecationUtil.getHeadOwnerKey(), new CompoundTag(inner));
103+
return new CompoundTag(values);
102104
}
103105

104106
@Override

worldedit-core/src/main/java/com/sk89q/worldedit/util/NbtUtils.java

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

2222
import com.sk89q.worldedit.util.nbt.BinaryTag;
23+
import com.sk89q.worldedit.util.nbt.BinaryTagType;
2324
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
2425
import com.sk89q.worldedit.world.storage.InvalidFormatException;
2526

@@ -34,16 +35,19 @@ public class NbtUtils {
3435
* @return child tag
3536
* @throws InvalidFormatException if the format of the items is invalid
3637
*/
37-
public static <T extends BinaryTag> T getChildTag(CompoundBinaryTag tag, String key, Class<T> expected) throws InvalidFormatException {
38+
public static <T extends BinaryTag> T getChildTag(CompoundBinaryTag tag, String key, BinaryTagType<T> expected) throws InvalidFormatException {
3839
BinaryTag childTag = tag.get(key);
3940
if (childTag == null) {
4041
throw new InvalidFormatException("Missing a \"" + key + "\" tag");
4142
}
4243

43-
if (!expected.isInstance(childTag)) {
44-
throw new InvalidFormatException(key + " tag is not of tag type " + expected.getName());
44+
if (childTag.type().id() != expected.id()) {
45+
throw new InvalidFormatException(key + " tag is not of tag type " + expected.toString());
4546
}
46-
return expected.cast(childTag);
47+
// SAFETY: same binary tag type checked above
48+
@SuppressWarnings("unchecked")
49+
T childTagCast = (T) childTag;
50+
return childTagCast;
4751
}
4852

4953
}

0 commit comments

Comments
 (0)