Update ViaNBT

This commit is contained in:
Nassim Jahnke 2023-12-31 14:04:57 +01:00
parent 83fa0c613f
commit 651bf052fc
No known key found for this signature in database
GPG Key ID: EF6771C01F6EF02F
12 changed files with 26 additions and 36 deletions

View File

@ -21,9 +21,10 @@ import com.viaversion.viabackwards.ViaBackwards;
import com.viaversion.viaversion.libs.gson.JsonIOException; import com.viaversion.viaversion.libs.gson.JsonIOException;
import com.viaversion.viaversion.libs.gson.JsonObject; import com.viaversion.viaversion.libs.gson.JsonObject;
import com.viaversion.viaversion.libs.gson.JsonSyntaxException; import com.viaversion.viaversion.libs.gson.JsonSyntaxException;
import com.viaversion.viaversion.libs.opennbt.NBTIO;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag;
import com.viaversion.viaversion.libs.opennbt.tag.io.NBTIO;
import com.viaversion.viaversion.libs.opennbt.tag.io.TagReader;
import com.viaversion.viaversion.util.GsonUtil; import com.viaversion.viaversion.util.GsonUtil;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
@ -35,6 +36,8 @@ import org.checkerframework.checker.nullness.qual.Nullable;
public final class VBMappingDataLoader { public final class VBMappingDataLoader {
private static final TagReader<CompoundTag> TAG_READER = NBTIO.reader(CompoundTag.class).named();
public static @Nullable CompoundTag loadNBT(final String name) { public static @Nullable CompoundTag loadNBT(final String name) {
final InputStream resource = getResource(name); final InputStream resource = getResource(name);
if (resource == null) { if (resource == null) {
@ -42,7 +45,7 @@ public final class VBMappingDataLoader {
} }
try (final InputStream stream = resource) { try (final InputStream stream = resource) {
return NBTIO.readTag(stream); return TAG_READER.read(stream);
} catch (final IOException e) { } catch (final IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@ -65,7 +68,7 @@ public final class VBMappingDataLoader {
ViaBackwards.getPlatform().getLogger().info("Loading " + name + " from plugin folder"); ViaBackwards.getPlatform().getLogger().info("Loading " + name + " from plugin folder");
try { try {
final CompoundTag fileData = NBTIO.readFile(file, false, false); final CompoundTag fileData = TAG_READER.read(file.toPath(), false);
return mergeTags(packedData, fileData); return mergeTags(packedData, fileData);
} catch (final IOException e) { } catch (final IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);

View File

@ -73,7 +73,7 @@ public abstract class ItemRewriterBase<C extends ClientboundPacketType, S extend
// Clone all tag entries // Clone all tag entries
ListTag listTag = new ListTag(); ListTag listTag = new ListTag();
for (Tag tag : original.getValue()) { for (Tag tag : original.getValue()) {
listTag.add(tag.clone()); listTag.add(tag.copy());
} }
displayTag.put(backupName, listTag); displayTag.put(backupName, listTag);

View File

@ -51,7 +51,7 @@ public class LegacyEnchantmentRewriter {
ListTag enchantments = tag.get(key); ListTag enchantments = tag.get(key);
ListTag remappedEnchantments = new ListTag(CompoundTag.class); ListTag remappedEnchantments = new ListTag(CompoundTag.class);
List<Tag> lore = new ArrayList<>(); List<Tag> lore = new ArrayList<>();
for (Tag enchantmentEntry : enchantments.clone()) { for (Tag enchantmentEntry : enchantments.copy()) {
Tag idTag = ((CompoundTag) enchantmentEntry).get("id"); Tag idTag = ((CompoundTag) enchantmentEntry).get("id");
if (idTag == null) continue; if (idTag == null) continue;
@ -114,7 +114,7 @@ public class LegacyEnchantmentRewriter {
} }
if (!storedEnchant && tag.remove(nbtTagName + "|dummyEnchant") != null) { if (!storedEnchant && tag.remove(nbtTagName + "|dummyEnchant") != null) {
for (Tag enchantment : enchantments.clone()) { for (Tag enchantment : enchantments.copy()) {
short id = ((NumberTag) ((CompoundTag) enchantment).get("id")).asShort(); short id = ((NumberTag) ((CompoundTag) enchantment).get("id")).asShort();
short level = ((NumberTag) ((CompoundTag) enchantment).get("lvl")).asShort(); short level = ((NumberTag) ((CompoundTag) enchantment).get("lvl")).asShort();
if (id == 0 && level == 0) { if (id == 0 && level == 0) {
@ -133,7 +133,7 @@ public class LegacyEnchantmentRewriter {
CompoundTag display = tag.get("display"); CompoundTag display = tag.get("display");
// A few null checks just to be safe, though they shouldn't actually be // A few null checks just to be safe, though they shouldn't actually be
ListTag lore = display != null ? display.get("Lore") : null; ListTag lore = display != null ? display.get("Lore") : null;
for (Tag enchantment : remappedEnchantments.clone()) { for (Tag enchantment : remappedEnchantments.copy()) {
enchantments.add(enchantment); enchantments.add(enchantment);
if (lore != null && lore.size() != 0) { if (lore != null && lore.size() != 0) {
lore.remove(lore.get(0)); lore.remove(lore.get(0));

View File

@ -585,7 +585,7 @@ public class BlockItemPackets1_13 extends com.viaversion.viabackwards.api.rewrit
if (blockTag == null) return; if (blockTag == null) return;
ListTag newCanPlaceOn = new ListTag(StringTag.class); ListTag newCanPlaceOn = new ListTag(StringTag.class);
tag.put(extraNbtTag + "|" + tagName, blockTag.clone()); tag.put(extraNbtTag + "|" + tagName, blockTag.copy());
for (Tag oldTag : blockTag) { for (Tag oldTag : blockTag) {
Object value = oldTag.getValue(); Object value = oldTag.getValue();
String[] newValues = value instanceof String ? String[] newValues = value instanceof String ?
@ -611,7 +611,7 @@ public class BlockItemPackets1_13 extends com.viaversion.viabackwards.api.rewrit
ListTag newEnchantments = new ListTag(CompoundTag.class); ListTag newEnchantments = new ListTag(CompoundTag.class);
List<Tag> lore = new ArrayList<>(); List<Tag> lore = new ArrayList<>();
boolean hasValidEnchants = false; boolean hasValidEnchants = false;
for (Tag enchantmentEntryTag : enchantments.clone()) { for (Tag enchantmentEntryTag : enchantments.copy()) {
CompoundTag enchantmentEntry = (CompoundTag) enchantmentEntryTag; CompoundTag enchantmentEntry = (CompoundTag) enchantmentEntryTag;
Tag idTag = enchantmentEntry.get("id"); Tag idTag = enchantmentEntry.get("id");
if (!(idTag instanceof StringTag)) { if (!(idTag instanceof StringTag)) {
@ -708,7 +708,7 @@ public class BlockItemPackets1_13 extends com.viaversion.viabackwards.api.rewrit
} else if (loreTag.size() != 0) { } else if (loreTag.size() != 0) {
ListTag oldLore = new ListTag(StringTag.class); ListTag oldLore = new ListTag(StringTag.class);
for (Tag value : loreTag) { for (Tag value : loreTag) {
oldLore.add(value.clone()); oldLore.add(value.copy());
} }
tag.put(extraNbtTag + "|OldLore", oldLore); tag.put(extraNbtTag + "|OldLore", oldLore);
@ -835,7 +835,7 @@ public class BlockItemPackets1_13 extends com.viaversion.viabackwards.api.rewrit
if (!(tag.get(tagName) instanceof ListTag)) return; if (!(tag.get(tagName) instanceof ListTag)) return;
ListTag blockTag = tag.remove(extraNbtTag + "|" + tagName); ListTag blockTag = tag.remove(extraNbtTag + "|" + tagName);
if (blockTag != null) { if (blockTag != null) {
tag.put(tagName, blockTag.clone()); tag.put(tagName, blockTag.copy());
} else if ((blockTag = tag.get(tagName)) != null) { } else if ((blockTag = tag.get(tagName)) != null) {
ListTag newCanPlaceOn = new ListTag(StringTag.class); ListTag newCanPlaceOn = new ListTag(StringTag.class);
for (Tag oldTag : blockTag) { for (Tag oldTag : blockTag) {

View File

@ -46,7 +46,7 @@ public class PlayerLastCursorItem implements StorableObject {
return null; return null;
} }
Item copy = new DataItem(item); Item copy = new DataItem(item);
copy.setTag(copy.tag() == null ? null : copy.tag().clone()); copy.setTag(copy.tag() == null ? null : copy.tag().copy());
return copy; return copy;
} }
} }

View File

@ -20,13 +20,11 @@ package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.data;
import com.viaversion.viabackwards.api.data.VBMappingDataLoader; import com.viaversion.viabackwards.api.data.VBMappingDataLoader;
import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap;
import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap;
import com.viaversion.viaversion.libs.opennbt.NBTIO;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag;
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2; import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2;
import java.io.IOException;
import org.checkerframework.checker.nullness.qual.Nullable; import org.checkerframework.checker.nullness.qual.Nullable;
public final class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings { public final class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings {
@ -41,15 +39,11 @@ public final class BackwardsMappings extends com.viaversion.viabackwards.api.dat
protected void loadExtras(final CompoundTag data) { protected void loadExtras(final CompoundTag data) {
super.loadExtras(data); super.loadExtras(data);
try { final ListTag chatTypes = VBMappingDataLoader.loadNBT("chat-types-1.19.1.nbt").get("values");
final ListTag chatTypes = NBTIO.readTag(VBMappingDataLoader.getResource("chat-types-1.19.1.nbt")).get("values"); for (final Tag chatType : chatTypes) {
for (final Tag chatType : chatTypes) { final CompoundTag chatTypeCompound = (CompoundTag) chatType;
final CompoundTag chatTypeCompound = (CompoundTag) chatType; final NumberTag idTag = chatTypeCompound.get("id");
final NumberTag idTag = chatTypeCompound.get("id"); defaultChatTypes.put(idTag.asInt(), chatTypeCompound);
defaultChatTypes.put(idTag.asInt(), chatTypeCompound);
}
} catch (final IOException e) {
e.printStackTrace();
} }
} }

View File

@ -133,7 +133,7 @@ public final class EntityPackets1_19 extends EntityRewriter<ClientboundPackets1_
final CompoundTag dimensionCompound = (CompoundTag) dimension; final CompoundTag dimensionCompound = (CompoundTag) dimension;
final StringTag nameTag = dimensionCompound.get("name"); final StringTag nameTag = dimensionCompound.get("name");
final CompoundTag dimensionData = dimensionCompound.get("element"); final CompoundTag dimensionData = dimensionCompound.get("element");
dimensionRegistryStorage.addDimension(nameTag.getValue(), dimensionData.clone()); dimensionRegistryStorage.addDimension(nameTag.getValue(), dimensionData.copy());
if (!found && nameTag.getValue().equals(dimensionKey)) { if (!found && nameTag.getValue().equals(dimensionKey)) {
wrapper.write(Type.NAMED_COMPOUND_TAG, dimensionData); wrapper.write(Type.NAMED_COMPOUND_TAG, dimensionData);

View File

@ -33,7 +33,7 @@ public final class DimensionRegistryStorage implements StorableObject {
public @Nullable CompoundTag dimension(final String dimensionKey) { public @Nullable CompoundTag dimension(final String dimensionKey) {
final CompoundTag compoundTag = dimensions.get(dimensionKey); final CompoundTag compoundTag = dimensions.get(dimensionKey);
return compoundTag != null ? compoundTag.clone() : null; return compoundTag != null ? compoundTag.copy() : null;
} }
public void addDimension(final String dimensionKey, final CompoundTag dimension) { public void addDimension(final String dimensionKey, final CompoundTag dimension) {

View File

@ -18,10 +18,8 @@
package com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.data; package com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.data;
import com.viaversion.viabackwards.api.data.VBMappingDataLoader; import com.viaversion.viabackwards.api.data.VBMappingDataLoader;
import com.viaversion.viaversion.libs.opennbt.NBTIO;
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4; import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4;
import java.io.IOException;
public class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings { public class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings {
@ -35,14 +33,10 @@ public class BackwardsMappings extends com.viaversion.viabackwards.api.data.Back
protected void loadExtras(CompoundTag data) { protected void loadExtras(CompoundTag data) {
super.loadExtras(data); super.loadExtras(data);
try { trimPatternRegistry = VBMappingDataLoader.loadNBT("trim_pattern-1.19.4.nbt");
trimPatternRegistry = NBTIO.readTag(VBMappingDataLoader.getResource("trim_pattern-1.19.4.nbt"));
} catch (final IOException e) {
e.printStackTrace();
}
} }
public CompoundTag getTrimPatternRegistry() { public CompoundTag getTrimPatternRegistry() {
return trimPatternRegistry; return trimPatternRegistry.copy();
} }
} }

View File

@ -87,7 +87,7 @@ public final class EntityPackets1_20 extends EntityRewriter<ClientboundPackets1_
if (registry.contains("minecraft:trim_pattern")) { if (registry.contains("minecraft:trim_pattern")) {
values = ((CompoundTag) registry.get("minecraft:trim_pattern")).get("value"); values = ((CompoundTag) registry.get("minecraft:trim_pattern")).get("value");
} else { } else {
final CompoundTag trimPatternRegistry = Protocol1_19_4To1_20.MAPPINGS.getTrimPatternRegistry().clone(); final CompoundTag trimPatternRegistry = Protocol1_19_4To1_20.MAPPINGS.getTrimPatternRegistry().copy();
registry.put("minecraft:trim_pattern", trimPatternRegistry); registry.put("minecraft:trim_pattern", trimPatternRegistry);
values = trimPatternRegistry.get("value"); values = trimPatternRegistry.get("value");
} }

View File

@ -112,7 +112,7 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol<ClientboundPac
// Replace with 1.19 chat types // Replace with 1.19 chat types
// Ensures that the client has a chat type for system message, with and without overlay // Ensures that the client has a chat type for system message, with and without overlay
registry.put("minecraft:chat_type", EntityPackets.CHAT_REGISTRY.clone()); registry.put("minecraft:chat_type", EntityPackets.CHAT_REGISTRY.copy());
}); });
handler(entityRewriter.worldTrackerHandlerByKey()); handler(entityRewriter.worldTrackerHandlerByKey());
} }

View File

@ -4,7 +4,6 @@ rootProject.name = "viabackwards-parent"
dependencyResolutionManagement { dependencyResolutionManagement {
repositories { repositories {
mavenLocal()
maven("https://repo.viaversion.com") maven("https://repo.viaversion.com")
maven("https://repo.papermc.io/repository/maven-public/") maven("https://repo.papermc.io/repository/maven-public/")
maven("https://oss.sonatype.org/content/repositories/snapshots/") maven("https://oss.sonatype.org/content/repositories/snapshots/")