From 388eb7378214e9a526941b410f4256e59d210cb9 Mon Sep 17 00:00:00 2001 From: KennyTV Date: Sun, 14 Mar 2021 16:57:37 +0100 Subject: [PATCH] Update nbt usage --- buildSrc/src/main/kotlin/Versions.kt | 2 +- common/build.gradle.kts | 2 +- .../api/minecraft/nbt/BinaryTagIO.java | 7 +- .../api/minecraft/nbt/TagStringReader.java | 52 +++----- .../api/minecraft/nbt/TagStringWriter.java | 19 +-- .../api/type/types/minecraft/NBTType.java | 11 +- .../Protocol1_12To1_11_1.java | 12 +- .../data/ComponentRewriter1_13.java | 6 +- .../packets/InventoryPackets.java | 119 +++++++++--------- .../blockentities/BannerHandler.java | 2 +- .../providers/blockentities/BedHandler.java | 7 +- .../providers/blockentities/SkullHandler.java | 5 +- .../packets/InventoryPackets.java | 8 +- .../packets/WorldPackets.java | 6 +- .../data/MappingData.java | 2 +- .../packets/EntityPackets.java | 100 +++++++-------- .../packets/InventoryPackets.java | 13 +- .../packets/WorldPackets.java | 15 +-- .../packets/WorldPackets.java | 4 +- .../Protocol1_9_3To1_9_1_2.java | 12 +- .../chunks/FakeTileEntity.java | 10 +- .../protocol1_9to1_8/ItemRewriter.java | 22 ++-- .../packets/WorldPackets.java | 12 +- .../storage/CommandBlockStorage.java | 6 +- 24 files changed, 212 insertions(+), 242 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 5ff2b6ad8..ebbdcea3e 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -3,7 +3,7 @@ object Versions { const val adventure = "4.6.0" const val gson = "2.8.6" const val fastUtil = "8.3.1" - const val openNBT = "1.2-SNAPSHOT" + const val openNBT = "2.0-SNAPSHOT" const val javassist = "3.27.0-GA" // Common provided diff --git a/common/build.gradle.kts b/common/build.gradle.kts index b9ea1810d..8265d0532 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -10,7 +10,7 @@ blossom { dependencies { api(project(":adventure", "shadow")) api("it.unimi.dsi", "fastutil", Versions.fastUtil) - api("com.github.steveice10", "opennbt", Versions.openNBT) + api("com.viaversion", "opennbt", Versions.openNBT) api("com.google.code.gson", "gson", Versions.gson) compileOnlyApi("org.yaml", "snakeyaml", Versions.snakeYaml) diff --git a/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/BinaryTagIO.java b/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/BinaryTagIO.java index a1be177e2..129ae556b 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/BinaryTagIO.java +++ b/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/BinaryTagIO.java @@ -23,7 +23,6 @@ */ package us.myles.ViaVersion.api.minecraft.nbt; -import com.github.steveice10.opennbt.tag.TagRegistry; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import org.jetbrains.annotations.NotNull; @@ -109,12 +108,12 @@ public final class BinaryTagIO { @NotNull public static CompoundTag readDataInput(final @NotNull DataInput input) throws IOException { byte type = input.readByte(); - if (type != TagRegistry.getIdFor(CompoundTag.class)) { + if (type != CompoundTag.ID) { throw new IOException(String.format("Expected root tag to be a CompoundTag, was %s", type)); } input.skipBytes(input.readUnsignedShort()); // read empty name - final CompoundTag compoundTag = new CompoundTag(""); + final CompoundTag compoundTag = new CompoundTag(); compoundTag.read(input); return compoundTag; } @@ -175,7 +174,7 @@ public final class BinaryTagIO { * @throws IOException if an exception was encountered while writing the compound tag */ public static void writeDataOutput(final @NotNull CompoundTag tag, final @NotNull DataOutput output) throws IOException { - output.writeByte(TagRegistry.getIdFor(CompoundTag.class)); + output.writeByte(CompoundTag.ID); output.writeUTF(""); // write empty name tag.write(output); } diff --git a/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/TagStringReader.java b/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/TagStringReader.java index aad4ab2b4..5a5dd3669 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/TagStringReader.java +++ b/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/TagStringReader.java @@ -33,11 +33,11 @@ import com.github.steveice10.opennbt.tag.builtin.IntTag; import com.github.steveice10.opennbt.tag.builtin.ListTag; import com.github.steveice10.opennbt.tag.builtin.LongArrayTag; import com.github.steveice10.opennbt.tag.builtin.LongTag; +import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.ShortTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.stream.IntStream; @@ -46,25 +46,15 @@ import java.util.stream.IntStream; * See https://github.com/KyoriPowered/adventure. */ /* package */ final class TagStringReader { - private static final Field NAME_FIELD = getNameField(); private final CharBuffer buffer; - private static Field getNameField() { - try { - return Tag.class.getDeclaredField("name"); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - throw new IllegalArgumentException(e); - } - } - public TagStringReader(final CharBuffer buffer) { this.buffer = buffer; } public CompoundTag compound() throws StringTagParseException { this.buffer.expect(Tokens.COMPOUND_BEGIN); - final CompoundTag compoundTag = new CompoundTag(""); + final CompoundTag compoundTag = new CompoundTag(); if (this.buffer.peek() == Tokens.COMPOUND_END) { this.buffer.take(); return compoundTag; @@ -73,17 +63,7 @@ import java.util.stream.IntStream; while (this.buffer.hasMore()) { final String key = this.key(); final Tag tag = this.tag(); - // Doesn't get around this with the steveice lib :/ - try { - if (!NAME_FIELD.isAccessible()) { - NAME_FIELD.setAccessible(true); - } - NAME_FIELD.set(tag, key); - } catch (IllegalAccessException e) { - throw new IllegalArgumentException(e); - } - - compoundTag.put(tag); + compoundTag.put(key, tag); if (this.separatorOrCompleteWith(Tokens.COMPOUND_END)) { return compoundTag; } @@ -92,7 +72,7 @@ import java.util.stream.IntStream; } public ListTag list() throws StringTagParseException { - final ListTag listTag = new ListTag(""); + final ListTag listTag = new ListTag(); this.buffer.expect(Tokens.ARRAY_BEGIN); final boolean prefixedIndex = this.buffer.peek() == '0' && this.buffer.peek(1) == ':'; while (this.buffer.hasMore()) { @@ -126,11 +106,11 @@ import java.util.stream.IntStream; .expect(Tokens.ARRAY_SIGNATURE_SEPARATOR); if (elementType == Tokens.TYPE_BYTE) { - return new ByteArrayTag("", this.byteArray()); + return new ByteArrayTag(this.byteArray()); } else if (elementType == Tokens.TYPE_INT) { - return new IntArrayTag("", this.intArray()); + return new IntArrayTag(this.intArray()); } else if (elementType == Tokens.TYPE_LONG) { - return new LongArrayTag("", this.longArray()); + return new LongArrayTag(this.longArray()); } else { throw this.buffer.makeError("Type " + elementType + " is not a valid element type in an array!"); } @@ -164,7 +144,7 @@ import java.util.stream.IntStream; if (!(value instanceof IntTag)) { throw this.buffer.makeError("All elements of an int array must be ints!"); } - builder.add(((IntTag) value).getValue()); + builder.add(((NumberTag) value).asInt()); if (this.separatorOrCompleteWith(Tokens.ARRAY_END)) { return builder.build().toArray(); } @@ -226,7 +206,7 @@ import java.util.stream.IntStream; case Tokens.DOUBLE_QUOTE: // definitely a string tag this.buffer.advance(); - return new StringTag("", unescape(this.buffer.takeUntil(startToken).toString())); + return new StringTag(unescape(this.buffer.takeUntil(startToken).toString())); default: // scalar return this.scalar(); } @@ -251,19 +231,19 @@ import java.util.stream.IntStream; switch (Character.toUpperCase(current)) { // try to read and return as a number // case Tokens.TYPE_INTEGER: // handled below, ints are ~special~ case Tokens.TYPE_BYTE: - result = new ByteTag("", Byte.parseByte(builder.toString())); + result = new ByteTag(Byte.parseByte(builder.toString())); break; case Tokens.TYPE_SHORT: - result = new ShortTag("", (Short.parseShort(builder.toString()))); + result = new ShortTag(Short.parseShort(builder.toString())); break; case Tokens.TYPE_LONG: - result = new LongTag("", (Long.parseLong(builder.toString()))); + result = new LongTag(Long.parseLong(builder.toString())); break; case Tokens.TYPE_FLOAT: - result = new FloatTag("", (Float.parseFloat(builder.toString()))); + result = new FloatTag(Float.parseFloat(builder.toString())); break; case Tokens.TYPE_DOUBLE: - result = new DoubleTag("", (Double.parseDouble(builder.toString()))); + result = new DoubleTag(Double.parseDouble(builder.toString())); break; } } catch (final NumberFormatException ex) { @@ -288,12 +268,12 @@ import java.util.stream.IntStream; final String built = builder.toString(); if (possiblyNumeric) { try { - return new IntTag("", Integer.parseInt(built)); + return new IntTag(Integer.parseInt(built)); } catch (final NumberFormatException ex) { // ignore } } - return new StringTag("", built); + return new StringTag(built); } diff --git a/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/TagStringWriter.java b/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/TagStringWriter.java index 7534bdaa1..a37bd12f1 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/TagStringWriter.java +++ b/common/src/main/java/us/myles/ViaVersion/api/minecraft/nbt/TagStringWriter.java @@ -39,6 +39,7 @@ import com.github.steveice10.opennbt.tag.builtin.Tag; import java.io.IOException; import java.io.Writer; +import java.util.Map; /** * See https://github.com/KyoriPowered/adventure. @@ -72,17 +73,17 @@ import java.io.Writer; } else if (tag instanceof StringTag) { return this.value(((StringTag) tag).getValue(), Tokens.EOF); } else if (tag instanceof ByteTag) { - return this.value(Byte.toString(((ByteTag) tag).getValue()), Tokens.TYPE_BYTE); + return this.value(Byte.toString(((ByteTag) tag).asByte()), Tokens.TYPE_BYTE); } else if (tag instanceof ShortTag) { - return this.value(Short.toString(((ShortTag) tag).getValue()), Tokens.TYPE_SHORT); + return this.value(Short.toString(((ShortTag) tag).asShort()), Tokens.TYPE_SHORT); } else if (tag instanceof IntTag) { - return this.value(Integer.toString(((IntTag) tag).getValue()), Tokens.TYPE_INT); + return this.value(Integer.toString(((IntTag) tag).asInt()), Tokens.TYPE_INT); } else if (tag instanceof LongTag) { - return this.value(Long.toString(((LongTag) tag).getValue()), Tokens.TYPE_LONG); + return this.value(Long.toString(((LongTag) tag).asLong()), Tokens.TYPE_LONG); } else if (tag instanceof FloatTag) { - return this.value(Float.toString(((FloatTag) tag).getValue()), Tokens.TYPE_FLOAT); + return this.value(Float.toString(((FloatTag) tag).asFloat()), Tokens.TYPE_FLOAT); } else if (tag instanceof DoubleTag) { - return this.value(Double.toString(((DoubleTag) tag).getValue()), Tokens.TYPE_DOUBLE); + return this.value(Double.toString(((DoubleTag) tag).asDouble()), Tokens.TYPE_DOUBLE); } else { throw new IOException("Unknown tag type: " + tag.getClass().getSimpleName()); // unknown! @@ -91,9 +92,9 @@ import java.io.Writer; private TagStringWriter writeCompound(final CompoundTag tag) throws IOException { this.beginCompound(); - for (Tag t : tag) { - this.key(t.getName()); - this.writeTag(t); + for (Map.Entry entry : tag.entrySet()) { + this.key(entry.getKey()); + this.writeTag(entry.getValue()); } this.endCompound(); return this; diff --git a/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/NBTType.java b/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/NBTType.java index 4e9ac52e2..504bbbf5a 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/NBTType.java +++ b/common/src/main/java/us/myles/ViaVersion/api/type/types/minecraft/NBTType.java @@ -1,7 +1,6 @@ package us.myles.ViaVersion.api.type.types.minecraft; import com.github.steveice10.opennbt.NBTIO; -import com.github.steveice10.opennbt.tag.TagRegistry; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.google.common.base.Preconditions; import io.netty.buffer.ByteBuf; @@ -10,17 +9,9 @@ import io.netty.buffer.ByteBufOutputStream; import us.myles.ViaVersion.api.type.Type; import java.io.DataInput; -import java.io.DataInputStream; import java.io.DataOutput; -import java.io.DataOutputStream; public class NBTType extends Type { - static { - // We don't need them - TagRegistry.unregister(60); - TagRegistry.unregister(61); - TagRegistry.unregister(65); - } public NBTType() { super(CompoundTag.class); @@ -36,7 +27,7 @@ public class NBTType extends Type { return null; } else { buffer.readerIndex(readerIndex); - return (CompoundTag) NBTIO.readTag((DataInput) new ByteBufInputStream(buffer)); + return NBTIO.readTag((DataInput) new ByteBufInputStream(buffer)); } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java index 7fdda805f..16d060119 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java @@ -116,12 +116,12 @@ public class Protocol1_12To1_11_1 extends Protocol { color:14, x:132, y:64, z:222, id:"minecraft:bed" } (Debug output) - CompoundTag tag = new CompoundTag(""); - tag.put(new IntTag("color", 14)); // Set color to red (Default in previous versions) - tag.put(new IntTag("x", x + (chunk.getX() << 4))); - tag.put(new IntTag("y", y + (i << 4))); - tag.put(new IntTag("z", z + (chunk.getZ() << 4))); - tag.put(new StringTag("id", "minecraft:bed")); + CompoundTag tag = new CompoundTag(); + tag.put("color", new IntTag(14)); // Set color to red (Default in previous versions) + tag.put("x", new IntTag(x + (chunk.getX() << 4))); + tag.put("y", new IntTag(y + (i << 4))); + tag.put("z", new IntTag(z + (chunk.getZ() << 4))); + tag.put("id", new StringTag("minecraft:bed")); // Add a fake block entity chunk.getBlockEntities().add(tag); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java index eb32c295f..0f1016482 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java @@ -49,7 +49,7 @@ public class ComponentRewriter1_13 extends ComponentRewriter { ShortTag damageTag = tag.get("Damage"); // Call item converter - short damage = damageTag != null ? damageTag.getValue() : 0; + short damage = damageTag != null ? damageTag.asShort() : 0; Item item = new Item(); item.setData(damage); item.setTag(itemTag); @@ -57,10 +57,10 @@ public class ComponentRewriter1_13 extends ComponentRewriter { // Serialize again if (damage != item.getData()) { - tag.put(new ShortTag("Damage", item.getData())); + tag.put("Damage", new ShortTag(item.getData())); } if (itemTag != null) { - tag.put(itemTag); + tag.put("tag", itemTag); } JsonArray array = new JsonArray(); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java index f7f579811..9d927c183 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java @@ -4,6 +4,7 @@ import com.github.steveice10.opennbt.conversion.ConverterRegistry; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.github.steveice10.opennbt.tag.builtin.IntTag; import com.github.steveice10.opennbt.tag.builtin.ListTag; +import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.ShortTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; @@ -263,12 +264,12 @@ public class InventoryPackets { // NBT Additions if (isDamageable(item.getIdentifier())) { - if (tag == null) item.setTag(tag = new CompoundTag("tag")); - tag.put(new IntTag("Damage", item.getData())); + if (tag == null) item.setTag(tag = new CompoundTag()); + tag.put("Damage", new IntTag(item.getData())); } if (item.getIdentifier() == 358) { // map - if (tag == null) item.setTag(tag = new CompoundTag("tag")); - tag.put(new IntTag("map", item.getData())); + if (tag == null) item.setTag(tag = new CompoundTag()); + tag.put("map", new IntTag(item.getData())); } // NBT Changes @@ -282,16 +283,16 @@ public class InventoryPackets { IntTag base = blockEntityTag.get("Base"); // Set banner item id according to nbt if (banner) { - rawId = 6800 + base.getValue(); + rawId = 6800 + base.asInt(); } - base.setValue(15 - base.getValue()); + base.setValue(15 - base.asInt()); } if (blockEntityTag.get("Patterns") instanceof ListTag) { for (Tag pattern : (ListTag) blockEntityTag.get("Patterns")) { if (pattern instanceof CompoundTag) { IntTag c = ((CompoundTag) pattern).get("Color"); - c.setValue(15 - c.getValue()); // Invert color id + c.setValue(15 - c.asInt()); // Invert color id } } } @@ -302,55 +303,53 @@ public class InventoryPackets { CompoundTag display = tag.get("display"); if (display.get("Name") instanceof StringTag) { StringTag name = display.get("Name"); - display.put(new StringTag(NBT_TAG_NAME + "|Name", name.getValue())); + display.put(NBT_TAG_NAME + "|Name", new StringTag(name.getValue())); name.setValue(ChatRewriter.legacyTextToJsonString(name.getValue(), true)); } } // ench is now Enchantments and now uses identifiers if (tag.get("ench") instanceof ListTag) { ListTag ench = tag.get("ench"); - ListTag enchantments = new ListTag("Enchantments", CompoundTag.class); + ListTag enchantments = new ListTag(CompoundTag.class); for (Tag enchEntry : ench) { if (enchEntry instanceof CompoundTag) { - CompoundTag enchantmentEntry = new CompoundTag(""); - short oldId = ((Number) ((CompoundTag) enchEntry).get("id").getValue()).shortValue(); + CompoundTag enchantmentEntry = new CompoundTag(); + short oldId = ((NumberTag) ((CompoundTag) enchEntry).get("id")).asShort(); String newId = Protocol1_13To1_12_2.MAPPINGS.getOldEnchantmentsIds().get(oldId); if (newId == null) { newId = "viaversion:legacy/" + oldId; } - enchantmentEntry.put(new StringTag("id", newId)); - enchantmentEntry.put(new ShortTag("lvl", ((Number) ((CompoundTag) enchEntry).get("lvl").getValue()).shortValue())); + enchantmentEntry.put("id", new StringTag(newId)); + enchantmentEntry.put("lvl", new ShortTag(((NumberTag) ((CompoundTag) enchEntry).get("lvl")).asShort())); enchantments.add(enchantmentEntry); } } tag.remove("ench"); - tag.put(enchantments); + tag.put("Enchantments", enchantments); } if (tag.get("StoredEnchantments") instanceof ListTag) { ListTag storedEnch = tag.get("StoredEnchantments"); - ListTag newStoredEnch = new ListTag("StoredEnchantments", CompoundTag.class); + ListTag newStoredEnch = new ListTag(CompoundTag.class); for (Tag enchEntry : storedEnch) { if (enchEntry instanceof CompoundTag) { - CompoundTag enchantmentEntry = new CompoundTag(""); - short oldId = ((Number) ((CompoundTag) enchEntry).get("id").getValue()).shortValue(); + CompoundTag enchantmentEntry = new CompoundTag(); + short oldId = ((NumberTag) ((CompoundTag) enchEntry).get("id")).asShort(); String newId = Protocol1_13To1_12_2.MAPPINGS.getOldEnchantmentsIds().get(oldId); if (newId == null) { newId = "viaversion:legacy/" + oldId; } - enchantmentEntry.put(new StringTag("id", - newId - )); - enchantmentEntry.put(new ShortTag("lvl", ((Number) ((CompoundTag) enchEntry).get("lvl").getValue()).shortValue())); + enchantmentEntry.put("id", new StringTag(newId)); + enchantmentEntry.put("lvl", new ShortTag(((NumberTag) ((CompoundTag) enchEntry).get("lvl")).asShort())); newStoredEnch.add(enchantmentEntry); } } tag.remove("StoredEnchantments"); - tag.put(newStoredEnch); + tag.put("StoredEnchantments", newStoredEnch); } if (tag.get("CanPlaceOn") instanceof ListTag) { ListTag old = tag.get("CanPlaceOn"); - ListTag newCanPlaceOn = new ListTag("CanPlaceOn", StringTag.class); - tag.put(ConverterRegistry.convertToTag(NBT_TAG_NAME + "|CanPlaceOn", ConverterRegistry.convertToValue(old))); // There will be data losing + ListTag newCanPlaceOn = new ListTag(StringTag.class); + tag.put(NBT_TAG_NAME + "|CanPlaceOn", ConverterRegistry.convertToTag(ConverterRegistry.convertToValue(old))); // There will be data losing for (Tag oldTag : old) { Object value = oldTag.getValue(); String oldId = value.toString().replace("minecraft:", ""); @@ -361,18 +360,18 @@ public class InventoryPackets { String[] newValues = BlockIdData.blockIdMapping.get(oldId.toLowerCase(Locale.ROOT)); if (newValues != null) { for (String newValue : newValues) { - newCanPlaceOn.add(new StringTag("", newValue)); + newCanPlaceOn.add(new StringTag(newValue)); } } else { - newCanPlaceOn.add(new StringTag("", oldId.toLowerCase(Locale.ROOT))); + newCanPlaceOn.add(new StringTag(oldId.toLowerCase(Locale.ROOT))); } } - tag.put(newCanPlaceOn); + tag.put("CanPlaceOn", newCanPlaceOn); } if (tag.get("CanDestroy") instanceof ListTag) { ListTag old = tag.get("CanDestroy"); - ListTag newCanDestroy = new ListTag("CanDestroy", StringTag.class); - tag.put(ConverterRegistry.convertToTag(NBT_TAG_NAME + "|CanDestroy", ConverterRegistry.convertToValue(old))); // There will be data losing + ListTag newCanDestroy = new ListTag(StringTag.class); + tag.put(NBT_TAG_NAME + "|CanDestroy", ConverterRegistry.convertToTag(ConverterRegistry.convertToValue(old))); // There will be data losing for (Tag oldTag : old) { Object value = oldTag.getValue(); String oldId = value.toString().replace("minecraft:", ""); @@ -383,13 +382,13 @@ public class InventoryPackets { String[] newValues = BlockIdData.blockIdMapping.get(oldId.toLowerCase(Locale.ROOT)); if (newValues != null) { for (String newValue : newValues) { - newCanDestroy.add(new StringTag("", newValue)); + newCanDestroy.add(new StringTag(newValue)); } } else { - newCanDestroy.add(new StringTag("", oldId.toLowerCase(Locale.ROOT))); + newCanDestroy.add(new StringTag(oldId.toLowerCase(Locale.ROOT))); } } - tag.put(newCanDestroy); + tag.put("CanDestroy", newCanDestroy); } // Handle SpawnEggs if (item.getIdentifier() == 383) { @@ -421,8 +420,8 @@ public class InventoryPackets { if (!Protocol1_13To1_12_2.MAPPINGS.getItemMappings().containsKey(rawId)) { if (!isDamageable(item.getIdentifier()) && item.getIdentifier() != 358) { // Map - if (tag == null) item.setTag(tag = new CompoundTag("tag")); - tag.put(new IntTag(NBT_TAG_NAME, originalId)); // Data will be lost, saving original id + if (tag == null) item.setTag(tag = new CompoundTag()); + tag.put(NBT_TAG_NAME, new IntTag(originalId)); // Data will be lost, saving original id } if (item.getIdentifier() == 31 && item.getData() == 0) { // Shrub was removed rawId = 32 << 4; // Dead Bush @@ -495,11 +494,11 @@ public class InventoryPackets { if (eggEntityId.isPresent()) { rawId = 383 << 16; if (tag == null) - item.setTag(tag = new CompoundTag("tag")); + item.setTag(tag = new CompoundTag()); if (!tag.contains("EntityTag")) { - CompoundTag entityTag = new CompoundTag("EntityTag"); - entityTag.put(new StringTag("id", eggEntityId.get())); - tag.put(entityTag); + CompoundTag entityTag = new CompoundTag(); + entityTag.put("id", new StringTag(eggEntityId.get())); + tag.put("EntityTag", entityTag); } } else { rawId = (oldId >> 4) << 16 | oldId & 0xF; @@ -542,13 +541,13 @@ public class InventoryPackets { CompoundTag blockEntityTag = tag.get("BlockEntityTag"); if (blockEntityTag.get("Base") instanceof IntTag) { IntTag base = blockEntityTag.get("Base"); - base.setValue(15 - base.getValue()); // invert color id + base.setValue(15 - base.asInt()); // invert color id } if (blockEntityTag.get("Patterns") instanceof ListTag) { for (Tag pattern : (ListTag) blockEntityTag.get("Patterns")) { if (pattern instanceof CompoundTag) { IntTag c = ((CompoundTag) pattern).get("Color"); - c.setValue(15 - c.getValue()); // Invert color id + c.setValue(15 - c.asInt()); // Invert color id } } } @@ -567,55 +566,52 @@ public class InventoryPackets { // ench is now Enchantments and now uses identifiers if (tag.get("Enchantments") instanceof ListTag) { ListTag enchantments = tag.get("Enchantments"); - ListTag ench = new ListTag("ench", CompoundTag.class); + ListTag ench = new ListTag(CompoundTag.class); for (Tag enchantmentEntry : enchantments) { if (enchantmentEntry instanceof CompoundTag) { - CompoundTag enchEntry = new CompoundTag(""); + CompoundTag enchEntry = new CompoundTag(); String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); Short oldId = Protocol1_13To1_12_2.MAPPINGS.getOldEnchantmentsIds().inverse().get(newId); if (oldId == null && newId.startsWith("viaversion:legacy/")) { oldId = Short.valueOf(newId.substring(18)); } if (oldId != null) { - enchEntry.put(new ShortTag("id", oldId)); - enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); + enchEntry.put("id", new ShortTag(oldId)); + enchEntry.put("lvl", new ShortTag((Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); ench.add(enchEntry); } } } tag.remove("Enchantments"); - tag.put(ench); + tag.put("ench", ench); } if (tag.get("StoredEnchantments") instanceof ListTag) { ListTag storedEnch = tag.get("StoredEnchantments"); - ListTag newStoredEnch = new ListTag("StoredEnchantments", CompoundTag.class); + ListTag newStoredEnch = new ListTag(CompoundTag.class); for (Tag enchantmentEntry : storedEnch) { if (enchantmentEntry instanceof CompoundTag) { - CompoundTag enchEntry = new CompoundTag(""); + CompoundTag enchEntry = new CompoundTag(); String newId = (String) ((CompoundTag) enchantmentEntry).get("id").getValue(); Short oldId = Protocol1_13To1_12_2.MAPPINGS.getOldEnchantmentsIds().inverse().get(newId); if (oldId == null && newId.startsWith("viaversion:legacy/")) { oldId = Short.valueOf(newId.substring(18)); } if (oldId != null) { - enchEntry.put(new ShortTag("id", oldId)); - enchEntry.put(new ShortTag("lvl", (Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); + enchEntry.put("id", new ShortTag(oldId)); + enchEntry.put("lvl", new ShortTag((Short) ((CompoundTag) enchantmentEntry).get("lvl").getValue())); newStoredEnch.add(enchEntry); } } } tag.remove("StoredEnchantments"); - tag.put(newStoredEnch); + tag.put("StoredEnchantments", newStoredEnch); } if (tag.get(NBT_TAG_NAME + "|CanPlaceOn") instanceof ListTag) { - tag.put(ConverterRegistry.convertToTag( - "CanPlaceOn", - ConverterRegistry.convertToValue(tag.get(NBT_TAG_NAME + "|CanPlaceOn")) - )); + tag.put("CanPlaceOn", ConverterRegistry.convertToTag(ConverterRegistry.convertToValue(tag.get(NBT_TAG_NAME + "|CanPlaceOn")))); tag.remove(NBT_TAG_NAME + "|CanPlaceOn"); } else if (tag.get("CanPlaceOn") instanceof ListTag) { ListTag old = tag.get("CanPlaceOn"); - ListTag newCanPlaceOn = new ListTag("CanPlaceOn", StringTag.class); + ListTag newCanPlaceOn = new ListTag(StringTag.class); for (Tag oldTag : old) { Object value = oldTag.getValue(); String[] newValues = BlockIdData.fallbackReverseMapping.get(value instanceof String @@ -623,23 +619,22 @@ public class InventoryPackets { : null); if (newValues != null) { for (String newValue : newValues) { - newCanPlaceOn.add(new StringTag("", newValue)); + newCanPlaceOn.add(new StringTag(newValue)); } } else { newCanPlaceOn.add(oldTag); } } - tag.put(newCanPlaceOn); + tag.put("CanPlaceOn", newCanPlaceOn); } if (tag.get(NBT_TAG_NAME + "|CanDestroy") instanceof ListTag) { - tag.put(ConverterRegistry.convertToTag( - "CanDestroy", + tag.put("CanDestroy", ConverterRegistry.convertToTag( ConverterRegistry.convertToValue(tag.get(NBT_TAG_NAME + "|CanDestroy")) )); tag.remove(NBT_TAG_NAME + "|CanDestroy"); } else if (tag.get("CanDestroy") instanceof ListTag) { ListTag old = tag.get("CanDestroy"); - ListTag newCanDestroy = new ListTag("CanDestroy", StringTag.class); + ListTag newCanDestroy = new ListTag(StringTag.class); for (Tag oldTag : old) { Object value = oldTag.getValue(); String[] newValues = BlockIdData.fallbackReverseMapping.get(value instanceof String @@ -647,13 +642,13 @@ public class InventoryPackets { : null); if (newValues != null) { for (String newValue : newValues) { - newCanDestroy.add(new StringTag("", newValue)); + newCanDestroy.add(new StringTag(newValue)); } } else { newCanDestroy.add(oldTag); } } - tag.put(newCanDestroy); + tag.put("CanDestroy", newCanDestroy); } } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/BannerHandler.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/BannerHandler.java index 8926958a5..b40d666c9 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/BannerHandler.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/BannerHandler.java @@ -30,7 +30,7 @@ public class BannerHandler implements BlockEntityProvider.BlockEntityHandler { Tag base = tag.get("Base"); int color = 0; if (base != null) { - color = ((Number) tag.get("Base").getValue()).intValue(); + color = ((NumberTag) tag.get("Base")).asInt(); } // Standing banner if (blockId >= BANNER_START && blockId <= BANNER_STOP) { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/BedHandler.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/BedHandler.java index 121d06792..b079fad05 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/BedHandler.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/BedHandler.java @@ -1,6 +1,7 @@ package us.myles.ViaVersion.protocols.protocol1_13to1_12_2.providers.blockentities; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; +import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.Tag; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; @@ -25,13 +26,13 @@ public class BedHandler implements BlockEntityProvider.BlockEntityHandler { Tag color = tag.get("color"); if (color != null) { - blockId += (((Number) color.getValue()).intValue() * 16); + blockId += (((NumberTag) color).asInt() * 16); } return blockId; } - private long getLong(Tag tag) { - return ((Integer) tag.getValue()).longValue(); + private long getLong(NumberTag tag) { + return tag.asLong(); } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/SkullHandler.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/SkullHandler.java index 4e13a5e7f..b805dda40 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/SkullHandler.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/providers/blockentities/SkullHandler.java @@ -1,6 +1,7 @@ package us.myles.ViaVersion.protocols.protocol1_13to1_12_2.providers.blockentities; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; +import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.Tag; import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.data.UserConnection; @@ -26,10 +27,10 @@ public class SkullHandler implements BlockEntityProvider.BlockEntityHandler { if (id >= SKULL_WALL_START && id <= SKULL_END) { Tag skullType = tag.get("SkullType"); if (skullType != null) { - id += ((Number) tag.get("SkullType").getValue()).intValue() * 20; + id += ((NumberTag) tag.get("SkullType")).asInt() * 20; } if (tag.contains("Rot")) { - id += ((Number) tag.get("Rot").getValue()).intValue(); + id += ((NumberTag) tag.get("Rot")).asInt(); } } else { Via.getPlatform().getLogger().warning("Why does this block have the skull block entity? " + tag); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java index c56d43906..638cd7091 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java @@ -217,8 +217,8 @@ public class InventoryPackets { resyncPacket.write(Type.BYTE, (byte) 2); // 2 - Button - End left click resyncPacket.write(Type.SHORT, ((short) ThreadLocalRandom.current().nextInt())); // 3 - Action number resyncPacket.write(Type.VAR_INT, 5); // 4 - Mode - Drag - CompoundTag tag = new CompoundTag(""); - tag.put(new DoubleTag("force_resync", Double.NaN)); // Tags with NaN are not equal + CompoundTag tag = new CompoundTag(); + tag.put("force_resync", new DoubleTag(Double.NaN)); // Tags with NaN are not equal resyncPacket.write(Type.FLAT_VAR_INT_ITEM, new Item(1, (byte) 1, (short) 0, tag)); // 5 - Clicked Item resyncPacket.sendToServer(Protocol1_14To1_13_2.class, true, false); } @@ -244,7 +244,7 @@ public class InventoryPackets { Tag loreTag = display.get("Lore"); if (loreTag instanceof ListTag) { ListTag lore = (ListTag) loreTag; - display.put(new ListTag(NBT_TAG_NAME + "|Lore", lore.clone().getValue())); // Save old lore + display.put(NBT_TAG_NAME + "|Lore", new ListTag(lore.clone().getValue())); // Save old lore for (Tag loreEntry : lore) { if (loreEntry instanceof StringTag) { String jsonText = ChatRewriter.legacyTextToJsonString(((StringTag) loreEntry).getValue(), true); @@ -270,7 +270,7 @@ public class InventoryPackets { ListTag lore = (ListTag) loreTag; ListTag savedLore = display.remove(NBT_TAG_NAME + "|Lore"); if (savedLore != null) { - display.put(new ListTag("Lore", savedLore.getValue())); + display.put("Lore", new ListTag(savedLore.getValue())); } else { for (Tag loreEntry : lore) { if (loreEntry instanceof StringTag) { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java index a274edd38..ad7317032 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java @@ -176,9 +176,9 @@ public class WorldPackets { section.setNonAirBlocksCount(nonAirBlockCount); } - CompoundTag heightMap = new CompoundTag(""); - heightMap.put(new LongArrayTag("MOTION_BLOCKING", encodeHeightMap(motionBlocking))); - heightMap.put(new LongArrayTag("WORLD_SURFACE", encodeHeightMap(worldSurface))); + CompoundTag heightMap = new CompoundTag(); + heightMap.put("MOTION_BLOCKING", new LongArrayTag(encodeHeightMap(motionBlocking))); + heightMap.put("WORLD_SURFACE", new LongArrayTag(encodeHeightMap(worldSurface))); chunk.setHeightMap(heightMap); PacketWrapper lightPacket = wrapper.create(0x24); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16_2to1_16_1/data/MappingData.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16_2to1_16_1/data/MappingData.java index 45eb36090..3d1961e55 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16_2to1_16_1/data/MappingData.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16_2to1_16_1/data/MappingData.java @@ -35,7 +35,7 @@ public class MappingData extends us.myles.ViaVersion.api.data.MappingData { for (Tag dimension : dimensions) { CompoundTag dimensionCompound = (CompoundTag) dimension; // Copy with an empty name - CompoundTag dimensionData = new CompoundTag("", ((CompoundTag) dimensionCompound.get("element")).getValue()); + CompoundTag dimensionData = new CompoundTag(((CompoundTag) dimensionCompound.get("element")).getValue()); dimensionDataMap.put(((StringTag) dimensionCompound.get("name")).getValue(), dimensionData); } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java index 397d38464..878e79280 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java @@ -46,83 +46,83 @@ public class EntityPackets { wrapper.write(Type.STRING, dimensionName); // dimension wrapper.write(Type.STRING, dimensionName); // world }; - public static final CompoundTag DIMENSIONS_TAG = new CompoundTag(""); + public static final CompoundTag DIMENSIONS_TAG = new CompoundTag(); private static final String[] WORLD_NAMES = {"minecraft:overworld", "minecraft:the_nether", "minecraft:the_end"}; static { - ListTag list = new ListTag("dimension", CompoundTag.class); + ListTag list = new ListTag(CompoundTag.class); list.add(createOverworldEntry()); list.add(createOverworldCavesEntry()); list.add(createNetherEntry()); list.add(createEndEntry()); - DIMENSIONS_TAG.put(list); + DIMENSIONS_TAG.put("dimension", list); } private static CompoundTag createOverworldEntry() { - CompoundTag tag = new CompoundTag(""); - tag.put(new StringTag("name", "minecraft:overworld")); - tag.put(new ByteTag("has_ceiling", (byte) 0)); + CompoundTag tag = new CompoundTag(); + tag.put("name", new StringTag("minecraft:overworld")); + tag.put("has_ceiling", new ByteTag((byte) 0)); addSharedOverwaldEntries(tag); return tag; } private static CompoundTag createOverworldCavesEntry() { - CompoundTag tag = new CompoundTag(""); - tag.put(new StringTag("name", "minecraft:overworld_caves")); - tag.put(new ByteTag("has_ceiling", (byte) 1)); + CompoundTag tag = new CompoundTag(); + tag.put("name", new StringTag("minecraft:overworld_caves")); + tag.put("has_ceiling", new ByteTag((byte) 1)); addSharedOverwaldEntries(tag); return tag; } private static void addSharedOverwaldEntries(CompoundTag tag) { - tag.put(new ByteTag("piglin_safe", (byte) 0)); - tag.put(new ByteTag("natural", (byte) 1)); - tag.put(new FloatTag("ambient_light", 0)); - tag.put(new StringTag("infiniburn", "minecraft:infiniburn_overworld")); - tag.put(new ByteTag("respawn_anchor_works", (byte) 0)); - tag.put(new ByteTag("has_skylight", (byte) 1)); - tag.put(new ByteTag("bed_works", (byte) 1)); - tag.put(new ByteTag("has_raids", (byte) 1)); - tag.put(new IntTag("logical_height", 256)); - tag.put(new ByteTag("shrunk", (byte) 0)); - tag.put(new ByteTag("ultrawarm", (byte) 0)); + tag.put("piglin_safe", new ByteTag((byte) 0)); + tag.put("natural", new ByteTag((byte) 1)); + tag.put("ambient_light", new FloatTag(0)); + tag.put("infiniburn", new StringTag("minecraft:infiniburn_overworld")); + tag.put("respawn_anchor_works", new ByteTag((byte) 0)); + tag.put("has_skylight", new ByteTag((byte) 1)); + tag.put("bed_works", new ByteTag((byte) 1)); + tag.put("has_raids", new ByteTag((byte) 1)); + tag.put("logical_height", new IntTag(256)); + tag.put("shrunk", new ByteTag((byte) 0)); + tag.put("ultrawarm", new ByteTag((byte) 0)); } private static CompoundTag createNetherEntry() { - CompoundTag tag = new CompoundTag(""); - tag.put(new ByteTag("piglin_safe", (byte) 1)); - tag.put(new ByteTag("natural", (byte) 0)); - tag.put(new FloatTag("ambient_light", 0.1F)); - tag.put(new StringTag("infiniburn", "minecraft:infiniburn_nether")); - tag.put(new ByteTag("respawn_anchor_works", (byte) 1)); - tag.put(new ByteTag("has_skylight", (byte) 0)); - tag.put(new ByteTag("bed_works", (byte) 0)); - tag.put(new LongTag("fixed_time", 18000)); - tag.put(new ByteTag("has_raids", (byte) 0)); - tag.put(new StringTag("name", "minecraft:the_nether")); - tag.put(new IntTag("logical_height", 128)); - tag.put(new ByteTag("shrunk", (byte) 1)); - tag.put(new ByteTag("ultrawarm", (byte) 1)); - tag.put(new ByteTag("has_ceiling", (byte) 1)); + CompoundTag tag = new CompoundTag(); + tag.put("piglin_safe", new ByteTag((byte) 1)); + tag.put("natural", new ByteTag((byte) 0)); + tag.put("ambient_light",new FloatTag( 0.1F)); + tag.put("infiniburn", new StringTag("minecraft:infiniburn_nether")); + tag.put("respawn_anchor_works", new ByteTag((byte) 1)); + tag.put("has_skylight", new ByteTag((byte) 0)); + tag.put("bed_works", new ByteTag((byte) 0)); + tag.put("fixed_time", new LongTag(18000)); + tag.put("has_raids", new ByteTag((byte) 0)); + tag.put("name", new StringTag("minecraft:the_nether")); + tag.put("logical_height", new IntTag(128)); + tag.put("shrunk", new ByteTag((byte) 1)); + tag.put("ultrawarm", new ByteTag((byte) 1)); + tag.put("has_ceiling", new ByteTag((byte) 1)); return tag; } private static CompoundTag createEndEntry() { - CompoundTag tag = new CompoundTag(""); - tag.put(new ByteTag("piglin_safe", (byte) 0)); - tag.put(new ByteTag("natural", (byte) 0)); - tag.put(new FloatTag("ambient_light", 0)); - tag.put(new StringTag("infiniburn", "minecraft:infiniburn_end")); - tag.put(new ByteTag("respawn_anchor_works", (byte) 0)); - tag.put(new ByteTag("has_skylight", (byte) 0)); - tag.put(new ByteTag("bed_works", (byte) 0)); - tag.put(new LongTag("fixed_time", 6000)); - tag.put(new ByteTag("has_raids", (byte) 1)); - tag.put(new StringTag("name", "minecraft:the_end")); - tag.put(new IntTag("logical_height", 256)); - tag.put(new ByteTag("shrunk", (byte) 0)); - tag.put(new ByteTag("ultrawarm", (byte) 0)); - tag.put(new ByteTag("has_ceiling", (byte) 0)); + CompoundTag tag = new CompoundTag(); + tag.put("piglin_safe", new ByteTag((byte) 0)); + tag.put("natural", new ByteTag((byte) 0)); + tag.put("ambient_light", new FloatTag(0)); + tag.put("infiniburn", new StringTag("minecraft:infiniburn_end")); + tag.put("respawn_anchor_works", new ByteTag((byte) 0)); + tag.put("has_skylight", new ByteTag((byte) 0)); + tag.put("bed_works", new ByteTag((byte) 0)); + tag.put("fixed_time", new LongTag(6000)); + tag.put("has_raids", new ByteTag((byte) 1)); + tag.put("name", new StringTag("minecraft:the_end")); + tag.put("logical_height", new IntTag(256)); + tag.put("shrunk", new ByteTag((byte) 0)); + tag.put("ultrawarm", new ByteTag((byte) 0)); + tag.put("has_ceiling", new ByteTag((byte) 0)); return tag; } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java index 580b3784a..70ea2b87a 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java @@ -4,6 +4,7 @@ import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.github.steveice10.opennbt.tag.builtin.IntArrayTag; import com.github.steveice10.opennbt.tag.builtin.ListTag; import com.github.steveice10.opennbt.tag.builtin.LongTag; +import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; import us.myles.ViaVersion.api.minecraft.item.Item; @@ -131,7 +132,7 @@ public class InventoryPackets { Tag idTag = ownerCompundTag.get("Id"); if (idTag instanceof StringTag) { UUID id = UUID.fromString((String) idTag.getValue()); - ownerCompundTag.put(new IntArrayTag("Id", UUIDIntArrayType.uuidToIntArray(id))); + ownerCompundTag.put("Id", new IntArrayTag(UUIDIntArrayType.uuidToIntArray(id))); } } } @@ -153,7 +154,7 @@ public class InventoryPackets { Tag idTag = ownerCompundTag.get("Id"); if (idTag instanceof IntArrayTag) { UUID id = UUIDIntArrayType.uuidFromIntArray((int[]) idTag.getValue()); - ownerCompundTag.put(new StringTag("Id", id.toString())); + ownerCompundTag.put("Id", new StringTag(id.toString())); } } } @@ -174,8 +175,8 @@ public class InventoryPackets { Tag leastTag = attribute.get("UUIDLeast"); if (leastTag != null) { Tag mostTag = attribute.get("UUIDMost"); - int[] uuidIntArray = UUIDIntArrayType.bitsToIntArray(((Number) leastTag.getValue()).longValue(), ((Number) mostTag.getValue()).longValue()); - attribute.put(new IntArrayTag("UUID", uuidIntArray)); + int[] uuidIntArray = UUIDIntArrayType.bitsToIntArray(((NumberTag) leastTag).asLong(), ((NumberTag) mostTag).asLong()); + attribute.put("UUID", new IntArrayTag(uuidIntArray)); } } } @@ -193,8 +194,8 @@ public class InventoryPackets { IntArrayTag uuidTag = attribute.get("UUID"); if (uuidTag != null) { UUID uuid = UUIDIntArrayType.uuidFromIntArray(uuidTag.getValue()); - attribute.put(new LongTag("UUIDLeast", uuid.getLeastSignificantBits())); - attribute.put(new LongTag("UUIDMost", uuid.getMostSignificantBits())); + attribute.put("UUIDLeast", new LongTag(uuid.getLeastSignificantBits())); + attribute.put("UUIDMost", new LongTag(uuid.getMostSignificantBits())); } } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java index adb8dbc9d..811cbbd5e 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java @@ -18,6 +18,7 @@ import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.Protocol1_16To1_15_2; import us.myles.ViaVersion.protocols.protocol1_16to1_15_2.types.Chunk1_16Type; import us.myles.ViaVersion.util.CompactArrayUtil; +import java.util.Map; import java.util.UUID; public class WorldPackets { @@ -58,7 +59,7 @@ public class WorldPackets { } CompoundTag heightMaps = chunk.getHeightMap(); - for (Tag heightMapTag : heightMaps) { + for (Tag heightMapTag : heightMaps.values()) { LongArrayTag heightMap = (LongArrayTag) heightMapTag; int[] heightMapData = new int[256]; CompactArrayUtil.iterateCompactArray(9, heightMapData.length, heightMap.getValue(), (i, v) -> heightMapData[i] = v); @@ -99,21 +100,21 @@ public class WorldPackets { // target_uuid -> Target UUID targetUuid = UUID.fromString((String) targetUuidTag.getValue()); - compoundTag.put(new IntArrayTag("Target", UUIDIntArrayType.uuidToIntArray(targetUuid))); + compoundTag.put("Target", new IntArrayTag(UUIDIntArrayType.uuidToIntArray(targetUuid))); } else if (id.equals("minecraft:skull") && compoundTag.get("Owner") instanceof CompoundTag) { CompoundTag ownerTag = compoundTag.remove("Owner"); StringTag ownerUuidTag = ownerTag.remove("Id"); if (ownerUuidTag != null) { UUID ownerUuid = UUID.fromString(ownerUuidTag.getValue()); - ownerTag.put(new IntArrayTag("Id", UUIDIntArrayType.uuidToIntArray(ownerUuid))); + ownerTag.put("Id", new IntArrayTag(UUIDIntArrayType.uuidToIntArray(ownerUuid))); } // Owner -> SkullOwner - CompoundTag skullOwnerTag = new CompoundTag("SkullOwner"); - for (Tag tag : ownerTag) { - skullOwnerTag.put(tag); + CompoundTag skullOwnerTag = new CompoundTag(); + for (Map.Entry entry : ownerTag.entrySet()) { + skullOwnerTag.put(entry.getKey(), entry.getValue()); } - compoundTag.put(skullOwnerTag); + compoundTag.put("SkullOwner", skullOwnerTag); } } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java index 9a79a8a70..56591d575 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java @@ -216,7 +216,7 @@ public class WorldPackets { } private static void addNewDimensionData(CompoundTag tag) { - tag.put(new IntTag("min_y", 0)); - tag.put(new IntTag("height", 256)); + tag.put("min_y", new IntTag(0)); + tag.put("height", new IntTag(256)); } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java index ba3b46878..d080bb1a1 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java @@ -59,13 +59,13 @@ public class Protocol1_9_3To1_9_1_2 extends Protocol= 16384) { item.setIdentifier(438); // splash id item.setData((short) (item.getData() - 8192)); } String name = potionNameFromDamage(item.getData()); - StringTag potion = new StringTag("Potion", "minecraft:" + name); - tag.put(potion); + StringTag potion = new StringTag("minecraft:" + name); + tag.put("Potion", potion); item.setTag(tag); item.setData((short) 0); } if (item.getIdentifier() == 387) { // WRITTEN_BOOK CompoundTag tag = item.getTag(); if (tag == null) { - tag = new CompoundTag("tag"); + tag = new CompoundTag(); } ListTag pages = tag.get("pages"); if (pages == null) { - pages = new ListTag("pages", Collections.singletonList(new StringTag(Protocol1_9To1_8.fixJson("").toString()))); - tag.put(pages); + pages = new ListTag(Collections.singletonList(new StringTag(Protocol1_9To1_8.fixJson("").toString()))); + tag.put("pages", pages); item.setTag(tag); return; } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/WorldPackets.java index 6c71ab29e..17dd515e9 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/WorldPackets.java @@ -186,13 +186,13 @@ public class WorldPackets { if (tag != null) { if (tag.contains("EntityId")) { String entity = (String) tag.get("EntityId").getValue(); - CompoundTag spawn = new CompoundTag("SpawnData"); - spawn.put(new StringTag("id", entity)); - tag.put(spawn); + CompoundTag spawn = new CompoundTag(); + spawn.put("id", new StringTag(entity)); + tag.put("SpawnData", spawn); } else { // EntityID does not exist - CompoundTag spawn = new CompoundTag("SpawnData"); - spawn.put(new StringTag("id", "AreaEffectCloud")); //Make spawners show up as empty when no EntityId is given. - tag.put(spawn); + CompoundTag spawn = new CompoundTag(); + spawn.put("id", new StringTag("AreaEffectCloud")); //Make spawners show up as empty when no EntityId is given. + tag.put("SpawnData", spawn); } } } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java index 0edd8358b..05d5cc102 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java @@ -58,9 +58,9 @@ public class CommandBlockStorage extends StoredObject { return Optional.empty(); tag = tag.clone(); - tag.put(new ByteTag("powered", (byte) 0)); - tag.put(new ByteTag("auto", (byte) 0)); - tag.put(new ByteTag("conditionMet", (byte) 0)); + tag.put("powered", new ByteTag((byte) 0)); + tag.put("auto", new ByteTag((byte) 0)); + tag.put("conditionMet", new ByteTag((byte) 0)); return Optional.of(tag); }