From 3523ffd1970d48c36bb14ededed43559b832098c Mon Sep 17 00:00:00 2001 From: Johannes <35636315+LIWKK@users.noreply.github.com> Date: Mon, 6 Dec 2021 11:47:43 +0200 Subject: [PATCH 01/14] Fixing teleport issues in 1.7 protocol --- .../packets/PlayerPackets.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/PlayerPackets.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/PlayerPackets.java index d4f1aaa63..5db81f1d3 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/PlayerPackets.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/PlayerPackets.java @@ -592,11 +592,14 @@ public void registerMap() { PlayerPosition playerPosition = packetWrapper.user().get(PlayerPosition.class); - if (playerPosition.isPositionPacketReceived()) { + /* + Completely useless, this isn't vanilla behaviour so it would trigger anticheats. + */ + /*if (playerPosition.isPositionPacketReceived()) { playerPosition.setPositionPacketReceived(false); feetY -= 0.01; packetWrapper.set(Type.DOUBLE, 1, feetY); - } + }*/ playerPosition.setOnGround(packetWrapper.get(Type.BOOLEAN, 0)); playerPosition.setPos(x, feetY, z); @@ -639,11 +642,21 @@ public void registerMap() { PlayerPosition playerPosition = packetWrapper.user().get(PlayerPosition.class); - if (playerPosition.isPositionPacketReceived()) { + /* + We can't track teleports like this, this packet could've just been a POSLOOK + sent before client accepted teleport, also there could be multiple teleports + and the #getReceivedPosY(), would be wrong y-coord + + Because of this inaccuracy it could teleport players to a wrong place + and trigger anticheats + + I've tested this change and there is no noticable glitchiness in client view. + */ + /*if (playerPosition.isPositionPacketReceived()) { playerPosition.setPositionPacketReceived(false); feetY = playerPosition.getReceivedPosY(); packetWrapper.set(Type.DOUBLE, 1, feetY); - } + }*/ playerPosition.setOnGround(packetWrapper.get(Type.BOOLEAN, 0)); playerPosition.setPos(x, feetY, z); From 33521677dbafacc2921e78c4b27f095d89a7617c Mon Sep 17 00:00:00 2001 From: Folf Date: Thu, 24 Feb 2022 21:57:08 +0000 Subject: [PATCH 02/14] Use marker property for hologram checking --- .../entityreplacements/ArmorStandReplacement.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/entityreplacements/ArmorStandReplacement.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/entityreplacements/ArmorStandReplacement.java index 976891c47..59dc7fdce 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/entityreplacements/ArmorStandReplacement.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/entityreplacements/ArmorStandReplacement.java @@ -108,7 +108,7 @@ public void updateState() { marker = (armorStandFlags & 0x10) != 0; State prevState = currentState; - if (invisible && name != null) { + if (invisible && marker) { currentState = State.HOLOGRAM; } else { currentState = State.ZOMBIE; From d2fdbba8ddbd38548da904d52665558df23d5fa2 Mon Sep 17 00:00:00 2001 From: _tomcraft <936063+tomcraft@users.noreply.github.com> Date: Sat, 18 Mar 2023 18:34:59 +0100 Subject: [PATCH 03/14] Replace translation keys to raw value in jsonToLegacy (#434) --- all/pom.xml | 2 +- bukkit/pom.xml | 2 +- bungee/pom.xml | 2 +- core/pom.xml | 2 +- .../gerrygames/viarewind/utils/ChatUtil.java | 33 +++++++++++++++---- fabric/pom.xml | 2 +- pom.xml | 4 +-- sponge/pom.xml | 2 +- velocity/pom.xml | 2 +- 9 files changed, 36 insertions(+), 15 deletions(-) diff --git a/all/pom.xml b/all/pom.xml index 5a783607d..1724bd7ad 100644 --- a/all/pom.xml +++ b/all/pom.xml @@ -7,7 +7,7 @@ com.viaversion viarewind-parent - 2.0.3 + 2.0.4-SNAPSHOT viarewind-all diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 07b38d815..5dcf758ff 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -7,7 +7,7 @@ com.viaversion viarewind-parent - 2.0.3 + 2.0.4-SNAPSHOT viarewind-bukkit diff --git a/bungee/pom.xml b/bungee/pom.xml index dcc2d2d0d..1b5775ade 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -7,7 +7,7 @@ com.viaversion viarewind-parent - 2.0.3 + 2.0.4-SNAPSHOT viarewind-bungee diff --git a/core/pom.xml b/core/pom.xml index 8055417fd..391c4c74c 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -7,7 +7,7 @@ com.viaversion viarewind-parent - 2.0.3 + 2.0.4-SNAPSHOT viarewind-core diff --git a/core/src/main/java/de/gerrygames/viarewind/utils/ChatUtil.java b/core/src/main/java/de/gerrygames/viarewind/utils/ChatUtil.java index b75e42352..1d3724413 100644 --- a/core/src/main/java/de/gerrygames/viarewind/utils/ChatUtil.java +++ b/core/src/main/java/de/gerrygames/viarewind/utils/ChatUtil.java @@ -1,9 +1,15 @@ package de.gerrygames.viarewind.utils; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.libs.gson.JsonElement; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.libs.gson.JsonParser; import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.data.AchievementTranslationMapping; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ChatRewriter; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2; +import com.viaversion.viaversion.rewriter.ComponentRewriter; import de.gerrygames.viarewind.ViaRewind; import java.util.logging.Level; @@ -11,15 +17,22 @@ public class ChatUtil { private static final Pattern UNUSED_COLOR_PATTERN = Pattern.compile("(?>(?>§[0-fk-or])*(§r|\\Z))|(?>(?>§[0-f])*(§[0-f]))"); + private static final ComponentRewriter LEGACY_REWRITER = new ComponentRewriter() { + @Override + protected void handleTranslate(JsonObject object, String translate) { + String text = Protocol1_13To1_12_2.MAPPINGS.getMojangTranslation().get(translate); + if (text != null) { + object.addProperty("translate", text); + } + } + }; public static String jsonToLegacy(String json) { if (json == null || json.equals("null") || json.isEmpty()) return ""; try { - String legacy = LegacyComponentSerializer.legacySection().serialize(ChatRewriter.HOVER_GSON_SERIALIZER.deserialize(json)); - while (legacy.startsWith("§f")) legacy = legacy.substring(2); - return legacy; - } catch (Exception ex) { - ViaRewind.getPlatform().getLogger().log(Level.WARNING, "Could not convert component to legacy text: " + json, ex); + return jsonToLegacy(JsonParser.parseString(json)); + } catch (Exception e) { + ViaRewind.getPlatform().getLogger().log(Level.WARNING, "Could not convert component to legacy text: " + json, e); } return ""; } @@ -30,7 +43,15 @@ public static String jsonToLegacy(JsonElement component) { } else if (component.isJsonPrimitive()) { return component.getAsString(); } else { - return jsonToLegacy(component.toString()); + try { + LEGACY_REWRITER.processText(component); + String legacy = LegacyComponentSerializer.legacySection().serialize(ChatRewriter.HOVER_GSON_SERIALIZER.deserializeFromTree(component)); + while (legacy.startsWith("§f")) legacy = legacy.substring(2); + return legacy; + } catch (Exception ex) { + ViaRewind.getPlatform().getLogger().log(Level.WARNING, "Could not convert component to legacy text: " + component, ex); + } + return ""; } } diff --git a/fabric/pom.xml b/fabric/pom.xml index 8276fc767..82cce68d9 100644 --- a/fabric/pom.xml +++ b/fabric/pom.xml @@ -7,7 +7,7 @@ com.viaversion viarewind-parent - 2.0.3 + 2.0.4-SNAPSHOT viarewind-fabric diff --git a/pom.xml b/pom.xml index 6e76ee71a..8fc131abb 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.viaversion viarewind-parent - 2.0.3 + 2.0.4-SNAPSHOT pom @@ -40,7 +40,7 @@ com.viaversion viaversion - 4.6.0-1.19.4-rc2-SNAPSHOT + 4.6.2-SNAPSHOT provided diff --git a/sponge/pom.xml b/sponge/pom.xml index 41fbee159..40a82fcf6 100644 --- a/sponge/pom.xml +++ b/sponge/pom.xml @@ -7,7 +7,7 @@ com.viaversion viarewind-parent - 2.0.3 + 2.0.4-SNAPSHOT viarewind-sponge diff --git a/velocity/pom.xml b/velocity/pom.xml index fdcc1bda2..7e0d316e7 100644 --- a/velocity/pom.xml +++ b/velocity/pom.xml @@ -7,7 +7,7 @@ com.viaversion viarewind-parent - 2.0.3 + 2.0.4-SNAPSHOT viarewind-velocity From 2e7dc6bb11acc16dfc381abadb984f3d96d38d7f Mon Sep 17 00:00:00 2001 From: Allink <44676012+allinkdev@users.noreply.github.com> Date: Mon, 3 Apr 2023 10:26:00 +0100 Subject: [PATCH 04/14] Set "folia-supported" to true (#437) --- bukkit/src/main/resources/plugin.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index dd3693999..27f86b57c 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -2,6 +2,7 @@ name: ViaRewind version: ${project.version} main: de.gerrygames.viarewind.BukkitPlugin api-version: 1.13 +folia-supported: true authors: [Gerrygames] website: https://viaversion.com/rewind From 9a3d7626cc9273584ea728d395645cb7c67c027e Mon Sep 17 00:00:00 2001 From: Kichura <68134602+Kichura@users.noreply.github.com> Date: Sat, 15 Apr 2023 21:24:54 +0200 Subject: [PATCH 05/14] Add the ViaRewind icon for Fabric. (#438) --- .../assets/viarewind/textures/squarelogo.png | Bin 0 -> 5481 bytes fabric/src/main/resources/fabric.mod.json | 1 + 2 files changed, 1 insertion(+) create mode 100644 fabric/src/main/resources/assets/viarewind/textures/squarelogo.png diff --git a/fabric/src/main/resources/assets/viarewind/textures/squarelogo.png b/fabric/src/main/resources/assets/viarewind/textures/squarelogo.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb3c5ba68d5daa40a44bf99c53a79c83b1b28bc GIT binary patch literal 5481 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 AQUCw| literal 0 HcmV?d00001 diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 549bba3ab..6de0e1700 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -9,6 +9,7 @@ "issues": "https://github.com/ViaVersion/ViaRewind/issues", "sources": "https://github.com/ViaVersion/ViaRewind" }, + "icon": "assets/viarewind/textures/squarelogo.png", "environment": "*", "authors": [ "Gerrygames" From 5f7fdc5b4ee6b9ab5a7a7cb26e4c6871b338851d Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Fri, 21 Apr 2023 09:45:52 -0300 Subject: [PATCH 06/14] remove 1.7.6 to 1.7.2 vialegacy contains it --- .../viarewind/api/ViaRewindPlatform.java | 3 -- .../Protocol1_7_6to1_7_2.java | 50 ------------------- 2 files changed, 53 deletions(-) delete mode 100644 core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6to1_7_2/Protocol1_7_6to1_7_2.java diff --git a/core/src/main/java/de/gerrygames/viarewind/api/ViaRewindPlatform.java b/core/src/main/java/de/gerrygames/viarewind/api/ViaRewindPlatform.java index 7819813a6..bb3dd3ee2 100644 --- a/core/src/main/java/de/gerrygames/viarewind/api/ViaRewindPlatform.java +++ b/core/src/main/java/de/gerrygames/viarewind/api/ViaRewindPlatform.java @@ -5,7 +5,6 @@ import de.gerrygames.viarewind.ViaRewind; import de.gerrygames.viarewind.protocol.protocol1_7_0_5to1_7_6_10.Protocol1_7_0_5to1_7_6_10; import de.gerrygames.viarewind.protocol.protocol1_7_6_10to1_8.Protocol1_7_6_10TO1_8; -import de.gerrygames.viarewind.protocol.protocol1_7_6to1_7_2.Protocol1_7_6to1_7_2; import de.gerrygames.viarewind.protocol.protocol1_8to1_9.Protocol1_8TO1_9; import java.util.logging.Logger; @@ -20,8 +19,6 @@ default void init(ViaRewindConfig config) { Via.getManager().getProtocolManager().registerProtocol(new Protocol1_8TO1_9(), ProtocolVersion.v1_8, ProtocolVersion.v1_9); Via.getManager().getProtocolManager().registerProtocol(new Protocol1_7_6_10TO1_8(), ProtocolVersion.v1_7_6, ProtocolVersion.v1_8); Via.getManager().getProtocolManager().registerProtocol(new Protocol1_7_0_5to1_7_6_10(), ProtocolVersion.v1_7_1, ProtocolVersion.v1_7_6); - - Via.getManager().getProtocolManager().registerProtocol(new Protocol1_7_6to1_7_2(), ProtocolVersion.v1_7_6, ProtocolVersion.v1_7_1); } Logger getLogger(); diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6to1_7_2/Protocol1_7_6to1_7_2.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6to1_7_2/Protocol1_7_6to1_7_2.java deleted file mode 100644 index 5a96bc4cb..000000000 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6to1_7_2/Protocol1_7_6to1_7_2.java +++ /dev/null @@ -1,50 +0,0 @@ -package de.gerrygames.viarewind.protocol.protocol1_7_6to1_7_2; - -import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.packet.State; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; -import com.viaversion.viaversion.api.type.Type; -import de.gerrygames.viarewind.protocol.protocol1_7_6_10to1_8.ClientboundPackets1_7; -import de.gerrygames.viarewind.protocol.protocol1_7_6_10to1_8.ServerboundPackets1_7; - -public class Protocol1_7_6to1_7_2 extends AbstractProtocol { - public static ValueTransformer INSERT_DASHES = new ValueTransformer(Type.STRING) { - @Override - public String transform(PacketWrapper wrapper, String inputValue) throws Exception { - StringBuilder builder = new StringBuilder(inputValue); - builder.insert(20, "-"); - builder.insert(16, "-"); - builder.insert(12, "-"); - builder.insert(8, "-"); - return builder.toString(); - } - }; - - public Protocol1_7_6to1_7_2() { - super(ClientboundPackets1_7.class, ClientboundPackets1_7.class, ServerboundPackets1_7.class, ServerboundPackets1_7.class); - } - - @Override - protected void registerPackets() { - //Login Success - this.registerClientbound(State.LOGIN, 0x02, 0x02, new PacketHandlers() { - @Override - public void register() { - map(Type.STRING, INSERT_DASHES); - } - }); - - //Spawn Player - this.registerClientbound(ClientboundPackets1_7.SPAWN_PLAYER, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); - map(Type.STRING, INSERT_DASHES); - map(Type.STRING); - create(Type.VAR_INT, 0); - } - }); - } -} From 4ded017de38cfc811244b0c46132139c20e1a4aa Mon Sep 17 00:00:00 2001 From: Dawson <30784509+funkemunky@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:11:32 -0400 Subject: [PATCH 07/14] Delaying PacketPlayInArmAnimation for 1.8->1.9 properly (#294) * Fixing ArmAnimation sendTimes * Implementing a queue system instead, and adding comments to explain * Clearing out unused imports * Removing unnecessary comment --- .../protocol1_8to1_9/Protocol1_8TO1_9.java | 7 ++- .../packets/PlayerPackets.java | 61 ++++++++++++++----- 2 files changed, 49 insertions(+), 19 deletions(-) diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java index 64c55ecb8..1583264bb 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java @@ -14,13 +14,14 @@ import de.gerrygames.viarewind.protocol.protocol1_8to1_9.storage.*; import de.gerrygames.viarewind.utils.Ticker; -import java.util.HashSet; -import java.util.Set; -import java.util.Timer; +import java.util.*; public class Protocol1_8TO1_9 extends AbstractProtocol { public static final Timer TIMER = new Timer("ViaRewind-1_8TO1_9", true); + + public Queue animationsToSend = new LinkedList<>(); + public static final Set VALID_ATTRIBUTES = new HashSet<>(); public static final ValueTransformer TO_OLD_INT = new ValueTransformer(Type.INT) { public Integer transform(PacketWrapper wrapper, Double inputValue) { diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/packets/PlayerPackets.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/packets/PlayerPackets.java index a6c82a57c..2eed455fc 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/packets/PlayerPackets.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/packets/PlayerPackets.java @@ -26,7 +26,6 @@ import de.gerrygames.viarewind.utils.PacketUtil; import java.util.ArrayList; -import java.util.TimerTask; import java.util.UUID; public class PlayerPackets { @@ -286,6 +285,12 @@ public void register() { public void register() { map(Type.BOOLEAN); handler(packetWrapper -> { + //Sending any queued animations. + PacketWrapper animation = null; + while((animation = ((Protocol1_8TO1_9)protocol).animationsToSend.poll()) != null) { + PacketUtil.sendToServer(animation, Protocol1_8TO1_9.class, true, true); + } + EntityTracker tracker = packetWrapper.user().get(EntityTracker.class); int playerId = tracker.getPlayerId(); if (tracker.isInsideVehicle(playerId)) packetWrapper.cancel(); @@ -302,9 +307,17 @@ public void register() { map(Type.DOUBLE); map(Type.BOOLEAN); handler(packetWrapper -> { + //Sending any queued animations. + PacketWrapper animation = null; + while((animation = ((Protocol1_8TO1_9)protocol).animationsToSend.poll()) != null) { + PacketUtil.sendToServer(animation, Protocol1_8TO1_9.class, + true, true); + } + PlayerPosition pos = packetWrapper.user().get(PlayerPosition.class); if (pos.getConfirmId() != -1) return; - pos.setPos(packetWrapper.get(Type.DOUBLE, 0), packetWrapper.get(Type.DOUBLE, 1), packetWrapper.get(Type.DOUBLE, 2)); + pos.setPos(packetWrapper.get(Type.DOUBLE, 0), packetWrapper.get(Type.DOUBLE, 1), + packetWrapper.get(Type.DOUBLE, 2)); pos.setOnGround(packetWrapper.get(Type.BOOLEAN, 0)); }); handler(packetWrapper -> packetWrapper.user().get(BossBarStorage.class).updateLocation()); @@ -319,6 +332,12 @@ public void register() { map(Type.FLOAT); map(Type.BOOLEAN); handler(packetWrapper -> { + //Sending any queued animations. + PacketWrapper animation = null; + while((animation = ((Protocol1_8TO1_9)protocol).animationsToSend.poll()) != null) { + PacketUtil.sendToServer(animation, Protocol1_8TO1_9.class, true, true); + } + PlayerPosition pos = packetWrapper.user().get(PlayerPosition.class); if (pos.getConfirmId() != -1) return; pos.setYaw(packetWrapper.get(Type.FLOAT, 0)); @@ -340,6 +359,12 @@ public void register() { map(Type.FLOAT); map(Type.BOOLEAN); handler(packetWrapper -> { + //Sending any queued animations. + PacketWrapper animation = null; + while((animation = ((Protocol1_8TO1_9)protocol).animationsToSend.poll()) != null) { + PacketUtil.sendToServer(animation, Protocol1_8TO1_9.class, true, true); + } + double x = packetWrapper.get(Type.DOUBLE, 0); double y = packetWrapper.get(Type.DOUBLE, 1); double z = packetWrapper.get(Type.DOUBLE, 2); @@ -349,10 +374,12 @@ public void register() { PlayerPosition pos = packetWrapper.user().get(PlayerPosition.class); if (pos.getConfirmId() != -1) { - if (pos.getPosX() == x && pos.getPosY() == y && pos.getPosZ() == z && pos.getYaw() == yaw && pos.getPitch() == pitch) { + if (pos.getPosX() == x && pos.getPosY() == y && pos.getPosZ() == z + && pos.getYaw() == yaw && pos.getPitch() == pitch) { PacketWrapper confirmTeleport = packetWrapper.create(0x00); confirmTeleport.write(Type.VAR_INT, pos.getConfirmId()); - PacketUtil.sendToServer(confirmTeleport, Protocol1_8TO1_9.class, true, true); + PacketUtil.sendToServer(confirmTeleport, + Protocol1_8TO1_9.class, true, true); pos.setConfirmId(-1); } @@ -361,7 +388,7 @@ public void register() { pos.setYaw(yaw); pos.setPitch(pitch); pos.setOnGround(onGround); - packetWrapper.user().get(BossBarStorage.class).updateLocation(); + packetWrapper.user().get(BossBarStorage.class).updateLocation(); } }); } @@ -434,18 +461,20 @@ public void register() { public void register() { handler(packetWrapper -> { packetWrapper.cancel(); - final PacketWrapper delayedPacket = PacketWrapper.create(0x1A, null, packetWrapper.user()); + + /* We have to add ArmAnimation to a queue to be sent on PacketPlayInFlying. In 1.9, + * PacketPlayInArmAnimation is sent after PacketPlayInUseEntity, not before like it used to be. + * However, all packets are sent before PacketPlayInFlying. We'd just do a normal delay, but + * it would cause the packet to be sent after PacketPlayInFlying, potentially false flagging + * anticheats that check for this behavior from clients. Since all packets are sent before + * PacketPlayInFlying, if we queue it to be sent right before PacketPlayInFlying is processed, + * we can be certain it will be sent after PacketPlayInUseEntity */ + packetWrapper.cancel(); + final PacketWrapper delayedPacket = PacketWrapper.create(0x1A, + null, packetWrapper.user()); delayedPacket.write(Type.VAR_INT, 0); //Main Hand - //delay packet in order to deal damage to entities - //the cooldown value gets reset by this packet - //1.8 sends it before the use entity packet - //1.9 afterwards - Protocol1_8TO1_9.TIMER.schedule(new TimerTask() { - @Override - public void run() { - PacketUtil.sendToServer(delayedPacket, Protocol1_8TO1_9.class); - } - }, 5); + + ((Protocol1_8TO1_9)protocol).animationsToSend.add(delayedPacket); }); handler(packetWrapper -> { packetWrapper.user().get(BlockPlaceDestroyTracker.class).updateMining(); From f0e72fc088e69dddd08eb97ae3eef01abc4e3dcb Mon Sep 17 00:00:00 2001 From: Johannes <35636315+LIWKK@users.noreply.github.com> Date: Sun, 11 Jun 2023 16:13:00 +0300 Subject: [PATCH 08/14] Remove commits & code.java --- .../packets/PlayerPackets.java | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/PlayerPackets.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/PlayerPackets.java index 5db81f1d3..f114ca7a1 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/PlayerPackets.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/PlayerPackets.java @@ -592,15 +592,6 @@ public void registerMap() { PlayerPosition playerPosition = packetWrapper.user().get(PlayerPosition.class); - /* - Completely useless, this isn't vanilla behaviour so it would trigger anticheats. - */ - /*if (playerPosition.isPositionPacketReceived()) { - playerPosition.setPositionPacketReceived(false); - feetY -= 0.01; - packetWrapper.set(Type.DOUBLE, 1, feetY); - }*/ - playerPosition.setOnGround(packetWrapper.get(Type.BOOLEAN, 0)); playerPosition.setPos(x, feetY, z); }); @@ -642,22 +633,6 @@ public void registerMap() { PlayerPosition playerPosition = packetWrapper.user().get(PlayerPosition.class); - /* - We can't track teleports like this, this packet could've just been a POSLOOK - sent before client accepted teleport, also there could be multiple teleports - and the #getReceivedPosY(), would be wrong y-coord - - Because of this inaccuracy it could teleport players to a wrong place - and trigger anticheats - - I've tested this change and there is no noticable glitchiness in client view. - */ - /*if (playerPosition.isPositionPacketReceived()) { - playerPosition.setPositionPacketReceived(false); - feetY = playerPosition.getReceivedPosY(); - packetWrapper.set(Type.DOUBLE, 1, feetY); - }*/ - playerPosition.setOnGround(packetWrapper.get(Type.BOOLEAN, 0)); playerPosition.setPos(x, feetY, z); playerPosition.setYaw(yaw); From 4937babdd45388ead4e461d0e3627e7a1578b1ea Mon Sep 17 00:00:00 2001 From: Johannes <35636315+LIWKK@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:30:51 +0300 Subject: [PATCH 09/14] Remove useless code (#366) * Remove useless code * Remove comments.java --------- Co-authored-by: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> --- .../packets/InventoryPackets.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/InventoryPackets.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/InventoryPackets.java index ca8666c51..7c9821c40 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/InventoryPackets.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/packets/InventoryPackets.java @@ -227,19 +227,6 @@ public void register() { } }); - protocol.registerServerbound(ServerboundPackets1_7.WINDOW_CONFIRMATION, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); - map(Type.SHORT); - map(Type.BOOLEAN); - handler(packetWrapper -> { - int action = packetWrapper.get(Type.SHORT, 0); - if (action == -89) packetWrapper.cancel(); - }); - } - }); - //Creative Inventory Action protocol.registerServerbound(ServerboundPackets1_7.CREATIVE_INVENTORY_ACTION, new PacketHandlers() { @Override From df311f0dfce5dd2e4db39e72238fe1a5bc035ddb Mon Sep 17 00:00:00 2001 From: BestMark Date: Sat, 24 Jun 2023 21:57:08 +0300 Subject: [PATCH 10/14] Fix ConcurrentModificationException in animationsToSend queue (#443) --- .../viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java index 1583264bb..651cb685b 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/Protocol1_8TO1_9.java @@ -15,12 +15,13 @@ import de.gerrygames.viarewind.utils.Ticker; import java.util.*; +import java.util.concurrent.ConcurrentLinkedQueue; public class Protocol1_8TO1_9 extends AbstractProtocol { public static final Timer TIMER = new Timer("ViaRewind-1_8TO1_9", true); - public Queue animationsToSend = new LinkedList<>(); + public Queue animationsToSend = new ConcurrentLinkedQueue<>(); public static final Set VALID_ATTRIBUTES = new HashSet<>(); public static final ValueTransformer TO_OLD_INT = new ValueTransformer(Type.INT) { From 9b8704bc2aa9155033ff776f95bcc45794d6302e Mon Sep 17 00:00:00 2001 From: "Clairton (Aiko - W11)" Date: Wed, 26 Jul 2023 20:18:59 -0300 Subject: [PATCH 11/14] Fixing hologram flick on 1.7 when it moves or teleports --- .../ArmorStandReplacement.java | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/entityreplacements/ArmorStandReplacement.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/entityreplacements/ArmorStandReplacement.java index f23309aee..840169c57 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/entityreplacements/ArmorStandReplacement.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_7_6_10to1_8/entityreplacements/ArmorStandReplacement.java @@ -50,7 +50,7 @@ public void setLocation(double x, double y, double z) { this.locX = x; this.locY = y; this.locZ = z; - updateLocation(); + updateLocation(false); } } @@ -59,7 +59,7 @@ public void relMove(double x, double y, double z) { this.locX += x; this.locY += y; this.locZ += z; - updateLocation(); + updateLocation(false); } public void setYawPitch(float yaw, float pitch) { @@ -67,14 +67,14 @@ public void setYawPitch(float yaw, float pitch) { this.yaw = yaw; this.headYaw = yaw; this.pitch = pitch; - updateLocation(); + updateLocation(false); } } public void setHeadYaw(float yaw) { if (this.headYaw != yaw) { this.headYaw = yaw; - updateLocation(); + updateLocation(false); } } @@ -117,17 +117,17 @@ public void updateState() { spawn(); } else { updateMetadata(); - updateLocation(); + updateLocation(false); } } - public void updateLocation() { + public void updateLocation(boolean remount) { if (entityIds == null) return; if (currentState == State.ZOMBIE) { updateZombieLocation(); } else if (currentState == State.HOLOGRAM) { - updateHologramLocation(); + updateHologramLocation(remount); } } @@ -135,22 +135,27 @@ private void updateZombieLocation() { sendTeleportWithHead(entityId, locX, locY, locZ, yaw, pitch, headYaw); } - private void updateHologramLocation() { - PacketWrapper detach = PacketWrapper.create(ClientboundPackets1_7.ATTACH_ENTITY, null, user); - detach.write(Type.INT, entityIds[1]); - detach.write(Type.INT, -1); - detach.write(Type.BOOLEAN, false); - PacketUtil.sendPacket(detach, Protocol1_7_6_10TO1_8.class, true, true); + private void updateHologramLocation(boolean remount) { + if(remount) { + PacketWrapper detach = PacketWrapper.create(ClientboundPackets1_7.ATTACH_ENTITY, null, user); + detach.write(Type.INT, entityIds[1]); + detach.write(Type.INT, -1); + detach.write(Type.BOOLEAN, false); + PacketUtil.sendPacket(detach, Protocol1_7_6_10TO1_8.class, true, true); + } // Don't ask me where this offset is coming from sendTeleport(entityIds[0], locX, (locY + (marker ? 54.85 : small ? 56 : 57)), locZ, 0, 0); // Skull - sendTeleport(entityIds[1], locX, locY + 56.75, locZ, 0, 0); // Horse - PacketWrapper attach = PacketWrapper.create(ClientboundPackets1_7.ATTACH_ENTITY, null, user); - attach.write(Type.INT, entityIds[1]); - attach.write(Type.INT, entityIds[0]); - attach.write(Type.BOOLEAN, false); - PacketUtil.sendPacket(attach, Protocol1_7_6_10TO1_8.class, true, true); + if(remount) { + sendTeleport(entityIds[1], locX, locY + 56.75, locZ, 0, 0); // Horse + + PacketWrapper attach = PacketWrapper.create(ClientboundPackets1_7.ATTACH_ENTITY, null, user); + attach.write(Type.INT, entityIds[1]); + attach.write(Type.INT, entityIds[0]); + attach.write(Type.BOOLEAN, false); + PacketUtil.sendPacket(attach, Protocol1_7_6_10TO1_8.class, true, true); + } } public void updateMetadata() { @@ -204,7 +209,7 @@ public void spawn() { } updateMetadata(); - updateLocation(); + updateLocation(true); } private void spawnZombie() { From 04d9e7db73f039e659eeb98e286d9ad55f2d9790 Mon Sep 17 00:00:00 2001 From: Kichura <68134602+Kichura@users.noreply.github.com> Date: Thu, 27 Jul 2023 18:02:16 +0200 Subject: [PATCH 12/14] Include friendly names for 2 steps. --- .github/workflows/maven.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 9efc163e1..036357c6c 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -8,7 +8,8 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v3 + - name: Checkout Repository + uses: actions/checkout@v3 - name: Set up JDK 11 uses: actions/setup-java@v3 with: @@ -16,6 +17,7 @@ jobs: java-version: 11 - name: Build with Maven run: mvn install + - name: Upload Artifacts - uses: actions/upload-artifact@v3 with: name: artifact From da289640790ba30a06b598a0dbed4055c108b469 Mon Sep 17 00:00:00 2001 From: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> Date: Thu, 27 Jul 2023 18:12:07 +0200 Subject: [PATCH 13/14] Slightly fixed the last PR --- .github/workflows/maven.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 036357c6c..772882bcf 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -18,7 +18,8 @@ jobs: - name: Build with Maven run: mvn install - name: Upload Artifacts - - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v3 with: name: artifact path: all/target + From cd8306a7fabc8fde87cf15c70c680d5496f94c21 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Mon, 14 Aug 2023 10:10:12 +0200 Subject: [PATCH 14/14] Updated ViaVersion usage --- .../protocol/protocol1_8to1_9/packets/WorldPackets.java | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/packets/WorldPackets.java b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/packets/WorldPackets.java index 89de80d97..0b7b51184 100644 --- a/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/packets/WorldPackets.java +++ b/core/src/main/java/de/gerrygames/viarewind/protocol/protocol1_8to1_9/packets/WorldPackets.java @@ -18,8 +18,8 @@ import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; import com.viaversion.viaversion.protocols.protocol1_8.ServerboundPackets1_8; +import com.viaversion.viaversion.protocols.protocol1_9_1to1_9.types.Chunk1_9_1_2Type; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.types.Chunk1_9_1_2Type; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ServerboundPackets1_9; import com.viaversion.viaversion.protocols.protocol1_9to1_8.types.Chunk1_8Type; diff --git a/pom.xml b/pom.xml index 8fc131abb..c4aae2ae9 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ com.viaversion viaversion - 4.6.2-SNAPSHOT + 4.8.0-23w32a-SNAPSHOT provided