Regress to upstream for (Binary)Tags in data fixers

This commit is contained in:
dordsor21 2021-10-19 14:12:02 +01:00
parent b5479e480d
commit 37eb4a1008
No known key found for this signature in database
GPG Key ID: 1E53E88969FFCF0B
5 changed files with 17 additions and 47 deletions

View File

@ -9,7 +9,6 @@ import com.fastasyncworldedit.core.internal.io.FaweInputStream;
import com.fastasyncworldedit.core.internal.io.FaweOutputStream; import com.fastasyncworldedit.core.internal.io.FaweOutputStream;
import com.fastasyncworldedit.core.jnbt.streamer.StreamDelegate; import com.fastasyncworldedit.core.jnbt.streamer.StreamDelegate;
import com.fastasyncworldedit.core.jnbt.streamer.ValueReader; import com.fastasyncworldedit.core.jnbt.streamer.ValueReader;
import com.sk89q.jnbt.AdventureNBTConverter;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.IntTag; import com.sk89q.jnbt.IntTag;
import com.sk89q.jnbt.NBTInputStream; import com.sk89q.jnbt.NBTInputStream;
@ -27,7 +26,6 @@ import com.sk89q.worldedit.internal.Constants;
import com.sk89q.worldedit.internal.util.LogManagerCompat; import com.sk89q.worldedit.internal.util.LogManagerCompat;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
import com.sk89q.worldedit.world.DataFixer; import com.sk89q.worldedit.world.DataFixer;
import com.sk89q.worldedit.world.biome.BiomeType; import com.sk89q.worldedit.world.biome.BiomeType;
import com.sk89q.worldedit.world.biome.BiomeTypes; import com.sk89q.worldedit.world.biome.BiomeTypes;
@ -106,18 +104,18 @@ public class FastSchematicReader extends NBTSchematicReader {
return fixer.fixUp(DataFixer.FixTypes.BLOCK_STATE, palettePart, dataVersion); return fixer.fixUp(DataFixer.FixTypes.BLOCK_STATE, palettePart, dataVersion);
} }
private CompoundBinaryTag fixBlockEntity(CompoundTag tag) { private CompoundTag fixBlockEntity(CompoundTag tag) {
if (fixer == null || dataVersion == -1) { if (fixer == null || dataVersion == -1) {
return tag.asBinaryTag(); return tag;
} }
return fixer.fixUp(DataFixer.FixTypes.BLOCK_ENTITY, tag.asBinaryTag(), dataVersion); return fixer.fixUp(DataFixer.FixTypes.BLOCK_ENTITY, tag, dataVersion);
} }
private CompoundBinaryTag fixEntity(CompoundTag tag) { private CompoundTag fixEntity(CompoundTag tag) {
if (fixer == null || dataVersion == -1) { if (fixer == null || dataVersion == -1) {
return tag.asBinaryTag(); return tag;
} }
return fixer.fixUp(DataFixer.FixTypes.ENTITY, tag.asBinaryTag(), dataVersion); return fixer.fixUp(DataFixer.FixTypes.ENTITY, tag, dataVersion);
} }
private String fixBiome(String biomePalettePart) { private String fixBiome(String biomePalettePart) {
@ -353,7 +351,7 @@ public class FastSchematicReader extends NBTSchematicReader {
x, x,
y, y,
z, z,
(CompoundTag) AdventureNBTConverter.fromAdventure(fixBlockEntity(new CompoundTag(values))) fixBlockEntity(new CompoundTag(values))
); );
} }
} }
@ -374,7 +372,7 @@ public class FastSchematicReader extends NBTSchematicReader {
EntityType type = EntityTypes.parse(id.getValue()); EntityType type = EntityTypes.parse(id.getValue());
if (type != null) { if (type != null) {
final CompoundTag ent = (CompoundTag) AdventureNBTConverter.fromAdventure(fixEntity(new CompoundTag(value))); final CompoundTag ent = fixEntity(new CompoundTag(value));
BaseEntity state = new BaseEntity(type, ent); BaseEntity state = new BaseEntity(type, ent);
Location loc = ent.getEntityLocation(clipboard); Location loc = ent.getEntityLocation(clipboard);
if (brokenEntities) { if (brokenEntities) {

View File

@ -20,7 +20,6 @@
package com.sk89q.worldedit.extent.clipboard.io; package com.sk89q.worldedit.extent.clipboard.io;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.sk89q.jnbt.AdventureNBTConverter;
import com.sk89q.jnbt.ByteArrayTag; import com.sk89q.jnbt.ByteArrayTag;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.IntTag; import com.sk89q.jnbt.IntTag;
@ -229,13 +228,7 @@ public class MCEditSchematicReader extends NBTSchematicReader {
} }
if (fixer != null && t != null) { if (fixer != null && t != null) {
//FAWE start t = fixer.fixUp(DataFixer.FixTypes.BLOCK_ENTITY, t, -1);
t = (CompoundTag) AdventureNBTConverter.fromAdventure(fixer.fixUp(
DataFixer.FixTypes.BLOCK_ENTITY,
t.asBinaryTag(),
-1
));
//FAWE end
} }
BlockVector3 vec = BlockVector3.at(x, y, z); BlockVector3 vec = BlockVector3.at(x, y, z);
@ -296,11 +289,7 @@ public class MCEditSchematicReader extends NBTSchematicReader {
if (tag instanceof CompoundTag) { if (tag instanceof CompoundTag) {
CompoundTag compound = (CompoundTag) tag; CompoundTag compound = (CompoundTag) tag;
if (fixer != null) { if (fixer != null) {
compound = (CompoundTag) AdventureNBTConverter.fromAdventure(fixer.fixUp( compound = fixer.fixUp(DataFixer.FixTypes.ENTITY, compound, -1);
DataFixer.FixTypes.ENTITY,
compound.asBinaryTag(),
-1
));
} }
String id = convertEntityId(compound.getString("id")); String id = convertEntityId(compound.getString("id"));
Location location = NBTConversions.toLocation( Location location = NBTConversions.toLocation(

View File

@ -20,7 +20,6 @@
package com.sk89q.worldedit.extent.clipboard.io; package com.sk89q.worldedit.extent.clipboard.io;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.sk89q.jnbt.AdventureNBTConverter;
import com.sk89q.jnbt.ByteArrayTag; import com.sk89q.jnbt.ByteArrayTag;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.IntArrayTag; import com.sk89q.jnbt.IntArrayTag;
@ -271,11 +270,7 @@ public class SpongeSchematicReader extends NBTSchematicReader {
values.remove("Id"); values.remove("Id");
values.remove("Pos"); values.remove("Pos");
if (fixer != null) { if (fixer != null) {
//FAWE start tileEntity = fixer.fixUp(DataFixer.FixTypes.BLOCK_ENTITY, new CompoundTag(values), dataVersion).getValue();
tileEntity = ((CompoundTag) AdventureNBTConverter.fromAdventure(fixer.fixUp(DataFixer.FixTypes.BLOCK_ENTITY,
new CompoundTag(values).asBinaryTag(), dataVersion
))).getValue();
//FAWE end
} else { } else {
tileEntity = values; tileEntity = values;
} }
@ -416,13 +411,7 @@ public class SpongeSchematicReader extends NBTSchematicReader {
entityTag = entityTag.createBuilder().putString("id", id).remove("Id").build(); entityTag = entityTag.createBuilder().putString("id", id).remove("Id").build();
if (fixer != null) { if (fixer != null) {
//FAWE start entityTag = fixer.fixUp(DataFixer.FixTypes.ENTITY, entityTag, dataVersion);
entityTag = (CompoundTag) AdventureNBTConverter.fromAdventure(fixer.fixUp(
DataFixer.FixTypes.ENTITY,
entityTag.asBinaryTag(),
dataVersion
));
//FAWE end
} }
EntityType entityType = EntityTypes.get(id); EntityType entityType = EntityTypes.get(id);

View File

@ -20,6 +20,7 @@
package com.sk89q.worldedit.world; package com.sk89q.worldedit.world;
import com.google.common.annotations.Beta; import com.google.common.annotations.Beta;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.util.nbt.CompoundBinaryTag; import com.sk89q.worldedit.util.nbt.CompoundBinaryTag;
/** /**
@ -40,9 +41,9 @@ public interface DataFixer {
private FixTypes() { private FixTypes() {
} }
public static FixType<CompoundBinaryTag> CHUNK = new FixType<>(); public static FixType<CompoundTag> CHUNK = new FixType<>();
public static FixType<CompoundBinaryTag> BLOCK_ENTITY = new FixType<>(); public static FixType<CompoundTag> BLOCK_ENTITY = new FixType<>();
public static FixType<CompoundBinaryTag> ENTITY = new FixType<>(); public static FixType<CompoundTag> ENTITY = new FixType<>();
public static FixType<String> BLOCK_STATE = new FixType<>(); public static FixType<String> BLOCK_STATE = new FixType<>();
public static FixType<String> BIOME = new FixType<>(); public static FixType<String> BIOME = new FixType<>();
public static FixType<String> ITEM_TYPE = new FixType<>(); public static FixType<String> ITEM_TYPE = new FixType<>();

View File

@ -19,7 +19,6 @@
package com.sk89q.worldedit.world.storage; package com.sk89q.worldedit.world.storage;
import com.sk89q.jnbt.AdventureNBTConverter;
import com.sk89q.jnbt.CompoundTag; import com.sk89q.jnbt.CompoundTag;
import com.sk89q.jnbt.NBTInputStream; import com.sk89q.jnbt.NBTInputStream;
import com.sk89q.jnbt.Tag; import com.sk89q.jnbt.Tag;
@ -120,13 +119,7 @@ public class ChunkStoreHelper {
.containsKey("Sections") && dataVersion < currentDataVersion) { // only fix up MCA format, DFU doesn't support MCR chunks .containsKey("Sections") && dataVersion < currentDataVersion) { // only fix up MCA format, DFU doesn't support MCR chunks
final DataFixer dataFixer = platform.getDataFixer(); final DataFixer dataFixer = platform.getDataFixer();
if (dataFixer != null) { if (dataFixer != null) {
//FAWE start - use Adventure tag = (CompoundTag) dataFixer.fixUp(DataFixer.FixTypes.CHUNK, rootTag, dataVersion).getValue().get("Level");
tag = (CompoundTag) ((CompoundTag) AdventureNBTConverter.fromAdventure(dataFixer.fixUp(
DataFixer.FixTypes.CHUNK,
rootTag.asBinaryTag(),
dataVersion
))).getValue().get("Level");
//FAWE end
dataVersion = currentDataVersion; dataVersion = currentDataVersion;
} }
} }