From 68c63d20ed59af9410900d45f96becdcf2ebe2ab Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sat, 2 Oct 2021 11:27:18 +0200 Subject: [PATCH 1/6] Fix reading of explicit int array entries See https://github.com/KyoriPowered/adventure/pull/460 --- .../viaversion/api/minecraft/nbt/TagStringReader.java | 4 +++- .../java/com/viaversion/viaversion/common/nbt/NBTTagTest.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java index 960c937c8..1195c44dd 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java @@ -265,13 +265,15 @@ final class TagStringReader { Tag result = null; try { switch (Character.toLowerCase(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())); break; case Tokens.TYPE_SHORT: result = new ShortTag(Short.parseShort(builder.toString())); break; + case Tokens.TYPE_INT: + result = new IntTag(Integer.parseInt(builder.toString())); + break; case Tokens.TYPE_LONG: result = new LongTag(Long.parseLong(builder.toString())); break; diff --git a/common/src/test/java/com/viaversion/viaversion/common/nbt/NBTTagTest.java b/common/src/test/java/com/viaversion/viaversion/common/nbt/NBTTagTest.java index 9b77ae69f..dc7f8b703 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/nbt/NBTTagTest.java +++ b/common/src/test/java/com/viaversion/viaversion/common/nbt/NBTTagTest.java @@ -35,6 +35,7 @@ public class NBTTagTest { readString("{id:[I;1,2, 3, 4,5]}"); // >=1.11 readString("{id:1b,b:true}"); readString("{id:[L;1l,2L,3L]}"); // >=1.11 + readString("{id:[I;1i,2I,3I]}"); readString("{id:'minecraft:stone'}"); // >=1.13 readString("{id:1,id:2}"); readString("{id:-20b,test:3.19f}"); @@ -47,7 +48,6 @@ public class NBTTagTest { //TODO fix legacy < 1.12 // readString("{id:minecraft:stone}"); - // readString("{id:[I;1i,2I,3I]}"); // readString("{id:[1,2, 3, 4,5]}"); } } From 69409d71d16fcd0cde7a95c6fc6be71fc5a27119 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sat, 2 Oct 2021 16:38:20 +0200 Subject: [PATCH 2/6] Run handitem cache every tick --- .../viaversion/viaversion/bukkit/platform/BukkitViaLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java index 7bfd9759b..f640151a3 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java @@ -93,7 +93,7 @@ public class BukkitViaLoader implements ViaPlatformLoader { if (plugin.getConf().isItemCache()) { handItemCache = new HandItemCache(); - tasks.add(handItemCache.runTaskTimerAsynchronously(plugin, 2L, 2L)); // Updates player's items :) + tasks.add(handItemCache.runTaskTimerAsynchronously(plugin, 1L, 1L)); // Updates player's items :) } } From e64a0fb62e8573096bee85581c2e5f263654591d Mon Sep 17 00:00:00 2001 From: MrMicky Date: Sun, 3 Oct 2021 10:11:34 +0200 Subject: [PATCH 3/6] Prevent kick when signing empty book (#2700) --- .../packets/PlayerPackets.java | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/PlayerPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/PlayerPackets.java index 39edcf712..c1ed43394 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/PlayerPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/PlayerPackets.java @@ -19,6 +19,7 @@ package com.viaversion.viaversion.protocols.protocol1_14to1_13_2.packets; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.github.steveice10.opennbt.tag.builtin.ListTag; +import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.Position; @@ -31,6 +32,8 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; +import java.util.Collections; + public class PlayerPackets { public static void register(Protocol protocol) { @@ -58,19 +61,24 @@ public class PlayerPackets { Item item = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); protocol.getItemRewriter().handleItemToServer(item); + if (item == null) return; + + CompoundTag tag = item.tag(); + if (tag == null) return; + + Tag pages = tag.get("pages"); + + // Fix for https://github.com/ViaVersion/ViaVersion/issues/2660 + if (pages == null) { + tag.put("pages", new ListTag(Collections.singletonList(new StringTag()))); + } + // Client limit when editing a book was upped from 50 to 100 in 1.14, but some anti-exploit plugins ban with a size higher than the old client limit - if (Via.getConfig().isTruncate1_14Books()) { - if (item == null) return; - CompoundTag tag = item.tag(); - - if (tag == null) return; - Tag pages = tag.get("pages"); - - if (!(pages instanceof ListTag)) return; - + if (Via.getConfig().isTruncate1_14Books() && pages instanceof ListTag) { ListTag listTag = (ListTag) pages; - if (listTag.size() <= 50) return; - listTag.setValue(listTag.getValue().subList(0, 50)); + if (listTag.size() > 50) { + listTag.setValue(listTag.getValue().subList(0, 50)); + } } } }); From a0f26f1ca3a05efef3f92b6de2dede08143ac35b Mon Sep 17 00:00:00 2001 From: Gero Date: Sun, 3 Oct 2021 12:12:49 +0200 Subject: [PATCH 4/6] Fix channel name validation in 1.13 to 1.12.2 protocol (#2701) Closes #2187 --- .../protocols/protocol1_13to1_12_2/data/MappingData.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/MappingData.java index 1ce2ea489..35dee9e1d 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/MappingData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/MappingData.java @@ -137,15 +137,17 @@ public class MappingData extends MappingDataBase { return null; // Not valid } int separatorIndex = newId.indexOf(':'); - // Vanilla parses ``:`` and ```` as ``minecraft:`` (also ensure there's enough space) - if ((separatorIndex == -1 || separatorIndex == 0) && newId.length() <= 10) { + // Vanilla parses an empty and a missing namespace as the minecraft namespace + if (separatorIndex == -1) { newId = "minecraft:" + newId; + } else if (separatorIndex == 0) { + newId = "minecraft" + newId; } return newId; } public static boolean isValid1_13Channel(String channelId) { - return channelId.matches("([0-9a-z_.-]+):([0-9a-z_/.-]+)"); + return channelId.matches("([0-9a-z_.-]+:)?[0-9a-z_/.-]+"); } private void loadTags(Map output, JsonObject newTags) { From 0f5fa620d1b1846a75500d2c616558ceeca0e3d3 Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Sun, 3 Oct 2021 11:23:41 -0300 Subject: [PATCH 5/6] Translatable ender dragon/wither text (#2702) --- .../protocol1_9to1_8/storage/EntityTracker1_9.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java index ba6535412..b539cf4a0 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java @@ -41,16 +41,13 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.metadata.MetadataRew import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.BossBarProvider; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; public class EntityTracker1_9 extends EntityTrackerBase { + public static final String WITHER_TRANSLATABLE = "{\"translate\":\"entity.WitherBoss.name\"}"; + public static final String DRAGON_TRANSLATABLE = "{\"translate\":\"entity.EnderDragon.name\"}"; private final Map uuidMap = new ConcurrentHashMap<>(); private final Map> metadataBuffer = new ConcurrentHashMap<>(); private final Map vehicleMap = new ConcurrentHashMap<>(); @@ -254,7 +251,7 @@ public class EntityTracker1_9 extends EntityTrackerBase { if (metadata.id() == 2) { BossBar bar = bossBarMap.get(entityId); String title = (String) metadata.getValue(); - title = title.isEmpty() ? (type == EntityType.ENDER_DRAGON ? "Ender Dragon" : "Wither") : title; + title = title.isEmpty() ? (type == EntityType.ENDER_DRAGON ? DRAGON_TRANSLATABLE : WITHER_TRANSLATABLE) : title; if (bar == null) { bar = Via.getAPI().legacyAPI().createLegacyBossBar(title, BossColor.PINK, BossStyle.SOLID); bossBarMap.put(entityId, bar); @@ -272,7 +269,7 @@ public class EntityTracker1_9 extends EntityTrackerBase { float maxHealth = type == EntityType.ENDER_DRAGON ? 200.0f : 300.0f; float health = Math.max(0.0f, Math.min(((float) metadata.getValue()) / maxHealth, 1.0f)); if (bar == null) { - String title = type == EntityType.ENDER_DRAGON ? "Ender Dragon" : "Wither"; + String title = type == EntityType.ENDER_DRAGON ? DRAGON_TRANSLATABLE : WITHER_TRANSLATABLE; bar = Via.getAPI().legacyAPI().createLegacyBossBar(title, health, BossColor.PINK, BossStyle.SOLID); bossBarMap.put(entityId, bar); bar.addConnection(user()); From 0a4d08886dc1e13b340d3de512f939c2093bfe1b Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sun, 3 Oct 2021 20:13:51 +0200 Subject: [PATCH 6/6] Update adventure --- .../viaversion/api/minecraft/nbt/TagStringReader.java | 3 +-- gradle/libs.versions.toml | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java index 1195c44dd..07129de7a 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java @@ -48,7 +48,6 @@ import java.util.stream.LongStream; // - Small byteArray() optimization // - acceptLegacy = true by default // - Don't parse value as DoubleTag when possiblyNumeric -// - Fix trailing comma reading in compounds, lists, and arrays final class TagStringReader { private static final int MAX_DEPTH = 512; private static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; @@ -326,7 +325,7 @@ final class TagStringReader { return true; } this.buffer.expect(Tokens.VALUE_SEPARATOR); - return this.buffer.takeIf(endCharacter); // Via - trailing commas are allowed + return this.buffer.takeIf(endCharacter); } /** diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5c7f8de95..90b3a6f0f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,8 +2,8 @@ metadata.format.version = "1.1" [versions] -adventure = "4.8.0" -gson = "2.8.7" +adventure = "4.9.1" +gson = "2.8.8" fastutil = "8.3.1" openNBT = "2.0-SNAPSHOT" javassist = "3.28.0-GA" @@ -14,7 +14,7 @@ guava = "17.0" snakeYaml = "1.18" junit = "5.7.2" -checkerQual = "3.14.0" +checkerQual = "3.18.0" # Platforms paper = "1.16.5-R0.1-SNAPSHOT"