diff --git a/api-legacy/src/main/java/us/myles/ViaVersion/api/Via.java b/api-legacy/src/main/java/us/myles/ViaVersion/api/Via.java
index 8bf8c0a63..4972569bf 100644
--- a/api-legacy/src/main/java/us/myles/ViaVersion/api/Via.java
+++ b/api-legacy/src/main/java/us/myles/ViaVersion/api/Via.java
@@ -23,13 +23,12 @@
package us.myles.ViaVersion.api;
import io.netty.buffer.ByteBuf;
+import java.util.SortedSet;
+import java.util.UUID;
import us.myles.ViaVersion.api.boss.BossBar;
import us.myles.ViaVersion.api.boss.BossColor;
import us.myles.ViaVersion.api.boss.BossStyle;
-import java.util.SortedSet;
-import java.util.UUID;
-
/**
* @deprecated may be removed at some point, use {@link com.viaversion.viaversion.api.Via}
*/
diff --git a/api-legacy/src/main/java/us/myles/ViaVersion/api/ViaAPI.java b/api-legacy/src/main/java/us/myles/ViaVersion/api/ViaAPI.java
index 7e7c2d27b..a055440c9 100644
--- a/api-legacy/src/main/java/us/myles/ViaVersion/api/ViaAPI.java
+++ b/api-legacy/src/main/java/us/myles/ViaVersion/api/ViaAPI.java
@@ -24,13 +24,12 @@ package us.myles.ViaVersion.api;
import com.viaversion.viaversion.api.Via;
import io.netty.buffer.ByteBuf;
+import java.util.SortedSet;
+import java.util.UUID;
import us.myles.ViaVersion.api.boss.BossBar;
import us.myles.ViaVersion.api.boss.BossColor;
import us.myles.ViaVersion.api.boss.BossStyle;
-import java.util.SortedSet;
-import java.util.UUID;
-
/**
* @deprecated may be removed at some point, use {@link Via#getAPI()}
*/
diff --git a/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java b/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
index bc418dc0d..52667c0b6 100644
--- a/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
+++ b/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
@@ -26,14 +26,13 @@ import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.protocol.version.VersionRange;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
-import org.checkerframework.checker.nullness.qual.NonNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.checker.nullness.qual.Nullable;
/**
* @deprecated will no longer be updated and may be removed at some point, use {@link com.viaversion.viaversion.api.protocol.version.ProtocolVersion}
diff --git a/api/src/main/java/com/viaversion/viaversion/api/ViaAPI.java b/api/src/main/java/com/viaversion/viaversion/api/ViaAPI.java
index 2330ca82f..9e3d64622 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/ViaAPI.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/ViaAPI.java
@@ -29,10 +29,9 @@ import com.viaversion.viaversion.api.platform.ViaPlatform;
import com.viaversion.viaversion.api.protocol.ProtocolManager;
import com.viaversion.viaversion.api.protocol.version.ServerProtocolVersion;
import io.netty.buffer.ByteBuf;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.SortedSet;
import java.util.UUID;
+import org.checkerframework.checker.nullness.qual.Nullable;
/**
* General api point. For more specialized api methods, see {@link Via#getManager()}.
diff --git a/api/src/main/java/com/viaversion/viaversion/api/ViaManager.java b/api/src/main/java/com/viaversion/viaversion/api/ViaManager.java
index f1a663cc1..af8d1b792 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/ViaManager.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/ViaManager.java
@@ -30,7 +30,6 @@ import com.viaversion.viaversion.api.platform.ViaPlatform;
import com.viaversion.viaversion.api.platform.ViaPlatformLoader;
import com.viaversion.viaversion.api.platform.providers.ViaProviders;
import com.viaversion.viaversion.api.protocol.ProtocolManager;
-
import java.util.Set;
public interface ViaManager {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/command/ViaSubCommand.java b/api/src/main/java/com/viaversion/viaversion/api/command/ViaSubCommand.java
index 4f4b8bc40..58d46fa65 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/command/ViaSubCommand.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/command/ViaSubCommand.java
@@ -23,7 +23,6 @@
package com.viaversion.viaversion.api.command;
import com.viaversion.viaversion.util.ChatColorUtil;
-
import java.util.Collections;
import java.util.List;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/command/ViaVersionCommand.java b/api/src/main/java/com/viaversion/viaversion/api/command/ViaVersionCommand.java
index 7607728ad..3afba2be0 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/command/ViaVersionCommand.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/command/ViaVersionCommand.java
@@ -22,9 +22,8 @@
*/
package com.viaversion.viaversion.api.command;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
public interface ViaVersionCommand {
/**
diff --git a/api/src/main/java/com/viaversion/viaversion/api/connection/ConnectionManager.java b/api/src/main/java/com/viaversion/viaversion/api/connection/ConnectionManager.java
index c43b25beb..6a252c82b 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/connection/ConnectionManager.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/connection/ConnectionManager.java
@@ -22,11 +22,10 @@
*/
package com.viaversion.viaversion.api.connection;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import org.checkerframework.checker.nullness.qual.Nullable;
/**
* Handles injected UserConnections
diff --git a/api/src/main/java/com/viaversion/viaversion/api/connection/ProtocolInfo.java b/api/src/main/java/com/viaversion/viaversion/api/connection/ProtocolInfo.java
index a7210338a..5aa83a46c 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/connection/ProtocolInfo.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/connection/ProtocolInfo.java
@@ -24,9 +24,8 @@ package com.viaversion.viaversion.api.connection;
import com.viaversion.viaversion.api.protocol.ProtocolPipeline;
import com.viaversion.viaversion.api.protocol.packet.State;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.UUID;
+import org.checkerframework.checker.nullness.qual.Nullable;
public interface ProtocolInfo {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java b/api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java
index e5ffa8013..1c3bc6e7c 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java
@@ -32,12 +32,11 @@ import com.viaversion.viaversion.exception.InformativeException;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Collection;
import java.util.Map;
import java.util.UUID;
import java.util.function.Function;
+import org.checkerframework.checker.nullness.qual.Nullable;
public interface UserConnection {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/IntArrayMappings.java b/api/src/main/java/com/viaversion/viaversion/api/data/IntArrayMappings.java
index 9cc32a480..01ed8a009 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/data/IntArrayMappings.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/data/IntArrayMappings.java
@@ -24,9 +24,8 @@ package com.viaversion.viaversion.api.data;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Arrays;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class IntArrayMappings implements Mappings {
private final int[] oldToNew;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java
index d772e1528..f91ee560d 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java
@@ -25,9 +25,8 @@ package com.viaversion.viaversion.api.data;
import com.viaversion.viaversion.api.minecraft.RegistryType;
import com.viaversion.viaversion.api.minecraft.TagData;
import com.viaversion.viaversion.util.Int2IntBiMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
public interface MappingData {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java
index b8765ce5a..1d33d37c2 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java
@@ -31,13 +31,12 @@ import com.viaversion.viaversion.api.minecraft.TagData;
import com.viaversion.viaversion.util.Int2IntBiHashMap;
import com.viaversion.viaversion.util.Int2IntBiMap;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class MappingDataBase implements MappingData {
protected final String oldVersion;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java
index df2ed720b..49e5876f8 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java
@@ -32,8 +32,6 @@ import com.viaversion.viaversion.util.GsonUtil;
import com.viaversion.viaversion.util.Int2IntBiMap;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
@@ -41,6 +39,7 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class MappingDataLoader {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java b/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java
index 9930be7a8..25fe5191d 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java
@@ -25,7 +25,6 @@ package com.viaversion.viaversion.api.data;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-
import java.util.Arrays;
public interface Mappings {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/legacy/bossbar/BossBar.java b/api/src/main/java/com/viaversion/viaversion/api/legacy/bossbar/BossBar.java
index 654ccbc75..b06976132 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/legacy/bossbar/BossBar.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/legacy/bossbar/BossBar.java
@@ -23,7 +23,6 @@
package com.viaversion.viaversion.api.legacy.bossbar;
import com.viaversion.viaversion.api.connection.UserConnection;
-
import java.util.Set;
import java.util.UUID;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryType.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryType.java
index abaf8ddbd..98a809198 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryType.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryType.java
@@ -22,10 +22,9 @@
*/
package com.viaversion.viaversion.api.minecraft;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.HashMap;
import java.util.Map;
+import org.checkerframework.checker.nullness.qual.Nullable;
public enum RegistryType {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/BaseChunk.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/BaseChunk.java
index e49fd3e87..326b7961d 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/BaseChunk.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/BaseChunk.java
@@ -24,10 +24,9 @@ package com.viaversion.viaversion.api.minecraft.chunks;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.BitSet;
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
//TODO Move methods from distinctly different versions to different objects/interfaces
public class BaseChunk implements Chunk {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk.java
index 6bd8bce58..019f284df 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk.java
@@ -24,10 +24,9 @@ package com.viaversion.viaversion.api.minecraft.chunks;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.BitSet;
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
// TODO specialized sub interfaces
public interface Chunk {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk1_18.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk1_18.java
index eaf0abcad..68e40325e 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk1_18.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk1_18.java
@@ -24,10 +24,9 @@ package com.viaversion.viaversion.api.minecraft.chunks;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.BitSet;
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class Chunk1_18 implements Chunk {
protected final int x;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/ChunkSectionImpl.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/ChunkSectionImpl.java
index b903337aa..dc961f24b 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/ChunkSectionImpl.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/ChunkSectionImpl.java
@@ -22,9 +22,8 @@
*/
package com.viaversion.viaversion.api.minecraft.chunks;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.EnumMap;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class ChunkSectionImpl implements ChunkSection {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_10Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_10Types.java
index e96b3057e..448d00211 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_10Types.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_10Types.java
@@ -23,7 +23,6 @@
package com.viaversion.viaversion.api.minecraft.entities;
import com.viaversion.viaversion.api.Via;
-
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_11Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_11Types.java
index 719b7d1f3..a14475952 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_11Types.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_11Types.java
@@ -23,7 +23,6 @@
package com.viaversion.viaversion.api.minecraft.entities;
import com.viaversion.viaversion.api.Via;
-
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_12Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_12Types.java
index 779b55466..7ec94306a 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_12Types.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_12Types.java
@@ -24,7 +24,6 @@
package com.viaversion.viaversion.api.minecraft.entities;
import com.viaversion.viaversion.api.Via;
-
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_13Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_13Types.java
index 2f6147d99..bff92e112 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_13Types.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_13Types.java
@@ -23,7 +23,6 @@
package com.viaversion.viaversion.api.minecraft.entities;
import com.viaversion.viaversion.api.Via;
-
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19Types.java
index 536536c16..dbb0b04a1 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19Types.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19Types.java
@@ -25,9 +25,8 @@ package com.viaversion.viaversion.api.minecraft.entities;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.util.EntityTypeUtil;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Locale;
+import org.checkerframework.checker.nullness.qual.Nullable;
public enum Entity1_19Types implements EntityType {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19_3Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19_3Types.java
index bf4c9baa1..dbdd5f503 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19_3Types.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19_3Types.java
@@ -25,9 +25,8 @@ package com.viaversion.viaversion.api.minecraft.entities;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.util.EntityTypeUtil;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Locale;
+import org.checkerframework.checker.nullness.qual.Nullable;
public enum Entity1_19_3Types implements EntityType {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java
index 7bbc21406..206635193 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java
@@ -24,9 +24,8 @@ package com.viaversion.viaversion.api.minecraft.item;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.google.gson.annotations.SerializedName;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Objects;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class DataItem implements Item {
@SerializedName(value = "identifier", alternate = "id")
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/metadata/Metadata.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/metadata/Metadata.java
index 487db8501..dda552acb 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/metadata/Metadata.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/metadata/Metadata.java
@@ -23,9 +23,8 @@
package com.viaversion.viaversion.api.minecraft.metadata;
import com.google.common.base.Preconditions;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Objects;
+import org.checkerframework.checker.nullness.qual.Nullable;
public final class Metadata {
private int id;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/BinaryTagIO.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/BinaryTagIO.java
index d7a755cb3..390518dee 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/BinaryTagIO.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/BinaryTagIO.java
@@ -24,8 +24,6 @@
package com.viaversion.viaversion.api.minecraft.nbt;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
-import org.checkerframework.checker.nullness.qual.NonNull;
-
import java.io.BufferedInputStream;
import java.io.DataInput;
import java.io.DataInputStream;
@@ -38,11 +36,13 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
+import org.checkerframework.checker.nullness.qual.NonNull;
// Specific Via changes:
// - Use OpenNBT tags
// - Added readString/writeString methods from TagStringIO
// - Has not been updated for the sake of keeping the class simple
+
/**
* Serialization operations for binary tags.
*/
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 3c3938d33..492a8ab92 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
@@ -39,7 +39,6 @@ import com.github.steveice10.opennbt.tag.builtin.StringTag;
import com.github.steveice10.opennbt.tag.builtin.Tag;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList;
-
import java.util.stream.IntStream;
import java.util.stream.LongStream;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringWriter.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringWriter.java
index 57706fc78..889ce63c2 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringWriter.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringWriter.java
@@ -37,7 +37,6 @@ 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.io.IOException;
import java.io.Writer;
import java.util.Map;
@@ -45,6 +44,7 @@ import java.util.Map;
// Specific Via changes:
// - Use OpenNBT tags
// - Has not been updated to support pretty printing and legacy writing since that is not needed
+
/**
* An emitter for the SNBT format.
*
diff --git a/api/src/main/java/com/viaversion/viaversion/api/platform/ViaPlatform.java b/api/src/main/java/com/viaversion/viaversion/api/platform/ViaPlatform.java
index 074a7dca4..18955664f 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/platform/ViaPlatform.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/platform/ViaPlatform.java
@@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.command.ViaCommandSender;
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
import com.viaversion.viaversion.api.configuration.ViaVersionConfig;
import com.viaversion.viaversion.api.connection.UserConnection;
-
import java.io.File;
import java.util.Collection;
import java.util.Collections;
diff --git a/api/src/main/java/com/viaversion/viaversion/api/platform/providers/ViaProviders.java b/api/src/main/java/com/viaversion/viaversion/api/platform/providers/ViaProviders.java
index 485c5ee1b..95da175d9 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/platform/providers/ViaProviders.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/platform/providers/ViaProviders.java
@@ -22,12 +22,11 @@
*/
package com.viaversion.viaversion.api.platform.providers;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class ViaProviders {
private final Map, Provider> providers = new HashMap<>();
diff --git a/api/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java b/api/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java
index f3d943011..083880a73 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java
@@ -33,7 +33,6 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.exception.CancelException;
import com.viaversion.viaversion.exception.InformativeException;
import java.util.Arrays;
@@ -168,12 +167,7 @@ public abstract class AbstractProtocol packetMap, PacketType packetType, @Nullable PacketType mappedPacketType,
@@ -513,5 +492,25 @@ public abstract class AbstractProtocol {
private static ViaVersionPlugin instance;
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandHandler.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandHandler.java
index e81a68a6a..c304ab5b0 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandHandler.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandHandler.java
@@ -18,13 +18,12 @@
package com.viaversion.viaversion.bukkit.commands;
import com.viaversion.viaversion.commands.ViaCommandHandler;
+import java.util.List;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
-import java.util.List;
-
public class BukkitCommandHandler extends ViaCommandHandler implements CommandExecutor, TabExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandSender.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandSender.java
index d0b920b5b..fbc429ef3 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandSender.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandSender.java
@@ -18,11 +18,10 @@
package com.viaversion.viaversion.bukkit.commands;
import com.viaversion.viaversion.api.command.ViaCommandSender;
+import java.util.UUID;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
-import java.util.UUID;
-
public class BukkitCommandSender implements ViaCommandSender {
private final CommandSender sender;
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java
index 45fc7dbc1..327203a3c 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java
@@ -20,13 +20,12 @@ package com.viaversion.viaversion.bukkit.compat;
import com.viaversion.viaversion.ViaVersionPlugin;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.bukkit.util.NMSUtil;
+import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
-import java.util.logging.Level;
-
public final class ProtocolSupportCompat {
public static void registerPSConnectListener(ViaVersionPlugin plugin) {
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java
index a0e27451f..822eb8806 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java
@@ -19,9 +19,8 @@ package com.viaversion.viaversion.bukkit.compat;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.bukkit.util.NMSUtil;
-import protocolsupport.api.Connection;
-
import java.lang.reflect.Method;
+import protocolsupport.api.Connection;
final class ProtocolSupportConnectionListener extends Connection.PacketListener {
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitChannelInitializer.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitChannelInitializer.java
index dc66edf76..91ca21c3f 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitChannelInitializer.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitChannelInitializer.java
@@ -25,9 +25,8 @@ import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.lang.reflect.Method;
+import org.checkerframework.checker.nullness.qual.Nullable;
public final class BukkitChannelInitializer extends ChannelInitializer implements WrappedChannelInitializer {
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitDecodeHandler.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitDecodeHandler.java
index ea5586db2..51ea96b09 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitDecodeHandler.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitDecodeHandler.java
@@ -28,7 +28,6 @@ import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelPipeline;
import io.netty.handler.codec.MessageToMessageDecoder;
-
import java.util.List;
@ChannelHandler.Sharable
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitEncodeHandler.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitEncodeHandler.java
index a2caca345..71bcc1f07 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitEncodeHandler.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitEncodeHandler.java
@@ -30,7 +30,6 @@ import io.netty.channel.ChannelPipeline;
import io.netty.handler.codec.ByteToMessageDecoder;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.handler.codec.MessageToMessageEncoder;
-
import java.util.List;
@ChannelHandler.Sharable
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java
index a67080cbc..9c22e55f0 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java
@@ -23,6 +23,9 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.bukkit.handlers.BukkitEncodeHandler;
import com.viaversion.viaversion.bukkit.util.NMSUtil;
import io.netty.channel.Channel;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.logging.Level;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -30,10 +33,6 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.jetbrains.annotations.Nullable;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.logging.Level;
-
public class JoinListener implements Listener {
private static final Method GET_HANDLE;
@@ -79,7 +78,7 @@ public class JoinListener implements Listener {
Channel channel;
try {
- channel = getChannel(player);
+ channel = getChannel(player);
} catch (Exception ex) {
Via.getPlatform().getLogger().log(Level.WARNING, ex,
() -> "Could not find Channel for logging-in player " + player.getUniqueId());
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/multiversion/PlayerSneakListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/multiversion/PlayerSneakListener.java
index f694d0f0e..786456a53 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/multiversion/PlayerSneakListener.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/multiversion/PlayerSneakListener.java
@@ -23,13 +23,6 @@ import com.viaversion.viaversion.api.connection.ProtocolInfo;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.bukkit.listeners.ViaBukkitListener;
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.entity.EntityDamageEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-import org.bukkit.event.player.PlayerToggleSneakEvent;
-
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashSet;
@@ -37,6 +30,12 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.WeakHashMap;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.entity.EntityDamageEvent;
+import org.bukkit.event.player.PlayerQuitEvent;
+import org.bukkit.event.player.PlayerToggleSneakEvent;
public class PlayerSneakListener extends ViaBukkitListener {
private static final float STANDING_HEIGHT = 1.8F;
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_15to1_14_4/EntityToggleGlideListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_15to1_14_4/EntityToggleGlideListener.java
index 61a9329bf..f2d6537af 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_15to1_14_4/EntityToggleGlideListener.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_15to1_14_4/EntityToggleGlideListener.java
@@ -25,14 +25,13 @@ import com.viaversion.viaversion.api.type.types.version.Types1_14;
import com.viaversion.viaversion.bukkit.listeners.ViaBukkitListener;
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15;
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4;
+import java.util.Arrays;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityToggleGlideEvent;
import org.bukkit.potion.PotionEffectType;
-import java.util.Arrays;
-
public class EntityToggleGlideListener extends ViaBukkitListener {
private boolean swimmingMethodExists;
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaAPI.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaAPI.java
index 8209a6a8e..425702ece 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaAPI.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaAPI.java
@@ -23,11 +23,10 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.bukkit.util.ProtocolSupportUtil;
import io.netty.buffer.ByteBuf;
+import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
-import java.util.UUID;
-
public class BukkitViaAPI extends ViaAPIBase {
private final ViaVersionPlugin plugin;
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaConfig.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaConfig.java
index e6a6da0bf..0a68e22e6 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaConfig.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaConfig.java
@@ -19,12 +19,11 @@ package com.viaversion.viaversion.bukkit.platform;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.configuration.AbstractViaConfig;
-import org.bukkit.plugin.Plugin;
-
import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import org.bukkit.plugin.Plugin;
public class BukkitViaConfig extends AbstractViaConfig {
private static final List UNSUPPORTED = Arrays.asList("bungee-ping-interval", "bungee-ping-save", "bungee-servers", "velocity-ping-interval", "velocity-ping-save", "velocity-servers");
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaInjector.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaInjector.java
index 71e39612c..5bf0dce2c 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaInjector.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaInjector.java
@@ -26,13 +26,12 @@ import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelInitializer;
-import org.bukkit.Bukkit;
-import org.bukkit.plugin.PluginDescriptionFile;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;
+import org.bukkit.Bukkit;
+import org.bukkit.plugin.PluginDescriptionFile;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class BukkitViaInjector extends LegacyViaInjector {
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 bafddaad2..2a3f36151 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
@@ -45,17 +45,16 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.provider.AckSequenceProvider;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.HandItemProvider;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.scheduler.BukkitTask;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-
public class BukkitViaLoader implements ViaPlatformLoader {
private final ViaVersionPlugin plugin;
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/PaperViaInjector.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/PaperViaInjector.java
index e86a87ebb..7ace83621 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/PaperViaInjector.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/PaperViaInjector.java
@@ -19,10 +19,9 @@ package com.viaversion.viaversion.bukkit.platform;
import com.viaversion.viaversion.bukkit.handlers.BukkitChannelInitializer;
import io.netty.channel.Channel;
-import net.kyori.adventure.key.Key;
-
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
+import net.kyori.adventure.key.Key;
public final class PaperViaInjector {
public static final boolean PAPER_INJECTION_METHOD = hasPaperInjectionMethod();
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitInventoryQuickMoveProvider.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitInventoryQuickMoveProvider.java
index 501079011..4006a0766 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitInventoryQuickMoveProvider.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitInventoryQuickMoveProvider.java
@@ -26,12 +26,6 @@ import com.viaversion.viaversion.bukkit.util.NMSUtil;
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.providers.InventoryQuickMoveProvider;
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.storage.ItemTransaction;
import com.viaversion.viaversion.util.ReflectionUtil;
-import org.bukkit.entity.Player;
-import org.bukkit.event.inventory.InventoryType;
-import org.bukkit.inventory.Inventory;
-import org.bukkit.inventory.InventoryView;
-import org.bukkit.inventory.ItemStack;
-
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -39,6 +33,11 @@ import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
+import org.bukkit.entity.Player;
+import org.bukkit.event.inventory.InventoryType;
+import org.bukkit.inventory.Inventory;
+import org.bukkit.inventory.InventoryView;
+import org.bukkit.inventory.ItemStack;
public class BukkitInventoryQuickMoveProvider extends InventoryQuickMoveProvider {
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitViaMovementTransmitter.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitViaMovementTransmitter.java
index 9aa8b403a..bd6128dcb 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitViaMovementTransmitter.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitViaMovementTransmitter.java
@@ -22,12 +22,11 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.bukkit.util.NMSUtil;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.MovementTracker;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
public class BukkitViaMovementTransmitter extends MovementTransmitterProvider {
private static boolean USE_NMS = true;
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/tasks/protocol1_12to1_11_1/BukkitInventoryUpdateTask.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/tasks/protocol1_12to1_11_1/BukkitInventoryUpdateTask.java
index 3b717ddb5..a91435230 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/tasks/protocol1_12to1_11_1/BukkitInventoryUpdateTask.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/tasks/protocol1_12to1_11_1/BukkitInventoryUpdateTask.java
@@ -19,13 +19,12 @@ package com.viaversion.viaversion.bukkit.tasks.protocol1_12to1_11_1;
import com.viaversion.viaversion.bukkit.providers.BukkitInventoryQuickMoveProvider;
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.storage.ItemTransaction;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
public class BukkitInventoryUpdateTask implements Runnable {
diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/ProtocolSupportUtil.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/ProtocolSupportUtil.java
index a6a11488a..0a47e5979 100644
--- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/ProtocolSupportUtil.java
+++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/ProtocolSupportUtil.java
@@ -17,10 +17,9 @@
*/
package com.viaversion.viaversion.bukkit.util;
-import org.bukkit.entity.Player;
-
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import org.bukkit.entity.Player;
public final class ProtocolSupportUtil {
private static final Method PROTOCOL_VERSION_METHOD;
diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml
index 507ceda7b..aeb594875 100644
--- a/bukkit/src/main/resources/plugin.yml
+++ b/bukkit/src/main/resources/plugin.yml
@@ -1,13 +1,13 @@
name: ViaVersion
main: com.viaversion.viaversion.ViaVersionPlugin
-authors: [_MylesC, creeper123123321, Gerrygames, kennytv, Matsv]
+authors: [ _MylesC, creeper123123321, Gerrygames, kennytv, Matsv ]
version: ${version}
description: ${description}
api-version: 1.13
-loadbefore: [ProtocolLib, ProxyPipe, SpigotLib, SkinRestorer]
-softdepend: [ProtocolSupport, PacketListenerApi]
+loadbefore: [ ProtocolLib, ProxyPipe, SpigotLib, SkinRestorer ]
+softdepend: [ ProtocolSupport, PacketListenerApi ]
commands:
viaversion:
permission: viaversion.admin # The permission is also referenced here to filter root suggestions (/via)
description: Shows ViaVersion Version and more.
- aliases: [viaver, vvbukkit]
\ No newline at end of file
+ aliases: [ viaver, vvbukkit ]
\ No newline at end of file
diff --git a/bungee/src/main/java/com/viaversion/viaversion/BungeePlugin.java b/bungee/src/main/java/com/viaversion/viaversion/BungeePlugin.java
index eabdabba3..f1cc96bf7 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/BungeePlugin.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/BungeePlugin.java
@@ -39,18 +39,17 @@ import com.viaversion.viaversion.bungee.service.ProtocolDetectorService;
import com.viaversion.viaversion.dump.PluginInfo;
import com.viaversion.viaversion.unsupported.UnsupportedServerSoftware;
import com.viaversion.viaversion.util.GsonUtil;
-import net.md_5.bungee.api.ProxyServer;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
-import net.md_5.bungee.api.plugin.Listener;
-import net.md_5.bungee.api.plugin.Plugin;
-import net.md_5.bungee.protocol.ProtocolConstants;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
+import net.md_5.bungee.api.plugin.Listener;
+import net.md_5.bungee.api.plugin.Plugin;
+import net.md_5.bungee.protocol.ProtocolConstants;
public class BungeePlugin extends Plugin implements ViaServerProxyPlatform, Listener {
private final ProtocolDetectorService protocolDetectorService = new ProtocolDetectorService();
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/commands/BungeeCommandSender.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/commands/BungeeCommandSender.java
index 0723ac98f..fc75243dd 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/commands/BungeeCommandSender.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/commands/BungeeCommandSender.java
@@ -18,11 +18,10 @@
package com.viaversion.viaversion.bungee.commands;
import com.viaversion.viaversion.api.command.ViaCommandSender;
+import java.util.UUID;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
-import java.util.UUID;
-
public class BungeeCommandSender implements ViaCommandSender {
private final CommandSender sender;
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeChannelInitializer.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeChannelInitializer.java
index 8da759c2d..0fbe836c3 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeChannelInitializer.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeChannelInitializer.java
@@ -22,7 +22,6 @@ import com.viaversion.viaversion.connection.UserConnectionImpl;
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
-
import java.lang.reflect.Method;
public class BungeeChannelInitializer extends ChannelInitializer {
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeDecodeHandler.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeDecodeHandler.java
index 965cee07b..9d1a3fc9e 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeDecodeHandler.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeDecodeHandler.java
@@ -24,7 +24,6 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;
-
import java.util.List;
@ChannelHandler.Sharable
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeEncodeHandler.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeEncodeHandler.java
index 1f848ae38..ed35e30bf 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeEncodeHandler.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeEncodeHandler.java
@@ -25,7 +25,6 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;
-
import java.util.List;
@ChannelHandler.Sharable
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeServerHandler.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeServerHandler.java
index 2ea510e08..2bad00b69 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeServerHandler.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeServerHandler.java
@@ -35,15 +35,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
-import net.md_5.bungee.api.event.ServerConnectEvent;
-import net.md_5.bungee.api.event.ServerConnectedEvent;
-import net.md_5.bungee.api.event.ServerSwitchEvent;
-import net.md_5.bungee.api.plugin.Listener;
-import net.md_5.bungee.api.score.Team;
-import net.md_5.bungee.event.EventHandler;
-import net.md_5.bungee.protocol.packet.PluginMessage;
-
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -53,6 +44,14 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
+import net.md_5.bungee.api.event.ServerConnectEvent;
+import net.md_5.bungee.api.event.ServerConnectedEvent;
+import net.md_5.bungee.api.event.ServerSwitchEvent;
+import net.md_5.bungee.api.plugin.Listener;
+import net.md_5.bungee.api.score.Team;
+import net.md_5.bungee.event.EventHandler;
+import net.md_5.bungee.protocol.packet.PluginMessage;
public class BungeeServerHandler implements Listener {
private static Method getHandshake;
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/listeners/ElytraPatch.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/listeners/ElytraPatch.java
index f2361aae8..eb2b211eb 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/listeners/ElytraPatch.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/listeners/ElytraPatch.java
@@ -27,13 +27,12 @@ import com.viaversion.viaversion.api.type.types.version.Types1_9;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
+import java.util.Collections;
import net.md_5.bungee.api.event.ServerConnectedEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import net.md_5.bungee.event.EventPriority;
-import java.util.Collections;
-
/*
* This patches https://github.com/ViaVersion/ViaVersion/issues/555
*/
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaConfig.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaConfig.java
index 4346e6722..94c25fea8 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaConfig.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaConfig.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.bungee.platform;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.bungee.providers.BungeeVersionProvider;
import com.viaversion.viaversion.configuration.AbstractViaConfig;
-
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaInjector.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaInjector.java
index e20377642..e38d9408d 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaInjector.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaInjector.java
@@ -29,12 +29,11 @@ import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelInitializer;
import it.unimi.dsi.fastutil.ints.IntLinkedOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSortedSet;
-import net.md_5.bungee.api.ProxyServer;
-
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import net.md_5.bungee.api.ProxyServer;
public class BungeeViaInjector implements ViaInjector {
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaLoader.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaLoader.java
index bcc95a1ca..307122255 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaLoader.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaLoader.java
@@ -34,13 +34,12 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.BossBarPro
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MainHandProvider;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider;
-import net.md_5.bungee.api.ProxyServer;
-import net.md_5.bungee.api.plugin.Listener;
-import net.md_5.bungee.api.scheduler.ScheduledTask;
-
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.plugin.Listener;
+import net.md_5.bungee.api.scheduler.ScheduledTask;
public class BungeeViaLoader implements ViaPlatformLoader {
private final Set listeners = new HashSet<>();
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeBossBarProvider.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeBossBarProvider.java
index 715af0207..c0edf1af9 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeBossBarProvider.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeBossBarProvider.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.bungee.providers;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.bungee.storage.BungeeStorage;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.BossBarProvider;
-
import java.util.UUID;
public class BungeeBossBarProvider extends BossBarProvider {
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeEntityIdProvider.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeEntityIdProvider.java
index ae9e1f756..41c3f8c8b 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeEntityIdProvider.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeEntityIdProvider.java
@@ -20,9 +20,8 @@ package com.viaversion.viaversion.bungee.providers;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.bungee.storage.BungeeStorage;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
-
import java.lang.reflect.Method;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
public class BungeeEntityIdProvider extends EntityIdProvider {
private static Method getClientEntityId;
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeMainHandProvider.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeMainHandProvider.java
index f506edcea..4f38d3872 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeMainHandProvider.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeMainHandProvider.java
@@ -20,11 +20,10 @@ package com.viaversion.viaversion.bungee.providers;
import com.viaversion.viaversion.api.connection.ProtocolInfo;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MainHandProvider;
-import net.md_5.bungee.api.ProxyServer;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
-
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
/*
This solves the wrong mainhand issue when you join with BungeeCord on a 1.8 server, and switch to a 1.9 or higher.
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeVersionProvider.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeVersionProvider.java
index 7748760ce..604695a44 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeVersionProvider.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeVersionProvider.java
@@ -24,11 +24,10 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.protocols.base.BaseVersionProvider;
import com.viaversion.viaversion.util.ReflectionUtil;
-import net.md_5.bungee.api.ProxyServer;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import net.md_5.bungee.api.ProxyServer;
public class BungeeVersionProvider extends BaseVersionProvider {
private static Class> ref;
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/service/ProtocolDetectorService.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/service/ProtocolDetectorService.java
index 87efaba4a..267f36612 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/service/ProtocolDetectorService.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/service/ProtocolDetectorService.java
@@ -21,13 +21,12 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.bungee.platform.BungeeViaConfig;
import com.viaversion.viaversion.bungee.providers.BungeeVersionProvider;
import com.viaversion.viaversion.platform.AbstractProtocolDetectorService;
-import net.md_5.bungee.api.ProxyServer;
-import net.md_5.bungee.api.config.ServerInfo;
-
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import net.md_5.bungee.api.ProxyServer;
+import net.md_5.bungee.api.config.ServerInfo;
public final class ProtocolDetectorService extends AbstractProtocolDetectorService {
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/storage/BungeeStorage.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/storage/BungeeStorage.java
index 311a5190c..16395365d 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/storage/BungeeStorage.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/storage/BungeeStorage.java
@@ -18,12 +18,11 @@
package com.viaversion.viaversion.bungee.storage;
import com.viaversion.viaversion.api.connection.StorableObject;
-import net.md_5.bungee.api.connection.ProxiedPlayer;
-
import java.lang.reflect.Field;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
+import net.md_5.bungee.api.connection.ProxiedPlayer;
public class BungeeStorage implements StorableObject {
private static Field bossField;
diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/util/BungeePipelineUtil.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/util/BungeePipelineUtil.java
index bdc9b240f..c35a64250 100644
--- a/bungee/src/main/java/com/viaversion/viaversion/bungee/util/BungeePipelineUtil.java
+++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/util/BungeePipelineUtil.java
@@ -21,7 +21,6 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.handler.codec.MessageToMessageDecoder;
-
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
diff --git a/common/src/main/java/com/viaversion/viaversion/ViaAPIBase.java b/common/src/main/java/com/viaversion/viaversion/ViaAPIBase.java
index 34d46cf51..d9492ca30 100644
--- a/common/src/main/java/com/viaversion/viaversion/ViaAPIBase.java
+++ b/common/src/main/java/com/viaversion/viaversion/ViaAPIBase.java
@@ -25,11 +25,10 @@ import com.viaversion.viaversion.api.protocol.version.BlockedProtocolVersions;
import com.viaversion.viaversion.api.protocol.version.ServerProtocolVersion;
import com.viaversion.viaversion.legacy.LegacyAPI;
import io.netty.buffer.ByteBuf;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.UUID;
+import org.checkerframework.checker.nullness.qual.Nullable;
public abstract class ViaAPIBase implements ViaAPI {
diff --git a/common/src/main/java/com/viaversion/viaversion/ViaListener.java b/common/src/main/java/com/viaversion/viaversion/ViaListener.java
index c6abbf199..e35ed3d7b 100644
--- a/common/src/main/java/com/viaversion/viaversion/ViaListener.java
+++ b/common/src/main/java/com/viaversion/viaversion/ViaListener.java
@@ -20,9 +20,8 @@ package com.viaversion.viaversion;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.Protocol;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.UUID;
+import org.checkerframework.checker.nullness.qual.Nullable;
public abstract class ViaListener {
private final Class extends Protocol> requiredPipeline;
diff --git a/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java b/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java
index 4d32eb3f7..410263a2a 100644
--- a/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java
@@ -40,7 +40,6 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.TabCompleteThrea
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ViaIdleThread;
import com.viaversion.viaversion.update.UpdateUtil;
import it.unimi.dsi.fastutil.ints.IntSortedSet;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
diff --git a/common/src/main/java/com/viaversion/viaversion/commands/ViaCommandHandler.java b/common/src/main/java/com/viaversion/viaversion/commands/ViaCommandHandler.java
index f2bc4e7c8..6496c7280 100644
--- a/common/src/main/java/com/viaversion/viaversion/commands/ViaCommandHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/commands/ViaCommandHandler.java
@@ -31,7 +31,6 @@ import com.viaversion.viaversion.commands.defaultsubs.HelpSubCmd;
import com.viaversion.viaversion.commands.defaultsubs.ListSubCmd;
import com.viaversion.viaversion.commands.defaultsubs.PPSSubCmd;
import com.viaversion.viaversion.commands.defaultsubs.ReloadSubCmd;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java
index 7a03efe18..74e5b2998 100644
--- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java
+++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java
@@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.command.ViaCommandSender;
import com.viaversion.viaversion.api.command.ViaSubCommand;
import com.viaversion.viaversion.api.debug.DebugHandler;
-
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DumpSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DumpSubCmd.java
index 5f87c5404..1a207532d 100644
--- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DumpSubCmd.java
+++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DumpSubCmd.java
@@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.dump.DumpTemplate;
import com.viaversion.viaversion.dump.VersionInfo;
import com.viaversion.viaversion.util.GsonUtil;
-
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.InvalidObjectException;
diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/ListSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/ListSubCmd.java
index 7a7cc6e88..ac7f41f28 100644
--- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/ListSubCmd.java
+++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/ListSubCmd.java
@@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.command.ViaCommandSender;
import com.viaversion.viaversion.api.command.ViaSubCommand;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
-
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/PPSSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/PPSSubCmd.java
index 0abd157cd..84fed540f 100644
--- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/PPSSubCmd.java
+++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/PPSSubCmd.java
@@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.command.ViaCommandSender;
import com.viaversion.viaversion.api.command.ViaSubCommand;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
-
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java
index 516423cf6..b32ea3272 100644
--- a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java
+++ b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java
@@ -27,13 +27,12 @@ import com.viaversion.viaversion.protocol.BlockedProtocolVersionsImpl;
import com.viaversion.viaversion.util.Config;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.IntPredicate;
+import org.checkerframework.checker.nullness.qual.Nullable;
public abstract class AbstractViaConfig extends Config implements ViaVersionConfig {
diff --git a/common/src/main/java/com/viaversion/viaversion/connection/ConnectionManagerImpl.java b/common/src/main/java/com/viaversion/viaversion/connection/ConnectionManagerImpl.java
index 46144771a..4565da4cb 100644
--- a/common/src/main/java/com/viaversion/viaversion/connection/ConnectionManagerImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/connection/ConnectionManagerImpl.java
@@ -22,14 +22,13 @@ import com.viaversion.viaversion.api.connection.ConnectionManager;
import com.viaversion.viaversion.api.connection.UserConnection;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFutureListener;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Collections;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class ConnectionManagerImpl implements ConnectionManager {
protected final Map clients = new ConcurrentHashMap<>();
diff --git a/common/src/main/java/com/viaversion/viaversion/connection/ProtocolInfoImpl.java b/common/src/main/java/com/viaversion/viaversion/connection/ProtocolInfoImpl.java
index 86fdd6df5..34922fa4a 100644
--- a/common/src/main/java/com/viaversion/viaversion/connection/ProtocolInfoImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/connection/ProtocolInfoImpl.java
@@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.ProtocolPipeline;
import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
-
import java.util.UUID;
public class ProtocolInfoImpl implements ProtocolInfo {
diff --git a/common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java b/common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java
index 22c649d19..6485020fb 100644
--- a/common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java
@@ -36,8 +36,6 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandlerContext;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
@@ -48,6 +46,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Function;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class UserConnectionImpl implements UserConnection {
private static final AtomicLong IDS = new AtomicLong();
diff --git a/common/src/main/java/com/viaversion/viaversion/data/entity/EntityTrackerBase.java b/common/src/main/java/com/viaversion/viaversion/data/entity/EntityTrackerBase.java
index 9838671bb..f347f54dc 100644
--- a/common/src/main/java/com/viaversion/viaversion/data/entity/EntityTrackerBase.java
+++ b/common/src/main/java/com/viaversion/viaversion/data/entity/EntityTrackerBase.java
@@ -23,8 +23,8 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.data.entity.ClientEntityIdChangeListener;
import com.viaversion.viaversion.api.data.entity.DimensionData;
import com.viaversion.viaversion.api.data.entity.EntityTracker;
-import com.viaversion.viaversion.api.data.entity.TrackedEntity;
import com.viaversion.viaversion.api.data.entity.StoredEntityData;
+import com.viaversion.viaversion.api.data.entity.TrackedEntity;
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import java.util.Collections;
diff --git a/common/src/main/java/com/viaversion/viaversion/data/entity/StoredEntityDataImpl.java b/common/src/main/java/com/viaversion/viaversion/data/entity/StoredEntityDataImpl.java
index b20277464..4108d4ec9 100644
--- a/common/src/main/java/com/viaversion/viaversion/data/entity/StoredEntityDataImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/data/entity/StoredEntityDataImpl.java
@@ -19,10 +19,9 @@ package com.viaversion.viaversion.data.entity;
import com.viaversion.viaversion.api.data.entity.StoredEntityData;
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import org.checkerframework.checker.nullness.qual.Nullable;
public final class StoredEntityDataImpl implements StoredEntityData {
private final Map, Object> storedObjects = new ConcurrentHashMap<>();
diff --git a/common/src/main/java/com/viaversion/viaversion/data/entity/TrackedEntityImpl.java b/common/src/main/java/com/viaversion/viaversion/data/entity/TrackedEntityImpl.java
index a37cdadc1..780294e5e 100644
--- a/common/src/main/java/com/viaversion/viaversion/data/entity/TrackedEntityImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/data/entity/TrackedEntityImpl.java
@@ -17,8 +17,8 @@
*/
package com.viaversion.viaversion.data.entity;
-import com.viaversion.viaversion.api.data.entity.TrackedEntity;
import com.viaversion.viaversion.api.data.entity.StoredEntityData;
+import com.viaversion.viaversion.api.data.entity.TrackedEntity;
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
public final class TrackedEntityImpl implements TrackedEntity {
diff --git a/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java b/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java
index 3cf0856df..9df3369ba 100644
--- a/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java
@@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.protocol.packet.PacketType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
-
import java.util.HashSet;
import java.util.Set;
diff --git a/common/src/main/java/com/viaversion/viaversion/handlers/ChannelHandlerContextWrapper.java b/common/src/main/java/com/viaversion/viaversion/handlers/ChannelHandlerContextWrapper.java
index 9baccdaa8..127749985 100644
--- a/common/src/main/java/com/viaversion/viaversion/handlers/ChannelHandlerContextWrapper.java
+++ b/common/src/main/java/com/viaversion/viaversion/handlers/ChannelHandlerContextWrapper.java
@@ -29,7 +29,6 @@ import io.netty.channel.ChannelPromise;
import io.netty.util.Attribute;
import io.netty.util.AttributeKey;
import io.netty.util.concurrent.EventExecutor;
-
import java.net.SocketAddress;
public class ChannelHandlerContextWrapper implements ChannelHandlerContext {
diff --git a/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java b/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java
index b82ac21be..896cfef48 100644
--- a/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java
+++ b/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java
@@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
diff --git a/common/src/main/java/com/viaversion/viaversion/platform/AbstractProtocolDetectorService.java b/common/src/main/java/com/viaversion/viaversion/platform/AbstractProtocolDetectorService.java
index 12252b831..b2c28ceab 100644
--- a/common/src/main/java/com/viaversion/viaversion/platform/AbstractProtocolDetectorService.java
+++ b/common/src/main/java/com/viaversion/viaversion/platform/AbstractProtocolDetectorService.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.platform;
import com.viaversion.viaversion.api.platform.ProtocolDetectorService;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
-
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
diff --git a/common/src/main/java/com/viaversion/viaversion/platform/LegacyViaInjector.java b/common/src/main/java/com/viaversion/viaversion/platform/LegacyViaInjector.java
index 60f76930e..d3f31ee50 100644
--- a/common/src/main/java/com/viaversion/viaversion/platform/LegacyViaInjector.java
+++ b/common/src/main/java/com/viaversion/viaversion/platform/LegacyViaInjector.java
@@ -29,11 +29,10 @@ import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
public abstract class LegacyViaInjector implements ViaInjector {
protected final List injectedFutures = new ArrayList<>();
diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolManagerImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolManagerImpl.java
index e6d9aa522..691f3a28c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolManagerImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolManagerImpl.java
@@ -68,8 +68,8 @@ import com.viaversion.viaversion.protocols.protocol1_18_2to1_18.Protocol1_18_2To
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.Protocol1_18To1_17_1;
import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.Protocol1_19_1To1_19;
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.Protocol1_19_3To1_19_1;
-import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2;
import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.Protocol1_19_4To1_19_3;
+import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2;
import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.Protocol1_9_1_2To1_9_3_4;
import com.viaversion.viaversion.protocols.protocol1_9_1to1_9.Protocol1_9_1To1_9;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.Protocol1_9_3To1_9_1_2;
@@ -81,11 +81,9 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectSortedMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
-import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
-
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -103,13 +101,15 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.function.Function;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
public class ProtocolManagerImpl implements ProtocolManager {
private static final Protocol BASE_PROTOCOL = new BaseProtocol();
// Input Version -> Output Version & Protocol (Allows fast lookup)
private final Int2ObjectMap> registryMap = new Int2ObjectOpenHashMap<>(32);
- private final Map, Protocol> protocols = new HashMap<>();
+ private final Map, Protocol, ?, ?, ?>> protocols = new HashMap<>();
private final Map> pathCache = new ConcurrentHashMap<>();
private final Set supportedVersions = new HashSet<>();
private final List, Protocol>> baseProtocols = Lists.newCopyOnWriteArrayList();
@@ -361,6 +361,11 @@ public class ProtocolManagerImpl implements ProtocolManager {
throw new IllegalStateException("No Base Protocol for " + serverVersion);
}
+ @Override
+ public Collection> getProtocols() {
+ return Collections.unmodifiableCollection(protocols.values());
+ }
+
@Override
public ServerProtocolVersion getServerProtocolVersion() {
return serverProtocolVersion;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java
index 516d549eb..c3082c7ee 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java
@@ -28,8 +28,6 @@ import com.viaversion.viaversion.api.protocol.ProtocolPipeline;
import com.viaversion.viaversion.api.protocol.packet.Direction;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.packet.State;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -37,6 +35,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.logging.Level;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class ProtocolPipelineImpl extends AbstractSimpleProtocol implements ProtocolPipeline {
private final UserConnection userConnection;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java
index bb014a5a5..37e44a27e 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java
@@ -34,14 +34,13 @@ import com.viaversion.viaversion.util.Pair;
import com.viaversion.viaversion.util.PipelineUtil;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelFuture;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.io.IOException;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
import java.util.NoSuchElementException;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class PacketWrapperImpl implements PacketWrapper {
private static final Protocol[] PROTOCOL_ARRAY = new Protocol[0];
diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/packet/VersionedPacketTransformerImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/packet/VersionedPacketTransformerImpl.java
index a84a3cd18..bb178077e 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocol/packet/VersionedPacketTransformerImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocol/packet/VersionedPacketTransformerImpl.java
@@ -30,11 +30,10 @@ import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.State;
import com.viaversion.viaversion.api.protocol.packet.VersionedPacketTransformer;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class VersionedPacketTransformerImpl implements VersionedPacketTransformer {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java
index 203c1e93c..fe803dfe9 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java
@@ -27,11 +27,9 @@ import com.viaversion.viaversion.api.protocol.ProtocolPipeline;
import com.viaversion.viaversion.api.protocol.packet.Direction;
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.version.ProtocolVersion;
import com.viaversion.viaversion.api.protocol.version.VersionProvider;
import com.viaversion.viaversion.api.type.Type;
-
import java.util.ArrayList;
import java.util.List;
@@ -40,62 +38,57 @@ public class BaseProtocol extends AbstractProtocol {
@Override
protected void registerPackets() {
// Handshake Packet
- registerServerbound(ServerboundHandshakePackets.CLIENT_INTENTION, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int protocolVersion = wrapper.passthrough(Type.VAR_INT);
- wrapper.passthrough(Type.STRING); // Server Address
- wrapper.passthrough(Type.UNSIGNED_SHORT); // Server Port
- int state = wrapper.passthrough(Type.VAR_INT);
+ registerServerbound(ServerboundHandshakePackets.CLIENT_INTENTION, wrapper -> {
+ int protocolVersion = wrapper.passthrough(Type.VAR_INT);
+ wrapper.passthrough(Type.STRING); // Server Address
+ wrapper.passthrough(Type.UNSIGNED_SHORT); // Server Port
+ int state = wrapper.passthrough(Type.VAR_INT);
- ProtocolInfo info = wrapper.user().getProtocolInfo();
- info.setProtocolVersion(protocolVersion);
- // Ensure the server has a version provider
- VersionProvider versionProvider = Via.getManager().getProviders().get(VersionProvider.class);
- if (versionProvider == null) {
- wrapper.user().setActive(false);
- return;
- }
+ ProtocolInfo info = wrapper.user().getProtocolInfo();
+ info.setProtocolVersion(protocolVersion);
+ // Ensure the server has a version provider
+ VersionProvider versionProvider = Via.getManager().getProviders().get(VersionProvider.class);
+ if (versionProvider == null) {
+ wrapper.user().setActive(false);
+ return;
+ }
- // Choose the pipe
- int serverProtocol = versionProvider.getClosestServerProtocol(wrapper.user());
- info.setServerProtocolVersion(serverProtocol);
- List protocolPath = null;
+ // Choose the pipe
+ int serverProtocol = versionProvider.getClosestServerProtocol(wrapper.user());
+ info.setServerProtocolVersion(serverProtocol);
+ List protocolPath = null;
- // Only allow newer clients (or 1.9.2 on 1.9.4 server if the server supports it)
- if (info.getProtocolVersion() >= serverProtocol || Via.getPlatform().isOldClientsAllowed()) {
- protocolPath = Via.getManager().getProtocolManager().getProtocolPath(info.getProtocolVersion(), serverProtocol);
- }
+ // Only allow newer clients (or 1.9.2 on 1.9.4 server if the server supports it)
+ if (info.getProtocolVersion() >= serverProtocol || Via.getPlatform().isOldClientsAllowed()) {
+ protocolPath = Via.getManager().getProtocolManager().getProtocolPath(info.getProtocolVersion(), serverProtocol);
+ }
- ProtocolPipeline pipeline = wrapper.user().getProtocolInfo().getPipeline();
- if (protocolPath != null) {
- List protocols = new ArrayList<>(protocolPath.size());
- for (ProtocolPathEntry entry : protocolPath) {
- protocols.add(entry.protocol());
+ ProtocolPipeline pipeline = wrapper.user().getProtocolInfo().getPipeline();
+ if (protocolPath != null) {
+ List protocols = new ArrayList<>(protocolPath.size());
+ for (ProtocolPathEntry entry : protocolPath) {
+ protocols.add(entry.protocol());
- // Ensure mapping data has already been loaded
- Via.getManager().getProtocolManager().completeMappingDataLoading(entry.protocol().getClass());
- }
+ // Ensure mapping data has already been loaded
+ Via.getManager().getProtocolManager().completeMappingDataLoading(entry.protocol().getClass());
+ }
- // Add protocols to pipeline
- pipeline.add(protocols);
+ // Add protocols to pipeline
+ pipeline.add(protocols);
- // Set the original snapshot version if present
- ProtocolVersion protocol = ProtocolVersion.getProtocol(serverProtocol);
- wrapper.set(Type.VAR_INT, 0, protocol.getOriginalVersion());
- }
+ // Set the original snapshot version if present
+ ProtocolVersion protocol = ProtocolVersion.getProtocol(serverProtocol);
+ wrapper.set(Type.VAR_INT, 0, protocol.getOriginalVersion());
+ }
- // Add Base Protocol
- pipeline.add(Via.getManager().getProtocolManager().getBaseProtocol(serverProtocol));
+ // Add Base Protocol
+ pipeline.add(Via.getManager().getProtocolManager().getBaseProtocol(serverProtocol));
- // Change state
- if (state == 1) {
- info.setState(State.STATUS);
- } else if (state == 2) {
- info.setState(State.LOGIN);
- }
- });
+ // Change state
+ if (state == 1) {
+ info.setState(State.STATUS);
+ } else if (state == 2) {
+ info.setState(State.LOGIN);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_16.java b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_16.java
index 07d3abed1..b02293b7c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_16.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_16.java
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.base;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.type.Type;
-
import java.util.UUID;
public class BaseProtocol1_16 extends BaseProtocol1_7 {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java
index 03baad0a5..2227ca05c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java
@@ -27,7 +27,6 @@ import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.ProtocolPathEntry;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.packet.State;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.protocol.version.VersionProvider;
@@ -38,7 +37,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
import com.viaversion.viaversion.util.ChatColorUtil;
import com.viaversion.viaversion.util.GsonUtil;
import io.netty.channel.ChannelFuture;
-
import java.util.List;
import java.util.UUID;
import java.util.logging.Level;
@@ -54,135 +52,116 @@ public class BaseProtocol1_7 extends AbstractProtocol {
@Override
public void register() {
map(Type.STRING);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ProtocolInfo info = wrapper.user().getProtocolInfo();
- String originalStatus = wrapper.get(Type.STRING, 0);
- try {
- JsonElement json = GsonUtil.getGson().fromJson(originalStatus, JsonElement.class);
- JsonObject version;
- int protocolVersion = 0; // Unknown!
+ handler(wrapper -> {
+ ProtocolInfo info = wrapper.user().getProtocolInfo();
+ String originalStatus = wrapper.get(Type.STRING, 0);
+ try {
+ JsonElement json = GsonUtil.getGson().fromJson(originalStatus, JsonElement.class);
+ JsonObject version;
+ int protocolVersion = 0; // Unknown!
- if (json.isJsonObject()) {
- if (json.getAsJsonObject().has("version")) {
- version = json.getAsJsonObject().get("version").getAsJsonObject();
- if (version.has("protocol")) {
- protocolVersion = ((Long) version.get("protocol").getAsLong()).intValue();
- }
- } else {
- json.getAsJsonObject().add("version", version = new JsonObject());
+ if (json.isJsonObject()) {
+ if (json.getAsJsonObject().has("version")) {
+ version = json.getAsJsonObject().get("version").getAsJsonObject();
+ if (version.has("protocol")) {
+ protocolVersion = ((Long) version.get("protocol").getAsLong()).intValue();
}
} else {
- // Format properly
- json = new JsonObject();
json.getAsJsonObject().add("version", version = new JsonObject());
}
-
- if (Via.getConfig().isSendSupportedVersions()) { // Send supported versions
- version.add("supportedVersions", GsonUtil.getGson().toJsonTree(Via.getAPI().getSupportedVersions()));
- }
-
- if (!Via.getAPI().getServerVersion().isKnown()) { // Set the Server protocol if the detection on startup failed
- ProtocolManagerImpl protocolManager = (ProtocolManagerImpl) Via.getManager().getProtocolManager();
- protocolManager.setServerProtocol(new ServerProtocolVersionSingleton(ProtocolVersion.getProtocol(protocolVersion).getVersion()));
- }
-
- // Ensure the server has a version provider
- VersionProvider versionProvider = Via.getManager().getProviders().get(VersionProvider.class);
- if (versionProvider == null) {
- wrapper.user().setActive(false);
- return;
- }
-
- int closestServerProtocol = versionProvider.getClosestServerProtocol(wrapper.user());
- List protocols = null;
- if (info.getProtocolVersion() >= closestServerProtocol || Via.getPlatform().isOldClientsAllowed()) {
- protocols = Via.getManager().getProtocolManager().getProtocolPath(info.getProtocolVersion(), closestServerProtocol);
- }
-
- if (protocols != null) {
- if (protocolVersion == closestServerProtocol || protocolVersion == 0) { // Fix ServerListPlus
- ProtocolVersion prot = ProtocolVersion.getProtocol(info.getProtocolVersion());
- version.addProperty("protocol", prot.getOriginalVersion());
- }
- } else {
- // not compatible :(, *plays very sad violin*
- wrapper.user().setActive(false);
- }
-
- if (Via.getConfig().blockedProtocolVersions().contains(info.getProtocolVersion())) {
- version.addProperty("protocol", -1); // Show blocked versions as outdated
- }
-
- wrapper.set(Type.STRING, 0, GsonUtil.getGson().toJson(json)); // Update value
- } catch (JsonParseException e) {
- e.printStackTrace();
+ } else {
+ // Format properly
+ json = new JsonObject();
+ json.getAsJsonObject().add("version", version = new JsonObject());
}
+
+ if (Via.getConfig().isSendSupportedVersions()) { // Send supported versions
+ version.add("supportedVersions", GsonUtil.getGson().toJsonTree(Via.getAPI().getSupportedVersions()));
+ }
+
+ if (!Via.getAPI().getServerVersion().isKnown()) { // Set the Server protocol if the detection on startup failed
+ ProtocolManagerImpl protocolManager = (ProtocolManagerImpl) Via.getManager().getProtocolManager();
+ protocolManager.setServerProtocol(new ServerProtocolVersionSingleton(ProtocolVersion.getProtocol(protocolVersion).getVersion()));
+ }
+
+ // Ensure the server has a version provider
+ VersionProvider versionProvider = Via.getManager().getProviders().get(VersionProvider.class);
+ if (versionProvider == null) {
+ wrapper.user().setActive(false);
+ return;
+ }
+
+ int closestServerProtocol = versionProvider.getClosestServerProtocol(wrapper.user());
+ List protocols = null;
+ if (info.getProtocolVersion() >= closestServerProtocol || Via.getPlatform().isOldClientsAllowed()) {
+ protocols = Via.getManager().getProtocolManager().getProtocolPath(info.getProtocolVersion(), closestServerProtocol);
+ }
+
+ if (protocols != null) {
+ if (protocolVersion == closestServerProtocol || protocolVersion == 0) { // Fix ServerListPlus
+ ProtocolVersion prot = ProtocolVersion.getProtocol(info.getProtocolVersion());
+ version.addProperty("protocol", prot.getOriginalVersion());
+ }
+ } else {
+ // not compatible :(, *plays very sad violin*
+ wrapper.user().setActive(false);
+ }
+
+ if (Via.getConfig().blockedProtocolVersions().contains(info.getProtocolVersion())) {
+ version.addProperty("protocol", -1); // Show blocked versions as outdated
+ }
+
+ wrapper.set(Type.STRING, 0, GsonUtil.getGson().toJson(json)); // Update value
+ } catch (JsonParseException e) {
+ e.printStackTrace();
}
});
}
});
// Login Success Packet
- registerClientbound(ClientboundLoginPackets.GAME_PROFILE, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ProtocolInfo info = wrapper.user().getProtocolInfo();
- info.setState(State.PLAY);
+ registerClientbound(ClientboundLoginPackets.GAME_PROFILE, wrapper -> {
+ ProtocolInfo info = wrapper.user().getProtocolInfo();
+ info.setState(State.PLAY);
- UUID uuid = passthroughLoginUUID(wrapper);
- info.setUuid(uuid);
+ UUID uuid = passthroughLoginUUID(wrapper);
+ info.setUuid(uuid);
- String username = wrapper.passthrough(Type.STRING);
- info.setUsername(username);
- // Add to ported clients
- Via.getManager().getConnectionManager().onLoginSuccess(wrapper.user());
+ String username = wrapper.passthrough(Type.STRING);
+ info.setUsername(username);
+ // Add to ported clients
+ Via.getManager().getConnectionManager().onLoginSuccess(wrapper.user());
- if (!info.getPipeline().hasNonBaseProtocols()) { // Only base protocol
- wrapper.user().setActive(false);
- }
+ if (!info.getPipeline().hasNonBaseProtocols()) { // Only base protocol
+ wrapper.user().setActive(false);
+ }
- if (Via.getManager().isDebug()) {
- // Print out the route to console
- Via.getPlatform().getLogger().log(Level.INFO, "{0} logged in with protocol {1}, Route: {2}",
- new Object[]{
- username,
- info.getProtocolVersion(),
- Joiner.on(", ").join(info.getPipeline().pipes(), ", ")
- });
- }
- }
- });
+ if (Via.getManager().isDebug()) {
+ // Print out the route to console
+ Via.getPlatform().getLogger().log(Level.INFO, "{0} logged in with protocol {1}, Route: {2}",
+ new Object[]{
+ username,
+ info.getProtocolVersion(),
+ Joiner.on(", ").join(info.getPipeline().pipes(), ", ")
+ });
}
});
/* Incoming Packets */
// Login Start Packet
- registerServerbound(ServerboundLoginPackets.HELLO, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(final PacketWrapper wrapper) throws Exception {
- int protocol = wrapper.user().getProtocolInfo().getProtocolVersion();
- if (Via.getConfig().blockedProtocolVersions().contains(protocol)) {
- if (!wrapper.user().getChannel().isOpen()) return;
- if (!wrapper.user().shouldApplyBlockProtocol()) return;
+ registerServerbound(ServerboundLoginPackets.HELLO, wrapper -> {
+ int protocol = wrapper.user().getProtocolInfo().getProtocolVersion();
+ if (Via.getConfig().blockedProtocolVersions().contains(protocol)) {
+ if (!wrapper.user().getChannel().isOpen()) return;
+ if (!wrapper.user().shouldApplyBlockProtocol()) return;
- PacketWrapper disconnectPacket = PacketWrapper.create(ClientboundLoginPackets.LOGIN_DISCONNECT, wrapper.user()); // Disconnect Packet
- Protocol1_9To1_8.FIX_JSON.write(disconnectPacket, ChatColorUtil.translateAlternateColorCodes(Via.getConfig().getBlockedDisconnectMsg()));
- wrapper.cancel(); // cancel current
+ PacketWrapper disconnectPacket = PacketWrapper.create(ClientboundLoginPackets.LOGIN_DISCONNECT, wrapper.user()); // Disconnect Packet
+ Protocol1_9To1_8.FIX_JSON.write(disconnectPacket, ChatColorUtil.translateAlternateColorCodes(Via.getConfig().getBlockedDisconnectMsg()));
+ wrapper.cancel(); // cancel current
- // Send and close
- ChannelFuture future = disconnectPacket.sendFuture(BaseProtocol.class);
- future.addListener(f -> wrapper.user().getChannel().close());
- }
- }
- });
+ // Send and close
+ ChannelFuture future = disconnectPacket.sendFuture(BaseProtocol.class);
+ future.addListener(f -> wrapper.user().getChannel().close());
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/Protocol1_10To1_9_3_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/Protocol1_10To1_9_3_4.java
index f282e4263..831ee1a65 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/Protocol1_10To1_9_3_4.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/Protocol1_10To1_9_3_4.java
@@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
import com.viaversion.viaversion.api.rewriter.ItemRewriter;
@@ -37,7 +36,6 @@ import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
-
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -96,12 +94,9 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol {
+ int id = wrapper.get(Type.VAR_INT, 0);
+ wrapper.set(Type.VAR_INT, 0, getNewSoundId(id));
});
}
});
@@ -158,14 +153,11 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- int dimensionId = wrapper.get(Type.INT, 1);
- clientWorld.setEnvironment(dimensionId);
- }
+ int dimensionId = wrapper.get(Type.INT, 1);
+ clientWorld.setEnvironment(dimensionId);
});
}
});
@@ -176,37 +168,26 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- int dimensionId = wrapper.get(Type.INT, 0);
- clientWorld.setEnvironment(dimensionId);
- }
+ int dimensionId = wrapper.get(Type.INT, 0);
+ clientWorld.setEnvironment(dimensionId);
});
}
});
// Chunk Data
- registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- Chunk chunk = wrapper.passthrough(new Chunk1_9_3_4Type(clientWorld));
+ registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ Chunk chunk = wrapper.passthrough(new Chunk1_9_3_4Type(clientWorld));
- if (Via.getConfig().isReplacePistons()) {
- int replacementId = Via.getConfig().getPistonReplacementId();
- for (ChunkSection section : chunk.getSections()) {
- if (section == null) continue;
- section.palette(PaletteType.BLOCKS).replaceId(36, replacementId);
- }
- }
- }
- });
+ if (Via.getConfig().isReplacePistons()) {
+ int replacementId = Via.getConfig().getPistonReplacementId();
+ for (ChunkSection section : chunk.getSections()) {
+ if (section == null) continue;
+ section.palette(PaletteType.BLOCKS).replaceId(36, replacementId);
+ }
}
});
@@ -217,12 +198,9 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol {
+ ResourcePackTracker tracker = wrapper.user().get(ResourcePackTracker.class);
+ tracker.setLastHash(wrapper.get(Type.STRING, 1)); // Store the hash for resourcepack status
});
}
});
@@ -231,13 +209,10 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol {
+ ResourcePackTracker tracker = wrapper.user().get(ResourcePackTracker.class);
+ wrapper.write(Type.STRING, tracker.getLastHash());
+ wrapper.write(Type.VAR_INT, wrapper.read(Type.VAR_INT));
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java
index 7a6140732..837a05e86 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java
@@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_11Types;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
import com.viaversion.viaversion.api.type.Type;
@@ -90,21 +89,18 @@ public class Protocol1_11To1_10 extends AbstractProtocol {
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ // Change Type :)
+ int type = wrapper.get(Type.VAR_INT, 1);
- Entity1_11Types.EntityType entType = MetadataRewriter1_11To1_10.rewriteEntityType(type, wrapper.get(Types1_9.METADATA_LIST, 0));
- if (entType != null) {
- wrapper.set(Type.VAR_INT, 1, entType.getId());
+ Entity1_11Types.EntityType entType = MetadataRewriter1_11To1_10.rewriteEntityType(type, wrapper.get(Types1_9.METADATA_LIST, 0));
+ if (entType != null) {
+ wrapper.set(Type.VAR_INT, 1, entType.getId());
- // Register Type ID
- wrapper.user().getEntityTracker(Protocol1_11To1_10.class).addEntity(entityId, entType);
- entityRewriter.handleMetadata(entityId, wrapper.get(Types1_9.METADATA_LIST, 0), wrapper.user());
- }
+ // Register Type ID
+ wrapper.user().getEntityTracker(Protocol1_11To1_10.class).addEntity(entityId, entType);
+ entityRewriter.handleMetadata(entityId, wrapper.get(Types1_9.METADATA_LIST, 0), wrapper.user());
}
});
}
@@ -118,11 +114,8 @@ public class Protocol1_11To1_10 extends AbstractProtocol {
+ wrapper.write(Type.VAR_INT, 1); // 2 - Pickup Count
});
}
});
@@ -140,17 +133,14 @@ public class Protocol1_11To1_10 extends AbstractProtocol {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ if (Via.getConfig().isHologramPatch()) {
+ EntityTracker1_11 tracker = wrapper.user().getEntityTracker(Protocol1_11To1_10.class);
+ if (tracker.isHologram(entityID)) {
+ Double newValue = wrapper.get(Type.DOUBLE, 1);
+ newValue -= (Via.getConfig().getHologramYOffset());
+ wrapper.set(Type.DOUBLE, 1, newValue);
}
}
});
@@ -164,15 +154,12 @@ public class Protocol1_11To1_10 extends AbstractProtocol {
+ int action = wrapper.get(Type.VAR_INT, 0);
- // Handle the new ActionBar
- if (action >= 2) {
- wrapper.set(Type.VAR_INT, 0, action + 1);
- }
+ // Handle the new ActionBar
+ if (action >= 2) {
+ wrapper.set(Type.VAR_INT, 0, action + 1);
}
});
}
@@ -187,14 +174,11 @@ public class Protocol1_11To1_10 extends AbstractProtocol {
+ if (Via.getConfig().isPistonAnimationPatch()) {
+ int id = actionWrapper.get(Type.VAR_INT, 0);
+ if (id == 33 || id == 29) {
+ actionWrapper.cancel();
}
}
});
@@ -208,46 +192,35 @@ public class Protocol1_11To1_10 extends AbstractProtocol {
+ CompoundTag tag = wrapper.get(Type.NBT, 0);
+ if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 1)
+ EntityIdRewriter.toClientSpawner(tag);
- if (tag.contains("id"))
- // Handle new identifier
- ((StringTag) tag.get("id")).setValue(BlockEntityRewriter.toNewIdentifier((String) tag.get("id").getValue()));
+ if (tag.contains("id"))
+ // Handle new identifier
+ ((StringTag) tag.get("id")).setValue(BlockEntityRewriter.toNewIdentifier((String) tag.get("id").getValue()));
- }
});
}
});
- registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- Chunk chunk = wrapper.passthrough(new Chunk1_9_3_4Type(clientWorld));
+ Chunk chunk = wrapper.passthrough(new Chunk1_9_3_4Type(clientWorld));
- if (chunk.getBlockEntities() == null) return;
- for (CompoundTag tag : chunk.getBlockEntities()) {
- if (tag.contains("id")) {
- String identifier = ((StringTag) tag.get("id")).getValue();
- if (identifier.equals("MobSpawner")) {
- EntityIdRewriter.toClientSpawner(tag);
- }
-
- // Handle new identifier
- ((StringTag) tag.get("id")).setValue(BlockEntityRewriter.toNewIdentifier(identifier));
- }
- }
+ if (chunk.getBlockEntities() == null) return;
+ for (CompoundTag tag : chunk.getBlockEntities()) {
+ if (tag.contains("id")) {
+ String identifier = ((StringTag) tag.get("id")).getValue();
+ if (identifier.equals("MobSpawner")) {
+ EntityIdRewriter.toClientSpawner(tag);
}
- });
+
+ // Handle new identifier
+ ((StringTag) tag.get("id")).setValue(BlockEntityRewriter.toNewIdentifier(identifier));
+ }
}
});
@@ -326,14 +299,11 @@ public class Protocol1_11To1_10 extends AbstractProtocol 100) {
- wrapper.set(Type.STRING, 0, msg.substring(0, 100));
- }
+ handler(wrapper -> {
+ // 100 character limit on older servers
+ String msg = wrapper.get(Type.STRING, 0);
+ if (msg.length() > 100) {
+ wrapper.set(Type.STRING, 0, msg.substring(0, 100));
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/metadata/MetadataRewriter1_11To1_10.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/metadata/MetadataRewriter1_11To1_10.java
index cf8021c59..3b636a133 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/metadata/MetadataRewriter1_11To1_10.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/metadata/MetadataRewriter1_11To1_10.java
@@ -32,7 +32,6 @@ import com.viaversion.viaversion.protocols.protocol1_11to1_10.Protocol1_11To1_10
import com.viaversion.viaversion.protocols.protocol1_11to1_10.storage.EntityTracker1_11;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
import java.util.Optional;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/packets/InventoryPackets.java
index bc0c47b0e..8c75a785b 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/packets/InventoryPackets.java
@@ -18,8 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_11to1_10.packets;
import com.viaversion.viaversion.api.minecraft.item.Item;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_11to1_10.EntityIdRewriter;
@@ -46,25 +44,22 @@ public class InventoryPackets extends ItemRewriter {
+ if (wrapper.get(Type.STRING, 0).equalsIgnoreCase("MC|TrList")) {
+ wrapper.passthrough(Type.INT); // Passthrough Window ID
- int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
- for (int i = 0; i < size; i++) {
- EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Input Item
- EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Output Item
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Input Item
+ EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Output Item
- boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
- if (secondItem)
- EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Second Item
+ boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
+ if (secondItem)
+ EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Second Item
- wrapper.passthrough(Type.BOOLEAN); // Trade disabled
- wrapper.passthrough(Type.INT); // Number of tools uses
- wrapper.passthrough(Type.INT); // Maximum number of trade uses
- }
+ wrapper.passthrough(Type.BOOLEAN); // Trade disabled
+ wrapper.passthrough(Type.INT); // Number of tools uses
+ wrapper.passthrough(Type.INT); // Maximum number of trade uses
}
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java
index 152e854bd..b514c3217 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java
@@ -22,7 +22,6 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.viaversion.viaversion.api.connection.UserConnection;
-
import java.util.regex.Pattern;
public class ChatItemRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java
index 336a03d5e..4072b4c92 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java
@@ -30,8 +30,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_12Types;
import com.viaversion.viaversion.api.platform.providers.ViaProviders;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.type.Type;
@@ -97,61 +95,45 @@ public class Protocol1_12To1_11_1 extends AbstractProtocol {
+ if (!Via.getConfig().is1_12NBTArrayFix()) return;
+ try {
+ JsonElement obj = Protocol1_9To1_8.FIX_JSON.transform(null, wrapper.passthrough(Type.COMPONENT).toString());
+ TranslateRewriter.toClient(obj, wrapper.user());
+ ChatItemRewriter.toClient(obj, wrapper.user());
+ wrapper.set(Type.COMPONENT, 0, obj);
+ } catch (Exception e) {
+ e.printStackTrace();
}
});
- registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld);
- Chunk chunk = wrapper.passthrough(type);
+ Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld);
+ Chunk chunk = wrapper.passthrough(type);
- for (int s = 0; s < chunk.getSections().length; s++) {
- ChunkSection section = chunk.getSections()[s];
- if (section == null) continue;
- DataPalette blocks = section.palette(PaletteType.BLOCKS);
+ for (int s = 0; s < chunk.getSections().length; s++) {
+ ChunkSection section = chunk.getSections()[s];
+ if (section == null) continue;
+ DataPalette blocks = section.palette(PaletteType.BLOCKS);
- for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
- int id = blocks.idAt(idx) >> 4;
- // Is this a bed?
- if (id != 26) continue;
+ for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
+ int id = blocks.idAt(idx) >> 4;
+ // Is this a bed?
+ if (id != 26) continue;
- // NBT -> { color:14, x:132, y:64, z:222, id:"minecraft:bed" } (Debug output)
- CompoundTag tag = new CompoundTag();
- tag.put("color", new IntTag(14)); // Set color to red (Default in previous versions)
- tag.put("x", new IntTag(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4)));
- tag.put("y", new IntTag(ChunkSection.yFromIndex(idx) + (s << 4)));
- tag.put("z", new IntTag(ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4)));
- tag.put("id", new StringTag("minecraft:bed"));
+ // NBT -> { color:14, x:132, y:64, z:222, id:"minecraft:bed" } (Debug output)
+ CompoundTag tag = new CompoundTag();
+ tag.put("color", new IntTag(14)); // Set color to red (Default in previous versions)
+ tag.put("x", new IntTag(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4)));
+ tag.put("y", new IntTag(ChunkSection.yFromIndex(idx) + (s << 4)));
+ tag.put("z", new IntTag(ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4)));
+ tag.put("id", new StringTag("minecraft:bed"));
- // Add a fake block entity
- chunk.getBlockEntities().add(tag);
- }
- }
- }
- });
+ // Add a fake block entity
+ chunk.getBlockEntities().add(tag);
+ }
}
});
@@ -206,22 +188,19 @@ public class Protocol1_12To1_11_1 extends AbstractProtocol 7) {
- wrapper.set(Type.STRING, 0, locale.substring(0, 7));
- }
+ handler(wrapper -> {
+ // As part of the fix for MC-111054, the max length of
+ // the locale was raised to 16 (from 7), and the client
+ // now makes sure that resource packs have names in that
+ // length. However, for older servers, it is still 7,
+ // and thus the server will reject it (and the client
+ // won't know that the pack's invalid).
+ // The fix is to just silently lower the length. The
+ // server doesn't actually use the locale anywhere, so
+ // this is fine.
+ String locale = wrapper.get(Type.STRING, 0);
+ if (locale.length() > 7) {
+ wrapper.set(Type.STRING, 0, locale.substring(0, 7));
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/data/AchievementTranslationMapping.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/data/AchievementTranslationMapping.java
index adfbbfc00..93b4313c3 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/data/AchievementTranslationMapping.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/data/AchievementTranslationMapping.java
@@ -18,7 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.data;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
-
import java.util.HashSet;
import java.util.Set;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java
index b34081db9..929ba6bc2 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java
@@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
public class MetadataRewriter1_12To1_11_1 extends EntityRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java
index 5ba47b904..57f4b03b0 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java
@@ -19,8 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.packets;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.item.Item;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1;
@@ -48,26 +46,23 @@ public class InventoryPackets extends ItemRewriter {
+ if (wrapper.get(Type.STRING, 0).equalsIgnoreCase("MC|TrList")) {
+ wrapper.passthrough(Type.INT); // Passthrough Window ID
- int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
- for (int i = 0; i < size; i++) {
- handleItemToClient(wrapper.passthrough(Type.ITEM)); // Input Item
- handleItemToClient(wrapper.passthrough(Type.ITEM)); // Output Item
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ handleItemToClient(wrapper.passthrough(Type.ITEM)); // Input Item
+ handleItemToClient(wrapper.passthrough(Type.ITEM)); // Output Item
- boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
- if (secondItem) {
- handleItemToClient(wrapper.passthrough(Type.ITEM)); // Second Item
- }
-
- wrapper.passthrough(Type.BOOLEAN); // Trade disabled
- wrapper.passthrough(Type.INT); // Number of tools uses
- wrapper.passthrough(Type.INT); // Maximum number of trade uses
+ boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
+ if (secondItem) {
+ handleItemToClient(wrapper.passthrough(Type.ITEM)); // Second Item
}
+
+ wrapper.passthrough(Type.BOOLEAN); // Trade disabled
+ wrapper.passthrough(Type.INT); // Number of tools uses
+ wrapper.passthrough(Type.INT); // Maximum number of trade uses
}
}
});
@@ -85,30 +80,27 @@ public class InventoryPackets extends ItemRewriter {
+ Item item = wrapper.get(Type.ITEM, 0);
+ if (!Via.getConfig().is1_12QuickMoveActionFix()) {
+ handleItemToServer(item);
+ return;
+ }
+ byte button = wrapper.get(Type.BYTE, 0);
+ int mode = wrapper.get(Type.VAR_INT, 0);
+ // QUICK_MOVE PATCH (Shift + (click/double click))
+ if (mode == 1 && button == 0 && item == null) {
+ short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0);
+ short slotId = wrapper.get(Type.SHORT, 0);
+ short actionId = wrapper.get(Type.SHORT, 1);
+ InventoryQuickMoveProvider provider = Via.getManager().getProviders().get(InventoryQuickMoveProvider.class);
+ boolean succeed = provider.registerQuickMoveAction(windowId, slotId, actionId, wrapper.user());
+ if (succeed) {
+ wrapper.cancel();
}
+ // otherwise just pass through so the server sends the PacketPlayOutTransaction packet.
+ } else {
+ handleItemToServer(item);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/Protocol1_13_1To1_13.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/Protocol1_13_1To1_13.java
index b8bb127ff..8df40f81f 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/Protocol1_13_1To1_13.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/Protocol1_13_1To1_13.java
@@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
import com.viaversion.viaversion.api.type.Type;
@@ -81,13 +80,10 @@ public class Protocol1_13_1To1_13 extends AbstractProtocol {
+ int hand = wrapper.read(Type.VAR_INT);
+ if (hand == 1) {
+ wrapper.cancel();
}
});
}
@@ -100,19 +96,16 @@ public class Protocol1_13_1To1_13 extends AbstractProtocol {
+ int start = wrapper.get(Type.VAR_INT, 1);
+ wrapper.set(Type.VAR_INT, 1, start + 1); // Offset by +1 to take into account / at beginning
+ // Passthrough suggestions
+ int count = wrapper.get(Type.VAR_INT, 3);
+ for (int i = 0; i < count; i++) {
+ wrapper.passthrough(Type.STRING);
+ boolean hasTooltip = wrapper.passthrough(Type.BOOLEAN);
+ if (hasTooltip) {
+ wrapper.passthrough(Type.STRING); // JSON Tooltip
}
}
});
@@ -124,19 +117,16 @@ public class Protocol1_13_1To1_13 extends AbstractProtocol {
+ int action = wrapper.get(Type.VAR_INT, 0);
+ if (action == 0) {
+ wrapper.passthrough(Type.COMPONENT);
+ wrapper.passthrough(Type.FLOAT);
+ wrapper.passthrough(Type.VAR_INT);
+ wrapper.passthrough(Type.VAR_INT);
+ short flags = wrapper.read(Type.BYTE);
+ if ((flags & 0x02) != 0) flags |= 0x04;
+ wrapper.write(Type.UNSIGNED_BYTE, flags);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/metadata/MetadataRewriter1_13_1To1_13.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/metadata/MetadataRewriter1_13_1To1_13.java
index d60525a5d..6b46a1644 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/metadata/MetadataRewriter1_13_1To1_13.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/metadata/MetadataRewriter1_13_1To1_13.java
@@ -27,7 +27,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_13;
import com.viaversion.viaversion.protocols.protocol1_13_1to1_13.Protocol1_13_1To1_13;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
public class MetadataRewriter1_13_1To1_13 extends EntityRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/EntityPackets.java
index 64dd03b40..12546673f 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/EntityPackets.java
@@ -18,8 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_13_1to1_13.packets;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.version.Types1_13;
@@ -46,21 +44,18 @@ public class EntityPackets {
map(Type.INT); // 8 - Data
// Track Entity
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityId = wrapper.get(Type.VAR_INT, 0);
- byte type = wrapper.get(Type.BYTE, 0);
- Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true);
+ handler(wrapper -> {
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ byte type = wrapper.get(Type.BYTE, 0);
+ Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true);
- if (entType != null) {
- if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) {
- int data = wrapper.get(Type.INT, 0);
- wrapper.set(Type.INT, 0, protocol.getMappingData().getNewBlockStateId(data));
- }
- // Register Type ID
- wrapper.user().getEntityTracker(Protocol1_13_1To1_13.class).addEntity(entityId, entType);
+ if (entType != null) {
+ if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) {
+ int data = wrapper.get(Type.INT, 0);
+ wrapper.set(Type.INT, 0, protocol.getMappingData().getNewBlockStateId(data));
}
+ // Register Type ID
+ wrapper.user().getEntityTracker(Protocol1_13_1To1_13.class).addEntity(entityId, entType);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java
index 5a0f9c9a6..25234ca8a 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java
@@ -17,8 +17,6 @@
*/
package com.viaversion.viaversion.protocols.protocol1_13_1to1_13.packets;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_13_1to1_13.Protocol1_13_1To1_13;
@@ -45,30 +43,27 @@ public class InventoryPackets extends ItemRewriter {
+ String channel = wrapper.get(Type.STRING, 0);
+ if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) {
+ wrapper.passthrough(Type.INT); // Passthrough Window ID
- int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
- for (int i = 0; i < size; i++) {
- // Input Item
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ // Input Item
+ handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM));
+ // Output Item
+ handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM));
+
+ boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
+ if (secondItem) {
+ // Second Item
handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM));
- // Output Item
- handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM));
-
- boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
- if (secondItem) {
- // Second Item
- handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM));
- }
-
- wrapper.passthrough(Type.BOOLEAN); // Trade disabled
- wrapper.passthrough(Type.INT); // Number of tools uses
- wrapper.passthrough(Type.INT); // Maximum number of trade uses
}
+
+ wrapper.passthrough(Type.BOOLEAN); // Trade disabled
+ wrapper.passthrough(Type.INT); // Number of tools uses
+ wrapper.passthrough(Type.INT); // Maximum number of trade uses
}
}
});
@@ -78,18 +73,13 @@ public class InventoryPackets extends ItemRewriter recipeRewriter = new RecipeRewriter1_13_2<>(protocol);
- protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int size = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < size; i++) {
- // First id, then type
- String id = wrapper.passthrough(Type.STRING);
- String type = wrapper.passthrough(Type.STRING).replace("minecraft:", "");
- recipeRewriter.handleRecipeType(wrapper, type);
- }
- });
+ protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, wrapper -> {
+ int size = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < size; i++) {
+ // First id, then type
+ wrapper.passthrough(Type.STRING); // Id
+ String type = wrapper.passthrough(Type.STRING).replace("minecraft:", "");
+ recipeRewriter.handleRecipeType(wrapper, type);
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/WorldPackets.java
index 8cca6ac6f..6f2930534 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/WorldPackets.java
@@ -21,8 +21,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_13_1to1_13.Protocol1_13_1To1_13;
@@ -36,28 +34,20 @@ public class WorldPackets {
public static void register(Protocol1_13_1To1_13 protocol) {
BlockRewriter blockRewriter = new BlockRewriter<>(protocol, Type.POSITION);
- protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- Chunk chunk = wrapper.passthrough(new Chunk1_13Type(clientWorld));
+ protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ Chunk chunk = wrapper.passthrough(new Chunk1_13Type(clientWorld));
- for (ChunkSection section : chunk.getSections()) {
- if (section == null) {
- continue;
- }
+ for (ChunkSection section : chunk.getSections()) {
+ if (section == null) {
+ continue;
+ }
- DataPalette palette = section.palette(PaletteType.BLOCKS);
- for (int i = 0; i < palette.size(); i++) {
- int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
- palette.setIdByIndex(i, mappedBlockStateId);
- }
- }
- }
- });
+ DataPalette palette = section.palette(PaletteType.BLOCKS);
+ for (int i = 0; i < palette.size(); i++) {
+ int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
+ palette.setIdByIndex(i, mappedBlockStateId);
+ }
}
});
@@ -112,14 +102,11 @@ public class WorldPackets {
map(Type.UNSIGNED_BYTE); // 1 - Gamemode
map(Type.INT); // 2 - Dimension
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- // Store the player
- ClientWorld clientChunks = wrapper.user().get(ClientWorld.class);
- int dimensionId = wrapper.get(Type.INT, 1);
- clientChunks.setEnvironment(dimensionId);
- }
+ handler(wrapper -> {
+ // Store the player
+ ClientWorld clientChunks = wrapper.user().get(ClientWorld.class);
+ int dimensionId = wrapper.get(Type.INT, 1);
+ clientChunks.setEnvironment(dimensionId);
});
}
});
@@ -128,13 +115,10 @@ public class WorldPackets {
@Override
public void register() {
map(Type.INT); // 0 - Dimension ID
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- int dimensionId = wrapper.get(Type.INT, 0);
- clientWorld.setEnvironment(dimensionId);
- }
+ handler(wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ int dimensionId = wrapper.get(Type.INT, 0);
+ clientWorld.setEnvironment(dimensionId);
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java
index 0d3699ea0..b14e5f2da 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java
@@ -19,8 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.packets.EntityPackets;
@@ -48,46 +46,38 @@ public class Protocol1_13_2To1_13_1 extends AbstractProtocol {
+ wrapper.passthrough(Type.BOOLEAN); // Reset/clear
+ int size = wrapper.passthrough(Type.VAR_INT); // Mapping size
- for (int i = 0; i < size; i++) {
- wrapper.passthrough(Type.STRING); // Identifier
+ for (int i = 0; i < size; i++) {
+ wrapper.passthrough(Type.STRING); // Identifier
- // Parent
- if (wrapper.passthrough(Type.BOOLEAN))
- wrapper.passthrough(Type.STRING);
+ // Parent
+ if (wrapper.passthrough(Type.BOOLEAN))
+ wrapper.passthrough(Type.STRING);
- // Display data
- if (wrapper.passthrough(Type.BOOLEAN)) {
- wrapper.passthrough(Type.COMPONENT); // Title
- wrapper.passthrough(Type.COMPONENT); // Description
- Item icon = wrapper.read(Type.FLAT_ITEM);
- wrapper.write(Type.FLAT_VAR_INT_ITEM, icon);
- wrapper.passthrough(Type.VAR_INT); // Frame type
- int flags = wrapper.passthrough(Type.INT); // Flags
- if ((flags & 1) != 0) {
- wrapper.passthrough(Type.STRING); // Background texture
- }
- wrapper.passthrough(Type.FLOAT); // X
- wrapper.passthrough(Type.FLOAT); // Y
- }
-
- wrapper.passthrough(Type.STRING_ARRAY); // Criteria
-
- int arrayLength = wrapper.passthrough(Type.VAR_INT);
- for (int array = 0; array < arrayLength; array++) {
- wrapper.passthrough(Type.STRING_ARRAY); // String array
- }
- }
+ // Display data
+ if (wrapper.passthrough(Type.BOOLEAN)) {
+ wrapper.passthrough(Type.COMPONENT); // Title
+ wrapper.passthrough(Type.COMPONENT); // Description
+ Item icon = wrapper.read(Type.FLAT_ITEM);
+ wrapper.write(Type.FLAT_VAR_INT_ITEM, icon);
+ wrapper.passthrough(Type.VAR_INT); // Frame type
+ int flags = wrapper.passthrough(Type.INT); // Flags
+ if ((flags & 1) != 0) {
+ wrapper.passthrough(Type.STRING); // Background texture
}
- });
+ wrapper.passthrough(Type.FLOAT); // X
+ wrapper.passthrough(Type.FLOAT); // Y
+ }
+
+ wrapper.passthrough(Type.STRING_ARRAY); // Criteria
+
+ int arrayLength = wrapper.passthrough(Type.VAR_INT);
+ for (int array = 0; array < arrayLength; array++) {
+ wrapper.passthrough(Type.STRING_ARRAY); // String array
+ }
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java
index d3a7528f9..3f6de0a6e 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java
@@ -17,8 +17,6 @@
*/
package com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.packets;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.Protocol1_13_2To1_13_1;
@@ -48,29 +46,26 @@ public class InventoryPackets {
@Override
public void register() {
map(Type.STRING); // Channel
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- String channel = wrapper.get(Type.STRING, 0);
- if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) {
- wrapper.passthrough(Type.INT); // Passthrough Window ID
+ handler(wrapper -> {
+ String channel = wrapper.get(Type.STRING, 0);
+ if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) {
+ wrapper.passthrough(Type.INT); // Passthrough Window ID
- int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
- for (int i = 0; i < size; i++) {
- // Input Item
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ // Input Item
+ wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
+ // Output Item
+ wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
+
+ boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
+ if (secondItem) {
wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
- // Output Item
- wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
-
- boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
- if (secondItem) {
- wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
- }
-
- wrapper.passthrough(Type.BOOLEAN); // Trade disabled
- wrapper.passthrough(Type.INT); // Number of tools uses
- wrapper.passthrough(Type.INT); // Maximum number of trade uses
}
+
+ wrapper.passthrough(Type.BOOLEAN); // Trade disabled
+ wrapper.passthrough(Type.INT); // Number of tools uses
+ wrapper.passthrough(Type.INT); // Maximum number of trade uses
}
}
});
@@ -86,42 +81,34 @@ public class InventoryPackets {
}
});
- protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int recipesNo = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < recipesNo; i++) {
- wrapper.passthrough(Type.STRING); // Id
- String type = wrapper.passthrough(Type.STRING);
- if (type.equals("crafting_shapeless")) {
- wrapper.passthrough(Type.STRING); // Group
- int ingredientsNo = wrapper.passthrough(Type.VAR_INT);
- for (int i1 = 0; i1 < ingredientsNo; i1++) {
- wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT));
- }
- wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
- } else if (type.equals("crafting_shaped")) {
- int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT);
- wrapper.passthrough(Type.STRING); // Group
- for (int i1 = 0; i1 < ingredientsNo; i1++) {
- wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT));
- }
- wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
- } else if (type.equals("smelting")) {
- wrapper.passthrough(Type.STRING); // Group
- // Ingredient start
- wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT));
- // Ingredient end
- wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
- wrapper.passthrough(Type.FLOAT); // EXP
- wrapper.passthrough(Type.VAR_INT); // Cooking time
- }
- }
+ protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, wrapper -> {
+ int recipesNo = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < recipesNo; i++) {
+ wrapper.passthrough(Type.STRING); // Id
+ String type = wrapper.passthrough(Type.STRING);
+ if (type.equals("crafting_shapeless")) {
+ wrapper.passthrough(Type.STRING); // Group
+ int ingredientsNo = wrapper.passthrough(Type.VAR_INT);
+ for (int i1 = 0; i1 < ingredientsNo; i1++) {
+ wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT));
}
- });
+ wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
+ } else if (type.equals("crafting_shaped")) {
+ int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT);
+ wrapper.passthrough(Type.STRING); // Group
+ for (int i1 = 0; i1 < ingredientsNo; i1++) {
+ wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT));
+ }
+ wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
+ } else if (type.equals("smelting")) {
+ wrapper.passthrough(Type.STRING); // Group
+ // Ingredient start
+ wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT));
+ // Ingredient end
+ wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
+ wrapper.passthrough(Type.FLOAT); // EXP
+ wrapper.passthrough(Type.VAR_INT); // Cooking time
+ }
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java
index 9ce8274fa..d463c1f31 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java
@@ -17,8 +17,6 @@
*/
package com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.packets;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.Protocol1_13_2To1_13_1;
@@ -40,13 +38,10 @@ public class WorldPackets {
map(Type.FLOAT); // 7 - Offset Z
map(Type.FLOAT); // 8 - Particle Data
map(Type.INT); // 9 - Particle Count
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int id = wrapper.get(Type.INT, 0);
- if (id == 27) {
- wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
- }
+ handler(wrapper -> {
+ int id = wrapper.get(Type.INT, 0);
+ if (id == 27) {
+ wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM));
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java
index bd1655ba5..5a45c087d 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java
@@ -166,30 +166,22 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)));
- }
- });
+ registerClientbound(State.LOGIN, 0x00, 0x00, wrapper -> componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)));
registerClientbound(State.STATUS, 0x00, 0x00, new PacketHandlers() {
@Override
public void register() {
map(Type.STRING);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- String response = wrapper.get(Type.STRING, 0);
- try {
- JsonObject json = GsonUtil.getGson().fromJson(response, JsonObject.class);
- if (json.has("favicon")) {
- json.addProperty("favicon", json.get("favicon").getAsString().replace("\n", ""));
- }
- wrapper.set(Type.STRING, 0, GsonUtil.getGson().toJson(json));
- } catch (JsonParseException e) {
- e.printStackTrace();
+ handler(wrapper -> {
+ String response = wrapper.get(Type.STRING, 0);
+ try {
+ JsonObject json = GsonUtil.getGson().fromJson(response, JsonObject.class);
+ if (json.has("favicon")) {
+ json.addProperty("favicon", json.get("favicon").getAsString().replace("\n", ""));
}
+ wrapper.set(Type.STRING, 0, GsonUtil.getGson().toJson(json));
+ } catch (JsonParseException e) {
+ e.printStackTrace();
}
});
}
@@ -198,71 +190,63 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol remappedStats = new ArrayList<>();
- for (int i = 0; i < size; i++) {
- String name = wrapper.read(Type.STRING);
- String[] split = name.split("\\.");
- int categoryId = 0;
- int newId = -1;
- int value = wrapper.read(Type.VAR_INT);
- if (split.length == 2) {
- // Custom types
- categoryId = 8;
- Integer newIdRaw = StatisticMappings.CUSTOM_STATS.get(name);
- if (newIdRaw != null) {
- newId = newIdRaw;
- } else {
- Via.getPlatform().getLogger().warning("Could not find 1.13 -> 1.12.2 statistic mapping for " + name);
- }
- } else if (split.length > 2) {
- String category = split[1];
- //TODO convert string ids (blocks, items, entities)
- switch (category) {
- case "mineBlock":
- categoryId = 0;
- break;
- case "craftItem":
- categoryId = 1;
- break;
- case "useItem":
- categoryId = 2;
- break;
- case "breakItem":
- categoryId = 3;
- break;
- case "pickup":
- categoryId = 4;
- break;
- case "drop":
- categoryId = 5;
- break;
- case "killEntity":
- categoryId = 6;
- break;
- case "entityKilledBy":
- categoryId = 7;
- break;
- }
- }
- if (newId != -1)
- remappedStats.add(new StatisticData(categoryId, newId, value));
- }
-
- wrapper.write(Type.VAR_INT, remappedStats.size()); // size
- for (StatisticData stat : remappedStats) {
- wrapper.write(Type.VAR_INT, stat.getCategoryId()); // category id
- wrapper.write(Type.VAR_INT, stat.getNewId()); // statistics id
- wrapper.write(Type.VAR_INT, stat.getValue()); // value
- }
+ registerClientbound(ClientboundPackets1_12_1.STATISTICS, wrapper -> {
+ int size = wrapper.read(Type.VAR_INT);
+ List remappedStats = new ArrayList<>();
+ for (int i = 0; i < size; i++) {
+ String name = wrapper.read(Type.STRING);
+ String[] split = name.split("\\.");
+ int categoryId = 0;
+ int newId = -1;
+ int value = wrapper.read(Type.VAR_INT);
+ if (split.length == 2) {
+ // Custom types
+ categoryId = 8;
+ Integer newIdRaw = StatisticMappings.CUSTOM_STATS.get(name);
+ if (newIdRaw != null) {
+ newId = newIdRaw;
+ } else {
+ Via.getPlatform().getLogger().warning("Could not find 1.13 -> 1.12.2 statistic mapping for " + name);
}
- });
+ } else if (split.length > 2) {
+ String category = split[1];
+ //TODO convert string ids (blocks, items, entities)
+ switch (category) {
+ case "mineBlock":
+ categoryId = 0;
+ break;
+ case "craftItem":
+ categoryId = 1;
+ break;
+ case "useItem":
+ categoryId = 2;
+ break;
+ case "breakItem":
+ categoryId = 3;
+ break;
+ case "pickup":
+ categoryId = 4;
+ break;
+ case "drop":
+ categoryId = 5;
+ break;
+ case "killEntity":
+ categoryId = 6;
+ break;
+ case "entityKilledBy":
+ categoryId = 7;
+ break;
+ }
+ }
+ if (newId != -1)
+ remappedStats.add(new StatisticData(categoryId, newId, value));
+ }
+
+ wrapper.write(Type.VAR_INT, remappedStats.size()); // size
+ for (StatisticData stat : remappedStats) {
+ wrapper.write(Type.VAR_INT, stat.getCategoryId()); // category id
+ wrapper.write(Type.VAR_INT, stat.getNewId()); // statistics id
+ wrapper.write(Type.VAR_INT, stat.getValue()); // value
}
});
@@ -270,44 +254,36 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ wrapper.write(Type.VAR_INT, wrapper.user().get(TabCompleteTracker.class).getTransactionId());
- String input = wrapper.user().get(TabCompleteTracker.class).getInput();
- // Start & End
- int index;
- int length;
- // If no input or new word (then it's the start)
- if (input.endsWith(" ") || input.isEmpty()) {
- index = input.length();
- length = 0;
- } else {
- // Otherwise find the last space (+1 as we include it)
- int lastSpace = input.lastIndexOf(' ') + 1;
- index = lastSpace;
- length = input.length() - lastSpace;
- }
- // Write index + length
- wrapper.write(Type.VAR_INT, index);
- wrapper.write(Type.VAR_INT, length);
+ String input = wrapper.user().get(TabCompleteTracker.class).getInput();
+ // Start & End
+ int index;
+ int length;
+ // If no input or new word (then it's the start)
+ if (input.endsWith(" ") || input.isEmpty()) {
+ index = input.length();
+ length = 0;
+ } else {
+ // Otherwise find the last space (+1 as we include it)
+ int lastSpace = input.lastIndexOf(' ') + 1;
+ index = lastSpace;
+ length = input.length() - lastSpace;
+ }
+ // Write index + length
+ wrapper.write(Type.VAR_INT, index);
+ wrapper.write(Type.VAR_INT, length);
- int count = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < count; i++) {
- String suggestion = wrapper.read(Type.STRING);
- // If we're at the start then handle removing slash
- if (suggestion.startsWith("/") && index == 0) {
- suggestion = suggestion.substring(1);
- }
- wrapper.write(Type.STRING, suggestion);
- wrapper.write(Type.BOOLEAN, false);
- }
- }
- });
+ int count = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < count; i++) {
+ String suggestion = wrapper.read(Type.STRING);
+ // If we're at the start then handle removing slash
+ if (suggestion.startsWith("/") && index == 0) {
+ suggestion = suggestion.substring(1);
+ }
+ wrapper.write(Type.STRING, suggestion);
+ wrapper.write(Type.BOOLEAN, false);
}
});
@@ -320,42 +296,34 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ int item = wrapper.read(Type.VAR_INT);
+ int ticks = wrapper.read(Type.VAR_INT);
+ wrapper.cancel();
+ if (item == 383) { // Spawn egg
+ for (int i = 0; i < 44; i++) {
+ Integer newItem = getMappingData().getItemMappings().get(item << 16 | i);
+ if (newItem != null) {
+ PacketWrapper packet = wrapper.create(ClientboundPackets1_13.COOLDOWN);
+ packet.write(Type.VAR_INT, newItem);
+ packet.write(Type.VAR_INT, ticks);
+ packet.send(Protocol1_13To1_12_2.class);
+ } else {
+ break;
}
- });
+ }
+ } else {
+ for (int i = 0; i < 16; i++) {
+ int newItem = getMappingData().getItemMappings().get(item << 4 | i);
+ if (newItem != -1) {
+ PacketWrapper packet = wrapper.create(ClientboundPackets1_13.COOLDOWN);
+ packet.write(Type.VAR_INT, newItem);
+ packet.write(Type.VAR_INT, ticks);
+ packet.send(Protocol1_13To1_12_2.class);
+ } else {
+ break;
+ }
+ }
}
});
@@ -367,18 +335,15 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol> 12;
- wrapper.set(Type.INT, 1, WorldPackets.toNewId(blockId << 4 | blockData));
- }
+ handler(wrapper -> {
+ int id = wrapper.get(Type.INT, 0);
+ int data = wrapper.get(Type.INT, 1);
+ if (id == 1010) { // Play record
+ wrapper.set(Type.INT, 1, getMappingData().getItemMappings().get(data << 4));
+ } else if (id == 2001) { // Block break + block break sound
+ int blockId = data & 0xFFF;
+ int blockData = data >> 12;
+ wrapper.set(Type.INT, 1, WorldPackets.toNewId(blockId << 4 | blockData));
}
});
}
@@ -400,20 +365,17 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol> 4;
- wrapper.write(Type.VAR_INT, type);
- wrapper.passthrough(Type.BYTE); // Icon X
- wrapper.passthrough(Type.BYTE); // Icon Z
- byte direction = (byte) (directionAndType & 0x0F);
- wrapper.write(Type.BYTE, direction);
- wrapper.write(Type.OPTIONAL_COMPONENT, null); // Display Name
- }
+ handler(wrapper -> {
+ int iconCount = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < iconCount; i++) {
+ byte directionAndType = wrapper.read(Type.BYTE);
+ int type = (directionAndType & 0xF0) >> 4;
+ wrapper.write(Type.VAR_INT, type);
+ wrapper.passthrough(Type.BYTE); // Icon X
+ wrapper.passthrough(Type.BYTE); // Icon Z
+ byte direction = (byte) (directionAndType & 0x0F);
+ wrapper.write(Type.BYTE, direction);
+ wrapper.write(Type.OPTIONAL_COMPONENT, null); // Display Name
}
});
}
@@ -424,81 +386,75 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ wrapper.write(Type.BOOLEAN, false); // smelting book open
+ wrapper.write(Type.BOOLEAN, false); // smelting filter active
});
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int action = wrapper.get(Type.VAR_INT, 0);
- for (int i = 0; i < (action == 0 ? 2 : 1); i++) {
- int[] ids = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE);
- String[] stringIds = new String[ids.length];
- for (int j = 0; j < ids.length; j++) {
- stringIds[j] = "viaversion:legacy/" + ids[j];
- }
- wrapper.write(Type.STRING_ARRAY, stringIds);
+ handler(wrapper -> {
+ int action = wrapper.get(Type.VAR_INT, 0);
+ for (int i = 0; i < (action == 0 ? 2 : 1); i++) {
+ int[] ids = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE);
+ String[] stringIds = new String[ids.length];
+ for (int j = 0; j < ids.length; j++) {
+ stringIds[j] = "viaversion:legacy/" + ids[j];
}
- if (action == 0) {
- wrapper.create(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandler() { // Declare recipes
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.write(Type.VAR_INT, RecipeData.recipes.size());
- for (Map.Entry entry : RecipeData.recipes.entrySet()) {
- wrapper.write(Type.STRING, entry.getKey()); // Id
- wrapper.write(Type.STRING, entry.getValue().getType());
- switch (entry.getValue().getType()) {
- case "crafting_shapeless": {
- wrapper.write(Type.STRING, entry.getValue().getGroup());
- wrapper.write(Type.VAR_INT, entry.getValue().getIngredients().length);
- for (Item[] ingredient : entry.getValue().getIngredients()) {
- Item[] clone = ingredient.clone(); // Clone because array and item is mutable
- for (int i = 0; i < clone.length; i++) {
- if (clone[i] == null) continue;
- clone[i] = new DataItem(clone[i]);
- }
- wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone);
- }
- wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult()));
- break;
- }
- case "crafting_shaped": {
- wrapper.write(Type.VAR_INT, entry.getValue().getWidth());
- wrapper.write(Type.VAR_INT, entry.getValue().getHeight());
- wrapper.write(Type.STRING, entry.getValue().getGroup());
- for (Item[] ingredient : entry.getValue().getIngredients()) {
- Item[] clone = ingredient.clone(); // Clone because array and item is mutable
- for (int i = 0; i < clone.length; i++) {
- if (clone[i] == null) continue;
- clone[i] = new DataItem(clone[i]);
- }
- wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone);
- }
- wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult()));
- break;
- }
- case "smelting": {
- wrapper.write(Type.STRING, entry.getValue().getGroup());
- Item[] clone = entry.getValue().getIngredient().clone(); // Clone because array and item is mutable
+ wrapper.write(Type.STRING_ARRAY, stringIds);
+ }
+ if (action == 0) {
+ wrapper.create(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandler() { // Declare recipes
+ @Override
+ public void handle(PacketWrapper wrapper) throws Exception {
+ wrapper.write(Type.VAR_INT, RecipeData.recipes.size());
+ for (Map.Entry entry : RecipeData.recipes.entrySet()) {
+ wrapper.write(Type.STRING, entry.getKey()); // Id
+ wrapper.write(Type.STRING, entry.getValue().getType());
+ switch (entry.getValue().getType()) {
+ case "crafting_shapeless": {
+ wrapper.write(Type.STRING, entry.getValue().getGroup());
+ wrapper.write(Type.VAR_INT, entry.getValue().getIngredients().length);
+ for (Item[] ingredient : entry.getValue().getIngredients()) {
+ Item[] clone = ingredient.clone(); // Clone because array and item is mutable
for (int i = 0; i < clone.length; i++) {
if (clone[i] == null) continue;
clone[i] = new DataItem(clone[i]);
}
wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone);
- wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult()));
- wrapper.write(Type.FLOAT, entry.getValue().getExperience());
- wrapper.write(Type.VAR_INT, entry.getValue().getCookingTime());
- break;
}
+ wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult()));
+ break;
+ }
+ case "crafting_shaped": {
+ wrapper.write(Type.VAR_INT, entry.getValue().getWidth());
+ wrapper.write(Type.VAR_INT, entry.getValue().getHeight());
+ wrapper.write(Type.STRING, entry.getValue().getGroup());
+ for (Item[] ingredient : entry.getValue().getIngredients()) {
+ Item[] clone = ingredient.clone(); // Clone because array and item is mutable
+ for (int i = 0; i < clone.length; i++) {
+ if (clone[i] == null) continue;
+ clone[i] = new DataItem(clone[i]);
+ }
+ wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone);
+ }
+ wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult()));
+ break;
+ }
+ case "smelting": {
+ wrapper.write(Type.STRING, entry.getValue().getGroup());
+ Item[] clone = entry.getValue().getIngredient().clone(); // Clone because array and item is mutable
+ for (int i = 0; i < clone.length; i++) {
+ if (clone[i] == null) continue;
+ clone[i] = new DataItem(clone[i]);
+ }
+ wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone);
+ wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult()));
+ wrapper.write(Type.FLOAT, entry.getValue().getExperience());
+ wrapper.write(Type.VAR_INT, entry.getValue().getCookingTime());
+ break;
}
}
}
- }).send(Protocol1_13To1_12_2.class);
- }
+ }
+ }).send(Protocol1_13To1_12_2.class);
}
});
}
@@ -508,16 +464,13 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ int dimensionId = wrapper.get(Type.INT, 0);
+ clientWorld.setEnvironment(dimensionId);
- if (Via.getConfig().isServersideBlockConnections()) {
- ConnectionData.clearBlockStorage(wrapper.user());
- }
+ if (Via.getConfig().isServersideBlockConnections()) {
+ ConnectionData.clearBlockStorage(wrapper.user());
}
});
handler(SEND_DECLARE_COMMANDS_AND_TAGS);
@@ -529,19 +482,16 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ byte mode = wrapper.get(Type.BYTE, 0);
+ // On create or update
+ if (mode == 0 || mode == 2) {
+ String value = wrapper.read(Type.STRING); // Value
+ wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(value));
- String type = wrapper.read(Type.STRING);
- // integer or hearts
- wrapper.write(Type.VAR_INT, type.equals("integer") ? 0 : 1);
- }
+ String type = wrapper.read(Type.STRING);
+ // integer or hearts
+ wrapper.write(Type.VAR_INT, type.equals("integer") ? 0 : 1);
}
});
}
@@ -553,71 +503,60 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ byte action = wrapper.get(Type.BYTE, 0);
- if (action == 0 || action == 2) {
- String displayName = wrapper.read(Type.STRING); // Display Name
- wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(displayName));
+ if (action == 0 || action == 2) {
+ String displayName = wrapper.read(Type.STRING); // Display Name
+ wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(displayName));
- String prefix = wrapper.read(Type.STRING); // Prefix moved
- String suffix = wrapper.read(Type.STRING); // Suffix moved
+ String prefix = wrapper.read(Type.STRING); // Prefix moved
+ String suffix = wrapper.read(Type.STRING); // Suffix moved
- wrapper.passthrough(Type.BYTE); // Flags
+ wrapper.passthrough(Type.BYTE); // Flags
- wrapper.passthrough(Type.STRING); // Name Tag Visibility
- wrapper.passthrough(Type.STRING); // Collision rule
+ wrapper.passthrough(Type.STRING); // Name Tag Visibility
+ wrapper.passthrough(Type.STRING); // Collision rule
- // Handle new colors
- int colour = wrapper.read(Type.BYTE).intValue();
- if (colour == -1) {
- colour = 21; // -1 changed to 21
- }
-
- if (Via.getConfig().is1_13TeamColourFix()) {
- char lastColorChar = getLastColorChar(prefix);
- colour = ChatColorUtil.getColorOrdinal(lastColorChar);
- suffix = ChatColorUtil.COLOR_CHAR + Character.toString(lastColorChar) + suffix;
- }
-
- wrapper.write(Type.VAR_INT, colour);
-
- wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(prefix)); // Prefix
- wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(suffix)); // Suffix
+ // Handle new colors
+ int colour = wrapper.read(Type.BYTE).intValue();
+ if (colour == -1) {
+ colour = 21; // -1 changed to 21
}
- if (action == 0 || action == 3 || action == 4) {
- String[] names = wrapper.read(Type.STRING_ARRAY); // Entities
- for (int i = 0; i < names.length; i++) {
- names[i] = rewriteTeamMemberName(names[i]);
- }
- wrapper.write(Type.STRING_ARRAY, names);
+ if (Via.getConfig().is1_13TeamColourFix()) {
+ char lastColorChar = getLastColorChar(prefix);
+ colour = ChatColorUtil.getColorOrdinal(lastColorChar);
+ suffix = ChatColorUtil.COLOR_CHAR + Character.toString(lastColorChar) + suffix;
}
+
+ wrapper.write(Type.VAR_INT, colour);
+
+ wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(prefix)); // Prefix
+ wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(suffix)); // Suffix
+ }
+
+ if (action == 0 || action == 3 || action == 4) {
+ String[] names = wrapper.read(Type.STRING_ARRAY); // Entities
+ for (int i = 0; i < names.length; i++) {
+ names[i] = rewriteTeamMemberName(names[i]);
+ }
+ wrapper.write(Type.STRING_ARRAY, names);
}
});
}
});
- registerClientbound(ClientboundPackets1_12_1.UPDATE_SCORE, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- String displayName = wrapper.read(Type.STRING); // Display Name
- displayName = rewriteTeamMemberName(displayName);
- wrapper.write(Type.STRING, displayName);
+ registerClientbound(ClientboundPackets1_12_1.UPDATE_SCORE, wrapper -> {
+ String displayName = wrapper.read(Type.STRING); // Display Name
+ displayName = rewriteTeamMemberName(displayName);
+ wrapper.write(Type.STRING, displayName);
- byte action = wrapper.read(Type.BYTE);
- wrapper.write(Type.BYTE, action);
- wrapper.passthrough(Type.STRING); // Objective Name
- if (action != 1) {
- wrapper.passthrough(Type.VAR_INT); // Value
- }
- }
- });
+ byte action = wrapper.read(Type.BYTE);
+ wrapper.write(Type.BYTE, action);
+ wrapper.passthrough(Type.STRING); // Objective Name
+ if (action != 1) {
+ wrapper.passthrough(Type.VAR_INT); // Value
}
});
@@ -627,60 +566,44 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol(this).registerSound(ClientboundPackets1_12_1.SOUND);
- registerClientbound(ClientboundPackets1_12_1.TAB_LIST, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- componentRewriter.processText(wrapper.passthrough(Type.COMPONENT));
- componentRewriter.processText(wrapper.passthrough(Type.COMPONENT));
- }
- });
- }
+ registerClientbound(ClientboundPackets1_12_1.TAB_LIST, wrapper -> {
+ componentRewriter.processText(wrapper.passthrough(Type.COMPONENT));
+ componentRewriter.processText(wrapper.passthrough(Type.COMPONENT));
});
- registerClientbound(ClientboundPackets1_12_1.ADVANCEMENTS, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.passthrough(Type.BOOLEAN); // Reset/clear
- int size = wrapper.passthrough(Type.VAR_INT); // Mapping size
+ registerClientbound(ClientboundPackets1_12_1.ADVANCEMENTS, wrapper -> {
+ wrapper.passthrough(Type.BOOLEAN); // Reset/clear
+ int size = wrapper.passthrough(Type.VAR_INT); // Mapping size
- for (int i = 0; i < size; i++) {
- wrapper.passthrough(Type.STRING); // Identifier
+ for (int i = 0; i < size; i++) {
+ wrapper.passthrough(Type.STRING); // Identifier
- // Parent
- if (wrapper.passthrough(Type.BOOLEAN))
- wrapper.passthrough(Type.STRING);
+ // Parent
+ if (wrapper.passthrough(Type.BOOLEAN))
+ wrapper.passthrough(Type.STRING);
- // Display data
- if (wrapper.passthrough(Type.BOOLEAN)) {
- componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); // Title
- componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); // Description
- Item icon = wrapper.read(Type.ITEM);
- itemRewriter.handleItemToClient(icon);
- wrapper.write(Type.FLAT_ITEM, icon); // Translate item to flat item
- wrapper.passthrough(Type.VAR_INT); // Frame type
- int flags = wrapper.passthrough(Type.INT); // Flags
- if ((flags & 1) != 0) {
- wrapper.passthrough(Type.STRING); // Background texture
- }
- wrapper.passthrough(Type.FLOAT); // X
- wrapper.passthrough(Type.FLOAT); // Y
- }
-
- wrapper.passthrough(Type.STRING_ARRAY); // Criteria
-
- int arrayLength = wrapper.passthrough(Type.VAR_INT);
- for (int array = 0; array < arrayLength; array++) {
- wrapper.passthrough(Type.STRING_ARRAY); // String array
- }
- }
+ // Display data
+ if (wrapper.passthrough(Type.BOOLEAN)) {
+ componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); // Title
+ componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); // Description
+ Item icon = wrapper.read(Type.ITEM);
+ itemRewriter.handleItemToClient(icon);
+ wrapper.write(Type.FLAT_ITEM, icon); // Translate item to flat item
+ wrapper.passthrough(Type.VAR_INT); // Frame type
+ int flags = wrapper.passthrough(Type.INT); // Flags
+ if ((flags & 1) != 0) {
+ wrapper.passthrough(Type.STRING); // Background texture
}
- });
+ wrapper.passthrough(Type.FLOAT); // X
+ wrapper.passthrough(Type.FLOAT); // Y
+ }
+
+ wrapper.passthrough(Type.STRING_ARRAY); // Criteria
+
+ int arrayLength = wrapper.passthrough(Type.VAR_INT);
+ for (int array = 0; array < arrayLength; array++) {
+ wrapper.passthrough(Type.STRING_ARRAY); // String array
+ }
}
});
@@ -696,17 +619,14 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ // Disable auto-complete if configured
+ if (Via.getConfig().isDisable1_13AutoComplete()) {
+ wrapper.cancel();
}
+ int tid = wrapper.read(Type.VAR_INT);
+ // Save transaction id
+ wrapper.user().get(TabCompleteTracker.class).setTransactionId(tid);
});
// Prepend /
map(Type.STRING, new ValueTransformer(Type.STRING) {
@@ -717,55 +637,36 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol 0) {
- TabCompleteTracker tracker = wrapper.user().get(TabCompleteTracker.class);
- wrapper.cancel();
- tracker.setTimeToSend(System.currentTimeMillis() + Via.getConfig().get1_13TabCompleteDelay() * 50L);
- tracker.setLastTabComplete(wrapper.get(Type.STRING, 0));
- }
+ handler(wrapper -> {
+ wrapper.write(Type.BOOLEAN, false);
+ wrapper.write(Type.OPTIONAL_POSITION, null);
+ if (!wrapper.isCancelled() && Via.getConfig().get1_13TabCompleteDelay() > 0) {
+ TabCompleteTracker tracker = wrapper.user().get(TabCompleteTracker.class);
+ wrapper.cancel();
+ tracker.setTimeToSend(System.currentTimeMillis() + Via.getConfig().get1_13TabCompleteDelay() * 50L);
+ tracker.setLastTabComplete(wrapper.get(Type.STRING, 0));
}
});
}
});
// New 0x0A - Edit book -> Plugin Message
- registerServerbound(ServerboundPackets1_13.EDIT_BOOK, ServerboundPackets1_12_1.PLUGIN_MESSAGE, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Item item = wrapper.read(Type.FLAT_ITEM);
- boolean isSigning = wrapper.read(Type.BOOLEAN);
+ registerServerbound(ServerboundPackets1_13.EDIT_BOOK, ServerboundPackets1_12_1.PLUGIN_MESSAGE, wrapper -> {
+ Item item = wrapper.read(Type.FLAT_ITEM);
+ boolean isSigning = wrapper.read(Type.BOOLEAN);
- itemRewriter.handleItemToServer(item);
+ itemRewriter.handleItemToServer(item);
- wrapper.write(Type.STRING, isSigning ? "MC|BSign" : "MC|BEdit"); // Channel
- wrapper.write(Type.ITEM, item);
- }
- });
- }
+ wrapper.write(Type.STRING, isSigning ? "MC|BSign" : "MC|BEdit"); // Channel
+ wrapper.write(Type.ITEM, item);
});
// New 0x0C - Query Entity NBT
cancelServerbound(ServerboundPackets1_13.ENTITY_NBT_REQUEST);
// New 0x15 - Pick Item -> Plugin Message
- registerServerbound(ServerboundPackets1_13.PICK_ITEM, ServerboundPackets1_12_1.PLUGIN_MESSAGE, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.write(Type.STRING, "MC|PickItem"); // Channel
- }
- });
- }
+ registerServerbound(ServerboundPackets1_13.PICK_ITEM, ServerboundPackets1_12_1.PLUGIN_MESSAGE, wrapper -> {
+ wrapper.write(Type.STRING, "MC|PickItem"); // Channel
});
registerServerbound(ServerboundPackets1_13.CRAFT_RECIPE_REQUEST, new PacketHandlers() {
@@ -791,41 +692,33 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ int type = wrapper.get(Type.VAR_INT, 0);
- if (type == 0) {
- String s = wrapper.read(Type.STRING);
- Integer id;
- // Custom recipes
- if (s.length() < 19 || (id = Ints.tryParse(s.substring(18))) == null) {
- wrapper.cancel();
- return;
- }
+ if (type == 0) {
+ String s = wrapper.read(Type.STRING);
+ Integer id;
+ // Custom recipes
+ if (s.length() < 19 || (id = Ints.tryParse(s.substring(18))) == null) {
+ wrapper.cancel();
+ return;
+ }
- wrapper.write(Type.INT, id);
- }
- if (type == 1) {
- wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open
- wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active
- wrapper.read(Type.BOOLEAN); // Smelting Recipe Book Open | IGNORE NEW 1.13 FIELD
- wrapper.read(Type.BOOLEAN); // Smelting Recipe Filter Active | IGNORE NEW 1.13 FIELD
- }
+ wrapper.write(Type.INT, id);
+ }
+ if (type == 1) {
+ wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open
+ wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active
+ wrapper.read(Type.BOOLEAN); // Smelting Recipe Book Open | IGNORE NEW 1.13 FIELD
+ wrapper.read(Type.BOOLEAN); // Smelting Recipe Filter Active | IGNORE NEW 1.13 FIELD
}
});
}
});
// New 0x1C - Name Item -> Plugin Message
- registerServerbound(ServerboundPackets1_13.RENAME_ITEM, ServerboundPackets1_12_1.PLUGIN_MESSAGE, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- wrapper.write(Type.STRING, "MC|ItemName"); // Channel
- });
- }
+ registerServerbound(ServerboundPackets1_13.RENAME_ITEM, ServerboundPackets1_12_1.PLUGIN_MESSAGE, wrapper -> {
+ wrapper.write(Type.STRING, "MC|ItemName"); // Channel
});
// New 0x1F - Select Trade -> Plugin Message
@@ -858,21 +751,18 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol wrapper.write(Type.STRING, "MC|AutoCmd"));
handler(POS_TO_3_INT);
map(Type.STRING); // Command
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int mode = wrapper.read(Type.VAR_INT);
- byte flags = wrapper.read(Type.BYTE);
+ handler(wrapper -> {
+ int mode = wrapper.read(Type.VAR_INT);
+ byte flags = wrapper.read(Type.BYTE);
- String stringMode = mode == 0 ? "SEQUENCE"
- : mode == 1 ? "AUTO"
- : "REDSTONE";
+ String stringMode = mode == 0 ? "SEQUENCE"
+ : mode == 1 ? "AUTO"
+ : "REDSTONE";
- wrapper.write(Type.BOOLEAN, (flags & 0x1) != 0); // Track output
- wrapper.write(Type.STRING, stringMode);
- wrapper.write(Type.BOOLEAN, (flags & 0x2) != 0); // Is conditional
- wrapper.write(Type.BOOLEAN, (flags & 0x4) != 0); // Automatic
- }
+ wrapper.write(Type.BOOLEAN, (flags & 0x1) != 0); // Track output
+ wrapper.write(Type.STRING, stringMode);
+ wrapper.write(Type.BOOLEAN, (flags & 0x2) != 0); // Is conditional
+ wrapper.write(Type.BOOLEAN, (flags & 0x4) != 0); // Automatic
});
}
});
@@ -881,12 +771,9 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ wrapper.write(Type.STRING, "MC|AdvCmd");
+ wrapper.write(Type.BYTE, (byte) 1); // Type 1 for Entity
});
map(Type.VAR_INT, Type.INT); // Entity Id
}
@@ -942,19 +829,16 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol {
+ float integrity = wrapper.read(Type.FLOAT);
+ long seed = wrapper.read(Type.VAR_LONG);
+ byte flags = wrapper.read(Type.BYTE);
- wrapper.write(Type.BOOLEAN, (flags & 0x1) != 0); // Ignore Entities
- wrapper.write(Type.BOOLEAN, (flags & 0x2) != 0); // Show air
- wrapper.write(Type.BOOLEAN, (flags & 0x4) != 0); // Show bounding box
- wrapper.write(Type.FLOAT, integrity);
- wrapper.write(Type.VAR_LONG, seed);
- }
+ wrapper.write(Type.BOOLEAN, (flags & 0x1) != 0); // Ignore Entities
+ wrapper.write(Type.BOOLEAN, (flags & 0x2) != 0); // Show air
+ wrapper.write(Type.BOOLEAN, (flags & 0x4) != 0); // Show bounding box
+ wrapper.write(Type.FLOAT, integrity);
+ wrapper.write(Type.VAR_LONG, seed);
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractFenceConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractFenceConnectionHandler.java
index f822bea7b..eaf64222b 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractFenceConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractFenceConnectionHandler.java
@@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
-
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractStempConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractStempConnectionHandler.java
index 824a36cb9..6403c690c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractStempConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractStempConnectionHandler.java
@@ -20,9 +20,7 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.EnumMap;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/BlockData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/BlockData.java
index 2c5b102c9..c230d39f3 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/BlockData.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/BlockData.java
@@ -18,7 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections;
import com.viaversion.viaversion.api.minecraft.BlockFace;
-
import java.util.HashMap;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChestConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChestConnectionHandler.java
index 23425a68a..64af8fa42 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChestConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChestConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChorusPlantConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChorusPlantConnectionHandler.java
index b7b8c3226..b69aa905f 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChorusPlantConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChorusPlantConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.ArrayList;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ConnectionData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ConnectionData.java
index 0d5044d43..6e829c1ac 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ConnectionData.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ConnectionData.java
@@ -42,7 +42,6 @@ import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/DoorConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/DoorConnectionHandler.java
index 69e28c67f..cca879ec3 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/DoorConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/DoorConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FireConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FireConnectionHandler.java
index eaa074421..8ecf74ab8 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FireConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FireConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FlowerConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FlowerConnectionHandler.java
index 837d7a174..2810153f4 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FlowerConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FlowerConnectionHandler.java
@@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
import it.unimi.dsi.fastutil.ints.Int2IntMap;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
-
import java.util.HashSet;
import java.util.Set;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/GlassConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/GlassConnectionHandler.java
index acb7e27f4..42591f173 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/GlassConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/GlassConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.ProtocolInfo;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.ArrayList;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/RedstoneConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/RedstoneConnectionHandler.java
index 9c0bc00ed..e1f322bd2 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/RedstoneConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/RedstoneConnectionHandler.java
@@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
import it.unimi.dsi.fastutil.ints.Int2IntMap;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
-
import java.util.HashSet;
import java.util.Set;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/SnowyGrassConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/SnowyGrassConnectionHandler.java
index 997fef87d..7bfe3da49 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/SnowyGrassConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/SnowyGrassConnectionHandler.java
@@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.util.Pair;
-
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/StairConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/StairConnectionHandler.java
index af3439818..f361d8d09 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/StairConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/StairConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/TripwireConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/TripwireConnectionHandler.java
index a30fbd128..dcc945cc7 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/TripwireConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/TripwireConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/VineConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/VineConnectionHandler.java
index a95179be3..95b3522e5 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/VineConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/VineConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.HashSet;
import java.util.Set;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WallConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WallConnectionHandler.java
index 3dc4b2c70..991c2a0fb 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WallConnectionHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WallConnectionHandler.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.BlockFace;
import com.viaversion.viaversion.api.minecraft.Position;
-
import java.util.ArrayList;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WrappedBlockData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WrappedBlockData.java
index c3d2f8bde..e13e772a4 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WrappedBlockData.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WrappedBlockData.java
@@ -18,7 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections;
import com.viaversion.viaversion.api.Via;
-
import java.util.LinkedHashMap;
import java.util.Map.Entry;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/BlockIdData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/BlockIdData.java
index 5fdaa37bb..d35c7edff 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/BlockIdData.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/BlockIdData.java
@@ -22,7 +22,6 @@ import com.google.gson.reflect.TypeToken;
import com.viaversion.viaversion.util.GsonUtil;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
-
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java
index 226b6b2e3..ac8ef49cb 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java
@@ -32,7 +32,6 @@ import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2;
import com.viaversion.viaversion.rewriter.ComponentRewriter;
-
import java.io.IOException;
public class ComponentRewriter1_13 extends ComponentRewriter {
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 084b9f8a3..e43891852 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
@@ -30,14 +30,13 @@ import com.viaversion.viaversion.api.data.MappingDataBase;
import com.viaversion.viaversion.api.data.MappingDataLoader;
import com.viaversion.viaversion.api.data.Mappings;
import com.viaversion.viaversion.util.GsonUtil;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class MappingData extends MappingDataBase {
private final Map blockTags = new HashMap<>();
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java
index 6e628c518..6eaa13aed 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java
@@ -24,7 +24,6 @@ import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.Particle;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.packets.WorldPackets;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/RecipeData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/RecipeData.java
index 4977bde8b..b7e4ef5f5 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/RecipeData.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/RecipeData.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data;
import com.google.gson.reflect.TypeToken;
import com.viaversion.viaversion.api.minecraft.item.DataItem;
import com.viaversion.viaversion.util.GsonUtil;
-
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java
index 21d8252f9..aaf9afd26 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
-
import java.util.Optional;
public class SpawnEggRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java
index 0fb3a7893..c52da270f 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java
@@ -31,7 +31,6 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.EntityTypeR
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.ParticleRewriter;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.packets.WorldPackets;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
public class MetadataRewriter1_13To1_12_2 extends EntityRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/EntityPackets.java
index 118025f57..895e8c5ec 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/EntityPackets.java
@@ -19,8 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.packets;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.version.Types1_12;
@@ -49,45 +47,42 @@ public class EntityPackets {
map(Type.INT); // 8 - Data
// Track Entity
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityId = wrapper.get(Type.VAR_INT, 0);
- byte type = wrapper.get(Type.BYTE, 0);
- Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true);
- if (entType == null) return;
+ handler(wrapper -> {
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ byte type = wrapper.get(Type.BYTE, 0);
+ Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true);
+ if (entType == null) return;
- // Register Type ID
- wrapper.user().getEntityTracker(Protocol1_13To1_12_2.class).addEntity(entityId, entType);
+ // Register Type ID
+ wrapper.user().getEntityTracker(Protocol1_13To1_12_2.class).addEntity(entityId, entType);
- if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) {
- int oldId = wrapper.get(Type.INT, 0);
- int combined = (((oldId & 4095) << 4) | (oldId >> 12 & 15));
- wrapper.set(Type.INT, 0, WorldPackets.toNewId(combined));
+ if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) {
+ int oldId = wrapper.get(Type.INT, 0);
+ int combined = (((oldId & 4095) << 4) | (oldId >> 12 & 15));
+ wrapper.set(Type.INT, 0, WorldPackets.toNewId(combined));
+ }
+
+ // Fix ItemFrame hitbox
+ if (entType.is(Entity1_13Types.EntityType.ITEM_FRAME)) {
+ int data = wrapper.get(Type.INT, 0);
+
+ switch (data) {
+ // South
+ case 0:
+ data = 3;
+ break;
+ // West
+ case 1:
+ data = 4;
+ break;
+ // North is the same
+ // East
+ case 3:
+ data = 5;
+ break;
}
- // Fix ItemFrame hitbox
- if (entType.is(Entity1_13Types.EntityType.ITEM_FRAME)) {
- int data = wrapper.get(Type.INT, 0);
-
- switch (data) {
- // South
- case 0:
- data = 3;
- break;
- // West
- case 1:
- data = 4;
- break;
- // North is the same
- // East
- case 3:
- data = 5;
- break;
- }
-
- wrapper.set(Type.INT, 0, data);
- }
+ wrapper.set(Type.INT, 0, data);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java
index 5121445ee..288f78cc8 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java
@@ -29,8 +29,6 @@ import com.google.common.base.Joiner;
import com.google.common.primitives.Ints;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.item.Item;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1;
@@ -43,7 +41,6 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.MappingData
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.SoundSource;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.SpawnEggRewriter;
import com.viaversion.viaversion.rewriter.ItemRewriter;
-
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
@@ -85,13 +82,10 @@ public class InventoryPackets extends ItemRewriter= 4 && property <= 6) { // Enchantment id
- wrapper.set(Type.SHORT, 1, (short) protocol.getMappingData().getEnchantmentMappings().getNewId(wrapper.get(Type.SHORT, 1)));
- }
+ handler(wrapper -> {
+ short property = wrapper.get(Type.SHORT, 0);
+ if (property >= 4 && property <= 6) { // Enchantment id
+ wrapper.set(Type.SHORT, 1, (short) protocol.getMappingData().getEnchantmentMappings().getNewId(wrapper.get(Type.SHORT, 1)));
}
});
}
@@ -103,98 +97,95 @@ public class InventoryPackets extends ItemRewriter {
+ String channel = wrapper.get(Type.STRING, 0);
+ // Handle stopsound change
+ if (channel.equalsIgnoreCase("MC|StopSound")) {
+ String originalSource = wrapper.read(Type.STRING);
+ String originalSound = wrapper.read(Type.STRING);
- // Reset the packet
- wrapper.clearPacket();
- wrapper.setPacketType(ClientboundPackets1_13.SOUND);
+ // Reset the packet
+ wrapper.clearPacket();
+ wrapper.setPacketType(ClientboundPackets1_13.SOUND);
- byte flags = 0;
- wrapper.write(Type.BYTE, flags); // Placeholder
- if (!originalSource.isEmpty()) {
- flags |= 1;
- Optional finalSource = SoundSource.findBySource(originalSource);
- if (!finalSource.isPresent()) {
- if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
- Via.getPlatform().getLogger().info("Could not handle unknown sound source " + originalSource + " falling back to default: master");
- }
- finalSource = Optional.of(SoundSource.MASTER);
-
- }
-
- wrapper.write(Type.VAR_INT, finalSource.get().getId());
- }
- if (!originalSound.isEmpty()) {
- flags |= 2;
- wrapper.write(Type.STRING, originalSound);
- }
-
- wrapper.set(Type.BYTE, 0, flags); // Update flags
- return;
- } else if (channel.equalsIgnoreCase("MC|TrList")) {
- channel = "minecraft:trader_list";
- wrapper.passthrough(Type.INT); // Passthrough Window ID
-
- int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
- for (int i = 0; i < size; i++) {
- // Input Item
- Item input = wrapper.read(Type.ITEM);
- handleItemToClient(input);
- wrapper.write(Type.FLAT_ITEM, input);
- // Output Item
- Item output = wrapper.read(Type.ITEM);
- handleItemToClient(output);
- wrapper.write(Type.FLAT_ITEM, output);
-
- boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
- if (secondItem) {
- // Second Item
- Item second = wrapper.read(Type.ITEM);
- handleItemToClient(second);
- wrapper.write(Type.FLAT_ITEM, second);
- }
-
- wrapper.passthrough(Type.BOOLEAN); // Trade disabled
- wrapper.passthrough(Type.INT); // Number of tools uses
- wrapper.passthrough(Type.INT); // Maximum number of trade uses
- }
- } else {
- String old = channel;
- channel = getNewPluginChannelId(channel);
- if (channel == null) {
+ byte flags = 0;
+ wrapper.write(Type.BYTE, flags); // Placeholder
+ if (!originalSource.isEmpty()) {
+ flags |= 1;
+ Optional finalSource = SoundSource.findBySource(originalSource);
+ if (!finalSource.isPresent()) {
if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
- Via.getPlatform().getLogger().warning("Ignoring outgoing plugin message with channel: " + old);
+ Via.getPlatform().getLogger().info("Could not handle unknown sound source " + originalSource + " falling back to default: master");
}
+ finalSource = Optional.of(SoundSource.MASTER);
+
+ }
+
+ wrapper.write(Type.VAR_INT, finalSource.get().getId());
+ }
+ if (!originalSound.isEmpty()) {
+ flags |= 2;
+ wrapper.write(Type.STRING, originalSound);
+ }
+
+ wrapper.set(Type.BYTE, 0, flags); // Update flags
+ return;
+ } else if (channel.equalsIgnoreCase("MC|TrList")) {
+ channel = "minecraft:trader_list";
+ wrapper.passthrough(Type.INT); // Passthrough Window ID
+
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ // Input Item
+ Item input = wrapper.read(Type.ITEM);
+ handleItemToClient(input);
+ wrapper.write(Type.FLAT_ITEM, input);
+ // Output Item
+ Item output = wrapper.read(Type.ITEM);
+ handleItemToClient(output);
+ wrapper.write(Type.FLAT_ITEM, output);
+
+ boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
+ if (secondItem) {
+ // Second Item
+ Item second = wrapper.read(Type.ITEM);
+ handleItemToClient(second);
+ wrapper.write(Type.FLAT_ITEM, second);
+ }
+
+ wrapper.passthrough(Type.BOOLEAN); // Trade disabled
+ wrapper.passthrough(Type.INT); // Number of tools uses
+ wrapper.passthrough(Type.INT); // Maximum number of trade uses
+ }
+ } else {
+ String old = channel;
+ channel = getNewPluginChannelId(channel);
+ if (channel == null) {
+ if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
+ Via.getPlatform().getLogger().warning("Ignoring outgoing plugin message with channel: " + old);
+ }
+ wrapper.cancel();
+ return;
+ } else if (channel.equals("minecraft:register") || channel.equals("minecraft:unregister")) {
+ String[] channels = new String(wrapper.read(Type.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0");
+ List rewrittenChannels = new ArrayList<>();
+ for (String s : channels) {
+ String rewritten = getNewPluginChannelId(s);
+ if (rewritten != null) {
+ rewrittenChannels.add(rewritten);
+ } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
+ Via.getPlatform().getLogger().warning("Ignoring plugin channel in outgoing REGISTER: " + s);
+ }
+ }
+ if (!rewrittenChannels.isEmpty()) {
+ wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8));
+ } else {
wrapper.cancel();
return;
- } else if (channel.equals("minecraft:register") || channel.equals("minecraft:unregister")) {
- String[] channels = new String(wrapper.read(Type.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0");
- List rewrittenChannels = new ArrayList<>();
- for (String s : channels) {
- String rewritten = getNewPluginChannelId(s);
- if (rewritten != null) {
- rewrittenChannels.add(rewritten);
- } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
- Via.getPlatform().getLogger().warning("Ignoring plugin channel in outgoing REGISTER: " + s);
- }
- }
- if (!rewrittenChannels.isEmpty()) {
- wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8));
- } else {
- wrapper.cancel();
- return;
- }
}
}
- wrapper.set(Type.STRING, 0, channel);
}
+ wrapper.set(Type.STRING, 0, channel);
});
}
});
@@ -229,33 +220,30 @@ public class InventoryPackets extends ItemRewriter rewrittenChannels = new ArrayList<>();
- for (String s : channels) {
- String rewritten = getOldPluginChannelId(s);
- if (rewritten != null) {
- rewrittenChannels.add(rewritten);
- } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
- Via.getPlatform().getLogger().warning("Ignoring plugin channel in incoming REGISTER: " + s);
- }
- }
- wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8));
+ handler(wrapper -> {
+ String channel = wrapper.get(Type.STRING, 0);
+ String old = channel;
+ channel = getOldPluginChannelId(channel);
+ if (channel == null) {
+ if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
+ Via.getPlatform().getLogger().warning("Ignoring incoming plugin message with channel: " + old);
}
- wrapper.set(Type.STRING, 0, channel);
+ wrapper.cancel();
+ return;
+ } else if (channel.equals("REGISTER") || channel.equals("UNREGISTER")) {
+ String[] channels = new String(wrapper.read(Type.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0");
+ List rewrittenChannels = new ArrayList<>();
+ for (String s : channels) {
+ String rewritten = getOldPluginChannelId(s);
+ if (rewritten != null) {
+ rewrittenChannels.add(rewritten);
+ } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
+ Via.getPlatform().getLogger().warning("Ignoring plugin channel in incoming REGISTER: " + s);
+ }
+ }
+ wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8));
}
+ wrapper.set(Type.STRING, 0, channel);
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/WorldPackets.java
index b9049527c..3b960a0a2 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/WorldPackets.java
@@ -47,7 +47,6 @@ import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
-
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
@@ -259,8 +258,9 @@ public class WorldPackets {
protocol.registerClientbound(ClientboundPackets1_12_1.EXPLOSION, new PacketHandlers() {
@Override
public void register() {
- if (!Via.getConfig().isServersideBlockConnections())
+ if (!Via.getConfig().isServersideBlockConnections()) {
return;
+ }
map(Type.FLOAT); // X
map(Type.FLOAT); // Y
@@ -323,211 +323,207 @@ public class WorldPackets {
}
});
- protocol.registerClientbound(ClientboundPackets1_12_1.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- BlockStorage storage = wrapper.user().get(BlockStorage.class);
+ protocol.registerClientbound(ClientboundPackets1_12_1.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ BlockStorage storage = wrapper.user().get(BlockStorage.class);
- Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld);
- Chunk1_13Type type1_13 = new Chunk1_13Type(clientWorld);
- Chunk chunk = wrapper.read(type);
- wrapper.write(type1_13, chunk);
+ Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld);
+ Chunk1_13Type type1_13 = new Chunk1_13Type(clientWorld);
+ Chunk chunk = wrapper.read(type);
+ wrapper.write(type1_13, chunk);
- for (int s = 0; s < chunk.getSections().length; s++) {
- ChunkSection section = chunk.getSections()[s];
- if (section == null) continue;
- DataPalette blocks = section.palette(PaletteType.BLOCKS);
+ for (int s = 0; s < chunk.getSections().length; s++) {
+ ChunkSection section = chunk.getSections()[s];
+ if (section == null) continue;
+ DataPalette blocks = section.palette(PaletteType.BLOCKS);
+ for (int p = 0; p < blocks.size(); p++) {
+ int old = blocks.idByIndex(p);
+ int newId = toNewId(old);
+ blocks.setIdByIndex(p, newId);
+ }
+
+ storage:
+ {
+ if (chunk.isFullChunk()) {
+ boolean willSave = false;
for (int p = 0; p < blocks.size(); p++) {
- int old = blocks.idByIndex(p);
- int newId = toNewId(old);
- blocks.setIdByIndex(p, newId);
- }
-
- storage:
- {
- if (chunk.isFullChunk()) {
- boolean willSave = false;
- for (int p = 0; p < blocks.size(); p++) {
- if (storage.isWelcome(blocks.idByIndex(p))) {
- willSave = true;
- break;
- }
- }
- if (!willSave) break storage;
- }
- for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
- int id = blocks.idAt(idx);
- if (storage.isWelcome(id)) {
- storage.store(new Position(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), ChunkSection.yFromIndex(idx) + (s << 4), ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4)), id);
- } else if (!chunk.isFullChunk()) { // Update
- storage.remove(new Position(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), ChunkSection.yFromIndex(idx) + (s << 4), ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4)));
- }
+ if (storage.isWelcome(blocks.idByIndex(p))) {
+ willSave = true;
+ break;
}
}
-
- save_connections:
- {
- if (!Via.getConfig().isServersideBlockConnections() || !ConnectionData.needStoreBlocks()) break save_connections;
-
- if (!chunk.isFullChunk()) { // Update
- ConnectionData.blockConnectionProvider.unloadChunkSection(wrapper.user(), chunk.getX(), s, chunk.getZ());
- }
- boolean willSave = false;
- for (int p = 0; p < blocks.size(); p++) {
- if (ConnectionData.isWelcome(blocks.idByIndex(p))) {
- willSave = true;
- break;
- }
- }
- if (!willSave) break save_connections;
-
- for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
- int id = blocks.idAt(idx);
- if (ConnectionData.isWelcome(id)) {
- int globalX = ChunkSection.xFromIndex(idx) + (chunk.getX() << 4);
- int globalY = ChunkSection.yFromIndex(idx) + (s << 4);
- int globalZ = ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4);
- ConnectionData.blockConnectionProvider.storeBlock(wrapper.user(), globalX, globalY, globalZ, id);
- }
- }
+ if (!willSave) break storage;
+ }
+ for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
+ int id = blocks.idAt(idx);
+ if (storage.isWelcome(id)) {
+ storage.store(new Position(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), ChunkSection.yFromIndex(idx) + (s << 4), ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4)), id);
+ } else if (!chunk.isFullChunk()) { // Update
+ storage.remove(new Position(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), ChunkSection.yFromIndex(idx) + (s << 4), ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4)));
}
}
+ }
- // Rewrite biome id 255 to plains
- if (chunk.isBiomeData()) {
- int latestBiomeWarn = Integer.MIN_VALUE;
- for (int i = 0; i < 256; i++) {
- int biome = chunk.getBiomeData()[i];
- if (!VALID_BIOMES.contains(biome)) {
- if (biome != 255 // is it generated naturally? *shrug*
- && latestBiomeWarn != biome) {
- if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
- Via.getPlatform().getLogger().warning("Received invalid biome id " + biome);
- }
- latestBiomeWarn = biome;
- }
- chunk.getBiomeData()[i] = 1; // Plains
- }
+ save_connections:
+ {
+ if (!Via.getConfig().isServersideBlockConnections() || !ConnectionData.needStoreBlocks())
+ break save_connections;
+
+ if (!chunk.isFullChunk()) { // Update
+ ConnectionData.blockConnectionProvider.unloadChunkSection(wrapper.user(), chunk.getX(), s, chunk.getZ());
+ }
+ boolean willSave = false;
+ for (int p = 0; p < blocks.size(); p++) {
+ if (ConnectionData.isWelcome(blocks.idByIndex(p))) {
+ willSave = true;
+ break;
}
}
+ if (!willSave) break save_connections;
- // Rewrite BlockEntities to normal blocks
- BlockEntityProvider provider = Via.getManager().getProviders().get(BlockEntityProvider.class);
- final Iterator iterator = chunk.getBlockEntities().iterator();
- while (iterator.hasNext()) {
- CompoundTag tag = iterator.next();
- int newId = provider.transform(wrapper.user(), null, tag, false);
- if (newId != -1) {
- int x = ((NumberTag) tag.get("x")).asInt();
- int y = ((NumberTag) tag.get("y")).asInt();
- int z = ((NumberTag) tag.get("z")).asInt();
-
- Position position = new Position(x, (short) y, z);
- // Store the replacement blocks for blockupdates
- BlockStorage.ReplacementData replacementData = storage.get(position);
- if (replacementData != null) {
- replacementData.setReplacement(newId);
- }
-
- chunk.getSections()[y >> 4].palette(PaletteType.BLOCKS).setIdAt(x & 0xF, y & 0xF, z & 0xF, newId);
- }
-
- final Tag idTag = tag.get("id");
- if (idTag instanceof StringTag) {
- // No longer block entities
- final String id = ((StringTag) idTag).getValue();
- if (id.equals("minecraft:noteblock") || id.equals("minecraft:flower_pot")) {
- iterator.remove();
- }
+ for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
+ int id = blocks.idAt(idx);
+ if (ConnectionData.isWelcome(id)) {
+ int globalX = ChunkSection.xFromIndex(idx) + (chunk.getX() << 4);
+ int globalY = ChunkSection.yFromIndex(idx) + (s << 4);
+ int globalZ = ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4);
+ ConnectionData.blockConnectionProvider.storeBlock(wrapper.user(), globalX, globalY, globalZ, id);
}
}
+ }
+ }
- if (Via.getConfig().isServersideBlockConnections()) {
- ConnectionData.connectBlocks(wrapper.user(), chunk);
- // Workaround for packet order issue
- wrapper.send(Protocol1_13To1_12_2.class);
- wrapper.cancel();
- for (int i = 0; i < chunk.getSections().length; i++) {
- ChunkSection section = chunk.getSections()[i];
- if (section == null) continue;
- ConnectionData.updateChunkSectionNeighbours(wrapper.user(), chunk.getX(), chunk.getZ(), i);
+ // Rewrite biome id 255 to plains
+ if (chunk.isBiomeData()) {
+ int latestBiomeWarn = Integer.MIN_VALUE;
+ for (int i = 0; i < 256; i++) {
+ int biome = chunk.getBiomeData()[i];
+ if (!VALID_BIOMES.contains(biome)) {
+ if (biome != 255 // is it generated naturally? *shrug*
+ && latestBiomeWarn != biome) {
+ if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
+ Via.getPlatform().getLogger().warning("Received invalid biome id " + biome);
+ }
+ latestBiomeWarn = biome;
}
+ chunk.getBiomeData()[i] = 1; // Plains
}
- });
+ }
+ }
+
+ // Rewrite BlockEntities to normal blocks
+ BlockEntityProvider provider = Via.getManager().getProviders().get(BlockEntityProvider.class);
+ final Iterator iterator = chunk.getBlockEntities().iterator();
+ while (iterator.hasNext()) {
+ CompoundTag tag = iterator.next();
+ int newId = provider.transform(wrapper.user(), null, tag, false);
+ if (newId != -1) {
+ int x = ((NumberTag) tag.get("x")).asInt();
+ int y = ((NumberTag) tag.get("y")).asInt();
+ int z = ((NumberTag) tag.get("z")).asInt();
+
+ Position position = new Position(x, (short) y, z);
+ // Store the replacement blocks for blockupdates
+ BlockStorage.ReplacementData replacementData = storage.get(position);
+ if (replacementData != null) {
+ replacementData.setReplacement(newId);
+ }
+
+ chunk.getSections()[y >> 4].palette(PaletteType.BLOCKS).setIdAt(x & 0xF, y & 0xF, z & 0xF, newId);
+ }
+
+ final Tag idTag = tag.get("id");
+ if (idTag instanceof StringTag) {
+ // No longer block entities
+ final String id = ((StringTag) idTag).getValue();
+ if (id.equals("minecraft:noteblock") || id.equals("minecraft:flower_pot")) {
+ iterator.remove();
+ }
+ }
+ }
+
+ if (Via.getConfig().isServersideBlockConnections()) {
+ ConnectionData.connectBlocks(wrapper.user(), chunk);
+ // Workaround for packet order issue
+ wrapper.send(Protocol1_13To1_12_2.class);
+ wrapper.cancel();
+ for (int i = 0; i < chunk.getSections().length; i++) {
+ ChunkSection section = chunk.getSections()[i];
+ if (section == null) continue;
+ ConnectionData.updateChunkSectionNeighbours(wrapper.user(), chunk.getX(), chunk.getZ(), i);
+ }
}
});
protocol.registerClientbound(ClientboundPackets1_12_1.SPAWN_PARTICLE, new PacketHandlers() {
- @Override
- public void register() {
- map(Type.INT); // 0 - Particle ID
- map(Type.BOOLEAN); // 1 - Long Distance
- map(Type.FLOAT); // 2 - X
- map(Type.FLOAT); // 3 - Y
- map(Type.FLOAT); // 4 - Z
- map(Type.FLOAT); // 5 - Offset X
- map(Type.FLOAT); // 6 - Offset Y
- map(Type.FLOAT); // 7 - Offset Z
- map(Type.FLOAT); // 8 - Particle Data
- map(Type.INT); // 9 - Particle Count
+ @Override
+ public void register() {
+ map(Type.INT); // 0 - Particle ID
+ map(Type.BOOLEAN); // 1 - Long Distance
+ map(Type.FLOAT); // 2 - X
+ map(Type.FLOAT); // 3 - Y
+ map(Type.FLOAT); // 4 - Z
+ map(Type.FLOAT); // 5 - Offset X
+ map(Type.FLOAT); // 6 - Offset Y
+ map(Type.FLOAT); // 7 - Offset Z
+ map(Type.FLOAT); // 8 - Particle Data
+ map(Type.INT); // 9 - Particle Count
- handler(wrapper -> {
- int particleId = wrapper.get(Type.INT, 0);
+ handler(wrapper -> {
+ int particleId = wrapper.get(Type.INT, 0);
- // Get the data (Arrays are overrated)
- int dataCount = 0;
- // Particles with 1 data [BlockCrack,BlockDust,FallingDust]
- if (particleId == 37 || particleId == 38 || particleId == 46)
- dataCount = 1;
- // Particles with 2 data [IconCrack]
- else if (particleId == 36)
- dataCount = 2;
+ // Get the data (Arrays are overrated)
+ int dataCount = 0;
+ // Particles with 1 data [BlockCrack,BlockDust,FallingDust]
+ if (particleId == 37 || particleId == 38 || particleId == 46)
+ dataCount = 1;
+ // Particles with 2 data [IconCrack]
+ else if (particleId == 36)
+ dataCount = 2;
- Integer[] data = new Integer[dataCount];
- for (int i = 0; i < data.length; i++)
- data[i] = wrapper.read(Type.VAR_INT);
+ Integer[] data = new Integer[dataCount];
+ for (int i = 0; i < data.length; i++)
+ data[i] = wrapper.read(Type.VAR_INT);
- Particle particle = ParticleRewriter.rewriteParticle(particleId, data);
+ Particle particle = ParticleRewriter.rewriteParticle(particleId, data);
- // Cancel if null or completely removed
- if (particle == null || particle.getId() == -1) {
- wrapper.cancel();
- return;
- }
-
- //Handle reddust particle color
- if (particle.getId() == 11) {
- int count = wrapper.get(Type.INT, 1);
- float speed = wrapper.get(Type.FLOAT, 6);
- // Only handle for count = 0
- if (count == 0) {
- wrapper.set(Type.INT, 1, 1);
- wrapper.set(Type.FLOAT, 6, 0f);
-
- List arguments = particle.getArguments();
- for (int i = 0; i < 3; i++) {
- //RGB values are represented by the X/Y/Z offset
- float colorValue = wrapper.get(Type.FLOAT, i + 3) * speed;
- if (colorValue == 0 && i == 0) {
- // https://minecraft.gamepedia.com/User:Alphappy/reddust
- colorValue = 1;
- }
- arguments.get(i).setValue(colorValue);
- wrapper.set(Type.FLOAT, i + 3, 0f);
- }
- }
- }
-
- wrapper.set(Type.INT, 0, particle.getId());
- for (Particle.ParticleData particleData : particle.getArguments())
- wrapper.write(particleData.getType(), particleData.getValue());
-
- });
+ // Cancel if null or completely removed
+ if (particle == null || particle.getId() == -1) {
+ wrapper.cancel();
+ return;
}
+
+ //Handle reddust particle color
+ if (particle.getId() == 11) {
+ int count = wrapper.get(Type.INT, 1);
+ float speed = wrapper.get(Type.FLOAT, 6);
+ // Only handle for count = 0
+ if (count == 0) {
+ wrapper.set(Type.INT, 1, 1);
+ wrapper.set(Type.FLOAT, 6, 0f);
+
+ List arguments = particle.getArguments();
+ for (int i = 0; i < 3; i++) {
+ //RGB values are represented by the X/Y/Z offset
+ float colorValue = wrapper.get(Type.FLOAT, i + 3) * speed;
+ if (colorValue == 0 && i == 0) {
+ // https://minecraft.gamepedia.com/User:Alphappy/reddust
+ colorValue = 1;
+ }
+ arguments.get(i).setValue(colorValue);
+ wrapper.set(Type.FLOAT, i + 3, 0f);
+ }
+ }
+ }
+
+ wrapper.set(Type.INT, 0, particle.getId());
+ for (Particle.ParticleData particleData : particle.getArguments())
+ wrapper.write(particleData.getType(), particleData.getValue());
+
});
+ }
+ });
}
public static int toNewId(int oldId) {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java
index 31e16e057..829003e01 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java
@@ -33,7 +33,6 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.blocke
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.blockentities.FlowerPotHandler;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.blockentities.SkullHandler;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.blockentities.SpawnerHandler;
-
import java.util.HashMap;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java
index 3672b89f3..9d02d71ca 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java
@@ -18,7 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers;
import com.viaversion.viaversion.api.platform.providers.Provider;
-
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/blockentities/FlowerPotHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/blockentities/FlowerPotHandler.java
index 0df98192c..3c29aaff4 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/blockentities/FlowerPotHandler.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/blockentities/FlowerPotHandler.java
@@ -21,7 +21,6 @@ import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.BlockEntityProvider;
import com.viaversion.viaversion.util.Pair;
-
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/storage/BlockStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/storage/BlockStorage.java
index 371be0aee..b7ea4f96b 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/storage/BlockStorage.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/storage/BlockStorage.java
@@ -21,9 +21,8 @@ import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.minecraft.Position;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
-import space.vectrix.flare.SyncMap;
-
import java.util.Map;
+import space.vectrix.flare.SyncMap;
// TODO Fix memory leak lolz (only a smol one tho)
public class BlockStorage implements StorableObject {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/types/Chunk1_13Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/types/Chunk1_13Type.java
index 92c8dc00c..642062924 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/types/Chunk1_13Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/types/Chunk1_13Type.java
@@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.Types1_13;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_1to1_14/metadata/MetadataRewriter1_14_1To1_14.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_1to1_14/metadata/MetadataRewriter1_14_1To1_14.java
index 375df5cdb..9d5f362fe 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_1to1_14/metadata/MetadataRewriter1_14_1To1_14.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_1to1_14/metadata/MetadataRewriter1_14_1To1_14.java
@@ -24,7 +24,6 @@ import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.protocols.protocol1_14_1to1_14.Protocol1_14_1To1_14;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
public class MetadataRewriter1_14_1To1_14 extends EntityRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_3to1_14_2/Protocol1_14_3To1_14_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_3to1_14_2/Protocol1_14_3To1_14_2.java
index 9497d39eb..13a4a7034 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_3to1_14_2/Protocol1_14_3To1_14_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_3to1_14_2/Protocol1_14_3To1_14_2.java
@@ -18,9 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_14_3to1_14_2;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14;
@@ -33,34 +30,26 @@ public class Protocol1_14_3To1_14_2 extends AbstractProtocol {
+ wrapper.passthrough(Type.VAR_INT);
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);
+ wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);
+ if (wrapper.passthrough(Type.BOOLEAN)) {
+ wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);
+ }
+ wrapper.passthrough(Type.BOOLEAN);
+ wrapper.passthrough(Type.INT);
+ wrapper.passthrough(Type.INT);
+ wrapper.passthrough(Type.INT);
+ wrapper.passthrough(Type.INT);
+ wrapper.passthrough(Type.FLOAT);
}
+ wrapper.passthrough(Type.VAR_INT);
+ wrapper.passthrough(Type.VAR_INT);
+ boolean regularVillager = wrapper.passthrough(Type.BOOLEAN);
+ wrapper.write(Type.BOOLEAN, regularVillager); // new boolean added in pre-1
});
}
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_4to1_14_3/Protocol1_14_4To1_14_3.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_4to1_14_3/Protocol1_14_4To1_14_3.java
index d0c39368b..e82720c79 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_4to1_14_3/Protocol1_14_4To1_14_3.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_4to1_14_3/Protocol1_14_4To1_14_3.java
@@ -18,9 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_14_4to1_14_3;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14;
@@ -33,30 +30,22 @@ public class Protocol1_14_4To1_14_3 extends AbstractProtocol {
+ wrapper.passthrough(Type.VAR_INT);
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);
+ wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);
+ if (wrapper.passthrough(Type.BOOLEAN)) {
+ wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);
+ }
+ wrapper.passthrough(Type.BOOLEAN);
+ wrapper.passthrough(Type.INT);
+ wrapper.passthrough(Type.INT);
+ wrapper.passthrough(Type.INT);
+ wrapper.passthrough(Type.INT);
+ wrapper.passthrough(Type.FLOAT);
+ wrapper.write(Type.INT, 0); // demand value added in pre5
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java
index 5ecddcc52..d54c5f143 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java
@@ -19,9 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_14to1_13_2;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.minecraft.ParticleType;
import com.viaversion.viaversion.api.type.types.version.Types1_13_2;
@@ -79,67 +76,59 @@ public class Protocol1_14To1_13_2 extends AbstractProtocol {
+ int blockTagsSize = wrapper.read(Type.VAR_INT);
+ wrapper.write(Type.VAR_INT, blockTagsSize + 6); // block tags
+ for (int i = 0; i < blockTagsSize; i++) {
+ wrapper.passthrough(Type.STRING);
+ int[] blockIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE);
+ for (int j = 0; j < blockIds.length; j++) {
+ blockIds[j] = getMappingData().getNewBlockId(blockIds[j]);
+ }
}
+ // Minecraft crashes if we not send signs tags
+ wrapper.write(Type.STRING, "minecraft:signs");
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{
+ getMappingData().getNewBlockId(150), getMappingData().getNewBlockId(155)
+ });
+ wrapper.write(Type.STRING, "minecraft:wall_signs");
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{
+ getMappingData().getNewBlockId(155)
+ });
+ wrapper.write(Type.STRING, "minecraft:standing_signs");
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{
+ getMappingData().getNewBlockId(150)
+ });
+ // Fences and walls tags - used for block connections
+ wrapper.write(Type.STRING, "minecraft:fences");
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{189, 248, 472, 473, 474, 475});
+ wrapper.write(Type.STRING, "minecraft:walls");
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{271, 272});
+ wrapper.write(Type.STRING, "minecraft:wooden_fences");
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{189, 472, 473, 474, 475});
+ int itemTagsSize = wrapper.read(Type.VAR_INT);
+ wrapper.write(Type.VAR_INT, itemTagsSize + 2); // item tags
+ for (int i = 0; i < itemTagsSize; i++) {
+ wrapper.passthrough(Type.STRING);
+ int[] itemIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE);
+ for (int j = 0; j < itemIds.length; j++) {
+ itemIds[j] = getMappingData().getNewItemId(itemIds[j]);
+ }
+ }
+ // Should fix fuel shift clicking
+ wrapper.write(Type.STRING, "minecraft:signs");
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{
+ getMappingData().getNewItemId(541)
+ });
+ // Arrows tag (used by bow)
+ wrapper.write(Type.STRING, "minecraft:arrows");
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{526, 825, 826});
+ int fluidTagsSize = wrapper.passthrough(Type.VAR_INT); // fluid tags
+ for (int i = 0; i < fluidTagsSize; i++) {
+ wrapper.passthrough(Type.STRING);
+ wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE);
+ }
+ wrapper.write(Type.VAR_INT, 0); // new entity tags - do we need to send this?
});
// Set Difficulty packet added in 19w11a
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/data/MappingData.java
index 4a2160085..918ce7e79 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/data/MappingData.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/data/MappingData.java
@@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.data.MappingDataBase;
import com.viaversion.viaversion.api.data.MappingDataLoader;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
-
import java.util.HashMap;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java
index 81f78386b..8a99e355c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java
@@ -35,7 +35,6 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPacke
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.storage.EntityTracker1_14;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
public class MetadataRewriter1_14To1_13_2 extends EntityRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java
index 16c1733fb..741051047 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java
@@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.minecraft.entities.Entity1_14Types;
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.version.Types1_13_2;
@@ -34,7 +33,6 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.metadata.MetadataRewriter1_14To1_13_2;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.storage.EntityTracker1_14;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
-
import java.util.LinkedList;
import java.util.List;
@@ -60,62 +58,59 @@ public class EntityPackets {
map(Type.SHORT); // 11 - Velocity Z
// Track Entity
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityId = wrapper.get(Type.VAR_INT, 0);
- int typeId = wrapper.get(Type.VAR_INT, 1);
+ handler(wrapper -> {
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ int typeId = wrapper.get(Type.VAR_INT, 1);
- Entity1_13Types.EntityType type1_13 = Entity1_13Types.getTypeFromId(typeId, true);
- typeId = metadataRewriter.newEntityId(type1_13.getId());
- EntityType type1_14 = Entity1_14Types.getTypeFromId(typeId);
+ Entity1_13Types.EntityType type1_13 = Entity1_13Types.getTypeFromId(typeId, true);
+ typeId = metadataRewriter.newEntityId(type1_13.getId());
+ EntityType type1_14 = Entity1_14Types.getTypeFromId(typeId);
- if (type1_14 != null) {
- int data = wrapper.get(Type.INT, 0);
- if (type1_14.is(Entity1_14Types.FALLING_BLOCK)) {
- wrapper.set(Type.INT, 0, protocol.getMappingData().getNewBlockStateId(data));
- } else if (type1_14.is(Entity1_14Types.MINECART)) {
- // default is 0 = rideable minecart
- switch (data) {
- case 1:
- typeId = Entity1_14Types.CHEST_MINECART.getId();
- break;
- case 2:
- typeId = Entity1_14Types.FURNACE_MINECART.getId();
- break;
- case 3:
- typeId = Entity1_14Types.TNT_MINECART.getId();
- break;
- case 4:
- typeId = Entity1_14Types.SPAWNER_MINECART.getId();
- break;
- case 5:
- typeId = Entity1_14Types.HOPPER_MINECART.getId();
- break;
- case 6:
- typeId = Entity1_14Types.COMMAND_BLOCK_MINECART.getId();
- break;
- }
- } else if ((type1_14.is(Entity1_14Types.ITEM) && data > 0)
- || type1_14.isOrHasParent(Entity1_14Types.ABSTRACT_ARROW)) {
- if (type1_14.isOrHasParent(Entity1_14Types.ABSTRACT_ARROW)) {
- wrapper.set(Type.INT, 0, data - 1);
- }
- // send velocity in separate packet, 1.14 is now ignoring the velocity
- PacketWrapper velocity = wrapper.create(0x45);
- velocity.write(Type.VAR_INT, entityId);
- velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 0));
- velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 1));
- velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 2));
- velocity.scheduleSend(Protocol1_14To1_13_2.class);
+ if (type1_14 != null) {
+ int data = wrapper.get(Type.INT, 0);
+ if (type1_14.is(Entity1_14Types.FALLING_BLOCK)) {
+ wrapper.set(Type.INT, 0, protocol.getMappingData().getNewBlockStateId(data));
+ } else if (type1_14.is(Entity1_14Types.MINECART)) {
+ // default is 0 = rideable minecart
+ switch (data) {
+ case 1:
+ typeId = Entity1_14Types.CHEST_MINECART.getId();
+ break;
+ case 2:
+ typeId = Entity1_14Types.FURNACE_MINECART.getId();
+ break;
+ case 3:
+ typeId = Entity1_14Types.TNT_MINECART.getId();
+ break;
+ case 4:
+ typeId = Entity1_14Types.SPAWNER_MINECART.getId();
+ break;
+ case 5:
+ typeId = Entity1_14Types.HOPPER_MINECART.getId();
+ break;
+ case 6:
+ typeId = Entity1_14Types.COMMAND_BLOCK_MINECART.getId();
+ break;
}
-
- // Register Type ID
- wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class).addEntity(entityId, type1_14);
+ } else if ((type1_14.is(Entity1_14Types.ITEM) && data > 0)
+ || type1_14.isOrHasParent(Entity1_14Types.ABSTRACT_ARROW)) {
+ if (type1_14.isOrHasParent(Entity1_14Types.ABSTRACT_ARROW)) {
+ wrapper.set(Type.INT, 0, data - 1);
+ }
+ // send velocity in separate packet, 1.14 is now ignoring the velocity
+ PacketWrapper velocity = wrapper.create(0x45);
+ velocity.write(Type.VAR_INT, entityId);
+ velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 0));
+ velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 1));
+ velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 2));
+ velocity.scheduleSend(Protocol1_14To1_13_2.class);
}
- wrapper.set(Type.VAR_INT, 1, typeId);
+ // Register Type ID
+ wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class).addEntity(entityId, type1_14);
}
+
+ wrapper.set(Type.VAR_INT, 1, typeId);
});
}
});
@@ -172,25 +167,22 @@ public class EntityPackets {
@Override
public void register() {
map(Type.VAR_INT);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- short animation = wrapper.passthrough(Type.UNSIGNED_BYTE);
- if (animation == 2) { //Leave bed
- EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
- int entityId = wrapper.get(Type.VAR_INT, 0);
- tracker.setSleeping(entityId, false);
+ handler(wrapper -> {
+ short animation = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ if (animation == 2) { //Leave bed
+ EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ tracker.setSleeping(entityId, false);
- PacketWrapper metadataPacket = wrapper.create(ClientboundPackets1_14.ENTITY_METADATA);
- metadataPacket.write(Type.VAR_INT, entityId);
- List metadataList = new LinkedList<>();
- if (tracker.clientEntityId() != entityId) {
- metadataList.add(new Metadata(6, Types1_14.META_TYPES.poseType, MetadataRewriter1_14To1_13_2.recalculatePlayerPose(entityId, tracker)));
- }
- metadataList.add(new Metadata(12, Types1_14.META_TYPES.optionalPositionType, null));
- metadataPacket.write(Types1_14.METADATA_LIST, metadataList);
- metadataPacket.scheduleSend(Protocol1_14To1_13_2.class);
+ PacketWrapper metadataPacket = wrapper.create(ClientboundPackets1_14.ENTITY_METADATA);
+ metadataPacket.write(Type.VAR_INT, entityId);
+ List metadataList = new LinkedList<>();
+ if (tracker.clientEntityId() != entityId) {
+ metadataList.add(new Metadata(6, Types1_14.META_TYPES.poseType, MetadataRewriter1_14To1_13_2.recalculatePlayerPose(entityId, tracker)));
}
+ metadataList.add(new Metadata(12, Types1_14.META_TYPES.optionalPositionType, null));
+ metadataPacket.write(Types1_14.METADATA_LIST, metadataList);
+ metadataPacket.scheduleSend(Protocol1_14To1_13_2.class);
}
});
}
@@ -236,21 +228,18 @@ public class EntityPackets {
@Override
public void register() {
map(Type.VAR_INT);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
- int entityId = wrapper.get(Type.VAR_INT, 0);
- tracker.setSleeping(entityId, true);
+ handler(wrapper -> {
+ EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ tracker.setSleeping(entityId, true);
- Position position = wrapper.read(Type.POSITION);
- List metadataList = new LinkedList<>();
- metadataList.add(new Metadata(12, Types1_14.META_TYPES.optionalPositionType, position));
- if (tracker.clientEntityId() != entityId) {
- metadataList.add(new Metadata(6, Types1_14.META_TYPES.poseType, MetadataRewriter1_14To1_13_2.recalculatePlayerPose(entityId, tracker)));
- }
- wrapper.write(Types1_14.METADATA_LIST, metadataList);
+ Position position = wrapper.read(Type.POSITION);
+ List metadataList = new LinkedList<>();
+ metadataList.add(new Metadata(12, Types1_14.META_TYPES.optionalPositionType, position));
+ if (tracker.clientEntityId() != entityId) {
+ metadataList.add(new Metadata(6, Types1_14.META_TYPES.poseType, MetadataRewriter1_14To1_13_2.recalculatePlayerPose(entityId, tracker)));
}
+ wrapper.write(Types1_14.METADATA_LIST, metadataList);
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java
index d0da18319..fa05b2ad5 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java
@@ -29,11 +29,11 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.item.DataItem;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ChatRewriter;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13;
+import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.RecipeRewriter1_13_2;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2;
@@ -42,7 +42,6 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.storage.EntityTr
import com.viaversion.viaversion.rewriter.ComponentRewriter;
import com.viaversion.viaversion.rewriter.ItemRewriter;
import com.viaversion.viaversion.rewriter.RecipeRewriter;
-
import java.util.Set;
import java.util.concurrent.ThreadLocalRandom;
@@ -69,79 +68,71 @@ public class InventoryPackets extends ItemRewriter {
+ Short windowId = wrapper.read(Type.UNSIGNED_BYTE);
+ String type = wrapper.read(Type.STRING);
+ JsonElement title = wrapper.read(Type.COMPONENT);
+ COMPONENT_REWRITER.processText(title);
+ Short slots = wrapper.read(Type.UNSIGNED_BYTE);
- if (type.equals("EntityHorse")) {
- wrapper.setPacketType(ClientboundPackets1_14.OPEN_HORSE_WINDOW);
- int entityId = wrapper.read(Type.INT);
- wrapper.write(Type.UNSIGNED_BYTE, windowId);
- wrapper.write(Type.VAR_INT, slots.intValue());
- wrapper.write(Type.INT, entityId);
- } else {
- wrapper.setPacketType(ClientboundPackets1_14.OPEN_WINDOW);
- wrapper.write(Type.VAR_INT, windowId.intValue());
+ if (type.equals("EntityHorse")) {
+ wrapper.setPacketType(ClientboundPackets1_14.OPEN_HORSE_WINDOW);
+ int entityId = wrapper.read(Type.INT);
+ wrapper.write(Type.UNSIGNED_BYTE, windowId);
+ wrapper.write(Type.VAR_INT, slots.intValue());
+ wrapper.write(Type.INT, entityId);
+ } else {
+ wrapper.setPacketType(ClientboundPackets1_14.OPEN_WINDOW);
+ wrapper.write(Type.VAR_INT, windowId.intValue());
- int typeId = -1;
- switch (type) {
- case "minecraft:crafting_table":
- typeId = 11;
- break;
- case "minecraft:furnace":
- typeId = 13;
- break;
- case "minecraft:dropper":
- case "minecraft:dispenser":
- typeId = 6;
- break;
- case "minecraft:enchanting_table":
- typeId = 12;
- break;
- case "minecraft:brewing_stand":
- typeId = 10;
- break;
- case "minecraft:villager":
- typeId = 18;
- break;
- case "minecraft:beacon":
- typeId = 8;
- break;
- case "minecraft:anvil":
- typeId = 7;
- break;
- case "minecraft:hopper":
- typeId = 15;
- break;
- case "minecraft:shulker_box":
- typeId = 19;
- break;
- case "minecraft:container":
- case "minecraft:chest":
- default:
- if (slots > 0 && slots <= 54) {
- typeId = slots / 9 - 1;
- }
- break;
- }
-
- if (typeId == -1) {
- Via.getPlatform().getLogger().warning("Can't open inventory for 1.14 player! Type: " + type + " Size: " + slots);
- }
-
- wrapper.write(Type.VAR_INT, typeId);
- wrapper.write(Type.COMPONENT, title);
+ int typeId = -1;
+ switch (type) {
+ case "minecraft:crafting_table":
+ typeId = 11;
+ break;
+ case "minecraft:furnace":
+ typeId = 13;
+ break;
+ case "minecraft:dropper":
+ case "minecraft:dispenser":
+ typeId = 6;
+ break;
+ case "minecraft:enchanting_table":
+ typeId = 12;
+ break;
+ case "minecraft:brewing_stand":
+ typeId = 10;
+ break;
+ case "minecraft:villager":
+ typeId = 18;
+ break;
+ case "minecraft:beacon":
+ typeId = 8;
+ break;
+ case "minecraft:anvil":
+ typeId = 7;
+ break;
+ case "minecraft:hopper":
+ typeId = 15;
+ break;
+ case "minecraft:shulker_box":
+ typeId = 19;
+ break;
+ case "minecraft:container":
+ case "minecraft:chest":
+ default:
+ if (slots > 0 && slots <= 54) {
+ typeId = slots / 9 - 1;
}
- }
- });
+ break;
+ }
+
+ if (typeId == -1) {
+ Via.getPlatform().getLogger().warning("Can't open inventory for 1.14 player! Type: " + type + " Size: " + slots);
+ }
+
+ wrapper.write(Type.VAR_INT, typeId);
+ wrapper.write(Type.COMPONENT, title);
}
});
@@ -152,50 +143,47 @@ public class InventoryPackets extends ItemRewriter {
+ String channel = wrapper.get(Type.STRING, 0);
+ if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) {
+ wrapper.setPacketType(ClientboundPackets1_14.TRADE_LIST);
+ wrapper.resetReader();
+ wrapper.read(Type.STRING); // Remove channel
- int windowId = wrapper.read(Type.INT);
- EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
- tracker.setLatestTradeWindowId(windowId);
- wrapper.write(Type.VAR_INT, windowId);
+ int windowId = wrapper.read(Type.INT);
+ EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
+ tracker.setLatestTradeWindowId(windowId);
+ wrapper.write(Type.VAR_INT, windowId);
- int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
- for (int i = 0; i < size; i++) {
- // Input Item
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ // Input Item
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM));
+ // Output Item
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM));
+
+ boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
+ if (secondItem) {
+ // Second Item
handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM));
- // Output Item
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM));
-
- boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item
- if (secondItem) {
- // Second Item
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM));
- }
-
- wrapper.passthrough(Type.BOOLEAN); // Trade disabled
- wrapper.passthrough(Type.INT); // Number of tools uses
- wrapper.passthrough(Type.INT); // Maximum number of trade uses
-
- wrapper.write(Type.INT, 0);
- wrapper.write(Type.INT, 0);
- wrapper.write(Type.FLOAT, 0f);
}
- wrapper.write(Type.VAR_INT, 0);
- wrapper.write(Type.VAR_INT, 0);
- wrapper.write(Type.BOOLEAN, false);
- } else if (channel.equals("minecraft:book_open") || channel.equals("book_open")) {
- int hand = wrapper.read(Type.VAR_INT);
- wrapper.clearPacket();
- wrapper.setPacketType(ClientboundPackets1_14.OPEN_BOOK);
- wrapper.write(Type.VAR_INT, hand);
+
+ wrapper.passthrough(Type.BOOLEAN); // Trade disabled
+ wrapper.passthrough(Type.INT); // Number of tools uses
+ wrapper.passthrough(Type.INT); // Maximum number of trade uses
+
+ wrapper.write(Type.INT, 0);
+ wrapper.write(Type.INT, 0);
+ wrapper.write(Type.FLOAT, 0f);
}
+ wrapper.write(Type.VAR_INT, 0);
+ wrapper.write(Type.VAR_INT, 0);
+ wrapper.write(Type.BOOLEAN, false);
+ } else if (channel.equals("minecraft:book_open") || channel.equals("book_open")) {
+ int hand = wrapper.read(Type.VAR_INT);
+ wrapper.clearPacket();
+ wrapper.setPacketType(ClientboundPackets1_14.OPEN_BOOK);
+ wrapper.write(Type.VAR_INT, hand);
}
});
}
@@ -204,53 +192,40 @@ public class InventoryPackets extends ItemRewriter recipeRewriter = new RecipeRewriter1_13_2<>(protocol);
- protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int size = wrapper.passthrough(Type.VAR_INT);
- int deleted = 0;
- for (int i = 0; i < size; i++) {
- String id = wrapper.read(Type.STRING); // Recipe Identifier
- String type = wrapper.read(Type.STRING);
- if (REMOVED_RECIPE_TYPES.contains(type)) {
- deleted++;
- continue;
- }
- wrapper.write(Type.STRING, type);
- wrapper.write(Type.STRING, id);
+ protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, wrapper -> {
+ int size = wrapper.passthrough(Type.VAR_INT);
+ int deleted = 0;
+ for (int i = 0; i < size; i++) {
+ String id = wrapper.read(Type.STRING); // Recipe Identifier
+ String type = wrapper.read(Type.STRING);
+ if (REMOVED_RECIPE_TYPES.contains(type)) {
+ deleted++;
+ continue;
+ }
+ wrapper.write(Type.STRING, type);
+ wrapper.write(Type.STRING, id);
- recipeRewriter.handleRecipeType(wrapper, type);
- }
- wrapper.set(Type.VAR_INT, 0, size - deleted);
- });
+ recipeRewriter.handleRecipeType(wrapper, type);
}
+ wrapper.set(Type.VAR_INT, 0, size - deleted);
});
registerClickWindow(ServerboundPackets1_14.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM);
- protocol.registerServerbound(ServerboundPackets1_14.SELECT_TRADE, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- // Selecting trade now moves the items, we need to resync the inventory
- PacketWrapper resyncPacket = wrapper.create(0x08);
- EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
- resyncPacket.write(Type.UNSIGNED_BYTE, ((short) tracker.getLatestTradeWindowId())); // 0 - Window ID
- resyncPacket.write(Type.SHORT, ((short) -999)); // 1 - Slot
- 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("force_resync", new DoubleTag(Double.NaN)); // Tags with NaN are not equal
- resyncPacket.write(Type.FLAT_VAR_INT_ITEM, new DataItem(1, (byte) 1, (short) 0, tag)); // 5 - Clicked Item
- resyncPacket.scheduleSendToServer(Protocol1_14To1_13_2.class);
- }
- });
- }
+ protocol.registerServerbound(ServerboundPackets1_14.SELECT_TRADE, wrapper -> {
+ // Selecting trade now moves the items, we need to resync the inventory
+ PacketWrapper resyncPacket = wrapper.create(ServerboundPackets1_13.CLICK_WINDOW);
+ EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
+ resyncPacket.write(Type.UNSIGNED_BYTE, ((short) tracker.getLatestTradeWindowId())); // 0 - Window ID
+ resyncPacket.write(Type.SHORT, ((short) -999)); // 1 - Slot
+ 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("force_resync", new DoubleTag(Double.NaN)); // Tags with NaN are not equal
+ resyncPacket.write(Type.FLAT_VAR_INT_ITEM, new DataItem(1, (byte) 1, (short) 0, tag)); // 5 - Clicked Item
+ resyncPacket.scheduleSendToServer(Protocol1_14To1_13_2.class);
});
registerCreativeInvAction(ServerboundPackets1_14.CREATIVE_INVENTORY_ACTION, Type.FLAT_VAR_INT_ITEM);
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 8602dbf6f..1de5725bc 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
@@ -24,8 +24,6 @@ import com.github.steveice10.opennbt.tag.builtin.Tag;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.api.minecraft.item.Item;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13;
@@ -51,36 +49,28 @@ public class PlayerPackets {
}
});
- protocol.registerServerbound(ServerboundPackets1_14.EDIT_BOOK, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Item item = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);
- protocol.getItemRewriter().handleItemToServer(item);
+ protocol.registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> {
+ Item item = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM);
+ protocol.getItemRewriter().handleItemToServer(item);
- if (item == null) return;
+ if (item == null) return;
- CompoundTag tag = item.tag();
- if (tag == null) return;
+ CompoundTag tag = item.tag();
+ if (tag == null) return;
- Tag pages = tag.get("pages");
+ 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())));
- }
+ // 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() && pages instanceof ListTag) {
- ListTag listTag = (ListTag) pages;
- if (listTag.size() > 50) {
- listTag.setValue(listTag.getValue().subList(0, 50));
- }
- }
- }
- });
+ // 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() && pages instanceof ListTag) {
+ ListTag listTag = (ListTag) pages;
+ if (listTag.size() > 50) {
+ listTag.setValue(listTag.getValue().subList(0, 50));
+ }
}
});
@@ -96,24 +86,21 @@ public class PlayerPackets {
@Override
public void register() {
map(Type.VAR_INT);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int type = wrapper.get(Type.VAR_INT, 0);
- if (type == 0) {
- wrapper.passthrough(Type.STRING);
- } else if (type == 1) {
- wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open
- wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active
- wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Book Open
- wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Filter Active
+ handler(wrapper -> {
+ int type = wrapper.get(Type.VAR_INT, 0);
+ if (type == 0) {
+ wrapper.passthrough(Type.STRING);
+ } else if (type == 1) {
+ wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open
+ wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active
+ wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Book Open
+ wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Filter Active
- // Unknown new booleans
- wrapper.read(Type.BOOLEAN);
- wrapper.read(Type.BOOLEAN);
- wrapper.read(Type.BOOLEAN);
- wrapper.read(Type.BOOLEAN);
- }
+ // Unknown new booleans
+ wrapper.read(Type.BOOLEAN);
+ wrapper.read(Type.BOOLEAN);
+ wrapper.read(Type.BOOLEAN);
+ wrapper.read(Type.BOOLEAN);
}
});
}
@@ -138,29 +125,21 @@ public class PlayerPackets {
}
});
- protocol.registerServerbound(ServerboundPackets1_14.PLAYER_BLOCK_PLACEMENT, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int hand = wrapper.read(Type.VAR_INT);
- Position position = wrapper.read(Type.POSITION1_14);
- int face = wrapper.read(Type.VAR_INT);
- float x = wrapper.read(Type.FLOAT);
- float y = wrapper.read(Type.FLOAT);
- float z = wrapper.read(Type.FLOAT);
- wrapper.read(Type.BOOLEAN); // new unknown boolean
+ protocol.registerServerbound(ServerboundPackets1_14.PLAYER_BLOCK_PLACEMENT, wrapper -> {
+ int hand = wrapper.read(Type.VAR_INT);
+ Position position = wrapper.read(Type.POSITION1_14);
+ int face = wrapper.read(Type.VAR_INT);
+ float x = wrapper.read(Type.FLOAT);
+ float y = wrapper.read(Type.FLOAT);
+ float z = wrapper.read(Type.FLOAT);
+ wrapper.read(Type.BOOLEAN); // new unknown boolean
- wrapper.write(Type.POSITION, position);
- wrapper.write(Type.VAR_INT, face);
- wrapper.write(Type.VAR_INT, hand);
- wrapper.write(Type.FLOAT, x);
- wrapper.write(Type.FLOAT, y);
- wrapper.write(Type.FLOAT, z);
- }
- });
- }
+ wrapper.write(Type.POSITION, position);
+ wrapper.write(Type.VAR_INT, face);
+ wrapper.write(Type.VAR_INT, hand);
+ wrapper.write(Type.FLOAT, x);
+ wrapper.write(Type.FLOAT, y);
+ wrapper.write(Type.FLOAT, z);
});
}
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java
index cc5acf313..c2c5e4774 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java
@@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.NibbleArray;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13;
@@ -40,7 +39,6 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.types.Chunk1_14T
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
import com.viaversion.viaversion.rewriter.BlockRewriter;
import com.viaversion.viaversion.util.CompactArrayUtil;
-
import java.util.Arrays;
public class WorldPackets {
@@ -78,12 +76,7 @@ public class WorldPackets {
map(Type.UNSIGNED_BYTE); // Action id
map(Type.UNSIGNED_BYTE); // Action param
map(Type.VAR_INT); // Block id - /!\ NOT BLOCK STATE
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockId(wrapper.get(Type.VAR_INT, 0)));
- }
- });
+ handler(wrapper -> wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockId(wrapper.get(Type.VAR_INT, 0))));
}
});
protocol.registerClientbound(ClientboundPackets1_13.BLOCK_CHANGE, new PacketHandlers() {
@@ -91,13 +84,10 @@ public class WorldPackets {
public void register() {
map(Type.POSITION, Type.POSITION1_14);
map(Type.VAR_INT);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int id = wrapper.get(Type.VAR_INT, 0);
+ handler(wrapper -> {
+ int id = wrapper.get(Type.VAR_INT, 0);
- wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(id));
- }
+ wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(id));
});
}
});
@@ -106,11 +96,8 @@ public class WorldPackets {
@Override
public void register() {
map(Type.UNSIGNED_BYTE);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.write(Type.BOOLEAN, false); // Added in 19w11a. Maybe https://bugs.mojang.com/browse/MC-44471 ?
- }
+ handler(wrapper -> {
+ wrapper.write(Type.BOOLEAN, false); // Added in 19w11a. Maybe https://bugs.mojang.com/browse/MC-44471 ?
});
}
});
@@ -124,150 +111,139 @@ public class WorldPackets {
map(Type.FLOAT); // Y
map(Type.FLOAT); // Z
map(Type.FLOAT); // Radius
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- for (int i = 0; i < 3; i++) {
- float coord = wrapper.get(Type.FLOAT, i);
+ handler(wrapper -> {
+ for (int i = 0; i < 3; i++) {
+ float coord = wrapper.get(Type.FLOAT, i);
- if (coord < 0f) {
- coord = (int) coord;
- wrapper.set(Type.FLOAT, i, coord);
- }
+ if (coord < 0f) {
+ coord = (int) coord;
+ wrapper.set(Type.FLOAT, i, coord);
}
}
});
}
});
- protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- Chunk chunk = wrapper.read(new Chunk1_13Type(clientWorld));
- wrapper.write(new Chunk1_14Type(), chunk);
+ protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ Chunk chunk = wrapper.read(new Chunk1_13Type(clientWorld));
+ wrapper.write(new Chunk1_14Type(), chunk);
- int[] motionBlocking = new int[16 * 16];
- int[] worldSurface = new int[16 * 16];
+ int[] motionBlocking = new int[16 * 16];
+ int[] worldSurface = new int[16 * 16];
- for (int s = 0; s < chunk.getSections().length; s++) {
- ChunkSection section = chunk.getSections()[s];
- if (section == null) continue;
- DataPalette blocks = section.palette(PaletteType.BLOCKS);
+ for (int s = 0; s < chunk.getSections().length; s++) {
+ ChunkSection section = chunk.getSections()[s];
+ if (section == null) continue;
+ DataPalette blocks = section.palette(PaletteType.BLOCKS);
- boolean hasBlock = false;
- for (int i = 0; i < blocks.size(); i++) {
- int old = blocks.idByIndex(i);
- int newId = protocol.getMappingData().getNewBlockStateId(old);
- if (!hasBlock && newId != air && newId != voidAir && newId != caveAir) { // air, void_air, cave_air
- hasBlock = true;
- }
- blocks.setIdByIndex(i, newId);
- }
- if (!hasBlock) {
- section.setNonAirBlocksCount(0);
- continue;
- }
-
- int nonAirBlockCount = 0;
- int sy = s << 4;
- for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
- int id = blocks.idAt(idx);
- if (id == air || id == voidAir || id == caveAir) continue;
- nonAirBlockCount++;
-
- int xz = idx & 0xFF;
- int y = ChunkSection.yFromIndex(idx);
- worldSurface[xz] = sy + y + 1; // +1 (top of the block)
-
- if (protocol.getMappingData().getMotionBlocking().contains(id)) {
- motionBlocking[xz] = sy + y + 1; // +1 (top of the block)
- }
-
- // Manually update light for non-full blocks (block light must not be sent)
- if (Via.getConfig().isNonFullBlockLightFix() && protocol.getMappingData().getNonFullBlocks().contains(id)) {
- int x = ChunkSection.xFromIndex(idx);
- int z = ChunkSection.zFromIndex(idx);
- setNonFullLight(chunk, section, s, x, y, z);
- }
- }
-
- section.setNonAirBlocksCount(nonAirBlockCount);
- }
-
- 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(ClientboundPackets1_14.UPDATE_LIGHT);
- lightPacket.write(Type.VAR_INT, chunk.getX());
- lightPacket.write(Type.VAR_INT, chunk.getZ());
-
- int skyLightMask = chunk.isFullChunk() ? 0x3ffff : 0; // all 18 bits set if ground up
- int blockLightMask = 0;
- for (int i = 0; i < chunk.getSections().length; i++) {
- ChunkSection sec = chunk.getSections()[i];
- if (sec == null) continue;
- if (!chunk.isFullChunk() && sec.getLight().hasSkyLight()) {
- skyLightMask |= (1 << (i + 1));
- }
- blockLightMask |= (1 << (i + 1));
- }
-
- lightPacket.write(Type.VAR_INT, skyLightMask);
- lightPacket.write(Type.VAR_INT, blockLightMask);
- lightPacket.write(Type.VAR_INT, 0); // empty sky light mask
- lightPacket.write(Type.VAR_INT, 0); // empty block light mask
-
- // not sending skylight/setting empty skylight causes client lag due to some weird calculations
- // only do this on the initial chunk send (not when chunk.isGroundUp() is false)
- if (chunk.isFullChunk())
- lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); // chunk below 0
- for (ChunkSection section : chunk.getSections()) {
- if (section == null || !section.getLight().hasSkyLight()) {
- if (chunk.isFullChunk()) {
- lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT);
- }
- continue;
- }
- lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, section.getLight().getSkyLight());
- }
- if (chunk.isFullChunk())
- lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); // chunk above 255
-
- for (ChunkSection section : chunk.getSections()) {
- if (section == null) continue;
- lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, section.getLight().getBlockLight());
- }
-
- EntityTracker1_14 entityTracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
- int diffX = Math.abs(entityTracker.getChunkCenterX() - chunk.getX());
- int diffZ = Math.abs(entityTracker.getChunkCenterZ() - chunk.getZ());
- if (entityTracker.isForceSendCenterChunk()
- || diffX >= SERVERSIDE_VIEW_DISTANCE
- || diffZ >= SERVERSIDE_VIEW_DISTANCE) {
- PacketWrapper fakePosLook = wrapper.create(ClientboundPackets1_14.UPDATE_VIEW_POSITION); // Set center chunk
- fakePosLook.write(Type.VAR_INT, chunk.getX());
- fakePosLook.write(Type.VAR_INT, chunk.getZ());
- fakePosLook.send(Protocol1_14To1_13_2.class);
- entityTracker.setChunkCenterX(chunk.getX());
- entityTracker.setChunkCenterZ(chunk.getZ());
- }
-
- lightPacket.send(Protocol1_14To1_13_2.class);
-
- // Remove light references from chunk sections
- for (ChunkSection section : chunk.getSections()) {
- if (section != null) {
- section.setLight(null);
- }
- }
+ boolean hasBlock = false;
+ for (int i = 0; i < blocks.size(); i++) {
+ int old = blocks.idByIndex(i);
+ int newId = protocol.getMappingData().getNewBlockStateId(old);
+ if (!hasBlock && newId != air && newId != voidAir && newId != caveAir) { // air, void_air, cave_air
+ hasBlock = true;
}
- });
+ blocks.setIdByIndex(i, newId);
+ }
+ if (!hasBlock) {
+ section.setNonAirBlocksCount(0);
+ continue;
+ }
+
+ int nonAirBlockCount = 0;
+ int sy = s << 4;
+ for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
+ int id = blocks.idAt(idx);
+ if (id == air || id == voidAir || id == caveAir) continue;
+ nonAirBlockCount++;
+
+ int xz = idx & 0xFF;
+ int y = ChunkSection.yFromIndex(idx);
+ worldSurface[xz] = sy + y + 1; // +1 (top of the block)
+
+ if (protocol.getMappingData().getMotionBlocking().contains(id)) {
+ motionBlocking[xz] = sy + y + 1; // +1 (top of the block)
+ }
+
+ // Manually update light for non-full blocks (block light must not be sent)
+ if (Via.getConfig().isNonFullBlockLightFix() && protocol.getMappingData().getNonFullBlocks().contains(id)) {
+ int x = ChunkSection.xFromIndex(idx);
+ int z = ChunkSection.zFromIndex(idx);
+ setNonFullLight(chunk, section, s, x, y, z);
+ }
+ }
+
+ section.setNonAirBlocksCount(nonAirBlockCount);
+ }
+
+ 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(ClientboundPackets1_14.UPDATE_LIGHT);
+ lightPacket.write(Type.VAR_INT, chunk.getX());
+ lightPacket.write(Type.VAR_INT, chunk.getZ());
+
+ int skyLightMask = chunk.isFullChunk() ? 0x3ffff : 0; // all 18 bits set if ground up
+ int blockLightMask = 0;
+ for (int i = 0; i < chunk.getSections().length; i++) {
+ ChunkSection sec = chunk.getSections()[i];
+ if (sec == null) continue;
+ if (!chunk.isFullChunk() && sec.getLight().hasSkyLight()) {
+ skyLightMask |= (1 << (i + 1));
+ }
+ blockLightMask |= (1 << (i + 1));
+ }
+
+ lightPacket.write(Type.VAR_INT, skyLightMask);
+ lightPacket.write(Type.VAR_INT, blockLightMask);
+ lightPacket.write(Type.VAR_INT, 0); // empty sky light mask
+ lightPacket.write(Type.VAR_INT, 0); // empty block light mask
+
+ // not sending skylight/setting empty skylight causes client lag due to some weird calculations
+ // only do this on the initial chunk send (not when chunk.isGroundUp() is false)
+ if (chunk.isFullChunk())
+ lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); // chunk below 0
+ for (ChunkSection section : chunk.getSections()) {
+ if (section == null || !section.getLight().hasSkyLight()) {
+ if (chunk.isFullChunk()) {
+ lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT);
+ }
+ continue;
+ }
+ lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, section.getLight().getSkyLight());
+ }
+ if (chunk.isFullChunk())
+ lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); // chunk above 255
+
+ for (ChunkSection section : chunk.getSections()) {
+ if (section == null) continue;
+ lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, section.getLight().getBlockLight());
+ }
+
+ EntityTracker1_14 entityTracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
+ int diffX = Math.abs(entityTracker.getChunkCenterX() - chunk.getX());
+ int diffZ = Math.abs(entityTracker.getChunkCenterZ() - chunk.getZ());
+ if (entityTracker.isForceSendCenterChunk()
+ || diffX >= SERVERSIDE_VIEW_DISTANCE
+ || diffZ >= SERVERSIDE_VIEW_DISTANCE) {
+ PacketWrapper fakePosLook = wrapper.create(ClientboundPackets1_14.UPDATE_VIEW_POSITION); // Set center chunk
+ fakePosLook.write(Type.VAR_INT, chunk.getX());
+ fakePosLook.write(Type.VAR_INT, chunk.getZ());
+ fakePosLook.send(Protocol1_14To1_13_2.class);
+ entityTracker.setChunkCenterX(chunk.getX());
+ entityTracker.setChunkCenterZ(chunk.getZ());
+ }
+
+ lightPacket.send(Protocol1_14To1_13_2.class);
+
+ // Remove light references from chunk sections
+ for (ChunkSection section : chunk.getSections()) {
+ if (section != null) {
+ section.setLight(null);
+ }
}
});
@@ -277,16 +253,13 @@ public class WorldPackets {
map(Type.INT); // Effect Id
map(Type.POSITION, Type.POSITION1_14); // Location
map(Type.INT); // Data
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int id = wrapper.get(Type.INT, 0);
- int data = wrapper.get(Type.INT, 1);
- if (id == 1010) { // Play record
- wrapper.set(Type.INT, 1, protocol.getMappingData().getNewItemId(data));
- } else if (id == 2001) { // Block break + block break sound
- wrapper.set(Type.INT, 1, protocol.getMappingData().getNewBlockStateId(data));
- }
+ handler(wrapper -> {
+ int id = wrapper.get(Type.INT, 0);
+ int data = wrapper.get(Type.INT, 1);
+ if (id == 1010) { // Play record
+ wrapper.set(Type.INT, 1, protocol.getMappingData().getNewItemId(data));
+ } else if (id == 2001) { // Block break + block break sound
+ wrapper.set(Type.INT, 1, protocol.getMappingData().getNewBlockStateId(data));
}
});
}
@@ -298,11 +271,8 @@ public class WorldPackets {
map(Type.VAR_INT);
map(Type.BYTE);
map(Type.BOOLEAN);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.write(Type.BOOLEAN, false); // new value, probably if the map is locked (added in 19w02a), old maps are not locked
- }
+ handler(wrapper -> {
+ wrapper.write(Type.BOOLEAN, false); // new value, probably if the map is locked (added in 19w02a), old maps are not locked
});
}
});
@@ -311,26 +281,20 @@ public class WorldPackets {
@Override
public void register() {
map(Type.INT); // 0 - Dimension ID
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- int dimensionId = wrapper.get(Type.INT, 0);
- clientWorld.setEnvironment(dimensionId);
- EntityTracker1_14 entityTracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
- // The client may reset the center chunk if dimension is changed
- entityTracker.setForceSendCenterChunk(true);
- }
+ handler(wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ int dimensionId = wrapper.get(Type.INT, 0);
+ clientWorld.setEnvironment(dimensionId);
+ EntityTracker1_14 entityTracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class);
+ // The client may reset the center chunk if dimension is changed
+ entityTracker.setForceSendCenterChunk(true);
});
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- short difficulty = wrapper.read(Type.UNSIGNED_BYTE); // 19w11a removed difficulty from respawn
- PacketWrapper difficultyPacket = wrapper.create(ClientboundPackets1_14.SERVER_DIFFICULTY);
- difficultyPacket.write(Type.UNSIGNED_BYTE, difficulty);
- difficultyPacket.write(Type.BOOLEAN, false); // Unknown value added in 19w11a
- difficultyPacket.scheduleSend(protocol.getClass());
- }
+ handler(wrapper -> {
+ short difficulty = wrapper.read(Type.UNSIGNED_BYTE); // 19w11a removed difficulty from respawn
+ PacketWrapper difficultyPacket = wrapper.create(ClientboundPackets1_14.SERVER_DIFFICULTY);
+ difficultyPacket.write(Type.UNSIGNED_BYTE, difficulty);
+ difficultyPacket.write(Type.BOOLEAN, false); // Unknown value added in 19w11a
+ difficultyPacket.scheduleSend(protocol.getClass());
});
handler(wrapper -> {
// Manually send the packet and update the viewdistance after
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/types/Chunk1_14Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/types/Chunk1_14Type.java
index 39ea87a37..1f25fccea 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/types/Chunk1_14Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/types/Chunk1_14Type.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.Types1_13;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java
index 5e46dc121..66ce20cf9 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java
@@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.RegistryType;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_15Types;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
@@ -60,12 +59,7 @@ public class Protocol1_15To1_14_4 extends AbstractProtocol(this).register(ClientboundPackets1_14.STATISTICS);
- registerServerbound(ServerboundPackets1_14.EDIT_BOOK, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> itemRewriter.handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)));
- }
- });
+ registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> itemRewriter.handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)));
tagRewriter = new TagRewriter<>(this);
tagRewriter.register(ClientboundPackets1_14.TAGS, RegistryType.ENTITY);
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java
index fe6f619e6..072c199db 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java
@@ -29,7 +29,6 @@ import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPacke
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4;
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.metadata.MetadataRewriter1_15To1_14_4;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
public class EntityPackets {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java
index 349043fee..d2560b41a 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java
@@ -21,8 +21,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14;
@@ -41,51 +39,43 @@ public class WorldPackets {
blockRewriter.registerMultiBlockChange(ClientboundPackets1_14.MULTI_BLOCK_CHANGE);
blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_14.ACKNOWLEDGE_PLAYER_DIGGING);
- protocol.registerClientbound(ClientboundPackets1_14.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Chunk chunk = wrapper.read(new Chunk1_14Type());
- wrapper.write(new Chunk1_15Type(), chunk);
+ protocol.registerClientbound(ClientboundPackets1_14.CHUNK_DATA, wrapper -> {
+ Chunk chunk = wrapper.read(new Chunk1_14Type());
+ wrapper.write(new Chunk1_15Type(), chunk);
- if (chunk.isFullChunk()) {
- int[] biomeData = chunk.getBiomeData();
- int[] newBiomeData = new int[1024];
- if (biomeData != null) {
- // Now in 4x4x4 areas - take the biome of each "middle"
- for (int i = 0; i < 4; ++i) {
- for (int j = 0; j < 4; ++j) {
- int x = (j << 2) + 2;
- int z = (i << 2) + 2;
- int oldIndex = (z << 4 | x);
- newBiomeData[i << 2 | j] = biomeData[oldIndex];
- }
- }
- // ... and copy it to the new y layers
- for (int i = 1; i < 64; ++i) {
- System.arraycopy(newBiomeData, 0, newBiomeData, i * 16, 16);
- }
- }
-
- chunk.setBiomeData(newBiomeData);
- }
-
- for (int s = 0; s < chunk.getSections().length; s++) {
- ChunkSection section = chunk.getSections()[s];
- if (section == null) {
- continue;
- }
-
- DataPalette palette = section.palette(PaletteType.BLOCKS);
- for (int i = 0; i < palette.size(); i++) {
- int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
- palette.setIdByIndex(i, mappedBlockStateId);
- }
+ if (chunk.isFullChunk()) {
+ int[] biomeData = chunk.getBiomeData();
+ int[] newBiomeData = new int[1024];
+ if (biomeData != null) {
+ // Now in 4x4x4 areas - take the biome of each "middle"
+ for (int i = 0; i < 4; ++i) {
+ for (int j = 0; j < 4; ++j) {
+ int x = (j << 2) + 2;
+ int z = (i << 2) + 2;
+ int oldIndex = (z << 4 | x);
+ newBiomeData[i << 2 | j] = biomeData[oldIndex];
}
}
- });
+ // ... and copy it to the new y layers
+ for (int i = 1; i < 64; ++i) {
+ System.arraycopy(newBiomeData, 0, newBiomeData, i * 16, 16);
+ }
+ }
+
+ chunk.setBiomeData(newBiomeData);
+ }
+
+ for (int s = 0; s < chunk.getSections().length; s++) {
+ ChunkSection section = chunk.getSections()[s];
+ if (section == null) {
+ continue;
+ }
+
+ DataPalette palette = section.palette(PaletteType.BLOCKS);
+ for (int i = 0; i < palette.size(); i++) {
+ int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
+ palette.setIdByIndex(i, mappedBlockStateId);
+ }
}
});
@@ -103,16 +93,13 @@ public class WorldPackets {
map(Type.FLOAT); // 7 - Offset Z
map(Type.FLOAT); // 8 - Particle Data
map(Type.INT); // 9 - Particle Count
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int id = wrapper.get(Type.INT, 0);
- if (id == 3 || id == 23) {
- int data = wrapper.passthrough(Type.VAR_INT);
- wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data));
- } else if (id == 32) {
- protocol.getItemRewriter().handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM));
- }
+ handler(wrapper -> {
+ int id = wrapper.get(Type.INT, 0);
+ if (id == 3 || id == 23) {
+ int data = wrapper.passthrough(Type.VAR_INT);
+ wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data));
+ } else if (id == 32) {
+ protocol.getItemRewriter().handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM));
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/types/Chunk1_15Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/types/Chunk1_15Type.java
index 27457b293..afc919461 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/types/Chunk1_15Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/types/Chunk1_15Type.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.Types1_13;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/Protocol1_16_2To1_16_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/Protocol1_16_2To1_16_1.java
index 1286fdaf3..9b496f139 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/Protocol1_16_2To1_16_1.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/Protocol1_16_2To1_16_1.java
@@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.RegistryType;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_16_2Types;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.data.MappingData;
@@ -64,34 +63,24 @@ public class Protocol1_16_2To1_16_1 extends AbstractProtocol {
- int recipeType = wrapper.read(Type.VAR_INT);
- boolean open = wrapper.read(Type.BOOLEAN);
- boolean filter = wrapper.read(Type.BOOLEAN);
- wrapper.write(Type.VAR_INT, 1); // Settings
- wrapper.write(Type.BOOLEAN, recipeType == 0 && open); // Crafting
- wrapper.write(Type.BOOLEAN, filter);
- wrapper.write(Type.BOOLEAN, recipeType == 1 && open); // Furnace
- wrapper.write(Type.BOOLEAN, filter);
- wrapper.write(Type.BOOLEAN, recipeType == 2 && open); // Blast Furnace
- wrapper.write(Type.BOOLEAN, filter);
- wrapper.write(Type.BOOLEAN, recipeType == 3 && open); // Smoker
- wrapper.write(Type.BOOLEAN, filter);
- });
- }
+ registerServerbound(ServerboundPackets1_16_2.RECIPE_BOOK_DATA, wrapper -> {
+ int recipeType = wrapper.read(Type.VAR_INT);
+ boolean open = wrapper.read(Type.BOOLEAN);
+ boolean filter = wrapper.read(Type.BOOLEAN);
+ wrapper.write(Type.VAR_INT, 1); // Settings
+ wrapper.write(Type.BOOLEAN, recipeType == 0 && open); // Crafting
+ wrapper.write(Type.BOOLEAN, filter);
+ wrapper.write(Type.BOOLEAN, recipeType == 1 && open); // Furnace
+ wrapper.write(Type.BOOLEAN, filter);
+ wrapper.write(Type.BOOLEAN, recipeType == 2 && open); // Blast Furnace
+ wrapper.write(Type.BOOLEAN, filter);
+ wrapper.write(Type.BOOLEAN, recipeType == 3 && open); // Smoker
+ wrapper.write(Type.BOOLEAN, filter);
});
- registerServerbound(ServerboundPackets1_16_2.SEEN_RECIPE, ServerboundPackets1_16.RECIPE_BOOK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- String recipe = wrapper.read(Type.STRING);
- wrapper.write(Type.VAR_INT, 0); // Shown
- wrapper.write(Type.STRING, recipe);
- });
- }
+ registerServerbound(ServerboundPackets1_16_2.SEEN_RECIPE, ServerboundPackets1_16.RECIPE_BOOK_DATA, wrapper -> {
+ String recipe = wrapper.read(Type.STRING);
+ wrapper.write(Type.VAR_INT, 0); // Shown
+ wrapper.write(Type.STRING, recipe);
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/data/MappingData.java
index 043078212..f4730d903 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/data/MappingData.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/data/MappingData.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.data.MappingDataBase;
import com.viaversion.viaversion.api.data.MappingDataLoader;
import com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO;
-
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/metadata/MetadataRewriter1_16_2To1_16_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/metadata/MetadataRewriter1_16_2To1_16_1.java
index ecf253106..e1b42a045 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/metadata/MetadataRewriter1_16_2To1_16_1.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/metadata/MetadataRewriter1_16_2To1_16_1.java
@@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_16;
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.Protocol1_16_2To1_16_1;
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
public class MetadataRewriter1_16_2To1_16_1 extends EntityRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/EntityPackets.java
index 1666fd1c6..9e9b5c150 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/EntityPackets.java
@@ -67,14 +67,9 @@ public class EntityPackets {
}
});
- protocol.registerClientbound(ClientboundPackets1_16.RESPAWN, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- String dimensionType = wrapper.read(Type.STRING);
- wrapper.write(Type.NBT, getDimensionData(dimensionType));
- });
- }
+ protocol.registerClientbound(ClientboundPackets1_16.RESPAWN, wrapper -> {
+ String dimensionType = wrapper.read(Type.STRING);
+ wrapper.write(Type.NBT, getDimensionData(dimensionType));
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java
index c6d3a79e9..a920d47ff 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java
@@ -17,7 +17,6 @@
*/
package com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.packets;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.Protocol1_16_2To1_16_1;
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2;
@@ -40,34 +39,24 @@ public class InventoryPackets extends ItemRewriter {
- wrapper.passthrough(Type.VAR_INT);
- wrapper.passthrough(Type.BOOLEAN); // Open
- wrapper.passthrough(Type.BOOLEAN); // Filter
- wrapper.passthrough(Type.BOOLEAN); // Furnace
- wrapper.passthrough(Type.BOOLEAN); // Filter furnace
- // Blast furnace / smoker
- wrapper.write(Type.BOOLEAN, false);
- wrapper.write(Type.BOOLEAN, false);
- wrapper.write(Type.BOOLEAN, false);
- wrapper.write(Type.BOOLEAN, false);
- });
- }
+ protocol.registerClientbound(ClientboundPackets1_16.UNLOCK_RECIPES, wrapper -> {
+ wrapper.passthrough(Type.VAR_INT);
+ wrapper.passthrough(Type.BOOLEAN); // Open
+ wrapper.passthrough(Type.BOOLEAN); // Filter
+ wrapper.passthrough(Type.BOOLEAN); // Furnace
+ wrapper.passthrough(Type.BOOLEAN); // Filter furnace
+ // Blast furnace / smoker
+ wrapper.write(Type.BOOLEAN, false);
+ wrapper.write(Type.BOOLEAN, false);
+ wrapper.write(Type.BOOLEAN, false);
+ wrapper.write(Type.BOOLEAN, false);
});
new RecipeRewriter1_16<>(protocol).registerDefaultHandler(ClientboundPackets1_16.DECLARE_RECIPES);
registerClickWindow(ServerboundPackets1_16_2.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM);
registerCreativeInvAction(ServerboundPackets1_16_2.CREATIVE_INVENTORY_ACTION, Type.FLAT_VAR_INT_ITEM);
- protocol.registerServerbound(ServerboundPackets1_16_2.EDIT_BOOK, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)));
- }
- });
+ protocol.registerServerbound(ServerboundPackets1_16_2.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)));
registerSpawnParticle(ClientboundPackets1_16.SPAWN_PARTICLE, Type.FLAT_VAR_INT_ITEM, Type.DOUBLE);
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/WorldPackets.java
index b48c2c15d..8b19387fe 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/WorldPackets.java
@@ -24,7 +24,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2;
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.Protocol1_16_2To1_16_1;
@@ -46,68 +45,58 @@ public class WorldPackets {
blockRewriter.registerBlockChange(ClientboundPackets1_16.BLOCK_CHANGE);
blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16.ACKNOWLEDGE_PLAYER_DIGGING);
- protocol.registerClientbound(ClientboundPackets1_16.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- Chunk chunk = wrapper.read(new Chunk1_16Type());
- wrapper.write(new Chunk1_16_2Type(), chunk);
+ protocol.registerClientbound(ClientboundPackets1_16.CHUNK_DATA, wrapper -> {
+ Chunk chunk = wrapper.read(new Chunk1_16Type());
+ wrapper.write(new Chunk1_16_2Type(), chunk);
- for (int s = 0; s < chunk.getSections().length; s++) {
- ChunkSection section = chunk.getSections()[s];
- if (section == null) {
- continue;
- }
+ for (int s = 0; s < chunk.getSections().length; s++) {
+ ChunkSection section = chunk.getSections()[s];
+ if (section == null) {
+ continue;
+ }
- DataPalette palette = section.palette(PaletteType.BLOCKS);
- for (int i = 0; i < palette.size(); i++) {
- int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
- palette.setIdByIndex(i, mappedBlockStateId);
- }
- }
- });
+ DataPalette palette = section.palette(PaletteType.BLOCKS);
+ for (int i = 0; i < palette.size(); i++) {
+ int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
+ palette.setIdByIndex(i, mappedBlockStateId);
+ }
}
});
- protocol.registerClientbound(ClientboundPackets1_16.MULTI_BLOCK_CHANGE, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- wrapper.cancel();
+ protocol.registerClientbound(ClientboundPackets1_16.MULTI_BLOCK_CHANGE, wrapper -> {
+ wrapper.cancel();
- int chunkX = wrapper.read(Type.INT);
- int chunkZ = wrapper.read(Type.INT);
+ int chunkX = wrapper.read(Type.INT);
+ int chunkZ = wrapper.read(Type.INT);
- long chunkPosition = 0;
- chunkPosition |= (chunkX & 0x3FFFFFL) << 42;
- chunkPosition |= (chunkZ & 0x3FFFFFL) << 20;
+ long chunkPosition = 0;
+ chunkPosition |= (chunkX & 0x3FFFFFL) << 42;
+ chunkPosition |= (chunkZ & 0x3FFFFFL) << 20;
- List[] sectionRecords = new List[16];
- BlockChangeRecord[] blockChangeRecord = wrapper.read(Type.BLOCK_CHANGE_RECORD_ARRAY);
- for (BlockChangeRecord record : blockChangeRecord) {
- int chunkY = record.getY() >> 4;
- List list = sectionRecords[chunkY];
- if (list == null) {
- sectionRecords[chunkY] = (list = new ArrayList<>());
- }
+ List[] sectionRecords = new List[16];
+ BlockChangeRecord[] blockChangeRecord = wrapper.read(Type.BLOCK_CHANGE_RECORD_ARRAY);
+ for (BlockChangeRecord record : blockChangeRecord) {
+ int chunkY = record.getY() >> 4;
+ List list = sectionRecords[chunkY];
+ if (list == null) {
+ sectionRecords[chunkY] = (list = new ArrayList<>());
+ }
- // Absolute y -> relative chunk section y
- int blockId = protocol.getMappingData().getNewBlockStateId(record.getBlockId());
- list.add(new BlockChangeRecord1_16_2(record.getSectionX(), record.getSectionY(), record.getSectionZ(), blockId));
- }
+ // Absolute y -> relative chunk section y
+ int blockId = protocol.getMappingData().getNewBlockStateId(record.getBlockId());
+ list.add(new BlockChangeRecord1_16_2(record.getSectionX(), record.getSectionY(), record.getSectionZ(), blockId));
+ }
- // Now send separate packets for the different chunk sections
- for (int chunkY = 0; chunkY < sectionRecords.length; chunkY++) {
- List sectionRecord = sectionRecords[chunkY];
- if (sectionRecord == null) continue;
+ // Now send separate packets for the different chunk sections
+ for (int chunkY = 0; chunkY < sectionRecords.length; chunkY++) {
+ List sectionRecord = sectionRecords[chunkY];
+ if (sectionRecord == null) continue;
- PacketWrapper newPacket = wrapper.create(ClientboundPackets1_16_2.MULTI_BLOCK_CHANGE);
- newPacket.write(Type.LONG, chunkPosition | (chunkY & 0xFFFFFL));
- newPacket.write(Type.BOOLEAN, false); // Ignore light updates
- newPacket.write(Type.VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY, sectionRecord.toArray(EMPTY_RECORDS));
- newPacket.send(Protocol1_16_2To1_16_1.class);
- }
- });
+ PacketWrapper newPacket = wrapper.create(ClientboundPackets1_16_2.MULTI_BLOCK_CHANGE);
+ newPacket.write(Type.LONG, chunkPosition | (chunkY & 0xFFFFFL));
+ newPacket.write(Type.BOOLEAN, false); // Ignore light updates
+ newPacket.write(Type.VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY, sectionRecord.toArray(EMPTY_RECORDS));
+ newPacket.send(Protocol1_16_2To1_16_1.class);
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/types/Chunk1_16_2Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/types/Chunk1_16_2Type.java
index e85354652..697de78bb 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/types/Chunk1_16_2Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/types/Chunk1_16_2Type.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.Types1_16;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/Protocol1_16To1_15_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/Protocol1_16To1_15_2.java
index b544cfd64..7903a51ec 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/Protocol1_16To1_15_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/Protocol1_16To1_15_2.java
@@ -77,54 +77,44 @@ public class Protocol1_16To1_15_2 extends AbstractProtocol(this).register(ClientboundPackets1_15.STATISTICS);
// Login Success
- registerClientbound(State.LOGIN, 0x02, 0x02, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- // Transform string to a uuid
- UUID uuid = UUID.fromString(wrapper.read(Type.STRING));
- wrapper.write(Type.UUID, uuid);
- });
- }
+ registerClientbound(State.LOGIN, 0x02, 0x02, wrapper -> {
+ // Transform string to a uuid
+ UUID uuid = UUID.fromString(wrapper.read(Type.STRING));
+ wrapper.write(Type.UUID, uuid);
});
// Motd Status - line breaks are no longer allowed for player samples
- registerClientbound(State.STATUS, 0x00, 0x00, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- String original = wrapper.passthrough(Type.STRING);
- JsonObject object = GsonUtil.getGson().fromJson(original, JsonObject.class);
- JsonObject players = object.getAsJsonObject("players");
- if (players == null) return;
+ registerClientbound(State.STATUS, 0x00, 0x00, wrapper -> {
+ String original = wrapper.passthrough(Type.STRING);
+ JsonObject object = GsonUtil.getGson().fromJson(original, JsonObject.class);
+ JsonObject players = object.getAsJsonObject("players");
+ if (players == null) return;
- JsonArray sample = players.getAsJsonArray("sample");
- if (sample == null) return;
+ JsonArray sample = players.getAsJsonArray("sample");
+ if (sample == null) return;
- JsonArray splitSamples = new JsonArray();
- for (JsonElement element : sample) {
- JsonObject playerInfo = element.getAsJsonObject();
- String name = playerInfo.getAsJsonPrimitive("name").getAsString();
- if (name.indexOf('\n') == -1) {
- splitSamples.add(playerInfo);
- continue;
- }
+ JsonArray splitSamples = new JsonArray();
+ for (JsonElement element : sample) {
+ JsonObject playerInfo = element.getAsJsonObject();
+ String name = playerInfo.getAsJsonPrimitive("name").getAsString();
+ if (name.indexOf('\n') == -1) {
+ splitSamples.add(playerInfo);
+ continue;
+ }
- String id = playerInfo.getAsJsonPrimitive("id").getAsString();
- for (String s : name.split("\n")) {
- JsonObject newSample = new JsonObject();
- newSample.addProperty("name", s);
- newSample.addProperty("id", id);
- splitSamples.add(newSample);
- }
- }
+ String id = playerInfo.getAsJsonPrimitive("id").getAsString();
+ for (String s : name.split("\n")) {
+ JsonObject newSample = new JsonObject();
+ newSample.addProperty("name", s);
+ newSample.addProperty("id", id);
+ splitSamples.add(newSample);
+ }
+ }
- // Replace data if changed
- if (splitSamples.size() != sample.size()) {
- players.add("sample", splitSamples);
- wrapper.set(Type.STRING, 0, object.toString());
- }
- });
+ // Replace data if changed
+ if (splitSamples.size() != sample.size()) {
+ players.add("sample", splitSamples);
+ wrapper.set(Type.STRING, 0, object.toString());
}
});
@@ -148,27 +138,22 @@ public class Protocol1_16To1_15_2 extends AbstractProtocol {
- wrapper.passthrough(Type.VAR_INT); // Entity Id
- int action = wrapper.passthrough(Type.VAR_INT);
- if (action == 0 || action == 2) {
- if (action == 2) {
- // Location
- wrapper.passthrough(Type.FLOAT);
- wrapper.passthrough(Type.FLOAT);
- wrapper.passthrough(Type.FLOAT);
- }
+ registerServerbound(ServerboundPackets1_16.INTERACT_ENTITY, wrapper -> {
+ wrapper.passthrough(Type.VAR_INT); // Entity Id
+ int action = wrapper.passthrough(Type.VAR_INT);
+ if (action == 0 || action == 2) {
+ if (action == 2) {
+ // Location
+ wrapper.passthrough(Type.FLOAT);
+ wrapper.passthrough(Type.FLOAT);
+ wrapper.passthrough(Type.FLOAT);
+ }
- wrapper.passthrough(Type.VAR_INT); // Hand
- }
-
- // New boolean: Whether the client is sneaking/pressing shift
- wrapper.read(Type.BOOLEAN);
- });
+ wrapper.passthrough(Type.VAR_INT); // Hand
}
+
+ // New boolean: Whether the client is sneaking/pressing shift
+ wrapper.read(Type.BOOLEAN);
});
if (Via.getConfig().isIgnoreLong1_16ChannelNames()) {
@@ -209,16 +194,11 @@ public class Protocol1_16To1_15_2 extends AbstractProtocol {
- wrapper.passthrough(Type.BYTE);
- // Flying and walking speed - not important anyways
- wrapper.write(Type.FLOAT, 0.05F);
- wrapper.write(Type.FLOAT, 0.1F);
- });
- }
+ registerServerbound(ServerboundPackets1_16.PLAYER_ABILITIES, wrapper -> {
+ wrapper.passthrough(Type.BYTE);
+ // Flying and walking speed - not important anyways
+ wrapper.write(Type.FLOAT, 0.05F);
+ wrapper.write(Type.FLOAT, 0.1F);
});
cancelServerbound(ServerboundPackets1_16.GENERATE_JIGSAW);
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java
index 62336d3fb..8b83b82da 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java
@@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_16;
import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15;
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_15_2;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
public class MetadataRewriter1_16To1_15_2 extends EntityRewriter {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java
index 2e322f445..f477ff101 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java
@@ -38,7 +38,6 @@ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16;
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.metadata.MetadataRewriter1_16To1_15_2;
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.storage.InventoryTracker1_16;
-
import java.util.Arrays;
import java.util.UUID;
@@ -47,7 +46,7 @@ public class EntityPackets {
private static final PacketHandler DIMENSION_HANDLER = wrapper -> {
WorldIdentifiers map = Via.getConfig().get1_16WorldNamesMap();
WorldIdentifiers userMap = wrapper.user().get(WorldIdentifiers.class);
- if (userMap!=null){
+ if (userMap != null) {
map = userMap;
}
int dimension = wrapper.read(Type.INT);
@@ -159,34 +158,29 @@ public class EntityPackets {
MetadataRewriter1_16To1_15_2 metadataRewriter = protocol.get(MetadataRewriter1_16To1_15_2.class);
// Spawn lightning -> Spawn entity
- protocol.registerClientbound(ClientboundPackets1_15.SPAWN_GLOBAL_ENTITY, ClientboundPackets1_16.SPAWN_ENTITY, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int entityId = wrapper.passthrough(Type.VAR_INT);
- byte type = wrapper.read(Type.BYTE);
- if (type != 1) {
- // Cancel if not lightning/invalid id
- wrapper.cancel();
- return;
- }
-
- wrapper.user().getEntityTracker(Protocol1_16To1_15_2.class).addEntity(entityId, Entity1_16Types.LIGHTNING_BOLT);
-
- wrapper.write(Type.UUID, UUID.randomUUID()); // uuid
- wrapper.write(Type.VAR_INT, Entity1_16Types.LIGHTNING_BOLT.getId()); // entity type
-
- wrapper.passthrough(Type.DOUBLE); // x
- wrapper.passthrough(Type.DOUBLE); // y
- wrapper.passthrough(Type.DOUBLE); // z
- wrapper.write(Type.BYTE, (byte) 0); // yaw
- wrapper.write(Type.BYTE, (byte) 0); // pitch
- wrapper.write(Type.INT, 0); // data
- wrapper.write(Type.SHORT, (short) 0); // velocity
- wrapper.write(Type.SHORT, (short) 0); // velocity
- wrapper.write(Type.SHORT, (short) 0); // velocity
- });
+ protocol.registerClientbound(ClientboundPackets1_15.SPAWN_GLOBAL_ENTITY, ClientboundPackets1_16.SPAWN_ENTITY, wrapper -> {
+ int entityId = wrapper.passthrough(Type.VAR_INT);
+ byte type = wrapper.read(Type.BYTE);
+ if (type != 1) {
+ // Cancel if not lightning/invalid id
+ wrapper.cancel();
+ return;
}
+
+ wrapper.user().getEntityTracker(Protocol1_16To1_15_2.class).addEntity(entityId, Entity1_16Types.LIGHTNING_BOLT);
+
+ wrapper.write(Type.UUID, UUID.randomUUID()); // uuid
+ wrapper.write(Type.VAR_INT, Entity1_16Types.LIGHTNING_BOLT.getId()); // entity type
+
+ wrapper.passthrough(Type.DOUBLE); // x
+ wrapper.passthrough(Type.DOUBLE); // y
+ wrapper.passthrough(Type.DOUBLE); // z
+ wrapper.write(Type.BYTE, (byte) 0); // yaw
+ wrapper.write(Type.BYTE, (byte) 0); // pitch
+ wrapper.write(Type.INT, 0); // data
+ wrapper.write(Type.SHORT, (short) 0); // velocity
+ wrapper.write(Type.SHORT, (short) 0); // velocity
+ wrapper.write(Type.SHORT, (short) 0); // velocity
});
metadataRewriter.registerTrackerWithData(ClientboundPackets1_15.SPAWN_ENTITY, Entity1_16Types.FALLING_BLOCK);
@@ -239,62 +233,52 @@ public class EntityPackets {
}
});
- protocol.registerClientbound(ClientboundPackets1_15.ENTITY_PROPERTIES, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- wrapper.passthrough(Type.VAR_INT);
- int size = wrapper.passthrough(Type.INT);
- int actualSize = size;
- for (int i = 0; i < size; i++) {
- // Attributes have been renamed and are now namespaced identifiers
- String key = wrapper.read(Type.STRING);
- String attributeIdentifier = protocol.getMappingData().getAttributeMappings().get(key);
- if (attributeIdentifier == null) {
- attributeIdentifier = "minecraft:" + key;
- if (!com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.MappingData.isValid1_13Channel(attributeIdentifier)) {
- if (!Via.getConfig().isSuppressConversionWarnings()) {
- Via.getPlatform().getLogger().warning("Invalid attribute: " + key);
- }
- actualSize--;
- wrapper.read(Type.DOUBLE);
- int modifierSize = wrapper.read(Type.VAR_INT);
- for (int j = 0; j < modifierSize; j++) {
- wrapper.read(Type.UUID);
- wrapper.read(Type.DOUBLE);
- wrapper.read(Type.BYTE);
- }
- continue;
- }
+ protocol.registerClientbound(ClientboundPackets1_15.ENTITY_PROPERTIES, wrapper -> {
+ wrapper.passthrough(Type.VAR_INT);
+ int size = wrapper.passthrough(Type.INT);
+ int actualSize = size;
+ for (int i = 0; i < size; i++) {
+ // Attributes have been renamed and are now namespaced identifiers
+ String key = wrapper.read(Type.STRING);
+ String attributeIdentifier = protocol.getMappingData().getAttributeMappings().get(key);
+ if (attributeIdentifier == null) {
+ attributeIdentifier = "minecraft:" + key;
+ if (!com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.MappingData.isValid1_13Channel(attributeIdentifier)) {
+ if (!Via.getConfig().isSuppressConversionWarnings()) {
+ Via.getPlatform().getLogger().warning("Invalid attribute: " + key);
}
-
- wrapper.write(Type.STRING, attributeIdentifier);
-
- wrapper.passthrough(Type.DOUBLE);
- int modifierSize = wrapper.passthrough(Type.VAR_INT);
+ actualSize--;
+ wrapper.read(Type.DOUBLE);
+ int modifierSize = wrapper.read(Type.VAR_INT);
for (int j = 0; j < modifierSize; j++) {
- wrapper.passthrough(Type.UUID);
- wrapper.passthrough(Type.DOUBLE);
- wrapper.passthrough(Type.BYTE);
+ wrapper.read(Type.UUID);
+ wrapper.read(Type.DOUBLE);
+ wrapper.read(Type.BYTE);
}
+ continue;
}
- if (size != actualSize) {
- wrapper.set(Type.INT, 0, actualSize);
- }
- });
+ }
+
+ wrapper.write(Type.STRING, attributeIdentifier);
+
+ wrapper.passthrough(Type.DOUBLE);
+ int modifierSize = wrapper.passthrough(Type.VAR_INT);
+ for (int j = 0; j < modifierSize; j++) {
+ wrapper.passthrough(Type.UUID);
+ wrapper.passthrough(Type.DOUBLE);
+ wrapper.passthrough(Type.BYTE);
+ }
+ }
+ if (size != actualSize) {
+ wrapper.set(Type.INT, 0, actualSize);
}
});
- protocol.registerServerbound(ServerboundPackets1_16.ANIMATION, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- InventoryTracker1_16 inventoryTracker = wrapper.user().get(InventoryTracker1_16.class);
- // Don't send an arm swing if the player has an inventory opened.
- if (inventoryTracker.getInventory() != -1) {
- wrapper.cancel();
- }
- });
+ protocol.registerServerbound(ServerboundPackets1_16.ANIMATION, wrapper -> {
+ InventoryTracker1_16 inventoryTracker = wrapper.user().get(InventoryTracker1_16.class);
+ // Don't send an arm swing if the player has an inventory opened.
+ if (inventoryTracker.getInventory() != -1) {
+ wrapper.cancel();
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java
index d0c165746..597e953d4 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java
@@ -37,7 +37,6 @@ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16;
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.storage.InventoryTracker1_16;
import com.viaversion.viaversion.rewriter.ItemRewriter;
-
import java.util.UUID;
public class InventoryPackets extends ItemRewriter {
@@ -51,8 +50,8 @@ public class InventoryPackets extends ItemRewriter {
PacketWrapper clearPacket = wrapper.create(ClientboundPackets1_16.SET_SLOT);
- clearPacket.write(Type.UNSIGNED_BYTE, (short)-1);
- clearPacket.write(Type.SHORT, (short)-1);
+ clearPacket.write(Type.UNSIGNED_BYTE, (short) -1);
+ clearPacket.write(Type.SHORT, (short) -1);
clearPacket.write(Type.FLAT_VAR_INT_ITEM, null);
clearPacket.send(Protocol1_16To1_15_2.class);
};
@@ -131,22 +130,12 @@ public class InventoryPackets extends ItemRewriter {
- InventoryTracker1_16 inventoryTracker = wrapper.user().get(InventoryTracker1_16.class);
- inventoryTracker.setInventory((short) -1);
- });
- }
+ protocol.registerServerbound(ServerboundPackets1_16.CLOSE_WINDOW, wrapper -> {
+ InventoryTracker1_16 inventoryTracker = wrapper.user().get(InventoryTracker1_16.class);
+ inventoryTracker.setInventory((short) -1);
});
- protocol.registerServerbound(ServerboundPackets1_16.EDIT_BOOK, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)));
- }
- });
+ protocol.registerServerbound(ServerboundPackets1_16.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)));
registerSpawnParticle(ClientboundPackets1_15.SPAWN_PARTICLE, Type.FLAT_VAR_INT_ITEM, Type.DOUBLE);
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java
index 8e9ca20d4..2e8fcb929 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java
@@ -23,7 +23,6 @@ import com.github.steveice10.opennbt.tag.builtin.LongArrayTag;
import com.github.steveice10.opennbt.tag.builtin.StringTag;
import com.github.steveice10.opennbt.tag.builtin.Tag;
import com.google.gson.JsonElement;
-import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
@@ -37,7 +36,6 @@ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.types.Chunk1_16Type;
import com.viaversion.viaversion.rewriter.BlockRewriter;
import com.viaversion.viaversion.util.CompactArrayUtil;
-
import java.util.Map;
import java.util.UUID;
@@ -60,54 +58,44 @@ public class WorldPackets {
}
});
- protocol.registerClientbound(ClientboundPackets1_15.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- Chunk chunk = wrapper.read(new Chunk1_15Type());
- wrapper.write(new Chunk1_16Type(), chunk);
+ protocol.registerClientbound(ClientboundPackets1_15.CHUNK_DATA, wrapper -> {
+ Chunk chunk = wrapper.read(new Chunk1_15Type());
+ wrapper.write(new Chunk1_16Type(), chunk);
- chunk.setIgnoreOldLightData(chunk.isFullChunk());
+ chunk.setIgnoreOldLightData(chunk.isFullChunk());
- for (int s = 0; s < chunk.getSections().length; s++) {
- ChunkSection section = chunk.getSections()[s];
- if (section == null) {
- continue;
- }
+ for (int s = 0; s < chunk.getSections().length; s++) {
+ ChunkSection section = chunk.getSections()[s];
+ if (section == null) {
+ continue;
+ }
- DataPalette palette = section.palette(PaletteType.BLOCKS);
- for (int i = 0; i < palette.size(); i++) {
- int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
- palette.setIdByIndex(i, mappedBlockStateId);
- }
- }
+ DataPalette palette = section.palette(PaletteType.BLOCKS);
+ for (int i = 0; i < palette.size(); i++) {
+ int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
+ palette.setIdByIndex(i, mappedBlockStateId);
+ }
+ }
- CompoundTag heightMaps = chunk.getHeightMap();
- 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);
- heightMap.setValue(CompactArrayUtil.createCompactArrayWithPadding(9, heightMapData.length, i -> heightMapData[i]));
- }
+ CompoundTag heightMaps = chunk.getHeightMap();
+ 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);
+ heightMap.setValue(CompactArrayUtil.createCompactArrayWithPadding(9, heightMapData.length, i -> heightMapData[i]));
+ }
- if (chunk.getBlockEntities() == null) return;
- for (CompoundTag blockEntity : chunk.getBlockEntities()) {
- handleBlockEntity(protocol, blockEntity);
- }
- });
+ if (chunk.getBlockEntities() == null) return;
+ for (CompoundTag blockEntity : chunk.getBlockEntities()) {
+ handleBlockEntity(protocol, blockEntity);
}
});
- protocol.registerClientbound(ClientboundPackets1_15.BLOCK_ENTITY_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- Position position = wrapper.passthrough(Type.POSITION1_14);
- short action = wrapper.passthrough(Type.UNSIGNED_BYTE);
- CompoundTag tag = wrapper.passthrough(Type.NBT);
- handleBlockEntity(protocol, tag);
- });
- }
+ protocol.registerClientbound(ClientboundPackets1_15.BLOCK_ENTITY_DATA, wrapper -> {
+ wrapper.passthrough(Type.POSITION1_14); // Position
+ wrapper.passthrough(Type.UNSIGNED_BYTE); // Action
+ CompoundTag tag = wrapper.passthrough(Type.NBT);
+ handleBlockEntity(protocol, tag);
});
blockRewriter.registerEffect(ClientboundPackets1_15.EFFECT, 1010, 2001);
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java
index 491a50508..1c26136b8 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.Types1_16;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java
index 2026125e8..274776f0c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java
@@ -40,15 +40,10 @@ public final class Protocol1_17_1To1_17 extends AbstractProtocol {
- // Aaaaand back to an array again!
- int entityId = wrapper.read(Type.VAR_INT);
- wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{entityId});
- });
- }
+ registerClientbound(ClientboundPackets1_17.REMOVE_ENTITY, ClientboundPackets1_17_1.REMOVE_ENTITIES, wrapper -> {
+ // Aaaaand back to an array again!
+ int entityId = wrapper.read(Type.VAR_INT);
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{entityId});
});
registerClientbound(ClientboundPackets1_17.SET_SLOT, new PacketHandlers() {
@@ -82,51 +77,46 @@ public final class Protocol1_17_1To1_17 extends AbstractProtocol {
- CompoundTag tag = new CompoundTag();
- Item item = new DataItem(942, (byte) 1, (short) 0, tag); // Magic value for writable books
+ registerServerbound(ServerboundPackets1_17.EDIT_BOOK, wrapper -> {
+ CompoundTag tag = new CompoundTag();
+ Item item = new DataItem(942, (byte) 1, (short) 0, tag); // Magic value for writable books
- // Write the item, edit the tag down the line
- wrapper.write(Type.FLAT_VAR_INT_ITEM, item);
+ // Write the item, edit the tag down the line
+ wrapper.write(Type.FLAT_VAR_INT_ITEM, item);
- int slot = wrapper.read(Type.VAR_INT);
+ int slot = wrapper.read(Type.VAR_INT);
- // Save pages to tag
- int pages = wrapper.read(Type.VAR_INT);
- ListTag pagesTag = new ListTag(StringTag.class);
- for (int i = 0; i < pages; i++) {
- String page = wrapper.read(PAGE_STRING_TYPE);
- pagesTag.add(new StringTag(page));
- }
-
- // Legacy servers don't like an empty pages list
- if (pagesTag.size() == 0) {
- pagesTag.add(new StringTag(""));
- }
-
- tag.put("pages", pagesTag);
-
- if (wrapper.read(Type.BOOLEAN)) {
- // Save the title to tag
- String title = wrapper.read(TITLE_STRING_TYPE);
- tag.put("title", new StringTag(title));
-
- // Even if unused, legacy servers check for the author tag
- tag.put("author", new StringTag(wrapper.user().getProtocolInfo().getUsername()));
-
- // Write signing
- wrapper.write(Type.BOOLEAN, true);
- } else {
- wrapper.write(Type.BOOLEAN, false);
- }
-
- // Write the slot
- wrapper.write(Type.VAR_INT, slot);
- });
+ // Save pages to tag
+ int pages = wrapper.read(Type.VAR_INT);
+ ListTag pagesTag = new ListTag(StringTag.class);
+ for (int i = 0; i < pages; i++) {
+ String page = wrapper.read(PAGE_STRING_TYPE);
+ pagesTag.add(new StringTag(page));
}
+
+ // Legacy servers don't like an empty pages list
+ if (pagesTag.size() == 0) {
+ pagesTag.add(new StringTag(""));
+ }
+
+ tag.put("pages", pagesTag);
+
+ if (wrapper.read(Type.BOOLEAN)) {
+ // Save the title to tag
+ String title = wrapper.read(TITLE_STRING_TYPE);
+ tag.put("title", new StringTag(title));
+
+ // Even if unused, legacy servers check for the author tag
+ tag.put("author", new StringTag(wrapper.user().getProtocolInfo().getUsername()));
+
+ // Write signing
+ wrapper.write(Type.BOOLEAN, true);
+ } else {
+ wrapper.write(Type.BOOLEAN, false);
+ }
+
+ // Write the slot
+ wrapper.write(Type.VAR_INT, slot);
});
}
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java
index d395603eb..d666a05fd 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java
@@ -59,33 +59,28 @@ public final class Protocol1_17To1_16_4 extends AbstractProtocol {
- // Tags are now generically written with resource location - 5 different Vanilla types
- wrapper.write(Type.VAR_INT, 5);
- for (RegistryType type : RegistryType.getValues()) {
- // Prefix with resource location
- wrapper.write(Type.STRING, type.resourceLocation());
+ registerClientbound(ClientboundPackets1_16_2.TAGS, wrapper -> {
+ // Tags are now generically written with resource location - 5 different Vanilla types
+ wrapper.write(Type.VAR_INT, 5);
+ for (RegistryType type : RegistryType.getValues()) {
+ // Prefix with resource location
+ wrapper.write(Type.STRING, type.resourceLocation());
- // Id conversion
- tagRewriter.handle(wrapper, tagRewriter.getRewriter(type), tagRewriter.getNewTags(type));
+ // Id conversion
+ tagRewriter.handle(wrapper, tagRewriter.getRewriter(type), tagRewriter.getNewTags(type));
- // Stop iterating after entity types
- if (type == RegistryType.ENTITY) {
- break;
- }
- }
+ // Stop iterating after entity types
+ if (type == RegistryType.ENTITY) {
+ break;
+ }
+ }
- // New Game Event tags type
- wrapper.write(Type.STRING, RegistryType.GAME_EVENT.resourceLocation());
- wrapper.write(Type.VAR_INT, NEW_GAME_EVENT_TAGS.length);
- for (String tag : NEW_GAME_EVENT_TAGS) {
- wrapper.write(Type.STRING, tag);
- wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[0]);
- }
- });
+ // New Game Event tags type
+ wrapper.write(Type.STRING, RegistryType.GAME_EVENT.resourceLocation());
+ wrapper.write(Type.VAR_INT, NEW_GAME_EVENT_TAGS.length);
+ for (String tag : NEW_GAME_EVENT_TAGS) {
+ wrapper.write(Type.STRING, tag);
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[0]);
}
});
@@ -95,74 +90,59 @@ public final class Protocol1_17To1_16_4 extends AbstractProtocol {
- wrapper.passthrough(Type.STRING);
- wrapper.passthrough(Type.STRING);
- wrapper.write(Type.BOOLEAN, Via.getConfig().isForcedUse1_17ResourcePack()); // Required
- wrapper.write(Type.OPTIONAL_COMPONENT, Via.getConfig().get1_17ResourcePackPrompt()); // Prompt message
- });
+ registerClientbound(ClientboundPackets1_16_2.RESOURCE_PACK, wrapper -> {
+ wrapper.passthrough(Type.STRING);
+ wrapper.passthrough(Type.STRING);
+ wrapper.write(Type.BOOLEAN, Via.getConfig().isForcedUse1_17ResourcePack()); // Required
+ wrapper.write(Type.OPTIONAL_COMPONENT, Via.getConfig().get1_17ResourcePackPrompt()); // Prompt message
+ });
+
+ registerClientbound(ClientboundPackets1_16_2.MAP_DATA, wrapper -> {
+ wrapper.passthrough(Type.VAR_INT);
+ wrapper.passthrough(Type.BYTE);
+ wrapper.read(Type.BOOLEAN); // Tracking position removed
+ wrapper.passthrough(Type.BOOLEAN);
+
+ int size = wrapper.read(Type.VAR_INT);
+ // Write whether markers exists or not
+ if (size != 0) {
+ wrapper.write(Type.BOOLEAN, true);
+ wrapper.write(Type.VAR_INT, size);
+ } else {
+ wrapper.write(Type.BOOLEAN, false);
}
});
- registerClientbound(ClientboundPackets1_16_2.MAP_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- wrapper.passthrough(Type.VAR_INT);
- wrapper.passthrough(Type.BYTE);
- wrapper.read(Type.BOOLEAN); // Tracking position removed
- wrapper.passthrough(Type.BOOLEAN);
-
- int size = wrapper.read(Type.VAR_INT);
- // Write whether markers exists or not
- if (size != 0) {
- wrapper.write(Type.BOOLEAN, true);
- wrapper.write(Type.VAR_INT, size);
- } else {
- wrapper.write(Type.BOOLEAN, false);
- }
- });
+ registerClientbound(ClientboundPackets1_16_2.TITLE, null, wrapper -> {
+ // Title packet actions have been split into individual packets (the content hasn't changed)
+ int type = wrapper.read(Type.VAR_INT);
+ ClientboundPacketType packetType;
+ switch (type) {
+ case 0:
+ packetType = ClientboundPackets1_17.TITLE_TEXT;
+ break;
+ case 1:
+ packetType = ClientboundPackets1_17.TITLE_SUBTITLE;
+ break;
+ case 2:
+ packetType = ClientboundPackets1_17.ACTIONBAR;
+ break;
+ case 3:
+ packetType = ClientboundPackets1_17.TITLE_TIMES;
+ break;
+ case 4:
+ packetType = ClientboundPackets1_17.CLEAR_TITLES;
+ wrapper.write(Type.BOOLEAN, false); // Reset times
+ break;
+ case 5:
+ packetType = ClientboundPackets1_17.CLEAR_TITLES;
+ wrapper.write(Type.BOOLEAN, true); // Reset times
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid title type received: " + type);
}
- });
- registerClientbound(ClientboundPackets1_16_2.TITLE, null, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- // Title packet actions have been split into individual packets (the content hasn't changed)
- int type = wrapper.read(Type.VAR_INT);
- ClientboundPacketType packetType;
- switch (type) {
- case 0:
- packetType = ClientboundPackets1_17.TITLE_TEXT;
- break;
- case 1:
- packetType = ClientboundPackets1_17.TITLE_SUBTITLE;
- break;
- case 2:
- packetType = ClientboundPackets1_17.ACTIONBAR;
- break;
- case 3:
- packetType = ClientboundPackets1_17.TITLE_TIMES;
- break;
- case 4:
- packetType = ClientboundPackets1_17.CLEAR_TITLES;
- wrapper.write(Type.BOOLEAN, false); // Reset times
- break;
- case 5:
- packetType = ClientboundPackets1_17.CLEAR_TITLES;
- wrapper.write(Type.BOOLEAN, true); // Reset times
- break;
- default:
- throw new IllegalArgumentException("Invalid title type received: " + type);
- }
-
- wrapper.setPacketType(packetType);
- });
- }
+ wrapper.setPacketType(packetType);
});
registerClientbound(ClientboundPackets1_16_2.EXPLOSION, new PacketHandlers() {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java
index d0e5ea859..ef34a4a6e 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java
@@ -50,23 +50,18 @@ public final class EntityPackets extends EntityRewriter {
- int[] entityIds = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE);
- wrapper.cancel();
+ protocol.registerClientbound(ClientboundPackets1_16_2.DESTROY_ENTITIES, null, wrapper -> {
+ int[] entityIds = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE);
+ wrapper.cancel();
- EntityTracker entityTracker = wrapper.user().getEntityTracker(Protocol1_17To1_16_4.class);
- for (int entityId : entityIds) {
- entityTracker.removeEntity(entityId);
+ EntityTracker entityTracker = wrapper.user().getEntityTracker(Protocol1_17To1_16_4.class);
+ for (int entityId : entityIds) {
+ entityTracker.removeEntity(entityId);
- // Send individual remove packets
- PacketWrapper newPacket = wrapper.create(ClientboundPackets1_17.REMOVE_ENTITY);
- newPacket.write(Type.VAR_INT, entityId);
- newPacket.send(Protocol1_17To1_16_4.class);
- }
- });
+ // Send individual remove packets
+ PacketWrapper newPacket = wrapper.create(ClientboundPackets1_17.REMOVE_ENTITY);
+ newPacket.write(Type.VAR_INT, entityId);
+ newPacket.send(Protocol1_17To1_16_4.class);
}
});
@@ -96,14 +91,9 @@ public final class EntityPackets extends EntityRewriter {
- CompoundTag dimensionData = wrapper.passthrough(Type.NBT);
- addNewDimensionData(dimensionData);
- });
- }
+ protocol.registerClientbound(ClientboundPackets1_16_2.RESPAWN, wrapper -> {
+ CompoundTag dimensionData = wrapper.passthrough(Type.NBT);
+ addNewDimensionData(dimensionData);
});
protocol.registerClientbound(ClientboundPackets1_16_2.ENTITY_PROPERTIES, new PacketHandlers() {
@@ -134,30 +124,25 @@ public final class EntityPackets extends EntityRewriter {
- // Combat packet actions have been split into individual packets (the content hasn't changed)
- int type = wrapper.read(Type.VAR_INT);
- ClientboundPacketType packetType;
- switch (type) {
- case 0:
- packetType = ClientboundPackets1_17.COMBAT_ENTER;
- break;
- case 1:
- packetType = ClientboundPackets1_17.COMBAT_END;
- break;
- case 2:
- packetType = ClientboundPackets1_17.COMBAT_KILL;
- break;
- default:
- throw new IllegalArgumentException("Invalid combat type received: " + type);
- }
-
- wrapper.setPacketType(packetType);
- });
+ protocol.registerClientbound(ClientboundPackets1_16_2.COMBAT_EVENT, null, wrapper -> {
+ // Combat packet actions have been split into individual packets (the content hasn't changed)
+ int type = wrapper.read(Type.VAR_INT);
+ ClientboundPacketType packetType;
+ switch (type) {
+ case 0:
+ packetType = ClientboundPackets1_17.COMBAT_ENTER;
+ break;
+ case 1:
+ packetType = ClientboundPackets1_17.COMBAT_END;
+ break;
+ case 2:
+ packetType = ClientboundPackets1_17.COMBAT_KILL;
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid combat type received: " + type);
}
+
+ wrapper.setPacketType(packetType);
});
// The parent class of the other entity move packets that is never actually used has finally been removed from the id list
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/InventoryPackets.java
index 478615439..3faef58e6 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/InventoryPackets.java
@@ -50,12 +50,7 @@ public final class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)));
- }
- });
+ protocol.registerServerbound(ServerboundPackets1_17.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)));
protocol.registerServerbound(ServerboundPackets1_17.CLICK_WINDOW, new PacketHandlers() {
@Override
@@ -92,49 +87,39 @@ public final class InventoryPackets extends ItemRewriter {
- short inventoryId = wrapper.read(Type.UNSIGNED_BYTE);
- short confirmationId = wrapper.read(Type.SHORT);
- boolean accepted = wrapper.read(Type.BOOLEAN);
- if (!accepted) {
- // Use the new ping packet to replace the removed acknowledgement, extra bit for fast dismissal
- int id = (1 << 30) | (inventoryId << 16) | (confirmationId & 0xFFFF);
- wrapper.user().get(InventoryAcknowledgements.class).addId(id);
+ protocol.registerClientbound(ClientboundPackets1_16_2.WINDOW_CONFIRMATION, null, wrapper -> {
+ short inventoryId = wrapper.read(Type.UNSIGNED_BYTE);
+ short confirmationId = wrapper.read(Type.SHORT);
+ boolean accepted = wrapper.read(Type.BOOLEAN);
+ if (!accepted) {
+ // Use the new ping packet to replace the removed acknowledgement, extra bit for fast dismissal
+ int id = (1 << 30) | (inventoryId << 16) | (confirmationId & 0xFFFF);
+ wrapper.user().get(InventoryAcknowledgements.class).addId(id);
- PacketWrapper pingPacket = wrapper.create(ClientboundPackets1_17.PING);
- pingPacket.write(Type.INT, id);
- pingPacket.send(Protocol1_17To1_16_4.class);
- }
-
- wrapper.cancel();
- });
+ PacketWrapper pingPacket = wrapper.create(ClientboundPackets1_17.PING);
+ pingPacket.write(Type.INT, id);
+ pingPacket.send(Protocol1_17To1_16_4.class);
}
+
+ wrapper.cancel();
});
// New pong packet
- protocol.registerServerbound(ServerboundPackets1_17.PONG, null, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int id = wrapper.read(Type.INT);
- // Check extra bit for fast dismissal
- if ((id & (1 << 30)) != 0 && wrapper.user().get(InventoryAcknowledgements.class).removeId(id)) {
- // Decode our requested inventory acknowledgement
- short inventoryId = (short) ((id >> 16) & 0xFF);
- short confirmationId = (short) (id & 0xFFFF);
- PacketWrapper packet = wrapper.create(ServerboundPackets1_16_2.WINDOW_CONFIRMATION);
- packet.write(Type.UNSIGNED_BYTE, inventoryId);
- packet.write(Type.SHORT, confirmationId);
- packet.write(Type.BOOLEAN, true); // Accept
- packet.sendToServer(Protocol1_17To1_16_4.class);
- }
-
- wrapper.cancel();
- });
+ protocol.registerServerbound(ServerboundPackets1_17.PONG, null, wrapper -> {
+ int id = wrapper.read(Type.INT);
+ // Check extra bit for fast dismissal
+ if ((id & (1 << 30)) != 0 && wrapper.user().get(InventoryAcknowledgements.class).removeId(id)) {
+ // Decode our requested inventory acknowledgement
+ short inventoryId = (short) ((id >> 16) & 0xFF);
+ short confirmationId = (short) (id & 0xFFFF);
+ PacketWrapper packet = wrapper.create(ServerboundPackets1_16_2.WINDOW_CONFIRMATION);
+ packet.write(Type.UNSIGNED_BYTE, inventoryId);
+ packet.write(Type.SHORT, confirmationId);
+ packet.write(Type.BOOLEAN, true); // Accept
+ packet.sendToServer(Protocol1_17To1_16_4.class);
}
+
+ wrapper.cancel();
});
}
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java
index fc6fff8a6..1bccdc514 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java
@@ -33,7 +33,6 @@ import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPacke
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4;
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.types.Chunk1_17Type;
import com.viaversion.viaversion.rewriter.BlockRewriter;
-
import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
@@ -48,39 +47,34 @@ public final class WorldPackets {
blockRewriter.registerVarLongMultiBlockChange(ClientboundPackets1_16_2.MULTI_BLOCK_CHANGE);
blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16_2.ACKNOWLEDGE_PLAYER_DIGGING);
- protocol.registerClientbound(ClientboundPackets1_16_2.WORLD_BORDER, null, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- // Border packet actions have been split into individual packets (the content hasn't changed)
- int type = wrapper.read(Type.VAR_INT);
- ClientboundPacketType packetType;
- switch (type) {
- case 0:
- packetType = ClientboundPackets1_17.WORLD_BORDER_SIZE;
- break;
- case 1:
- packetType = ClientboundPackets1_17.WORLD_BORDER_LERP_SIZE;
- break;
- case 2:
- packetType = ClientboundPackets1_17.WORLD_BORDER_CENTER;
- break;
- case 3:
- packetType = ClientboundPackets1_17.WORLD_BORDER_INIT;
- break;
- case 4:
- packetType = ClientboundPackets1_17.WORLD_BORDER_WARNING_DELAY;
- break;
- case 5:
- packetType = ClientboundPackets1_17.WORLD_BORDER_WARNING_DISTANCE;
- break;
- default:
- throw new IllegalArgumentException("Invalid world border type received: " + type);
- }
-
- wrapper.setPacketType(packetType);
- });
+ protocol.registerClientbound(ClientboundPackets1_16_2.WORLD_BORDER, null, wrapper -> {
+ // Border packet actions have been split into individual packets (the content hasn't changed)
+ int type = wrapper.read(Type.VAR_INT);
+ ClientboundPacketType packetType;
+ switch (type) {
+ case 0:
+ packetType = ClientboundPackets1_17.WORLD_BORDER_SIZE;
+ break;
+ case 1:
+ packetType = ClientboundPackets1_17.WORLD_BORDER_LERP_SIZE;
+ break;
+ case 2:
+ packetType = ClientboundPackets1_17.WORLD_BORDER_CENTER;
+ break;
+ case 3:
+ packetType = ClientboundPackets1_17.WORLD_BORDER_INIT;
+ break;
+ case 4:
+ packetType = ClientboundPackets1_17.WORLD_BORDER_WARNING_DELAY;
+ break;
+ case 5:
+ packetType = ClientboundPackets1_17.WORLD_BORDER_WARNING_DISTANCE;
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid world border type received: " + type);
}
+
+ wrapper.setPacketType(packetType);
});
protocol.registerClientbound(ClientboundPackets1_16_2.UPDATE_LIGHT, new PacketHandlers() {
@@ -127,40 +121,35 @@ public final class WorldPackets {
}
});
- protocol.registerClientbound(ClientboundPackets1_16_2.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- Chunk chunk = wrapper.read(new Chunk1_16_2Type());
- if (!chunk.isFullChunk()) {
- // All chunks are full chunk packets now (1.16 already stopped sending non-full chunks)
- // Construct multi block change packets instead
- // Height map updates are lost (unless we want to fully cache and resend entire chunks)
- // Block entities are always empty for non-full chunks in Vanilla
- writeMultiBlockChangePacket(wrapper, chunk);
- wrapper.cancel();
- return;
- }
+ protocol.registerClientbound(ClientboundPackets1_16_2.CHUNK_DATA, wrapper -> {
+ Chunk chunk = wrapper.read(new Chunk1_16_2Type());
+ if (!chunk.isFullChunk()) {
+ // All chunks are full chunk packets now (1.16 already stopped sending non-full chunks)
+ // Construct multi block change packets instead
+ // Height map updates are lost (unless we want to fully cache and resend entire chunks)
+ // Block entities are always empty for non-full chunks in Vanilla
+ writeMultiBlockChangePacket(wrapper, chunk);
+ wrapper.cancel();
+ return;
+ }
- // Normal full chunk writing
- wrapper.write(new Chunk1_17Type(chunk.getSections().length), chunk);
+ // Normal full chunk writing
+ wrapper.write(new Chunk1_17Type(chunk.getSections().length), chunk);
- // 1.17 uses a bitset for the mask
- chunk.setChunkMask(BitSet.valueOf(new long[]{chunk.getBitmask()}));
+ // 1.17 uses a bitset for the mask
+ chunk.setChunkMask(BitSet.valueOf(new long[]{chunk.getBitmask()}));
- for (int s = 0; s < chunk.getSections().length; s++) {
- ChunkSection section = chunk.getSections()[s];
- if (section == null) {
- continue;
- }
+ for (int s = 0; s < chunk.getSections().length; s++) {
+ ChunkSection section = chunk.getSections()[s];
+ if (section == null) {
+ continue;
+ }
- DataPalette palette = section.palette(PaletteType.BLOCKS);
- for (int i = 0; i < palette.size(); i++) {
- int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
- palette.setIdByIndex(i, mappedBlockStateId);
- }
- }
- });
+ DataPalette palette = section.palette(PaletteType.BLOCKS);
+ for (int i = 0; i < palette.size(); i++) {
+ int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i));
+ palette.setIdByIndex(i, mappedBlockStateId);
+ }
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/types/Chunk1_17Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/types/Chunk1_17Type.java
index af279b844..ddcaeb3be 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/types/Chunk1_17Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/types/Chunk1_17Type.java
@@ -27,7 +27,6 @@ import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.Types1_16;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18_2to1_18/Protocol1_18_2To1_18.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18_2to1_18/Protocol1_18_2To1_18.java
index 3102aec33..2d15380a1 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18_2to1_18/Protocol1_18_2To1_18.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18_2to1_18/Protocol1_18_2To1_18.java
@@ -80,12 +80,7 @@ public final class Protocol1_18_2To1_18 extends AbstractProtocol addTagPrefix(wrapper.passthrough(Type.NBT)));
- }
- });
+ registerClientbound(ClientboundPackets1_18.RESPAWN, wrapper -> addTagPrefix(wrapper.passthrough(Type.NBT)));
}
private void addTagPrefix(CompoundTag tag) {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/BlockEntityIds.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/BlockEntityIds.java
index 3c716c3ed..a3228621c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/BlockEntityIds.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/BlockEntityIds.java
@@ -18,7 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_18to1_17_1;
import com.viaversion.viaversion.api.Via;
-
import java.util.Arrays;
public final class BlockEntityIds {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java
index bea1356e7..e80fcbe9f 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java
@@ -25,7 +25,12 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.data.entity.EntityTracker;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntityImpl;
-import com.viaversion.viaversion.api.minecraft.chunks.*;
+import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
+import com.viaversion.viaversion.api.minecraft.chunks.Chunk1_18;
+import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
+import com.viaversion.viaversion.api.minecraft.chunks.ChunkSectionImpl;
+import com.viaversion.viaversion.api.minecraft.chunks.DataPaletteImpl;
+import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_17_1to1_17.ClientboundPackets1_17_1;
@@ -35,7 +40,6 @@ import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.Protocol1_18To1_
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.storage.ChunkLightStorage;
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.types.Chunk1_18Type;
import com.viaversion.viaversion.util.MathUtil;
-
import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
@@ -57,157 +61,142 @@ public final class WorldPackets {
}
});
- protocol.registerClientbound(ClientboundPackets1_17_1.UPDATE_LIGHT, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- final int chunkX = wrapper.passthrough(Type.VAR_INT);
- final int chunkZ = wrapper.passthrough(Type.VAR_INT);
+ protocol.registerClientbound(ClientboundPackets1_17_1.UPDATE_LIGHT, wrapper -> {
+ final int chunkX = wrapper.passthrough(Type.VAR_INT);
+ final int chunkZ = wrapper.passthrough(Type.VAR_INT);
- if (wrapper.user().get(ChunkLightStorage.class).isLoaded(chunkX, chunkZ)) {
- if (!Via.getConfig().cache1_17Light()) {
- // Light packets updating already sent chunks are the same as before
- return;
- }
- // Pass through and cache light data
- } else {
- // Cancel and cache the light data
- wrapper.cancel();
- }
+ if (wrapper.user().get(ChunkLightStorage.class).isLoaded(chunkX, chunkZ)) {
+ if (!Via.getConfig().cache1_17Light()) {
+ // Light packets updating already sent chunks are the same as before
+ return;
+ }
+ // Pass through and cache light data
+ } else {
+ // Cancel and cache the light data
+ wrapper.cancel();
+ }
- final boolean trustEdges = wrapper.passthrough(Type.BOOLEAN);
- final long[] skyLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE);
- final long[] blockLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE);
- final long[] emptySkyLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE);
- final long[] emptyBlockLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE);
+ final boolean trustEdges = wrapper.passthrough(Type.BOOLEAN);
+ final long[] skyLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE);
+ final long[] blockLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE);
+ final long[] emptySkyLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE);
+ final long[] emptyBlockLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE);
- final int skyLightLenght = wrapper.passthrough(Type.VAR_INT);
- final byte[][] skyLight = new byte[skyLightLenght][];
- for (int i = 0; i < skyLightLenght; i++) {
- skyLight[i] = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE);
- }
+ final int skyLightLenght = wrapper.passthrough(Type.VAR_INT);
+ final byte[][] skyLight = new byte[skyLightLenght][];
+ for (int i = 0; i < skyLightLenght; i++) {
+ skyLight[i] = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE);
+ }
- final int blockLightLength = wrapper.passthrough(Type.VAR_INT);
- final byte[][] blockLight = new byte[blockLightLength][];
- for (int i = 0; i < blockLightLength; i++) {
- blockLight[i] = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE);
- }
+ final int blockLightLength = wrapper.passthrough(Type.VAR_INT);
+ final byte[][] blockLight = new byte[blockLightLength][];
+ for (int i = 0; i < blockLightLength; i++) {
+ blockLight[i] = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE);
+ }
- final ChunkLightStorage lightStorage = wrapper.user().get(ChunkLightStorage.class);
- lightStorage.storeLight(chunkX, chunkZ,
- new ChunkLightStorage.ChunkLight(trustEdges, skyLightMask, blockLightMask,
- emptySkyLightMask, emptyBlockLightMask, skyLight, blockLight));
- });
+ final ChunkLightStorage lightStorage = wrapper.user().get(ChunkLightStorage.class);
+ lightStorage.storeLight(chunkX, chunkZ,
+ new ChunkLightStorage.ChunkLight(trustEdges, skyLightMask, blockLightMask,
+ emptySkyLightMask, emptyBlockLightMask, skyLight, blockLight));
+ });
+
+ protocol.registerClientbound(ClientboundPackets1_17_1.CHUNK_DATA, wrapper -> {
+ final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
+ final Chunk oldChunk = wrapper.read(new Chunk1_17Type(tracker.currentWorldSectionHeight()));
+
+ final List blockEntities = new ArrayList<>(oldChunk.getBlockEntities().size());
+ for (final CompoundTag tag : oldChunk.getBlockEntities()) {
+ final NumberTag xTag = tag.get("x");
+ final NumberTag yTag = tag.get("y");
+ final NumberTag zTag = tag.get("z");
+ final StringTag idTag = tag.get("id");
+ if (xTag == null || yTag == null || zTag == null || idTag == null) {
+ continue;
+ }
+
+ final String id = idTag.getValue();
+ final int typeId = protocol.getMappingData().blockEntityIds().getInt(id.replace("minecraft:", ""));
+ if (typeId == -1) {
+ Via.getPlatform().getLogger().warning("Unknown block entity: " + id);
+ }
+
+ handleSpawners(typeId, tag);
+
+ final byte packedXZ = (byte) ((xTag.asInt() & 15) << 4 | (zTag.asInt() & 15));
+ blockEntities.add(new BlockEntityImpl(packedXZ, yTag.asShort(), typeId, tag));
+ }
+
+ final int[] biomeData = oldChunk.getBiomeData();
+ final ChunkSection[] sections = oldChunk.getSections();
+ for (int i = 0; i < sections.length; i++) {
+ ChunkSection section = sections[i];
+ if (section == null) {
+ // There's no section mask anymore
+ section = new ChunkSectionImpl();
+ sections[i] = section;
+ section.setNonAirBlocksCount(0);
+
+ final DataPaletteImpl blockPalette = new DataPaletteImpl(ChunkSection.SIZE);
+ blockPalette.addId(0);
+ section.addPalette(PaletteType.BLOCKS, blockPalette);
+ }
+
+ // Fill biome palette
+ final DataPaletteImpl biomePalette = new DataPaletteImpl(ChunkSection.BIOME_SIZE);
+ section.addPalette(PaletteType.BIOMES, biomePalette);
+
+ final int offset = i * ChunkSection.BIOME_SIZE;
+ for (int biomeIndex = 0, biomeArrayIndex = offset; biomeIndex < ChunkSection.BIOME_SIZE; biomeIndex++, biomeArrayIndex++) {
+ // Also catch invalid biomes with id -1
+ final int biome = biomeData[biomeArrayIndex];
+ biomePalette.setIdAt(biomeIndex, biome != -1 ? biome : 0);
+ }
+ }
+
+ final Chunk chunk = new Chunk1_18(oldChunk.getX(), oldChunk.getZ(), sections, oldChunk.getHeightMap(), blockEntities);
+ wrapper.write(new Chunk1_18Type(tracker.currentWorldSectionHeight(),
+ MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()),
+ MathUtil.ceilLog2(tracker.biomesSent())), chunk);
+
+ final ChunkLightStorage lightStorage = wrapper.user().get(ChunkLightStorage.class);
+ final boolean alreadyLoaded = !lightStorage.addLoadedChunk(chunk.getX(), chunk.getZ());
+
+ // Append light data to chunk packet
+ final ChunkLightStorage.ChunkLight light = Via.getConfig().cache1_17Light() ?
+ lightStorage.getLight(chunk.getX(), chunk.getZ()) : lightStorage.removeLight(chunk.getX(), chunk.getZ());
+ if (light == null) {
+ Via.getPlatform().getLogger().warning("No light data found for chunk at " + chunk.getX() + ", " + chunk.getZ() + ". Chunk was already loaded: " + alreadyLoaded);
+
+ final BitSet emptyLightMask = new BitSet();
+ emptyLightMask.set(0, tracker.currentWorldSectionHeight() + 2);
+ wrapper.write(Type.BOOLEAN, false);
+ wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[0]);
+ wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[0]);
+ wrapper.write(Type.LONG_ARRAY_PRIMITIVE, emptyLightMask.toLongArray());
+ wrapper.write(Type.LONG_ARRAY_PRIMITIVE, emptyLightMask.toLongArray());
+ wrapper.write(Type.VAR_INT, 0);
+ wrapper.write(Type.VAR_INT, 0);
+ } else {
+ wrapper.write(Type.BOOLEAN, light.trustEdges());
+ wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.skyLightMask());
+ wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.blockLightMask());
+ wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.emptySkyLightMask());
+ wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.emptyBlockLightMask());
+ wrapper.write(Type.VAR_INT, light.skyLight().length);
+ for (final byte[] skyLight : light.skyLight()) {
+ wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, skyLight);
+ }
+ wrapper.write(Type.VAR_INT, light.blockLight().length);
+ for (final byte[] blockLight : light.blockLight()) {
+ wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, blockLight);
+ }
}
});
- protocol.registerClientbound(ClientboundPackets1_17_1.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
- final Chunk oldChunk = wrapper.read(new Chunk1_17Type(tracker.currentWorldSectionHeight()));
-
- final List blockEntities = new ArrayList<>(oldChunk.getBlockEntities().size());
- for (final CompoundTag tag : oldChunk.getBlockEntities()) {
- final NumberTag xTag = tag.get("x");
- final NumberTag yTag = tag.get("y");
- final NumberTag zTag = tag.get("z");
- final StringTag idTag = tag.get("id");
- if (xTag == null || yTag == null || zTag == null || idTag == null) {
- continue;
- }
-
- final String id = idTag.getValue();
- final int typeId = protocol.getMappingData().blockEntityIds().getInt(id.replace("minecraft:", ""));
- if (typeId == -1) {
- Via.getPlatform().getLogger().warning("Unknown block entity: " + id);
- }
-
- handleSpawners(typeId, tag);
-
- final byte packedXZ = (byte) ((xTag.asInt() & 15) << 4 | (zTag.asInt() & 15));
- blockEntities.add(new BlockEntityImpl(packedXZ, yTag.asShort(), typeId, tag));
- }
-
- final int[] biomeData = oldChunk.getBiomeData();
- final ChunkSection[] sections = oldChunk.getSections();
- for (int i = 0; i < sections.length; i++) {
- ChunkSection section = sections[i];
- if (section == null) {
- // There's no section mask anymore
- section = new ChunkSectionImpl();
- sections[i] = section;
- section.setNonAirBlocksCount(0);
-
- final DataPaletteImpl blockPalette = new DataPaletteImpl(ChunkSection.SIZE);
- blockPalette.addId(0);
- section.addPalette(PaletteType.BLOCKS, blockPalette);
- }
-
- // Fill biome palette
- final DataPaletteImpl biomePalette = new DataPaletteImpl(ChunkSection.BIOME_SIZE);
- section.addPalette(PaletteType.BIOMES, biomePalette);
-
- final int offset = i * ChunkSection.BIOME_SIZE;
- for (int biomeIndex = 0, biomeArrayIndex = offset; biomeIndex < ChunkSection.BIOME_SIZE; biomeIndex++, biomeArrayIndex++) {
- // Also catch invalid biomes with id -1
- final int biome = biomeData[biomeArrayIndex];
- biomePalette.setIdAt(biomeIndex, biome != -1 ? biome : 0);
- }
- }
-
- final Chunk chunk = new Chunk1_18(oldChunk.getX(), oldChunk.getZ(), sections, oldChunk.getHeightMap(), blockEntities);
- wrapper.write(new Chunk1_18Type(tracker.currentWorldSectionHeight(),
- MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()),
- MathUtil.ceilLog2(tracker.biomesSent())), chunk);
-
- final ChunkLightStorage lightStorage = wrapper.user().get(ChunkLightStorage.class);
- final boolean alreadyLoaded = !lightStorage.addLoadedChunk(chunk.getX(), chunk.getZ());
-
- // Append light data to chunk packet
- final ChunkLightStorage.ChunkLight light = Via.getConfig().cache1_17Light() ?
- lightStorage.getLight(chunk.getX(), chunk.getZ()) : lightStorage.removeLight(chunk.getX(), chunk.getZ());
- if (light == null) {
- Via.getPlatform().getLogger().warning("No light data found for chunk at " + chunk.getX() + ", " + chunk.getZ() + ". Chunk was already loaded: " + alreadyLoaded);
-
- final BitSet emptyLightMask = new BitSet();
- emptyLightMask.set(0, tracker.currentWorldSectionHeight() + 2);
- wrapper.write(Type.BOOLEAN, false);
- wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[0]);
- wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[0]);
- wrapper.write(Type.LONG_ARRAY_PRIMITIVE, emptyLightMask.toLongArray());
- wrapper.write(Type.LONG_ARRAY_PRIMITIVE, emptyLightMask.toLongArray());
- wrapper.write(Type.VAR_INT, 0);
- wrapper.write(Type.VAR_INT, 0);
- } else {
- wrapper.write(Type.BOOLEAN, light.trustEdges());
- wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.skyLightMask());
- wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.blockLightMask());
- wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.emptySkyLightMask());
- wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.emptyBlockLightMask());
- wrapper.write(Type.VAR_INT, light.skyLight().length);
- for (final byte[] skyLight : light.skyLight()) {
- wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, skyLight);
- }
- wrapper.write(Type.VAR_INT, light.blockLight().length);
- for (final byte[] blockLight : light.blockLight()) {
- wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, blockLight);
- }
- }
- });
- }
- });
-
- protocol.registerClientbound(ClientboundPackets1_17_1.UNLOAD_CHUNK, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- final int chunkX = wrapper.passthrough(Type.INT);
- final int chunkZ = wrapper.passthrough(Type.INT);
- wrapper.user().get(ChunkLightStorage.class).clear(chunkX, chunkZ);
- });
- }
+ protocol.registerClientbound(ClientboundPackets1_17_1.UNLOAD_CHUNK, wrapper -> {
+ final int chunkX = wrapper.passthrough(Type.INT);
+ final int chunkZ = wrapper.passthrough(Type.INT);
+ wrapper.user().get(ChunkLightStorage.class).clear(chunkX, chunkZ);
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/storage/ChunkLightStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/storage/ChunkLightStorage.java
index ed60d3949..53cc69641 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/storage/ChunkLightStorage.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/storage/ChunkLightStorage.java
@@ -18,12 +18,11 @@
package com.viaversion.viaversion.protocols.protocol1_18to1_17_1.storage;
import com.viaversion.viaversion.api.connection.StorableObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import org.checkerframework.checker.nullness.qual.Nullable;
public final class ChunkLightStorage implements StorableObject {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/types/Chunk1_18Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/types/Chunk1_18Type.java
index 31692f182..f7bdbe39c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/types/Chunk1_18Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/types/Chunk1_18Type.java
@@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.ChunkSectionType1_18;
import com.viaversion.viaversion.api.type.types.version.Types1_18;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java
index 22cae62dd..594456242 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java
@@ -46,11 +46,10 @@ import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.storage.NonceSto
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19;
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ServerboundPackets1_19;
import com.viaversion.viaversion.util.CipherUtil;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
public final class Protocol1_19_1To1_19 extends AbstractProtocol {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/storage/NonceStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/storage/NonceStorage.java
index 6cf16d7dd..a2fe1c6f3 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/storage/NonceStorage.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/storage/NonceStorage.java
@@ -24,7 +24,7 @@ public final class NonceStorage implements StorableObject {
private final byte[] nonce;
- public NonceStorage(final byte @Nullable[] nonce) {
+ public NonceStorage(final byte @Nullable [] nonce) {
this.nonce = nonce;
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/Protocol1_19_3To1_19_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/Protocol1_19_3To1_19_1.java
index 155d14713..b0d5f1c5d 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/Protocol1_19_3To1_19_1.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/Protocol1_19_3To1_19_1.java
@@ -103,15 +103,10 @@ public final class Protocol1_19_3To1_19_1 extends AbstractProtocol {
- wrapper.write(Type.VAR_INT, 0);
- wrapper.passthrough(Type.STRING); // Sound identifier
- wrapper.write(Type.OPTIONAL_FLOAT, null); // No fixed range
- });
- }
+ registerClientbound(ClientboundPackets1_19_1.NAMED_SOUND, ClientboundPackets1_19_3.SOUND, wrapper -> {
+ wrapper.write(Type.VAR_INT, 0);
+ wrapper.passthrough(Type.STRING); // Sound identifier
+ wrapper.write(Type.OPTIONAL_FLOAT, null); // No fixed range
});
new StatisticsRewriter<>(this).register(ClientboundPackets1_19_1.STATISTICS);
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java
index 211075b66..0c8429790 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java
@@ -30,7 +30,6 @@ import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ClientboundPacke
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.Protocol1_19_3To1_19_1;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.BitSet;
import java.util.UUID;
@@ -94,63 +93,58 @@ public final class EntityPackets extends EntityRewriter {
- final int action = wrapper.read(Type.VAR_INT);
- if (action == 4) { // Remove player
- // Write into new packet type
- final int entries = wrapper.read(Type.VAR_INT);
- final UUID[] uuidsToRemove = new UUID[entries];
- for (int i = 0; i < entries; i++) {
- uuidsToRemove[i] = wrapper.read(Type.UUID);
- }
- wrapper.write(Type.UUID_ARRAY, uuidsToRemove);
- wrapper.setPacketType(ClientboundPackets1_19_3.PLAYER_INFO_REMOVE);
- return;
+ protocol.registerClientbound(ClientboundPackets1_19_1.PLAYER_INFO, ClientboundPackets1_19_3.PLAYER_INFO_UPDATE, wrapper -> {
+ final int action = wrapper.read(Type.VAR_INT);
+ if (action == 4) { // Remove player
+ // Write into new packet type
+ final int entries = wrapper.read(Type.VAR_INT);
+ final UUID[] uuidsToRemove = new UUID[entries];
+ for (int i = 0; i < entries; i++) {
+ uuidsToRemove[i] = wrapper.read(Type.UUID);
+ }
+ wrapper.write(Type.UUID_ARRAY, uuidsToRemove);
+ wrapper.setPacketType(ClientboundPackets1_19_3.PLAYER_INFO_REMOVE);
+ return;
+ }
+
+ final BitSet set = new BitSet(6);
+ if (action == 0) {
+ // Includes add player, profile key, gamemode, listed status, latency, and display name
+ set.set(0, 6);
+ } else {
+ // Update listed added at 3, initialize chat added at index 1
+ set.set(action == 1 ? action + 1 : action + 2);
+ }
+
+ wrapper.write(PROFILE_ACTIONS_ENUM_TYPE, set);
+ final int entries = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < entries; i++) {
+ wrapper.passthrough(Type.UUID); // UUID
+ if (action == 0) { // Add player
+ wrapper.passthrough(Type.STRING); // Player Name
+
+ final int properties = wrapper.passthrough(Type.VAR_INT);
+ for (int j = 0; j < properties; j++) {
+ wrapper.passthrough(Type.STRING); // Name
+ wrapper.passthrough(Type.STRING); // Value
+ wrapper.passthrough(Type.OPTIONAL_STRING); // Signature
}
- final BitSet set = new BitSet(6);
- if (action == 0) {
- // Includes add player, profile key, gamemode, listed status, latency, and display name
- set.set(0, 6);
- } else {
- // Update listed added at 3, initialize chat added at index 1
- set.set(action == 1 ? action + 1 : action + 2);
- }
+ final int gamemode = wrapper.read(Type.VAR_INT);
+ final int ping = wrapper.read(Type.VAR_INT);
+ final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT);
+ wrapper.read(Type.OPTIONAL_PROFILE_KEY);
- wrapper.write(PROFILE_ACTIONS_ENUM_TYPE, set);
- final int entries = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < entries; i++) {
- wrapper.passthrough(Type.UUID); // UUID
- if (action == 0) { // Add player
- wrapper.passthrough(Type.STRING); // Player Name
-
- final int properties = wrapper.passthrough(Type.VAR_INT);
- for (int j = 0; j < properties; j++) {
- wrapper.passthrough(Type.STRING); // Name
- wrapper.passthrough(Type.STRING); // Value
- wrapper.passthrough(Type.OPTIONAL_STRING); // Signature
- }
-
- final int gamemode = wrapper.read(Type.VAR_INT);
- final int ping = wrapper.read(Type.VAR_INT);
- final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT);
- wrapper.read(Type.OPTIONAL_PROFILE_KEY);
-
- wrapper.write(Type.BOOLEAN, false); // No chat session data
- wrapper.write(Type.VAR_INT, gamemode);
- wrapper.write(Type.BOOLEAN, true); // Also update listed
- wrapper.write(Type.VAR_INT, ping);
- wrapper.write(Type.OPTIONAL_COMPONENT, displayName);
- } else if (action == 1 || action == 2) { // Update gamemode/update latency
- wrapper.passthrough(Type.VAR_INT);
- } else if (action == 3) { // Update display name
- wrapper.passthrough(Type.OPTIONAL_COMPONENT);
- }
- }
- });
+ wrapper.write(Type.BOOLEAN, false); // No chat session data
+ wrapper.write(Type.VAR_INT, gamemode);
+ wrapper.write(Type.BOOLEAN, true); // Also update listed
+ wrapper.write(Type.VAR_INT, ping);
+ wrapper.write(Type.OPTIONAL_COMPONENT, displayName);
+ } else if (action == 1 || action == 2) { // Update gamemode/update latency
+ wrapper.passthrough(Type.VAR_INT);
+ } else if (action == 3) { // Update display name
+ wrapper.passthrough(Type.OPTIONAL_COMPONENT);
+ }
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/InventoryPackets.java
index f6d2d43b4..bad446d15 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/InventoryPackets.java
@@ -58,76 +58,71 @@ public final class InventoryPackets extends ItemRewriter recipeRewriter = new RecipeRewriter1_16<>(protocol);
- protocol.registerClientbound(ClientboundPackets1_19_1.DECLARE_RECIPES, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- final int size = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < size; i++) {
- final String type = wrapper.passthrough(Type.STRING).replace("minecraft:", "");
- wrapper.passthrough(Type.STRING); // Recipe Identifier
- switch (type) {
- case "crafting_shapeless": {
- wrapper.passthrough(Type.STRING); // Group
- wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY);
- final int ingredients = wrapper.passthrough(Type.VAR_INT);
- for (int j = 0; j < ingredients; j++) {
- final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
- for (final Item item : items) {
- handleItemToClient(item);
- }
- }
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
- break;
+ protocol.registerClientbound(ClientboundPackets1_19_1.DECLARE_RECIPES, wrapper -> {
+ final int size = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < size; i++) {
+ final String type = wrapper.passthrough(Type.STRING).replace("minecraft:", "");
+ wrapper.passthrough(Type.STRING); // Recipe Identifier
+ switch (type) {
+ case "crafting_shapeless": {
+ wrapper.passthrough(Type.STRING); // Group
+ wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY);
+ final int ingredients = wrapper.passthrough(Type.VAR_INT);
+ for (int j = 0; j < ingredients; j++) {
+ final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
+ for (final Item item : items) {
+ handleItemToClient(item);
}
- case "crafting_shaped": {
- final int ingredients = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT);
- wrapper.passthrough(Type.STRING); // Group
- wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY);
- for (int j = 0; j < ingredients; j++) {
- final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
- for (final Item item : items) {
- handleItemToClient(item);
- }
- }
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
- break;
- }
- case "smelting":
- case "campfire_cooking":
- case "blasting":
- case "smoking":
- wrapper.passthrough(Type.STRING); // Group
- wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY);
- final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
- for (final Item item : items) {
- handleItemToClient(item);
- }
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
- wrapper.passthrough(Type.FLOAT); // EXP
- wrapper.passthrough(Type.VAR_INT); // Cooking time
- break;
- case "crafting_special_armordye":
- case "crafting_special_bookcloning":
- case "crafting_special_mapcloning":
- case "crafting_special_mapextending":
- case "crafting_special_firework_rocket":
- case "crafting_special_firework_star":
- case "crafting_special_firework_star_fade":
- case "crafting_special_tippedarrow":
- case "crafting_special_bannerduplicate":
- case "crafting_special_shielddecoration":
- case "crafting_special_shulkerboxcoloring":
- case "crafting_special_suspiciousstew":
- case "crafting_special_repairitem":
- wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY);
- break;
- default:
- recipeRewriter.handleRecipeType(wrapper, type);
- break;
}
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
+ break;
}
- });
+ case "crafting_shaped": {
+ final int ingredients = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT);
+ wrapper.passthrough(Type.STRING); // Group
+ wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY);
+ for (int j = 0; j < ingredients; j++) {
+ final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
+ for (final Item item : items) {
+ handleItemToClient(item);
+ }
+ }
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
+ break;
+ }
+ case "smelting":
+ case "campfire_cooking":
+ case "blasting":
+ case "smoking":
+ wrapper.passthrough(Type.STRING); // Group
+ wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY);
+ final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
+ for (final Item item : items) {
+ handleItemToClient(item);
+ }
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
+ wrapper.passthrough(Type.FLOAT); // EXP
+ wrapper.passthrough(Type.VAR_INT); // Cooking time
+ break;
+ case "crafting_special_armordye":
+ case "crafting_special_bookcloning":
+ case "crafting_special_mapcloning":
+ case "crafting_special_mapextending":
+ case "crafting_special_firework_rocket":
+ case "crafting_special_firework_star":
+ case "crafting_special_firework_star_fade":
+ case "crafting_special_tippedarrow":
+ case "crafting_special_bannerduplicate":
+ case "crafting_special_shielddecoration":
+ case "crafting_special_shulkerboxcoloring":
+ case "crafting_special_suspiciousstew":
+ case "crafting_special_repairitem":
+ wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY);
+ break;
+ default:
+ recipeRewriter.handleRecipeType(wrapper, type);
+ break;
+ }
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/storage/ReceivedMessagesStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/storage/ReceivedMessagesStorage.java
index 2b166c695..f86ea2f70 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/storage/ReceivedMessagesStorage.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/storage/ReceivedMessagesStorage.java
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.storage;
import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature;
-
import java.util.Arrays;
public final class ReceivedMessagesStorage implements StorableObject {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java
index 4529e9946..186656b38 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java
@@ -98,28 +98,23 @@ public final class EntityPackets extends EntityRewriter {
- final int entityId = wrapper.read(Type.INT);
- final byte event = wrapper.read(Type.BYTE);
+ protocol.registerClientbound(ClientboundPackets1_19_3.ENTITY_STATUS, wrapper -> {
+ final int entityId = wrapper.read(Type.INT);
+ final byte event = wrapper.read(Type.BYTE);
- final int damageType = damageTypeFromEntityEvent(event);
- if (damageType != -1) {
- wrapper.setPacketType(ClientboundPackets1_19_4.DAMAGE_EVENT);
- wrapper.write(Type.VAR_INT, entityId);
- wrapper.write(Type.VAR_INT, damageType);
- wrapper.write(Type.VAR_INT, 0); // No source entity
- wrapper.write(Type.VAR_INT, 0); // No direct source entity
- wrapper.write(Type.BOOLEAN, false); // No source position
- return;
- }
-
- wrapper.write(Type.INT, entityId);
- wrapper.write(Type.BYTE, event);
- });
+ final int damageType = damageTypeFromEntityEvent(event);
+ if (damageType != -1) {
+ wrapper.setPacketType(ClientboundPackets1_19_4.DAMAGE_EVENT);
+ wrapper.write(Type.VAR_INT, entityId);
+ wrapper.write(Type.VAR_INT, damageType);
+ wrapper.write(Type.VAR_INT, 0); // No source entity
+ wrapper.write(Type.VAR_INT, 0); // No direct source entity
+ wrapper.write(Type.BOOLEAN, false); // No source position
+ return;
}
+
+ wrapper.write(Type.INT, entityId);
+ wrapper.write(Type.BYTE, event);
});
registerTrackerWithData1_19(ClientboundPackets1_19_3.SPAWN_ENTITY, null);
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2.java
index db950b1ca..2b0fec81d 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2.java
@@ -127,56 +127,41 @@ public final class Protocol1_19To1_18_2 extends AbstractProtocol commandRewriter = new CommandRewriter<>(this);
- registerClientbound(ClientboundPackets1_18.DECLARE_COMMANDS, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- final int size = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < size; i++) {
- final byte flags = wrapper.passthrough(Type.BYTE);
- wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices
- if ((flags & 0x08) != 0) {
- wrapper.passthrough(Type.VAR_INT); // Redirect node index
- }
+ registerClientbound(ClientboundPackets1_18.DECLARE_COMMANDS, wrapper -> {
+ final int size = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < size; i++) {
+ final byte flags = wrapper.passthrough(Type.BYTE);
+ wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices
+ if ((flags & 0x08) != 0) {
+ wrapper.passthrough(Type.VAR_INT); // Redirect node index
+ }
- final int nodeType = flags & 0x03;
- if (nodeType == 1 || nodeType == 2) { // Literal/argument node
- wrapper.passthrough(Type.STRING); // Name
- }
+ final int nodeType = flags & 0x03;
+ if (nodeType == 1 || nodeType == 2) { // Literal/argument node
+ wrapper.passthrough(Type.STRING); // Name
+ }
- if (nodeType == 2) { // Argument node
- final String argumentType = wrapper.read(Type.STRING);
- final int argumentTypeId = MAPPINGS.getArgumentTypeMappings().mappedId(argumentType);
- if (argumentTypeId == -1) {
- Via.getPlatform().getLogger().warning("Unknown command argument type: " + argumentType);
- }
-
- wrapper.write(Type.VAR_INT, argumentTypeId);
- commandRewriter.handleArgument(wrapper, argumentType);
-
- if ((flags & 0x10) != 0) {
- wrapper.passthrough(Type.STRING); // Suggestion type
- }
- }
+ if (nodeType == 2) { // Argument node
+ final String argumentType = wrapper.read(Type.STRING);
+ final int argumentTypeId = MAPPINGS.getArgumentTypeMappings().mappedId(argumentType);
+ if (argumentTypeId == -1) {
+ Via.getPlatform().getLogger().warning("Unknown command argument type: " + argumentType);
}
- wrapper.passthrough(Type.VAR_INT); // Root node index
- });
+ wrapper.write(Type.VAR_INT, argumentTypeId);
+ commandRewriter.handleArgument(wrapper, argumentType);
+
+ if ((flags & 0x10) != 0) {
+ wrapper.passthrough(Type.STRING); // Suggestion type
+ }
+ }
}
+
+ wrapper.passthrough(Type.VAR_INT); // Root node index
});
// Make every message a system message, including player ones; we don't want to analyze and remove player names from the original component
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/data/MappingData.java
index a37dbe637..d85982009 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/data/MappingData.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/data/MappingData.java
@@ -27,9 +27,8 @@ import com.viaversion.viaversion.api.data.MappingDataLoader;
import com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.io.IOException;
+import org.checkerframework.checker.nullness.qual.Nullable;
public final class MappingData extends MappingDataBase {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java
index d4fc48c46..f9036a05a 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java
@@ -42,7 +42,6 @@ import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.storage.DimensionRegistryStorage;
import com.viaversion.viaversion.rewriter.EntityRewriter;
import com.viaversion.viaversion.util.Pair;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
@@ -266,47 +265,42 @@ public final class EntityPackets extends EntityRewriter {
- final int action = wrapper.passthrough(Type.VAR_INT);
- final int entries = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < entries; i++) {
- wrapper.passthrough(Type.UUID); // UUID
- if (action == 0) { // Add player
- wrapper.passthrough(Type.STRING); // Player Name
+ protocol.registerClientbound(ClientboundPackets1_18.PLAYER_INFO, wrapper -> {
+ final int action = wrapper.passthrough(Type.VAR_INT);
+ final int entries = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < entries; i++) {
+ wrapper.passthrough(Type.UUID); // UUID
+ if (action == 0) { // Add player
+ wrapper.passthrough(Type.STRING); // Player Name
- final int properties = wrapper.passthrough(Type.VAR_INT);
- for (int j = 0; j < properties; j++) {
- wrapper.passthrough(Type.STRING); // Name
- wrapper.passthrough(Type.STRING); // Value
- wrapper.passthrough(Type.OPTIONAL_STRING); // Signature
- }
-
- wrapper.passthrough(Type.VAR_INT); // Gamemode
- wrapper.passthrough(Type.VAR_INT); // Ping
- final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); // Display name
- if (!Protocol1_19To1_18_2.isTextComponentNull(displayName)) {
- wrapper.write(Type.OPTIONAL_COMPONENT, displayName);
- } else {
- wrapper.write(Type.OPTIONAL_COMPONENT, null);
- }
-
- // No public profile signature
- wrapper.write(Type.OPTIONAL_PROFILE_KEY, null);
- } else if (action == 1 || action == 2) { // Update gamemode/update latency
- wrapper.passthrough(Type.VAR_INT);
- } else if (action == 3) { // Update display name
- final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); // Display name
- if (!Protocol1_19To1_18_2.isTextComponentNull(displayName)) {
- wrapper.write(Type.OPTIONAL_COMPONENT, displayName);
- } else {
- wrapper.write(Type.OPTIONAL_COMPONENT, null);
- }
- }
+ final int properties = wrapper.passthrough(Type.VAR_INT);
+ for (int j = 0; j < properties; j++) {
+ wrapper.passthrough(Type.STRING); // Name
+ wrapper.passthrough(Type.STRING); // Value
+ wrapper.passthrough(Type.OPTIONAL_STRING); // Signature
}
- });
+
+ wrapper.passthrough(Type.VAR_INT); // Gamemode
+ wrapper.passthrough(Type.VAR_INT); // Ping
+ final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); // Display name
+ if (!Protocol1_19To1_18_2.isTextComponentNull(displayName)) {
+ wrapper.write(Type.OPTIONAL_COMPONENT, displayName);
+ } else {
+ wrapper.write(Type.OPTIONAL_COMPONENT, null);
+ }
+
+ // No public profile signature
+ wrapper.write(Type.OPTIONAL_PROFILE_KEY, null);
+ } else if (action == 1 || action == 2) { // Update gamemode/update latency
+ wrapper.passthrough(Type.VAR_INT);
+ } else if (action == 3) { // Update display name
+ final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); // Display name
+ if (!Protocol1_19To1_18_2.isTextComponentNull(displayName)) {
+ wrapper.write(Type.OPTIONAL_COMPONENT, displayName);
+ } else {
+ wrapper.write(Type.OPTIONAL_COMPONENT, null);
+ }
+ }
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/WorldPackets.java
index a350f2cab..457ed00e6 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/WorldPackets.java
@@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18;
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.types.Chunk1_18Type;
@@ -43,46 +42,36 @@ public final class WorldPackets {
protocol.cancelClientbound(ClientboundPackets1_18.ACKNOWLEDGE_PLAYER_DIGGING);
- protocol.registerClientbound(ClientboundPackets1_18.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
- Preconditions.checkArgument(tracker.biomesSent() != 0, "Biome count not set");
- Preconditions.checkArgument(tracker.currentWorldSectionHeight() != 0, "Section height not set");
- final Chunk1_18Type chunkType = new Chunk1_18Type(tracker.currentWorldSectionHeight(),
- MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()),
- MathUtil.ceilLog2(tracker.biomesSent()));
- final Chunk chunk = wrapper.passthrough(chunkType);
- for (final ChunkSection section : chunk.getSections()) {
- final DataPalette blockPalette = section.palette(PaletteType.BLOCKS);
- for (int i = 0; i < blockPalette.size(); i++) {
- final int id = blockPalette.idByIndex(i);
- blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id));
- }
- }
- });
+ protocol.registerClientbound(ClientboundPackets1_18.CHUNK_DATA, wrapper -> {
+ final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
+ Preconditions.checkArgument(tracker.biomesSent() != 0, "Biome count not set");
+ Preconditions.checkArgument(tracker.currentWorldSectionHeight() != 0, "Section height not set");
+ final Chunk1_18Type chunkType = new Chunk1_18Type(tracker.currentWorldSectionHeight(),
+ MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()),
+ MathUtil.ceilLog2(tracker.biomesSent()));
+ final Chunk chunk = wrapper.passthrough(chunkType);
+ for (final ChunkSection section : chunk.getSections()) {
+ final DataPalette blockPalette = section.palette(PaletteType.BLOCKS);
+ for (int i = 0; i < blockPalette.size(); i++) {
+ final int id = blockPalette.idByIndex(i);
+ blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id));
+ }
}
});
- protocol.registerServerbound(ServerboundPackets1_19.SET_BEACON_EFFECT, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- // Primary effect
- if (wrapper.read(Type.BOOLEAN)) {
- wrapper.passthrough(Type.VAR_INT);
- } else {
- wrapper.write(Type.VAR_INT, -1);
- }
+ protocol.registerServerbound(ServerboundPackets1_19.SET_BEACON_EFFECT, wrapper -> {
+ // Primary effect
+ if (wrapper.read(Type.BOOLEAN)) {
+ wrapper.passthrough(Type.VAR_INT);
+ } else {
+ wrapper.write(Type.VAR_INT, -1);
+ }
- // Secondary effect
- if (wrapper.read(Type.BOOLEAN)) {
- wrapper.passthrough(Type.VAR_INT);
- } else {
- wrapper.write(Type.VAR_INT, -1);
- }
- });
+ // Secondary effect
+ if (wrapper.read(Type.BOOLEAN)) {
+ wrapper.passthrough(Type.VAR_INT);
+ } else {
+ wrapper.write(Type.VAR_INT, -1);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/storage/DimensionRegistryStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/storage/DimensionRegistryStorage.java
index 60522a131..cba230fc5 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/storage/DimensionRegistryStorage.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/storage/DimensionRegistryStorage.java
@@ -19,9 +19,8 @@ package com.viaversion.viaversion.protocols.protocol1_19to1_18_2.storage;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.api.connection.StorableObject;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Map;
+import org.checkerframework.checker.nullness.qual.Nullable;
public final class DimensionRegistryStorage implements StorableObject {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java
index fe7c04170..b347fe0b5 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java
@@ -24,8 +24,6 @@ import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.chunks.BlockEntity;
@@ -52,46 +50,35 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol {
+ if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 9) {
+ Position position = wrapper.get(Type.POSITION, 0);
+ CompoundTag tag = wrapper.get(Type.NBT, 0);
- wrapper.clearPacket(); //Clear the packet
+ wrapper.clearPacket(); //Clear the packet
- wrapper.setPacketType(ClientboundPackets1_9.UPDATE_SIGN);
- wrapper.write(Type.POSITION, position); // Position
- for (int i = 1; i < 5; i++) {
- // Should technically be written as COMPONENT, but left as String for simplification/to remove redundant wrapping for VR
- Tag textTag = tag.get("Text" + i);
- String line = textTag instanceof StringTag ? ((StringTag) textTag).getValue() : "";
- wrapper.write(Type.STRING, line); // Sign line
- }
+ wrapper.setPacketType(ClientboundPackets1_9.UPDATE_SIGN);
+ wrapper.write(Type.POSITION, position); // Position
+ for (int i = 1; i < 5; i++) {
+ // Should technically be written as COMPONENT, but left as String for simplification/to remove redundant wrapping for VR
+ Tag textTag = tag.get("Text" + i);
+ String line = textTag instanceof StringTag ? ((StringTag) textTag).getValue() : "";
+ wrapper.write(Type.STRING, line); // Sign line
}
}
});
}
});
- registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- Chunk1_9_3_4Type newType = new Chunk1_9_3_4Type(clientWorld);
- Chunk1_9_1_2Type oldType = new Chunk1_9_1_2Type(clientWorld); // Get the old type to not write Block Entities
+ Chunk1_9_3_4Type newType = new Chunk1_9_3_4Type(clientWorld);
+ Chunk1_9_1_2Type oldType = new Chunk1_9_1_2Type(clientWorld); // Get the old type to not write Block Entities
- Chunk chunk = wrapper.read(newType);
- wrapper.write(oldType, chunk);
- BlockEntity.handle(chunk.getBlockEntities(), wrapper.user());
- }
- });
- }
+ Chunk chunk = wrapper.read(newType);
+ wrapper.write(oldType, chunk);
+ BlockEntity.handle(chunk.getBlockEntities(), wrapper.user());
});
registerClientbound(ClientboundPackets1_9_3.JOIN_GAME, new PacketHandlers() {
@@ -101,14 +88,11 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol {
+ ClientWorld clientChunks = wrapper.user().get(ClientWorld.class);
- int dimensionId = wrapper.get(Type.INT, 1);
- clientChunks.setEnvironment(dimensionId);
- }
+ int dimensionId = wrapper.get(Type.INT, 1);
+ clientChunks.setEnvironment(dimensionId);
});
}
});
@@ -118,14 +102,11 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- int dimensionId = wrapper.get(Type.INT, 0);
- clientWorld.setEnvironment(dimensionId);
- }
+ int dimensionId = wrapper.get(Type.INT, 0);
+ clientWorld.setEnvironment(dimensionId);
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java
index 0627b62a5..6c4b5715f 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.Protocol1_9_1_2To1_9_3_4;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
-
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/types/Chunk1_9_3_4Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/types/Chunk1_9_3_4Type.java
index f3db90d9f..72b265046 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/types/Chunk1_9_3_4Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/types/Chunk1_9_3_4Type.java
@@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.Types1_9;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1to1_9/Protocol1_9_1To1_9.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1to1_9/Protocol1_9_1To1_9.java
index 6764169cb..d20287125 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1to1_9/Protocol1_9_1To1_9.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1to1_9/Protocol1_9_1To1_9.java
@@ -18,8 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_9_1to1_9;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9;
@@ -54,14 +52,11 @@ public class Protocol1_9_1To1_9 extends AbstractProtocol {
+ int sound = wrapper.get(Type.VAR_INT, 0);
- if (sound >= 415) // Add 1 to every sound id since there is no Elytra sound on a 1.9 server
- wrapper.set(Type.VAR_INT, 0, sound + 1);
- }
+ if (sound >= 415) // Add 1 to every sound id since there is no Elytra sound on a 1.9 server
+ wrapper.set(Type.VAR_INT, 0, sound + 1);
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java
index b7a11e0d3..971c87e11 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java
@@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
import com.viaversion.viaversion.api.type.Type;
@@ -39,7 +38,6 @@ import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.Client
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 java.util.List;
public class Protocol1_9_3To1_9_1_2 extends AbstractProtocol {
@@ -58,73 +56,57 @@ public class Protocol1_9_3To1_9_1_2 extends AbstractProtocol {
+ //read data
+ Position position = wrapper.read(Type.POSITION);
+ JsonElement[] lines = new JsonElement[4];
+ for (int i = 0; i < 4; i++) {
+ lines[i] = wrapper.read(Type.COMPONENT);
}
+
+ wrapper.clearInputBuffer();
+
+ //write data
+ wrapper.setPacketType(ClientboundPackets1_9_3.BLOCK_ENTITY_DATA);
+ wrapper.write(Type.POSITION, position); //Block location
+ wrapper.write(Type.UNSIGNED_BYTE, (short) 9); //Action type (9 update sign)
+
+ //Create nbt
+ CompoundTag tag = new CompoundTag();
+ tag.put("id", new StringTag("Sign"));
+ tag.put("x", new IntTag(position.x()));
+ tag.put("y", new IntTag(position.y()));
+ tag.put("z", new IntTag(position.z()));
+ for (int i = 0; i < lines.length; i++) {
+ tag.put("Text" + (i + 1), new StringTag(lines[i].toString()));
+ }
+
+ wrapper.write(Type.NBT, tag);
});
- registerClientbound(ClientboundPackets1_9.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ registerClientbound(ClientboundPackets1_9.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- Chunk chunk = wrapper.read(new Chunk1_9_1_2Type(clientWorld));
- wrapper.write(new Chunk1_9_3_4Type(clientWorld), chunk);
+ Chunk chunk = wrapper.read(new Chunk1_9_1_2Type(clientWorld));
+ wrapper.write(new Chunk1_9_3_4Type(clientWorld), chunk);
- List tags = chunk.getBlockEntities();
- for (int s = 0; s < chunk.getSections().length; s++) {
- ChunkSection section = chunk.getSections()[s];
- if (section == null) continue;
- DataPalette blocks = section.palette(PaletteType.BLOCKS);
+ List tags = chunk.getBlockEntities();
+ for (int s = 0; s < chunk.getSections().length; s++) {
+ ChunkSection section = chunk.getSections()[s];
+ if (section == null) continue;
+ DataPalette blocks = section.palette(PaletteType.BLOCKS);
- for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
- int id = blocks.idAt(idx) >> 4;
- if (FakeTileEntity.isTileEntity(id)) {
- tags.add(FakeTileEntity.createTileEntity(
- ChunkSection.xFromIndex(idx) + (chunk.getX() << 4),
- ChunkSection.yFromIndex(idx) + (s << 4),
- ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4),
- id
- ));
- }
- }
- }
+ for (int idx = 0; idx < ChunkSection.SIZE; idx++) {
+ int id = blocks.idAt(idx) >> 4;
+ if (FakeTileEntity.isTileEntity(id)) {
+ tags.add(FakeTileEntity.createTileEntity(
+ ChunkSection.xFromIndex(idx) + (chunk.getX() << 4),
+ ChunkSection.yFromIndex(idx) + (s << 4),
+ ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4),
+ id
+ ));
}
- });
+ }
}
});
@@ -135,13 +117,10 @@ public class Protocol1_9_3To1_9_1_2 extends AbstractProtocol {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ int dimensionId = wrapper.get(Type.INT, 1);
+ clientWorld.setEnvironment(dimensionId);
});
}
});
@@ -150,13 +129,10 @@ public class Protocol1_9_3To1_9_1_2 extends AbstractProtocol {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ int dimensionId = wrapper.get(Type.INT, 0);
+ clientWorld.setEnvironment(dimensionId);
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/types/Chunk1_9_1_2Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/types/Chunk1_9_1_2Type.java
index e583e8282..16693ed9b 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/types/Chunk1_9_1_2Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/types/Chunk1_9_1_2Type.java
@@ -17,7 +17,6 @@
*/
package com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.types;
-import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.api.minecraft.Environment;
import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
@@ -28,7 +27,6 @@ import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType;
import com.viaversion.viaversion.api.type.types.version.Types1_9;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
import io.netty.buffer.ByteBuf;
-
import java.util.ArrayList;
import java.util.BitSet;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/ItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/ItemRewriter.java
index 7ab750152..44a644f55 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/ItemRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/ItemRewriter.java
@@ -24,7 +24,6 @@ import com.github.steveice10.opennbt.tag.builtin.Tag;
import com.viaversion.viaversion.api.minecraft.item.Item;
import it.unimi.dsi.fastutil.ints.Int2IntMap;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
-
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java
index ca6360231..d0cad81fa 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.platform.providers.ViaProviders;
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 com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8;
@@ -113,18 +112,13 @@ public class Protocol1_9To1_8 extends AbstractProtocol {
- if (wrapper.isReadable(Type.COMPONENT, 0)) {
- // Already written as json somewhere else
- return;
- }
-
- wrapper.write(Type.COMPONENT, fixJson(wrapper.read(Type.STRING)));
- });
+ registerClientbound(State.LOGIN, 0x00, 0x00, wrapper -> {
+ if (wrapper.isReadable(Type.COMPONENT, 0)) {
+ // Already written as json somewhere else
+ return;
}
+
+ wrapper.write(Type.COMPONENT, fixJson(wrapper.read(Type.STRING)));
});
// Other Handlers
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex.java
index 4ddeffe0f..995733a45 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex.java
@@ -22,10 +22,9 @@ import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_8;
import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_9;
import com.viaversion.viaversion.util.Pair;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.HashMap;
import java.util.Optional;
+import org.checkerframework.checker.nullness.qual.Nullable;
import static com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types.EntityType.*;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetadataRewriter1_9To1_8.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetadataRewriter1_9To1_8.java
index aeb2ceb9e..431355905 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetadataRewriter1_9To1_8.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetadataRewriter1_9To1_8.java
@@ -30,7 +30,6 @@ import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ItemRewriter;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-
import java.util.List;
import java.util.UUID;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/EntityPackets.java
index e324c9ba7..892a8c2db 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/EntityPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/EntityPackets.java
@@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
import com.viaversion.viaversion.api.type.Type;
@@ -37,7 +36,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.metadata.MetadataRew
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
import com.viaversion.viaversion.util.Pair;
import com.viaversion.viaversion.util.Triple;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -104,17 +102,14 @@ public class EntityPackets {
map(Type.BOOLEAN); // 6 - On Ground
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- if (Via.getConfig().isHologramPatch()) {
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- if (tracker.getKnownHolograms().contains(entityID)) {
- Double newValue = wrapper.get(Type.DOUBLE, 1);
- newValue += (Via.getConfig().getHologramYOffset());
- wrapper.set(Type.DOUBLE, 1, newValue);
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ if (Via.getConfig().isHologramPatch()) {
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ if (tracker.getKnownHolograms().contains(entityID)) {
+ Double newValue = wrapper.get(Type.DOUBLE, 1);
+ newValue += (Via.getConfig().getHologramYOffset());
+ wrapper.set(Type.DOUBLE, 1, newValue);
}
}
});
@@ -171,29 +166,23 @@ public class EntityPackets {
});
map(Type.ITEM); // 2 - Item
// Item Rewriter
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Item stack = wrapper.get(Type.ITEM, 0);
- ItemRewriter.toClient(stack);
- }
+ handler(wrapper -> {
+ Item stack = wrapper.get(Type.ITEM, 0);
+ ItemRewriter.toClient(stack);
});
// Blocking
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- int entityID = wrapper.get(Type.VAR_INT, 0);
- Item stack = wrapper.get(Type.ITEM, 0);
+ handler(wrapper -> {
+ EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ Item stack = wrapper.get(Type.ITEM, 0);
- if (stack != null) {
- if (Protocol1_9To1_8.isSword(stack.identifier())) {
- entityTracker.getValidBlocking().add(entityID);
- return;
- }
+ if (stack != null) {
+ if (Protocol1_9To1_8.isSword(stack.identifier())) {
+ entityTracker.getValidBlocking().add(entityID);
+ return;
}
- entityTracker.getValidBlocking().remove(entityID);
}
+ entityTracker.getValidBlocking().remove(entityID);
});
}
});
@@ -203,41 +192,32 @@ public class EntityPackets {
public void register() {
map(Type.VAR_INT); // 0 - Entity ID
map(Types1_8.METADATA_LIST, Types1_9.METADATA_LIST); // 1 - Metadata List
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
- int entityId = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- if (tracker.hasEntity(entityId)) {
- protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user());
- } else {
- // Buffer
- tracker.addMetadataToBuffer(entityId, metadataList);
- wrapper.cancel();
- }
+ handler(wrapper -> {
+ List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ if (tracker.hasEntity(entityId)) {
+ protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user());
+ } else {
+ // Buffer
+ tracker.addMetadataToBuffer(entityId, metadataList);
+ wrapper.cancel();
}
});
// Handler for meta data
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.handleMetadata(entityID, metadataList);
- }
+ handler(wrapper -> {
+ List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.handleMetadata(entityID, metadataList);
});
// Cancel packet if list empty
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
- if (metadataList.isEmpty()) {
- wrapper.cancel();
- }
+ handler(wrapper -> {
+ List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
+ if (metadataList.isEmpty()) {
+ wrapper.cancel();
}
});
}
@@ -250,14 +230,12 @@ public class EntityPackets {
map(Type.BYTE); // 1 - Effect ID
map(Type.BYTE); // 2 - Amplifier
map(Type.VAR_INT); // 3 - Duration
- handler(new PacketHandler() { //Handle effect indicator
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- boolean showParticles = wrapper.read(Type.BOOLEAN); //In 1.8 = true->Show particles : false->Hide particles
- boolean newEffect = Via.getConfig().isNewEffectIndicator();
- //0: hide, 1: shown without indictator, 2: shown with indicator, 3: hide with beacon indicator but we don't use it.
- wrapper.write(Type.BYTE, (byte) (showParticles ? newEffect ? 2 : 1 : 0));
- }
+ //Handle effect indicator
+ handler(wrapper -> {
+ boolean showParticles = wrapper.read(Type.BOOLEAN); //In 1.8 = true->Show particles : false->Hide particles
+ boolean newEffect = Via.getConfig().isNewEffectIndicator();
+ //0: hide, 1: shown without indictator, 2: shown with indicator, 3: hide with beacon indicator but we don't use it.
+ wrapper.write(Type.BYTE, (byte) (showParticles ? newEffect ? 2 : 1 : 0));
});
}
});
@@ -268,14 +246,11 @@ public class EntityPackets {
@Override
public void register() {
map(Type.VAR_INT); //Event id
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- if (wrapper.get(Type.VAR_INT, 0) == 2) { // entity dead
- wrapper.passthrough(Type.VAR_INT); //Player id
- wrapper.passthrough(Type.INT); //Entity id
- Protocol1_9To1_8.FIX_JSON.write(wrapper, wrapper.read(Type.STRING));
- }
+ handler(wrapper -> {
+ if (wrapper.get(Type.VAR_INT, 0) == 2) { // entity dead
+ wrapper.passthrough(Type.VAR_INT); //Player id
+ wrapper.passthrough(Type.INT); //Entity id
+ Protocol1_9To1_8.FIX_JSON.write(wrapper, wrapper.read(Type.STRING));
}
});
}
@@ -285,53 +260,50 @@ public class EntityPackets {
@Override
public void register() {
map(Type.VAR_INT);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- if (!Via.getConfig().isMinimizeCooldown()) return;
+ handler(wrapper -> {
+ if (!Via.getConfig().isMinimizeCooldown()) return;
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- if (wrapper.get(Type.VAR_INT, 0) != tracker.getProvidedEntityId()) {
- return;
- }
- int propertiesToRead = wrapper.read(Type.INT);
- Map>>> properties = new HashMap<>(propertiesToRead);
- for (int i = 0; i < propertiesToRead; i++) {
- String key = wrapper.read(Type.STRING);
- Double value = wrapper.read(Type.DOUBLE);
- int modifiersToRead = wrapper.read(Type.VAR_INT);
- List> modifiers = new ArrayList<>(modifiersToRead);
- for (int j = 0; j < modifiersToRead; j++) {
- modifiers.add(
- new Triple<>(
- wrapper.read(Type.UUID),
- wrapper.read(Type.DOUBLE), // Amount
- wrapper.read(Type.BYTE) // Operation
- )
- );
- }
- properties.put(key, new Pair<>(value, modifiers));
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ if (wrapper.get(Type.VAR_INT, 0) != tracker.getProvidedEntityId()) {
+ return;
+ }
+ int propertiesToRead = wrapper.read(Type.INT);
+ Map>>> properties = new HashMap<>(propertiesToRead);
+ for (int i = 0; i < propertiesToRead; i++) {
+ String key = wrapper.read(Type.STRING);
+ Double value = wrapper.read(Type.DOUBLE);
+ int modifiersToRead = wrapper.read(Type.VAR_INT);
+ List> modifiers = new ArrayList<>(modifiersToRead);
+ for (int j = 0; j < modifiersToRead; j++) {
+ modifiers.add(
+ new Triple<>(
+ wrapper.read(Type.UUID),
+ wrapper.read(Type.DOUBLE), // Amount
+ wrapper.read(Type.BYTE) // Operation
+ )
+ );
}
+ properties.put(key, new Pair<>(value, modifiers));
+ }
- // == Why 15.9? ==
- // Higher values hides the cooldown but it bugs visual animation on hand
- // when removing item from hand with inventory gui
- properties.put("generic.attackSpeed", new Pair<>(15.9, ImmutableList.of( // Neutralize modifiers
- new Triple<>(UUID.fromString("FA233E1C-4180-4865-B01B-BCCE9785ACA3"), 0.0, (byte) 0), // Tool and weapon modifier
- new Triple<>(UUID.fromString("AF8B6E3F-3328-4C0A-AA36-5BA2BB9DBEF3"), 0.0, (byte) 2), // Dig speed
- new Triple<>(UUID.fromString("55FCED67-E92A-486E-9800-B47F202C4386"), 0.0, (byte) 2) // Dig slow down
- )));
+ // == Why 15.9? ==
+ // Higher values hides the cooldown but it bugs visual animation on hand
+ // when removing item from hand with inventory gui
+ properties.put("generic.attackSpeed", new Pair<>(15.9, ImmutableList.of( // Neutralize modifiers
+ new Triple<>(UUID.fromString("FA233E1C-4180-4865-B01B-BCCE9785ACA3"), 0.0, (byte) 0), // Tool and weapon modifier
+ new Triple<>(UUID.fromString("AF8B6E3F-3328-4C0A-AA36-5BA2BB9DBEF3"), 0.0, (byte) 2), // Dig speed
+ new Triple<>(UUID.fromString("55FCED67-E92A-486E-9800-B47F202C4386"), 0.0, (byte) 2) // Dig slow down
+ )));
- wrapper.write(Type.INT, properties.size());
- for (Map.Entry>>> entry : properties.entrySet()) {
- wrapper.write(Type.STRING, entry.getKey()); // Key
- wrapper.write(Type.DOUBLE, entry.getValue().key()); // Value
- wrapper.write(Type.VAR_INT, entry.getValue().value().size());
- for (Triple modifier : entry.getValue().value()) {
- wrapper.write(Type.UUID, modifier.first());
- wrapper.write(Type.DOUBLE, modifier.second()); // Amount
- wrapper.write(Type.BYTE, modifier.third()); // Operation
- }
+ wrapper.write(Type.INT, properties.size());
+ for (Map.Entry>>> entry : properties.entrySet()) {
+ wrapper.write(Type.STRING, entry.getKey()); // Key
+ wrapper.write(Type.DOUBLE, entry.getValue().key()); // Value
+ wrapper.write(Type.VAR_INT, entry.getValue().value().size());
+ for (Triple modifier : entry.getValue().value()) {
+ wrapper.write(Type.UUID, modifier.first());
+ wrapper.write(Type.DOUBLE, modifier.second()); // Amount
+ wrapper.write(Type.BYTE, modifier.third()); // Operation
}
}
});
@@ -343,12 +315,9 @@ public class EntityPackets {
public void register() {
map(Type.VAR_INT); // 0 - Entity ID
map(Type.UNSIGNED_BYTE); // 1 - Animation
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 3) {
- wrapper.cancel();
- }
+ handler(wrapper -> {
+ if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 3) {
+ wrapper.cancel();
}
});
}
@@ -363,15 +332,12 @@ public class EntityPackets {
map(Type.VAR_INT); // 0 - Player ID
map(Type.VAR_INT); // 1 - Action
map(Type.VAR_INT); // 2 - Jump
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int action = wrapper.get(Type.VAR_INT, 1);
- if (action == 6 || action == 8)
- wrapper.cancel();
- if (action == 7) {
- wrapper.set(Type.VAR_INT, 1, 6);
- }
+ handler(wrapper -> {
+ int action = wrapper.get(Type.VAR_INT, 1);
+ if (action == 6 || action == 8)
+ wrapper.cancel();
+ if (action == 7) {
+ wrapper.set(Type.VAR_INT, 1, 6);
}
});
}
@@ -385,21 +351,18 @@ public class EntityPackets {
map(Type.VAR_INT); // 1 - Action Type
// Cancel second hand to prevent double interact
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int type = wrapper.get(Type.VAR_INT, 1);
- if (type == 2) {
- wrapper.passthrough(Type.FLOAT); // 2 - X
- wrapper.passthrough(Type.FLOAT); // 3 - Y
- wrapper.passthrough(Type.FLOAT); // 4 - Z
- }
- if (type == 0 || type == 2) {
- int hand = wrapper.read(Type.VAR_INT); // 2/5 - Hand
+ handler(wrapper -> {
+ int type = wrapper.get(Type.VAR_INT, 1);
+ if (type == 2) {
+ wrapper.passthrough(Type.FLOAT); // 2 - X
+ wrapper.passthrough(Type.FLOAT); // 3 - Y
+ wrapper.passthrough(Type.FLOAT); // 4 - Z
+ }
+ if (type == 0 || type == 2) {
+ int hand = wrapper.read(Type.VAR_INT); // 2/5 - Hand
- if (hand == 1)
- wrapper.cancel();
- }
+ if (hand == 1)
+ wrapper.cancel();
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/InventoryPackets.java
index 55361ee62..bd6aa5437 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/InventoryPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/InventoryPackets.java
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_8.packets;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.item.Item;
-import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
@@ -43,31 +42,28 @@ public class InventoryPackets {
map(Type.SHORT); // 1 - Property Key
map(Type.SHORT); // 2 - Property Value
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- final short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0);
- final short property = wrapper.get(Type.SHORT, 0);
- short value = wrapper.get(Type.SHORT, 1);
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- if (inventoryTracker.getInventory() != null) {
- if (inventoryTracker.getInventory().equalsIgnoreCase("minecraft:enchanting_table")) {
- if (property > 3 && property < 7) {
- // Send 2 properties, splitting it into enchantID & level
- final short level = (short) (value >> 8);
- final short enchantID = (short) (value & 0xFF);
- wrapper.create(wrapper.getId(), new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.write(Type.UNSIGNED_BYTE, windowId);
- wrapper.write(Type.SHORT, property);
- wrapper.write(Type.SHORT, enchantID);
- }
- }).scheduleSend(Protocol1_9To1_8.class);
+ handler(wrapper -> {
+ final short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0);
+ final short property = wrapper.get(Type.SHORT, 0);
+ short value = wrapper.get(Type.SHORT, 1);
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ if (inventoryTracker.getInventory() != null) {
+ if (inventoryTracker.getInventory().equalsIgnoreCase("minecraft:enchanting_table")) {
+ if (property > 3 && property < 7) {
+ // Send 2 properties, splitting it into enchantID & level
+ final short level = (short) (value >> 8);
+ final short enchantID = (short) (value & 0xFF);
+ wrapper.create(wrapper.getId(), new PacketHandler() {
+ @Override
+ public void handle(PacketWrapper wrapper) throws Exception {
+ wrapper.write(Type.UNSIGNED_BYTE, windowId);
+ wrapper.write(Type.SHORT, property);
+ wrapper.write(Type.SHORT, enchantID);
+ }
+ }).scheduleSend(Protocol1_9To1_8.class);
- wrapper.set(Type.SHORT, 0, (short) (property + 3));
- wrapper.set(Type.SHORT, 1, level);
- }
+ wrapper.set(Type.SHORT, 0, (short) (property + 3));
+ wrapper.set(Type.SHORT, 1, level);
}
}
}
@@ -84,22 +80,16 @@ public class InventoryPackets {
map(Type.UNSIGNED_BYTE); // 3 - Slot Count
// There is a horse parameter after this, we don't handle it and let it passthrough
// Inventory tracking
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- String inventory = wrapper.get(Type.STRING, 0);
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- inventoryTracker.setInventory(inventory);
- }
+ handler(wrapper -> {
+ String inventory = wrapper.get(Type.STRING, 0);
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ inventoryTracker.setInventory(inventory);
});
// Brewing patch
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- String inventory = wrapper.get(Type.STRING, 0);
- if (inventory.equals("minecraft:brewing_stand")) {
- wrapper.set(Type.UNSIGNED_BYTE, 1, (short) (wrapper.get(Type.UNSIGNED_BYTE, 1) + 1));
- }
+ handler(wrapper -> {
+ String inventory = wrapper.get(Type.STRING, 0);
+ if (inventory.equals("minecraft:brewing_stand")) {
+ wrapper.set(Type.UNSIGNED_BYTE, 1, (short) (wrapper.get(Type.UNSIGNED_BYTE, 1) + 1));
}
});
}
@@ -110,44 +100,38 @@ public class InventoryPackets {
map(Type.UNSIGNED_BYTE); // 0 - Window ID
map(Type.SHORT); // 1 - Slot ID
map(Type.ITEM); // 2 - Slot Value
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Item stack = wrapper.get(Type.ITEM, 0);
+ handler(wrapper -> {
+ Item stack = wrapper.get(Type.ITEM, 0);
- boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand()
- && Via.getConfig().isShieldBlocking();
+ boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand()
+ && Via.getConfig().isShieldBlocking();
- // Check if it is the inventory of the player
- if (showShieldWhenSwordInHand) {
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
-
- short slotID = wrapper.get(Type.SHORT, 0);
- byte windowId = wrapper.get(Type.UNSIGNED_BYTE, 0).byteValue();
-
- // Store item in slot
- inventoryTracker.setItemId(windowId, slotID, stack == null ? 0 : stack.identifier());
-
- // Sync shield item in offhand with main hand
- entityTracker.syncShieldWithSword();
- }
-
- ItemRewriter.toClient(stack);
- }
- });
- // Brewing patch
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
+ // Check if it is the inventory of the player
+ if (showShieldWhenSwordInHand) {
InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
short slotID = wrapper.get(Type.SHORT, 0);
- if (inventoryTracker.getInventory() != null) {
- if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) {
- if (slotID >= 4) {
- wrapper.set(Type.SHORT, 0, (short) (slotID + 1));
- }
+ byte windowId = wrapper.get(Type.UNSIGNED_BYTE, 0).byteValue();
+
+ // Store item in slot
+ inventoryTracker.setItemId(windowId, slotID, stack == null ? 0 : stack.identifier());
+
+ // Sync shield item in offhand with main hand
+ entityTracker.syncShieldWithSword();
+ }
+
+ ItemRewriter.toClient(stack);
+ });
+ // Brewing patch
+ handler(wrapper -> {
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+
+ short slotID = wrapper.get(Type.SHORT, 0);
+ if (inventoryTracker.getInventory() != null) {
+ if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) {
+ if (slotID >= 4) {
+ wrapper.set(Type.SHORT, 0, (short) (slotID + 1));
}
}
}
@@ -161,55 +145,49 @@ public class InventoryPackets {
map(Type.UNSIGNED_BYTE); // 0 - Window ID
map(Type.ITEM_ARRAY); // 1 - Window Values
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Item[] stacks = wrapper.get(Type.ITEM_ARRAY, 0);
- Short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0);
+ handler(wrapper -> {
+ Item[] stacks = wrapper.get(Type.ITEM_ARRAY, 0);
+ Short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0);
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand()
- && Via.getConfig().isShieldBlocking();
+ boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand()
+ && Via.getConfig().isShieldBlocking();
- for (short i = 0; i < stacks.length; i++) {
- Item stack = stacks[i];
+ for (short i = 0; i < stacks.length; i++) {
+ Item stack = stacks[i];
- // Store items in slots
- if (showShieldWhenSwordInHand) {
- inventoryTracker.setItemId(windowId, i, stack == null ? 0 : stack.identifier());
- }
-
- ItemRewriter.toClient(stack);
- }
-
- // Sync shield item in offhand with main hand
+ // Store items in slots
if (showShieldWhenSwordInHand) {
- entityTracker.syncShieldWithSword();
+ inventoryTracker.setItemId(windowId, i, stack == null ? 0 : stack.identifier());
}
+
+ ItemRewriter.toClient(stack);
+ }
+
+ // Sync shield item in offhand with main hand
+ if (showShieldWhenSwordInHand) {
+ entityTracker.syncShieldWithSword();
}
});
// Brewing Patch
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- if (inventoryTracker.getInventory() != null) {
- if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) {
- Item[] oldStack = wrapper.get(Type.ITEM_ARRAY, 0);
- Item[] newStack = new Item[oldStack.length + 1];
- for (int i = 0; i < newStack.length; i++) {
- if (i > 4) {
- newStack[i] = oldStack[i - 1];
- } else {
- if (i != 4) { // Leave index 3 blank
- newStack[i] = oldStack[i];
- }
+ handler(wrapper -> {
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ if (inventoryTracker.getInventory() != null) {
+ if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) {
+ Item[] oldStack = wrapper.get(Type.ITEM_ARRAY, 0);
+ Item[] newStack = new Item[oldStack.length + 1];
+ for (int i = 0; i < newStack.length; i++) {
+ if (i > 4) {
+ newStack[i] = oldStack[i - 1];
+ } else {
+ if (i != 4) { // Leave index 3 blank
+ newStack[i] = oldStack[i];
}
}
- wrapper.set(Type.ITEM_ARRAY, 0, newStack);
}
+ wrapper.set(Type.ITEM_ARRAY, 0, newStack);
}
}
});
@@ -221,13 +199,10 @@ public class InventoryPackets {
public void register() {
map(Type.UNSIGNED_BYTE); // 0 - Window ID
// Inventory tracking
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- inventoryTracker.setInventory(null);
- inventoryTracker.resetInventory(wrapper.get(Type.UNSIGNED_BYTE, 0));
- }
+ handler(wrapper -> {
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ inventoryTracker.setInventory(null);
+ inventoryTracker.resetInventory(wrapper.get(Type.UNSIGNED_BYTE, 0));
});
}
});
@@ -238,11 +213,8 @@ public class InventoryPackets {
public void register() {
map(Type.VAR_INT); // 0 - Map ID
map(Type.BYTE); // 1 - Map Scale
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) {
- wrapper.write(Type.BOOLEAN, true); // 2 - Show marker
- }
+ handler(wrapper -> {
+ wrapper.write(Type.BOOLEAN, true); // 2 - Show marker
});
// Everything else is passed through
}
@@ -256,48 +228,42 @@ public class InventoryPackets {
public void register() {
map(Type.SHORT); // 0 - Slot ID
map(Type.ITEM); // 1 - Item
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Item stack = wrapper.get(Type.ITEM, 0);
+ handler(wrapper -> {
+ Item stack = wrapper.get(Type.ITEM, 0);
- boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand()
- && Via.getConfig().isShieldBlocking();
+ boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand()
+ && Via.getConfig().isShieldBlocking();
- if (showShieldWhenSwordInHand) {
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- short slotID = wrapper.get(Type.SHORT, 0);
+ if (showShieldWhenSwordInHand) {
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ short slotID = wrapper.get(Type.SHORT, 0);
- // Update item in slot
- inventoryTracker.setItemId((short) 0, slotID, stack == null ? 0 : stack.identifier());
+ // Update item in slot
+ inventoryTracker.setItemId((short) 0, slotID, stack == null ? 0 : stack.identifier());
- // Sync shield item in offhand with main hand
- entityTracker.syncShieldWithSword();
- }
-
- ItemRewriter.toServer(stack);
+ // Sync shield item in offhand with main hand
+ entityTracker.syncShieldWithSword();
}
+
+ ItemRewriter.toServer(stack);
});
// Elytra throw patch
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- final short slot = wrapper.get(Type.SHORT, 0);
- boolean throwItem = (slot == 45);
- if (throwItem) {
- // Send a packet wiping the slot
- wrapper.create(ClientboundPackets1_9.SET_SLOT, new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.write(Type.UNSIGNED_BYTE, (short) 0);
- wrapper.write(Type.SHORT, slot);
- wrapper.write(Type.ITEM, null);
- }
- }).send(Protocol1_9To1_8.class);
- // Finally reset to simulate throwing item
- wrapper.set(Type.SHORT, 0, (short) -999); // Set slot to -999
- }
+ handler(wrapper -> {
+ final short slot = wrapper.get(Type.SHORT, 0);
+ boolean throwItem = (slot == 45);
+ if (throwItem) {
+ // Send a packet wiping the slot
+ wrapper.create(ClientboundPackets1_9.SET_SLOT, new PacketHandler() {
+ @Override
+ public void handle(PacketWrapper wrapper) throws Exception {
+ wrapper.write(Type.UNSIGNED_BYTE, (short) 0);
+ wrapper.write(Type.SHORT, slot);
+ wrapper.write(Type.ITEM, null);
+ }
+ }).send(Protocol1_9To1_8.class);
+ // Finally reset to simulate throwing item
+ wrapper.set(Type.SHORT, 0, (short) -999); // Set slot to -999
}
});
}
@@ -313,59 +279,53 @@ public class InventoryPackets {
map(Type.SHORT); // 3 - Action
map(Type.VAR_INT, Type.BYTE); // 4 - Mode
map(Type.ITEM); // 5 - Clicked Item
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Item stack = wrapper.get(Type.ITEM, 0);
+ handler(wrapper -> {
+ Item stack = wrapper.get(Type.ITEM, 0);
- if (Via.getConfig().isShowShieldWhenSwordInHand()) {
- Short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0);
- byte mode = wrapper.get(Type.BYTE, 1);
- short hoverSlot = wrapper.get(Type.SHORT, 0);
- byte button = wrapper.get(Type.BYTE, 0);
+ if (Via.getConfig().isShowShieldWhenSwordInHand()) {
+ Short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0);
+ byte mode = wrapper.get(Type.BYTE, 1);
+ short hoverSlot = wrapper.get(Type.SHORT, 0);
+ byte button = wrapper.get(Type.BYTE, 0);
- // Move items in inventory to track the sword location
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- inventoryTracker.handleWindowClick(wrapper.user(), windowId, mode, hoverSlot, button);
- }
-
- ItemRewriter.toServer(stack);
+ // Move items in inventory to track the sword location
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ inventoryTracker.handleWindowClick(wrapper.user(), windowId, mode, hoverSlot, button);
}
+
+ ItemRewriter.toServer(stack);
});
// Brewing patch and elytra throw patch
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- final short windowID = wrapper.get(Type.UNSIGNED_BYTE, 0);
- final short slot = wrapper.get(Type.SHORT, 0);
- boolean throwItem = (slot == 45 && windowID == 0);
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- if (inventoryTracker.getInventory() != null) {
- if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) {
- if (slot == 4) {
- throwItem = true;
- }
- if (slot > 4) {
- wrapper.set(Type.SHORT, 0, (short) (slot - 1));
- }
+ handler(wrapper -> {
+ final short windowID = wrapper.get(Type.UNSIGNED_BYTE, 0);
+ final short slot = wrapper.get(Type.SHORT, 0);
+ boolean throwItem = (slot == 45 && windowID == 0);
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ if (inventoryTracker.getInventory() != null) {
+ if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) {
+ if (slot == 4) {
+ throwItem = true;
+ }
+ if (slot > 4) {
+ wrapper.set(Type.SHORT, 0, (short) (slot - 1));
}
}
+ }
- if (throwItem) {
- // Send a packet wiping the slot
- wrapper.create(ClientboundPackets1_9.SET_SLOT, new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.write(Type.UNSIGNED_BYTE, (short) windowID);
- wrapper.write(Type.SHORT, slot);
- wrapper.write(Type.ITEM, null);
- }
- }).scheduleSend(Protocol1_9To1_8.class);
- // Finally reset to simulate throwing item
- wrapper.set(Type.BYTE, 0, (byte) 0); // Set button to 0
- wrapper.set(Type.BYTE, 1, (byte) 0); // Set mode to 0
- wrapper.set(Type.SHORT, 0, (short) -999); // Set slot to -999
- }
+ if (throwItem) {
+ // Send a packet wiping the slot
+ wrapper.create(ClientboundPackets1_9.SET_SLOT, new PacketHandler() {
+ @Override
+ public void handle(PacketWrapper wrapper) throws Exception {
+ wrapper.write(Type.UNSIGNED_BYTE, (short) windowID);
+ wrapper.write(Type.SHORT, slot);
+ wrapper.write(Type.ITEM, null);
+ }
+ }).scheduleSend(Protocol1_9To1_8.class);
+ // Finally reset to simulate throwing item
+ wrapper.set(Type.BYTE, 0, (byte) 0); // Set button to 0
+ wrapper.set(Type.BYTE, 1, (byte) 0); // Set mode to 0
+ wrapper.set(Type.SHORT, 0, (short) -999); // Set slot to -999
}
});
}
@@ -378,13 +338,10 @@ public class InventoryPackets {
map(Type.UNSIGNED_BYTE); // 0 - Window ID
// Inventory tracking
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
- inventoryTracker.setInventory(null);
- inventoryTracker.resetInventory(wrapper.get(Type.UNSIGNED_BYTE, 0));
- }
+ handler(wrapper -> {
+ InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class);
+ inventoryTracker.setInventory(null);
+ inventoryTracker.resetInventory(wrapper.get(Type.UNSIGNED_BYTE, 0));
});
}
});
@@ -395,28 +352,25 @@ public class InventoryPackets {
map(Type.SHORT); // 0 - Slot id
// Blocking patch
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand()
- && Via.getConfig().isShieldBlocking();
+ handler(wrapper -> {
+ boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand()
+ && Via.getConfig().isShieldBlocking();
- EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- if (entityTracker.isBlocking()) {
- entityTracker.setBlocking(false);
+ EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ if (entityTracker.isBlocking()) {
+ entityTracker.setBlocking(false);
- if (!showShieldWhenSwordInHand) {
- entityTracker.setSecondHand(null);
- }
+ if (!showShieldWhenSwordInHand) {
+ entityTracker.setSecondHand(null);
}
+ }
- if (showShieldWhenSwordInHand) {
- // Update current held item slot index
- entityTracker.setHeldItemSlot(wrapper.get(Type.SHORT, 0));
+ if (showShieldWhenSwordInHand) {
+ // Update current held item slot index
+ entityTracker.setHeldItemSlot(wrapper.get(Type.SHORT, 0));
- // Sync shield item in offhand with main hand
- entityTracker.syncShieldWithSword();
- }
+ // Sync shield item in offhand with main hand
+ entityTracker.syncShieldWithSword();
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/PlayerPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/PlayerPackets.java
index 35be68de7..d53ba81c8 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/PlayerPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/PlayerPackets.java
@@ -21,8 +21,6 @@ import com.google.gson.JsonObject;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types;
import com.viaversion.viaversion.api.minecraft.item.Item;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8;
@@ -311,13 +309,10 @@ public class PlayerPackets {
map(Type.STRING); // 3 - Level Type
// Track player's dimension
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- int dimensionId = wrapper.get(Type.INT, 0);
- clientWorld.setEnvironment(dimensionId);
- }
+ handler(wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ int dimensionId = wrapper.get(Type.INT, 0);
+ clientWorld.setEnvironment(dimensionId);
});
handler(wrapper -> {
@@ -358,16 +353,11 @@ public class PlayerPackets {
});
/* Removed packets */
- protocol.registerClientbound(ClientboundPackets1_8.SET_COMPRESSION, null, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- wrapper.cancel();
- CompressionProvider provider = Via.getManager().getProviders().get(CompressionProvider.class);
+ protocol.registerClientbound(ClientboundPackets1_8.SET_COMPRESSION, null, wrapper -> {
+ wrapper.cancel();
+ CompressionProvider provider = Via.getManager().getProviders().get(CompressionProvider.class);
- provider.handlePlayCompression(wrapper.user(), wrapper.read(Type.VAR_INT));
- });
- }
+ provider.handlePlayCompression(wrapper.user(), wrapper.read(Type.VAR_INT));
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/SpawnPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/SpawnPackets.java
index a02bef4cd..8da2a41db 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/SpawnPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/SpawnPackets.java
@@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_9;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer;
import com.viaversion.viaversion.api.type.Type;
@@ -37,7 +36,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.ItemRewriter;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.metadata.MetadataRewriter1_9To1_8;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
-
import java.util.ArrayList;
import java.util.List;
@@ -55,26 +53,20 @@ public class SpawnPackets {
public void register() {
map(Type.VAR_INT); // 0 - Entity ID
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID
});
map(Type.BYTE); // 2 - Type
// Parse this info
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- int typeID = wrapper.get(Type.BYTE, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.addEntity(entityID, Entity1_10Types.getTypeFromId(typeID, true));
- tracker.sendMetadataBuffer(entityID);
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ int typeID = wrapper.get(Type.BYTE, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.addEntity(entityID, Entity1_10Types.getTypeFromId(typeID, true));
+ tracker.sendMetadataBuffer(entityID);
});
map(Type.INT, toNewDouble); // 3 - X - Needs to be divide by 32
@@ -87,52 +79,43 @@ public class SpawnPackets {
map(Type.INT); // 8 - Data
// Create last 3 shorts
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int data = wrapper.get(Type.INT, 0); // Data (1st Integer)
+ handler(wrapper -> {
+ int data = wrapper.get(Type.INT, 0); // Data (1st Integer)
- short vX = 0, vY = 0, vZ = 0;
- if (data > 0) {
- vX = wrapper.read(Type.SHORT);
- vY = wrapper.read(Type.SHORT);
- vZ = wrapper.read(Type.SHORT);
- }
-
- wrapper.write(Type.SHORT, vX);
- wrapper.write(Type.SHORT, vY);
- wrapper.write(Type.SHORT, vZ);
+ short vX = 0, vY = 0, vZ = 0;
+ if (data > 0) {
+ vX = wrapper.read(Type.SHORT);
+ vY = wrapper.read(Type.SHORT);
+ vZ = wrapper.read(Type.SHORT);
}
+
+ wrapper.write(Type.SHORT, vX);
+ wrapper.write(Type.SHORT, vY);
+ wrapper.write(Type.SHORT, vZ);
});
// Handle potions
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- final int entityID = wrapper.get(Type.VAR_INT, 0);
- final int data = wrapper.get(Type.INT, 0); // Data
+ handler(wrapper -> {
+ final int entityID = wrapper.get(Type.VAR_INT, 0);
+ final int data = wrapper.get(Type.INT, 0); // Data
- int typeID = wrapper.get(Type.BYTE, 0);
- if (Entity1_10Types.getTypeFromId(typeID, true) == Entity1_10Types.EntityType.SPLASH_POTION) {
- // Convert this to meta data, woo!
- PacketWrapper metaPacket = wrapper.create(ClientboundPackets1_9.ENTITY_METADATA, new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- wrapper.write(Type.VAR_INT, entityID);
- List meta = new ArrayList<>();
- Item item = new DataItem(373, (byte) 1, (short) data, null); // Potion
- ItemRewriter.toClient(item); // Rewrite so that it gets the right nbt
- // TEMP FIX FOR POTIONS UNTIL WE FIGURE OUT HOW TO TRANSFORM SENT PACKETS
- Metadata potion = new Metadata(5, MetaType1_9.Slot, item);
- meta.add(potion);
- wrapper.write(Types1_9.METADATA_LIST, meta);
- }
- });
- // Fix packet order
- wrapper.send(Protocol1_9To1_8.class);
- metaPacket.send(Protocol1_9To1_8.class);
- wrapper.cancel();
- }
+ int typeID = wrapper.get(Type.BYTE, 0);
+ if (Entity1_10Types.getTypeFromId(typeID, true) == Entity1_10Types.EntityType.SPLASH_POTION) {
+ // Convert this to meta data, woo!
+ PacketWrapper metaPacket = wrapper.create(ClientboundPackets1_9.ENTITY_METADATA, wrapper1 -> {
+ wrapper1.write(Type.VAR_INT, entityID);
+ List meta = new ArrayList<>();
+ Item item = new DataItem(373, (byte) 1, (short) data, null); // Potion
+ ItemRewriter.toClient(item); // Rewrite so that it gets the right nbt
+ // TEMP FIX FOR POTIONS UNTIL WE FIGURE OUT HOW TO TRANSFORM SENT PACKETS
+ Metadata potion = new Metadata(5, MetaType1_9.Slot, item);
+ meta.add(potion);
+ wrapper1.write(Types1_9.METADATA_LIST, meta);
+ });
+ // Fix packet order
+ wrapper.send(Protocol1_9To1_8.class);
+ metaPacket.send(Protocol1_9To1_8.class);
+ wrapper.cancel();
}
});
}
@@ -144,14 +127,11 @@ public class SpawnPackets {
map(Type.VAR_INT); // 0 - Entity ID
// Parse this info
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.addEntity(entityID, Entity1_10Types.EntityType.EXPERIENCE_ORB);
- tracker.sendMetadataBuffer(entityID);
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.addEntity(entityID, Entity1_10Types.EntityType.EXPERIENCE_ORB);
+ tracker.sendMetadataBuffer(entityID);
});
map(Type.INT, toNewDouble); // 1 - X - Needs to be divide by 32
@@ -168,15 +148,12 @@ public class SpawnPackets {
map(Type.VAR_INT); // 0 - Entity ID
map(Type.BYTE); // 1 - Type
// Parse this info
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- // Currently only lightning uses this
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.addEntity(entityID, Entity1_10Types.EntityType.LIGHTNING);
- tracker.sendMetadataBuffer(entityID);
- }
+ handler(wrapper -> {
+ // Currently only lightning uses this
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.addEntity(entityID, Entity1_10Types.EntityType.LIGHTNING);
+ tracker.sendMetadataBuffer(entityID);
});
map(Type.INT, toNewDouble); // 2 - X - Needs to be divide by 32
@@ -190,26 +167,20 @@ public class SpawnPackets {
public void register() {
map(Type.VAR_INT); // 0 - Entity ID
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID
});
map(Type.UNSIGNED_BYTE); // 2 - Type
// Parse this info
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- int typeID = wrapper.get(Type.UNSIGNED_BYTE, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.addEntity(entityID, Entity1_10Types.getTypeFromId(typeID, false));
- tracker.sendMetadataBuffer(entityID);
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ int typeID = wrapper.get(Type.UNSIGNED_BYTE, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.addEntity(entityID, Entity1_10Types.getTypeFromId(typeID, false));
+ tracker.sendMetadataBuffer(entityID);
});
map(Type.INT, toNewDouble); // 3 - X - Needs to be divide by 32
@@ -225,29 +196,23 @@ public class SpawnPackets {
map(Type.SHORT); // 11 - Velocity Z
map(Types1_8.METADATA_LIST, Types1_9.METADATA_LIST);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
- int entityId = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- if (tracker.hasEntity(entityId)) {
- protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user());
- } else {
- Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityId);
- metadataList.clear();
- }
+ handler(wrapper -> {
+ List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ if (tracker.hasEntity(entityId)) {
+ protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user());
+ } else {
+ Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityId);
+ metadataList.clear();
}
});
// Handler for meta data
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.handleMetadata(entityID, metadataList);
- }
+ handler(wrapper -> {
+ List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.handleMetadata(entityID, metadataList);
});
}
});
@@ -258,22 +223,16 @@ public class SpawnPackets {
map(Type.VAR_INT); // 0 - Entity ID
// Parse this info
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.addEntity(entityID, Entity1_10Types.EntityType.PAINTING);
- tracker.sendMetadataBuffer(entityID);
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.addEntity(entityID, Entity1_10Types.EntityType.PAINTING);
+ tracker.sendMetadataBuffer(entityID);
});
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID
});
map(Type.STRING); // 2 - Title
@@ -289,14 +248,11 @@ public class SpawnPackets {
map(Type.UUID); // 1 - Player UUID
// Parse this info
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.addEntity(entityID, Entity1_10Types.EntityType.PLAYER);
- tracker.sendMetadataBuffer(entityID);
- }
+ handler(wrapper -> {
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.addEntity(entityID, Entity1_10Types.EntityType.PLAYER);
+ tracker.sendMetadataBuffer(entityID);
});
map(Type.INT, toNewDouble); // 2 - X - Needs to be divide by 32
@@ -306,50 +262,42 @@ public class SpawnPackets {
map(Type.BYTE); // 5 - Yaw
map(Type.BYTE); // 6 - Pitch
- handler(new PacketHandler() { //Handle discontinued player hand item
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- short item = wrapper.read(Type.SHORT);
- if (item != 0) {
- PacketWrapper packet = PacketWrapper.create(ClientboundPackets1_9.ENTITY_EQUIPMENT, null, wrapper.user());
- packet.write(Type.VAR_INT, wrapper.get(Type.VAR_INT, 0));
- packet.write(Type.VAR_INT, 0);
- packet.write(Type.ITEM, new DataItem(item, (byte) 1, (short) 0, null));
- try {
- packet.send(Protocol1_9To1_8.class);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ //Handle discontinued player hand item
+ handler(wrapper -> {
+ short item = wrapper.read(Type.SHORT);
+ if (item != 0) {
+ PacketWrapper packet = PacketWrapper.create(ClientboundPackets1_9.ENTITY_EQUIPMENT, null, wrapper.user());
+ packet.write(Type.VAR_INT, wrapper.get(Type.VAR_INT, 0));
+ packet.write(Type.VAR_INT, 0);
+ packet.write(Type.ITEM, new DataItem(item, (byte) 1, (short) 0, null));
+ try {
+ packet.send(Protocol1_9To1_8.class);
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
});
map(Types1_8.METADATA_LIST, Types1_9.METADATA_LIST);
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
- int entityId = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- if (tracker.hasEntity(entityId)) {
- protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user());
- } else {
- Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityId);
- metadataList.clear();
- }
+ handler(wrapper -> {
+ List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
+ int entityId = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ if (tracker.hasEntity(entityId)) {
+ protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user());
+ } else {
+ Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityId);
+ metadataList.clear();
}
});
// Handler for meta data
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
- int entityID = wrapper.get(Type.VAR_INT, 0);
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.handleMetadata(entityID, metadataList);
- }
+ handler(wrapper -> {
+ List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0);
+ int entityID = wrapper.get(Type.VAR_INT, 0);
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.handleMetadata(entityID, metadataList);
});
}
});
@@ -360,15 +308,12 @@ public class SpawnPackets {
public void register() {
map(Type.VAR_INT_ARRAY_PRIMITIVE); // 0 - Entities to destroy
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int[] entities = wrapper.get(Type.VAR_INT_ARRAY_PRIMITIVE, 0);
- EntityTracker tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- for (int entity : entities) {
- // EntityTracker
- tracker.removeEntity(entity);
- }
+ handler(wrapper -> {
+ int[] entities = wrapper.get(Type.VAR_INT_ARRAY_PRIMITIVE, 0);
+ EntityTracker tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ for (int entity : entities) {
+ // EntityTracker
+ tracker.removeEntity(entity);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java
index f6b3ef55d..2b2156092 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java
@@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.minecraft.item.DataItem;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8;
@@ -70,25 +69,19 @@ public class WorldPackets {
map(Type.INT); // 2 - Data
map(Type.BOOLEAN); // 3 - Disable relative volume
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int id = wrapper.get(Type.INT, 0);
+ handler(wrapper -> {
+ int id = wrapper.get(Type.INT, 0);
- id = Effect.getNewId(id);
- wrapper.set(Type.INT, 0, id);
- }
+ id = Effect.getNewId(id);
+ wrapper.set(Type.INT, 0, id);
});
// Rewrite potion effect as it changed to use a dynamic registry
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int id = wrapper.get(Type.INT, 0);
- if (id == 2002) {
- int data = wrapper.get(Type.INT, 1);
- int newData = ItemRewriter.getNewEffectID(data);
- wrapper.set(Type.INT, 1, newData);
- }
+ handler(wrapper -> {
+ int id = wrapper.get(Type.INT, 0);
+ if (id == 2002) {
+ int data = wrapper.get(Type.INT, 1);
+ int newData = ItemRewriter.getNewEffectID(data);
+ wrapper.set(Type.INT, 1, newData);
}
});
}
@@ -101,164 +94,145 @@ public class WorldPackets {
// 1 - Sound Category ID
// Everything else get's written through
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- String name = wrapper.get(Type.STRING, 0);
-
- SoundEffect effect = SoundEffect.getByName(name);
- int catid = 0;
- String newname = name;
- if (effect != null) {
- catid = effect.getCategory().getId();
- newname = effect.getNewName();
- }
- wrapper.set(Type.STRING, 0, newname);
- wrapper.write(Type.VAR_INT, catid); // Write Category ID
- if (effect != null && effect.isBreaksound()) {
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- int x = wrapper.passthrough(Type.INT); //Position X
- int y = wrapper.passthrough(Type.INT); //Position Y
- int z = wrapper.passthrough(Type.INT); //Position Z
- if (tracker.interactedBlockRecently((int) Math.floor(x / 8.0), (int) Math.floor(y / 8.0), (int) Math.floor(z / 8.0))) {
- wrapper.cancel();
- }
- }
- }
- });
- }
- });
-
- protocol.registerClientbound(ClientboundPackets1_8.CHUNK_DATA, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- ClientChunks clientChunks = wrapper.user().get(ClientChunks.class);
- Chunk chunk = wrapper.read(new Chunk1_8Type(clientWorld));
-
- long chunkHash = ClientChunks.toLong(chunk.getX(), chunk.getZ());
-
- // Check if the chunk should be handled as an unload packet
- if (chunk.isFullChunk() && chunk.getBitmask() == 0) {
- wrapper.setPacketType(ClientboundPackets1_9.UNLOAD_CHUNK);
- wrapper.write(Type.INT, chunk.getX());
- wrapper.write(Type.INT, chunk.getZ());
-
- // Remove commandBlocks on chunk unload
- CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class);
- provider.unloadChunk(wrapper.user(), chunk.getX(), chunk.getZ());
-
- clientChunks.getLoadedChunks().remove(chunkHash);
-
- // Unload the empty chunks
- if (Via.getConfig().isChunkBorderFix()) {
- for (BlockFace face : BlockFace.HORIZONTAL) {
- int chunkX = chunk.getX() + face.modX();
- int chunkZ = chunk.getZ() + face.modZ();
- if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) {
- PacketWrapper unloadChunk = wrapper.create(ClientboundPackets1_9.UNLOAD_CHUNK);
- unloadChunk.write(Type.INT, chunkX);
- unloadChunk.write(Type.INT, chunkZ);
- unloadChunk.send(Protocol1_9To1_8.class);
- }
- }
- }
- } else {
- Type chunkType = new Chunk1_9_1_2Type(clientWorld);
- wrapper.write(chunkType, chunk);
-
- clientChunks.getLoadedChunks().add(chunkHash);
-
- // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk
- if (Via.getConfig().isChunkBorderFix()) {
- for (BlockFace face : BlockFace.HORIZONTAL) {
- int chunkX = chunk.getX() + face.modX();
- int chunkZ = chunk.getZ() + face.modZ();
- if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) {
- PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.CHUNK_DATA);
- Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>());
- emptyChunk.write(chunkType, c);
- emptyChunk.send(Protocol1_9To1_8.class);
- }
- }
- }
- }
- }
- });
- }
- });
-
- protocol.registerClientbound(ClientboundPackets1_8.MAP_BULK_CHUNK, null, new PacketHandlers() {
- @Override
- public void register() {
handler(wrapper -> {
- wrapper.cancel(); // Cancel the packet from being sent
- ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
- ClientChunks clientChunks = wrapper.user().get(ClientChunks.class);
- Chunk[] chunks = wrapper.read(new ChunkBulk1_8Type(clientWorld));
+ String name = wrapper.get(Type.STRING, 0);
- Type chunkType = new Chunk1_9_1_2Type(clientWorld);
- // Split into multiple chunk packets
- for (Chunk chunk : chunks) {
- PacketWrapper chunkData = wrapper.create(ClientboundPackets1_9.CHUNK_DATA);
- chunkData.write(chunkType, chunk);
- chunkData.send(Protocol1_9To1_8.class);
-
- clientChunks.getLoadedChunks().add(ClientChunks.toLong(chunk.getX(), chunk.getZ()));
-
- // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk
- if (Via.getConfig().isChunkBorderFix()) {
- for (BlockFace face : BlockFace.HORIZONTAL) {
- int chunkX = chunk.getX() + face.modX();
- int chunkZ = chunk.getZ() + face.modZ();
- if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) {
- PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.CHUNK_DATA);
- Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>());
- emptyChunk.write(chunkType, c);
- emptyChunk.send(Protocol1_9To1_8.class);
- }
- }
+ SoundEffect effect = SoundEffect.getByName(name);
+ int catid = 0;
+ String newname = name;
+ if (effect != null) {
+ catid = effect.getCategory().getId();
+ newname = effect.getNewName();
+ }
+ wrapper.set(Type.STRING, 0, newname);
+ wrapper.write(Type.VAR_INT, catid); // Write Category ID
+ if (effect != null && effect.isBreaksound()) {
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ int x = wrapper.passthrough(Type.INT); //Position X
+ int y = wrapper.passthrough(Type.INT); //Position Y
+ int z = wrapper.passthrough(Type.INT); //Position Z
+ if (tracker.interactedBlockRecently((int) Math.floor(x / 8.0), (int) Math.floor(y / 8.0), (int) Math.floor(z / 8.0))) {
+ wrapper.cancel();
}
}
});
}
});
+ protocol.registerClientbound(ClientboundPackets1_8.CHUNK_DATA, wrapper -> {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ ClientChunks clientChunks = wrapper.user().get(ClientChunks.class);
+ Chunk chunk = wrapper.read(new Chunk1_8Type(clientWorld));
+
+ long chunkHash = ClientChunks.toLong(chunk.getX(), chunk.getZ());
+
+ // Check if the chunk should be handled as an unload packet
+ if (chunk.isFullChunk() && chunk.getBitmask() == 0) {
+ wrapper.setPacketType(ClientboundPackets1_9.UNLOAD_CHUNK);
+ wrapper.write(Type.INT, chunk.getX());
+ wrapper.write(Type.INT, chunk.getZ());
+
+ // Remove commandBlocks on chunk unload
+ CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class);
+ provider.unloadChunk(wrapper.user(), chunk.getX(), chunk.getZ());
+
+ clientChunks.getLoadedChunks().remove(chunkHash);
+
+ // Unload the empty chunks
+ if (Via.getConfig().isChunkBorderFix()) {
+ for (BlockFace face : BlockFace.HORIZONTAL) {
+ int chunkX = chunk.getX() + face.modX();
+ int chunkZ = chunk.getZ() + face.modZ();
+ if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) {
+ PacketWrapper unloadChunk = wrapper.create(ClientboundPackets1_9.UNLOAD_CHUNK);
+ unloadChunk.write(Type.INT, chunkX);
+ unloadChunk.write(Type.INT, chunkZ);
+ unloadChunk.send(Protocol1_9To1_8.class);
+ }
+ }
+ }
+ } else {
+ Type chunkType = new Chunk1_9_1_2Type(clientWorld);
+ wrapper.write(chunkType, chunk);
+
+ clientChunks.getLoadedChunks().add(chunkHash);
+
+ // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk
+ if (Via.getConfig().isChunkBorderFix()) {
+ for (BlockFace face : BlockFace.HORIZONTAL) {
+ int chunkX = chunk.getX() + face.modX();
+ int chunkZ = chunk.getZ() + face.modZ();
+ if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) {
+ PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.CHUNK_DATA);
+ Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>());
+ emptyChunk.write(chunkType, c);
+ emptyChunk.send(Protocol1_9To1_8.class);
+ }
+ }
+ }
+ }
+ });
+
+ protocol.registerClientbound(ClientboundPackets1_8.MAP_BULK_CHUNK, null, wrapper -> {
+ wrapper.cancel(); // Cancel the packet from being sent
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+ ClientChunks clientChunks = wrapper.user().get(ClientChunks.class);
+ Chunk[] chunks = wrapper.read(new ChunkBulk1_8Type(clientWorld));
+
+ Type chunkType = new Chunk1_9_1_2Type(clientWorld);
+ // Split into multiple chunk packets
+ for (Chunk chunk : chunks) {
+ PacketWrapper chunkData = wrapper.create(ClientboundPackets1_9.CHUNK_DATA);
+ chunkData.write(chunkType, chunk);
+ chunkData.send(Protocol1_9To1_8.class);
+
+ clientChunks.getLoadedChunks().add(ClientChunks.toLong(chunk.getX(), chunk.getZ()));
+
+ // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk
+ if (Via.getConfig().isChunkBorderFix()) {
+ for (BlockFace face : BlockFace.HORIZONTAL) {
+ int chunkX = chunk.getX() + face.modX();
+ int chunkZ = chunk.getZ() + face.modZ();
+ if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) {
+ PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.CHUNK_DATA);
+ Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>());
+ emptyChunk.write(chunkType, c);
+ emptyChunk.send(Protocol1_9To1_8.class);
+ }
+ }
+ }
+ }
+ });
+
protocol.registerClientbound(ClientboundPackets1_8.BLOCK_ENTITY_DATA, new PacketHandlers() {
@Override
public void register() {
map(Type.POSITION); // 0 - Block Position
map(Type.UNSIGNED_BYTE); // 1 - Action
map(Type.NBT); // 2 - NBT (Might not be present)
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int action = wrapper.get(Type.UNSIGNED_BYTE, 0);
- if (action == 1) { // Update Spawner
- CompoundTag tag = wrapper.get(Type.NBT, 0);
- if (tag != null) {
- if (tag.contains("EntityId")) {
- String entity = (String) tag.get("EntityId").getValue();
- CompoundTag spawn = new CompoundTag();
- spawn.put("id", new StringTag(entity));
- tag.put("SpawnData", spawn);
- } else { // EntityID does not exist
- 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);
- }
+ handler(wrapper -> {
+ int action = wrapper.get(Type.UNSIGNED_BYTE, 0);
+ if (action == 1) { // Update Spawner
+ CompoundTag tag = wrapper.get(Type.NBT, 0);
+ if (tag != null) {
+ if (tag.contains("EntityId")) {
+ String entity = (String) tag.get("EntityId").getValue();
+ CompoundTag spawn = new CompoundTag();
+ spawn.put("id", new StringTag(entity));
+ tag.put("SpawnData", spawn);
+ } else { // EntityID does not exist
+ 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);
}
}
- if (action == 2) { // Update Command Block
- CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class);
- provider.addOrUpdateBlock(wrapper.user(), wrapper.get(Type.POSITION, 0), wrapper.get(Type.NBT, 0));
+ }
+ if (action == 2) { // Update Command Block
+ CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class);
+ provider.addOrUpdateBlock(wrapper.user(), wrapper.get(Type.POSITION, 0), wrapper.get(Type.NBT, 0));
- // To prevent window issues don't send updates
- wrapper.cancel();
- }
+ // To prevent window issues don't send updates
+ wrapper.cancel();
}
});
}
@@ -282,26 +256,20 @@ public class WorldPackets {
public void register() {
map(Type.VAR_INT); // Action
map(Type.POSITION); // Position
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int status = wrapper.get(Type.VAR_INT, 0);
- if (status == 6)
- wrapper.cancel();
- }
+ handler(wrapper -> {
+ int status = wrapper.get(Type.VAR_INT, 0);
+ if (status == 6)
+ wrapper.cancel();
});
// Blocking
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int status = wrapper.get(Type.VAR_INT, 0);
- if (status == 5 || status == 4 || status == 3) {
- EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- if (entityTracker.isBlocking()) {
- entityTracker.setBlocking(false);
- if (!Via.getConfig().isShowShieldWhenSwordInHand()) {
- entityTracker.setSecondHand(null);
- }
+ handler(wrapper -> {
+ int status = wrapper.get(Type.VAR_INT, 0);
+ if (status == 5 || status == 4 || status == 3) {
+ EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ if (entityTracker.isBlocking()) {
+ entityTracker.setBlocking(false);
+ if (!Via.getConfig().isShowShieldWhenSwordInHand()) {
+ entityTracker.setSecondHand(null);
}
}
}
@@ -309,70 +277,61 @@ public class WorldPackets {
}
});
- protocol.registerServerbound(ServerboundPackets1_9.USE_ITEM, null, new PacketHandlers() {
- @Override
- public void register() {
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int hand = wrapper.read(Type.VAR_INT);
- // Wipe the input buffer
- wrapper.clearInputBuffer();
- wrapper.setPacketType(ServerboundPackets1_8.PLAYER_BLOCK_PLACEMENT);
- wrapper.write(Type.POSITION, new Position(-1, (short) -1, -1));
- wrapper.write(Type.UNSIGNED_BYTE, (short) 255);
- // Write item in hand
- Item item = Protocol1_9To1_8.getHandItem(wrapper.user());
- // Blocking patch
- if (Via.getConfig().isShieldBlocking()) {
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ protocol.registerServerbound(ServerboundPackets1_9.USE_ITEM, null, wrapper -> {
+ int hand = wrapper.read(Type.VAR_INT);
+ // Wipe the input buffer
+ wrapper.clearInputBuffer();
+ wrapper.setPacketType(ServerboundPackets1_8.PLAYER_BLOCK_PLACEMENT);
+ wrapper.write(Type.POSITION, new Position(-1, (short) -1, -1));
+ wrapper.write(Type.UNSIGNED_BYTE, (short) 255);
+ // Write item in hand
+ Item item = Protocol1_9To1_8.getHandItem(wrapper.user());
+ // Blocking patch
+ if (Via.getConfig().isShieldBlocking()) {
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- // Check if the shield is already there or if we have to give it here
- boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand();
+ // Check if the shield is already there or if we have to give it here
+ boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand();
- // Method to identify the sword in hand
- boolean isSword = showShieldWhenSwordInHand ? tracker.hasSwordInHand()
- : item != null && Protocol1_9To1_8.isSword(item.identifier());
+ // Method to identify the sword in hand
+ boolean isSword = showShieldWhenSwordInHand ? tracker.hasSwordInHand()
+ : item != null && Protocol1_9To1_8.isSword(item.identifier());
- if (isSword) {
- if (hand == 0) {
- if (!tracker.isBlocking()) {
- tracker.setBlocking(true);
+ if (isSword) {
+ if (hand == 0) {
+ if (!tracker.isBlocking()) {
+ tracker.setBlocking(true);
- // Check if the shield is already in the offhand
- if (!showShieldWhenSwordInHand && tracker.getItemInSecondHand() == null) {
+ // Check if the shield is already in the offhand
+ if (!showShieldWhenSwordInHand && tracker.getItemInSecondHand() == null) {
- // Set shield in offhand when interacting with main hand
- Item shield = new DataItem(442, (byte) 1, (short) 0, null);
- tracker.setSecondHand(shield);
- }
- }
- }
-
- // Use the main hand to trigger the blocking
- boolean blockUsingMainHand = Via.getConfig().isNoDelayShieldBlocking()
- && !showShieldWhenSwordInHand;
-
- if (blockUsingMainHand && hand == 1 || !blockUsingMainHand && hand == 0) {
- wrapper.cancel();
- }
- } else {
- if (!showShieldWhenSwordInHand) {
- // Remove the shield from the offhand
- tracker.setSecondHand(null);
- }
- tracker.setBlocking(false);
+ // Set shield in offhand when interacting with main hand
+ Item shield = new DataItem(442, (byte) 1, (short) 0, null);
+ tracker.setSecondHand(shield);
}
}
- wrapper.write(Type.ITEM, item);
-
- wrapper.write(Type.UNSIGNED_BYTE, (short) 0);
- wrapper.write(Type.UNSIGNED_BYTE, (short) 0);
- wrapper.write(Type.UNSIGNED_BYTE, (short) 0);
}
- });
+ // Use the main hand to trigger the blocking
+ boolean blockUsingMainHand = Via.getConfig().isNoDelayShieldBlocking()
+ && !showShieldWhenSwordInHand;
+
+ if (blockUsingMainHand && hand == 1 || !blockUsingMainHand && hand == 0) {
+ wrapper.cancel();
+ }
+ } else {
+ if (!showShieldWhenSwordInHand) {
+ // Remove the shield from the offhand
+ tracker.setSecondHand(null);
+ }
+ tracker.setBlocking(false);
+ }
}
+ wrapper.write(Type.ITEM, item);
+
+ wrapper.write(Type.UNSIGNED_BYTE, (short) 0);
+ wrapper.write(Type.UNSIGNED_BYTE, (short) 0);
+ wrapper.write(Type.UNSIGNED_BYTE, (short) 0);
});
protocol.registerServerbound(ServerboundPackets1_9.PLAYER_BLOCK_PLACEMENT, new PacketHandlers() {
@@ -380,78 +339,66 @@ public class WorldPackets {
public void register() {
map(Type.POSITION); // 0 - Position
map(Type.VAR_INT, Type.UNSIGNED_BYTE); // 1 - Block Face
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- final int hand = wrapper.read(Type.VAR_INT); // 2 - Hand
- if (hand != 0) wrapper.cancel();
- }
+ handler(wrapper -> {
+ final int hand = wrapper.read(Type.VAR_INT); // 2 - Hand
+ if (hand != 0) wrapper.cancel();
});
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- Item item = Protocol1_9To1_8.getHandItem(wrapper.user());
- wrapper.write(Type.ITEM, item); // 3 - Item
- }
+ handler(wrapper -> {
+ Item item = Protocol1_9To1_8.getHandItem(wrapper.user());
+ wrapper.write(Type.ITEM, item); // 3 - Item
});
map(Type.UNSIGNED_BYTE); // 4 - X
map(Type.UNSIGNED_BYTE); // 5 - Y
map(Type.UNSIGNED_BYTE); // 6 - Z
//Register block place to fix sounds
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- int face = wrapper.get(Type.UNSIGNED_BYTE, 0);
- if (face == 255)
- return;
- Position p = wrapper.get(Type.POSITION, 0);
- int x = p.x();
- int y = p.y();
- int z = p.z();
- switch (face) {
- case 0:
- y--;
- break;
- case 1:
- y++;
- break;
- case 2:
- z--;
- break;
- case 3:
- z++;
- break;
- case 4:
- x--;
- break;
- case 5:
- x++;
- break;
- }
- EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
- tracker.addBlockInteraction(new Position(x, y, z));
+ handler(wrapper -> {
+ int face = wrapper.get(Type.UNSIGNED_BYTE, 0);
+ if (face == 255)
+ return;
+ Position p = wrapper.get(Type.POSITION, 0);
+ int x = p.x();
+ int y = p.y();
+ int z = p.z();
+ switch (face) {
+ case 0:
+ y--;
+ break;
+ case 1:
+ y++;
+ break;
+ case 2:
+ z--;
+ break;
+ case 3:
+ z++;
+ break;
+ case 4:
+ x--;
+ break;
+ case 5:
+ x++;
+ break;
}
+ EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class);
+ tracker.addBlockInteraction(new Position(x, y, z));
});
// Handle CommandBlocks
- handler(new PacketHandler() {
- @Override
- public void handle(PacketWrapper wrapper) throws Exception {
- CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class);
+ handler(wrapper -> {
+ CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class);
- Position pos = wrapper.get(Type.POSITION, 0);
- Optional tag = provider.get(wrapper.user(), pos);
- // Send the Update Block Entity packet if present
- if (tag.isPresent()) {
- PacketWrapper updateBlockEntity = PacketWrapper.create(ClientboundPackets1_9.BLOCK_ENTITY_DATA, null, wrapper.user());
+ Position pos = wrapper.get(Type.POSITION, 0);
+ Optional tag = provider.get(wrapper.user(), pos);
+ // Send the Update Block Entity packet if present
+ if (tag.isPresent()) {
+ PacketWrapper updateBlockEntity = PacketWrapper.create(ClientboundPackets1_9.BLOCK_ENTITY_DATA, null, wrapper.user());
- updateBlockEntity.write(Type.POSITION, pos);
- updateBlockEntity.write(Type.UNSIGNED_BYTE, (short) 2);
- updateBlockEntity.write(Type.NBT, tag.get());
+ updateBlockEntity.write(Type.POSITION, pos);
+ updateBlockEntity.write(Type.UNSIGNED_BYTE, (short) 2);
+ updateBlockEntity.write(Type.NBT, tag.get());
- updateBlockEntity.scheduleSend(Protocol1_9To1_8.class);
- }
+ updateBlockEntity.scheduleSend(Protocol1_9To1_8.class);
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/BossBarProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/BossBarProvider.java
index 99abecd63..544bcbd25 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/BossBarProvider.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/BossBarProvider.java
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_8.providers;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.platform.providers.Provider;
-
import java.util.UUID;
public class BossBarProvider implements Provider {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CommandBlockProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CommandBlockProvider.java
index a79b43c75..176032944 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CommandBlockProvider.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CommandBlockProvider.java
@@ -27,7 +27,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.CommandBlockStorage;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9;
-
import java.util.Optional;
public class CommandBlockProvider implements Provider {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CompressionProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CompressionProvider.java
index 08e6d8eb0..aa90dea5c 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CompressionProvider.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CompressionProvider.java
@@ -28,7 +28,6 @@ import io.netty.channel.ChannelPipeline;
import io.netty.handler.codec.DecoderException;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.handler.codec.MessageToMessageDecoder;
-
import java.util.List;
import java.util.zip.Deflater;
import java.util.zip.Inflater;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/ClientChunks.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/ClientChunks.java
index 599ef2d84..b5b298885 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/ClientChunks.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/ClientChunks.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_8.storage;
import com.google.common.collect.Sets;
import com.viaversion.viaversion.api.connection.StoredObject;
import com.viaversion.viaversion.api.connection.UserConnection;
-
import java.util.Set;
public class ClientChunks extends StoredObject {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java
index 71f9f2ea7..851b91dfe 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java
@@ -22,7 +22,6 @@ import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.util.Pair;
-
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
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 9078bb702..cfbc304d1 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,10 +41,14 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.BossBarPro
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.IntSet;
-import space.vectrix.flare.fastutil.Int2ObjectSyncMap;
-
-import java.util.*;
+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.concurrent.TimeUnit;
+import space.vectrix.flare.fastutil.Int2ObjectSyncMap;
public class EntityTracker1_9 extends EntityTrackerBase {
public static final String WITHER_TRANSLATABLE = "{\"translate\":\"entity.WitherBoss.name\"}";
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/InventoryTracker.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/InventoryTracker.java
index d19eca7c8..b3e8b1d68 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/InventoryTracker.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/InventoryTracker.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_8.storage;
import com.viaversion.viaversion.api.connection.StorableObject;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8;
-
import java.util.HashMap;
import java.util.Map;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/Chunk1_8Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/Chunk1_8Type.java
index 788f1b34a..1acee31f9 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/Chunk1_8Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/Chunk1_8Type.java
@@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_8;
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
-
import java.util.ArrayList;
public class Chunk1_8Type extends PartialType {
@@ -129,7 +128,8 @@ public class Chunk1_8Type extends PartialType {
// Write sky light
for (int i = 0; i < chunk.getSections().length; i++) {
if ((chunk.getBitmask() & 1 << i) == 0) continue;
- if (chunk.getSections()[i].getLight().hasSkyLight()) chunk.getSections()[i].getLight().writeSkyLight(output);
+ if (chunk.getSections()[i].getLight().hasSkyLight())
+ chunk.getSections()[i].getLight().writeSkyLight(output);
}
// Write biome data
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/ChunkBulk1_8Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/ChunkBulk1_8Type.java
index 501c98cfc..afbd7e32b 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/ChunkBulk1_8Type.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/ChunkBulk1_8Type.java
@@ -65,7 +65,8 @@ public class ChunkBulk1_8Type extends PartialType {
@Override
public void write(ByteBuf output, ClientWorld world, Chunk[] chunks) throws Exception {
boolean skyLight = false;
- loop1: for (Chunk c : chunks) {
+ loop1:
+ for (Chunk c : chunks) {
for (ChunkSection section : c.getSections()) {
if (section != null && section.getLight().hasSkyLight()) {
skyLight = true;
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_9_1/Protocol1_9To1_9_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_9_1/Protocol1_9To1_9_1.java
index 270a8c811..4703aafae 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_9_1/Protocol1_9To1_9_1.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_9_1/Protocol1_9To1_9_1.java
@@ -18,8 +18,6 @@
package com.viaversion.viaversion.protocols.protocol1_9to1_9_1;
import com.viaversion.viaversion.api.protocol.AbstractProtocol;
-import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9;
@@ -54,16 +52,13 @@ public class Protocol1_9To1_9_1 extends AbstractProtocol {
+ int sound = wrapper.get(Type.VAR_INT, 0);
- if (sound == 415) // Stop the Elytra sound for 1.9 (It's introduced in 1.9.2)
- wrapper.cancel();
- else if (sound >= 416) // Act like the Elytra sound never existed
- wrapper.set(Type.VAR_INT, 0, sound - 1);
- }
+ if (sound == 415) // Stop the Elytra sound for 1.9 (It's introduced in 1.9.2)
+ wrapper.cancel();
+ else if (sound >= 416) // Act like the Elytra sound never existed
+ wrapper.set(Type.VAR_INT, 0, sound - 1);
});
}
});
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/BlockRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/BlockRewriter.java
index a6b7af0dc..10cf6546e 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/BlockRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/BlockRewriter.java
@@ -32,7 +32,6 @@ import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.util.MathUtil;
-
import java.util.List;
public class BlockRewriter {
@@ -134,34 +133,29 @@ public class BlockRewriter {
}
public void registerChunkData1_19(C packetType, ChunkTypeSupplier chunkTypeSupplier) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
- Preconditions.checkArgument(tracker.biomesSent() != 0, "Biome count not set");
- Preconditions.checkArgument(tracker.currentWorldSectionHeight() != 0, "Section height not set");
- final Type chunkType = chunkTypeSupplier.supply(tracker.currentWorldSectionHeight(),
- MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()),
- MathUtil.ceilLog2(tracker.biomesSent()));
- final Chunk chunk = wrapper.passthrough(chunkType);
- for (final ChunkSection section : chunk.getSections()) {
- final DataPalette blockPalette = section.palette(PaletteType.BLOCKS);
- for (int i = 0; i < blockPalette.size(); i++) {
- final int id = blockPalette.idByIndex(i);
- blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id));
- }
- }
+ protocol.registerClientbound(packetType, wrapper -> {
+ final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user());
+ Preconditions.checkArgument(tracker.biomesSent() != 0, "Biome count not set");
+ Preconditions.checkArgument(tracker.currentWorldSectionHeight() != 0, "Section height not set");
+ final Type chunkType = chunkTypeSupplier.supply(tracker.currentWorldSectionHeight(),
+ MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()),
+ MathUtil.ceilLog2(tracker.biomesSent()));
+ final Chunk chunk = wrapper.passthrough(chunkType);
+ for (final ChunkSection section : chunk.getSections()) {
+ final DataPalette blockPalette = section.palette(PaletteType.BLOCKS);
+ for (int i = 0; i < blockPalette.size(); i++) {
+ final int id = blockPalette.idByIndex(i);
+ blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id));
+ }
+ }
- final Mappings blockEntityMappings = protocol.getMappingData().getBlockEntityMappings();
- if (blockEntityMappings != null) {
- List blockEntities = chunk.blockEntities();
- for (int i = 0; i < blockEntities.size(); i++) {
- final BlockEntity blockEntity = blockEntities.get(i);
- blockEntities.set(i, blockEntity.withTypeId(protocol.getMappingData().getBlockEntityMappings().getNewIdOrDefault(blockEntity.typeId(), blockEntity.typeId())));
- }
- }
- });
+ final Mappings blockEntityMappings = protocol.getMappingData().getBlockEntityMappings();
+ if (blockEntityMappings != null) {
+ List blockEntities = chunk.blockEntities();
+ for (int i = 0; i < blockEntities.size(); i++) {
+ final BlockEntity blockEntity = blockEntities.get(i);
+ blockEntities.set(i, blockEntity.withTypeId(protocol.getMappingData().getBlockEntityMappings().getNewIdOrDefault(blockEntity.typeId(), blockEntity.typeId())));
+ }
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/CommandRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/CommandRewriter.java
index 75d8a02dc..5765c0045 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/CommandRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/CommandRewriter.java
@@ -21,7 +21,6 @@ import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import java.util.HashMap;
import java.util.Map;
@@ -67,82 +66,72 @@ public class CommandRewriter {
}
public void registerDeclareCommands(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int size = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < size; i++) {
- byte flags = wrapper.passthrough(Type.BYTE);
- wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices
- if ((flags & 0x08) != 0) {
- wrapper.passthrough(Type.VAR_INT); // Redirect node index
- }
+ protocol.registerClientbound(packetType, wrapper -> {
+ int size = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < size; i++) {
+ byte flags = wrapper.passthrough(Type.BYTE);
+ wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices
+ if ((flags & 0x08) != 0) {
+ wrapper.passthrough(Type.VAR_INT); // Redirect node index
+ }
- byte nodeType = (byte) (flags & 0x03);
- if (nodeType == 1 || nodeType == 2) { // Literal/argument node
- wrapper.passthrough(Type.STRING); // Name
- }
+ byte nodeType = (byte) (flags & 0x03);
+ if (nodeType == 1 || nodeType == 2) { // Literal/argument node
+ wrapper.passthrough(Type.STRING); // Name
+ }
- if (nodeType == 2) { // Argument node
- String argumentType = wrapper.read(Type.STRING);
- String newArgumentType = handleArgumentType(argumentType);
- if (newArgumentType != null) {
- wrapper.write(Type.STRING, newArgumentType);
- }
-
- // Always call the handler using the previous name
- handleArgument(wrapper, argumentType);
- }
-
- if ((flags & 0x10) != 0) {
- wrapper.passthrough(Type.STRING); // Suggestion type
- }
+ if (nodeType == 2) { // Argument node
+ String argumentType = wrapper.read(Type.STRING);
+ String newArgumentType = handleArgumentType(argumentType);
+ if (newArgumentType != null) {
+ wrapper.write(Type.STRING, newArgumentType);
}
- wrapper.passthrough(Type.VAR_INT); // Root node index
- });
+ // Always call the handler using the previous name
+ handleArgument(wrapper, argumentType);
+ }
+
+ if ((flags & 0x10) != 0) {
+ wrapper.passthrough(Type.STRING); // Suggestion type
+ }
}
+
+ wrapper.passthrough(Type.VAR_INT); // Root node index
});
}
public void registerDeclareCommands1_19(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int size = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < size; i++) {
- byte flags = wrapper.passthrough(Type.BYTE);
- wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices
- if ((flags & 0x08) != 0) {
- wrapper.passthrough(Type.VAR_INT); // Redirect node index
- }
+ protocol.registerClientbound(packetType, wrapper -> {
+ int size = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < size; i++) {
+ byte flags = wrapper.passthrough(Type.BYTE);
+ wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices
+ if ((flags & 0x08) != 0) {
+ wrapper.passthrough(Type.VAR_INT); // Redirect node index
+ }
- byte nodeType = (byte) (flags & 0x03);
- if (nodeType == 1 || nodeType == 2) { // Literal/argument node
- wrapper.passthrough(Type.STRING); // Name
- }
+ byte nodeType = (byte) (flags & 0x03);
+ if (nodeType == 1 || nodeType == 2) { // Literal/argument node
+ wrapper.passthrough(Type.STRING); // Name
+ }
- if (nodeType == 2) { // Argument node
- int argumentTypeId = wrapper.read(Type.VAR_INT);
- String argumentType = argumentType(argumentTypeId);
- String newArgumentType = handleArgumentType(argumentType);
- Preconditions.checkNotNull(newArgumentType, "No mapping for argument type %s", argumentType);
- wrapper.write(Type.VAR_INT, mappedArgumentTypeId(newArgumentType));
+ if (nodeType == 2) { // Argument node
+ int argumentTypeId = wrapper.read(Type.VAR_INT);
+ String argumentType = argumentType(argumentTypeId);
+ String newArgumentType = handleArgumentType(argumentType);
+ Preconditions.checkNotNull(newArgumentType, "No mapping for argument type %s", argumentType);
+ wrapper.write(Type.VAR_INT, mappedArgumentTypeId(newArgumentType));
- // Always call the handler using the previous name
- handleArgument(wrapper, argumentType);
- }
+ // Always call the handler using the previous name
+ handleArgument(wrapper, argumentType);
+ }
- if ((flags & 0x10) != 0) {
- wrapper.passthrough(Type.STRING); // Suggestion type
- }
- }
-
- wrapper.passthrough(Type.VAR_INT); // Root node index
- });
+ if ((flags & 0x10) != 0) {
+ wrapper.passthrough(Type.STRING); // Suggestion type
+ }
}
+
+ wrapper.passthrough(Type.VAR_INT); // Root node index
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/ComponentRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/ComponentRewriter.java
index f37f2777a..550fd7c72 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/ComponentRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/ComponentRewriter.java
@@ -53,12 +53,7 @@ public class ComponentRewriter {
* @param packetType clientbound packet type
*/
public void registerComponentPacket(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> processText(wrapper.passthrough(Type.COMPONENT)));
- }
- });
+ protocol.registerClientbound(packetType, wrapper -> processText(wrapper.passthrough(Type.COMPONENT)));
}
@Deprecated/*(forRemoval = true)**/
@@ -86,16 +81,11 @@ public class ComponentRewriter {
* Handles sub 1.17 combat event components.
*/
public void registerCombatEvent(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- if (wrapper.passthrough(Type.VAR_INT) == 2) {
- wrapper.passthrough(Type.VAR_INT);
- wrapper.passthrough(Type.INT);
- processText(wrapper.passthrough(Type.COMPONENT));
- }
- });
+ protocol.registerClientbound(packetType, wrapper -> {
+ if (wrapper.passthrough(Type.VAR_INT) == 2) {
+ wrapper.passthrough(Type.VAR_INT);
+ wrapper.passthrough(Type.INT);
+ processText(wrapper.passthrough(Type.COMPONENT));
}
});
}
@@ -104,15 +94,10 @@ public class ComponentRewriter {
* Handles sub 1.17 title components.
*/
public void registerTitle(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int action = wrapper.passthrough(Type.VAR_INT);
- if (action >= 0 && action <= 2) {
- processText(wrapper.passthrough(Type.COMPONENT));
- }
- });
+ protocol.registerClientbound(packetType, wrapper -> {
+ int action = wrapper.passthrough(Type.VAR_INT);
+ if (action >= 0 && action <= 2) {
+ processText(wrapper.passthrough(Type.COMPONENT));
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java
index e6c098065..13490e13a 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java
@@ -45,8 +45,6 @@ import com.viaversion.viaversion.data.entity.DimensionDataImpl;
import com.viaversion.viaversion.rewriter.meta.MetaFilter;
import com.viaversion.viaversion.rewriter.meta.MetaHandlerEvent;
import com.viaversion.viaversion.rewriter.meta.MetaHandlerEventImpl;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
@@ -54,6 +52,7 @@ import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import java.util.stream.Collectors;
+import org.checkerframework.checker.nullness.qual.Nullable;
public abstract class EntityRewriter>
extends RewriterBase implements com.viaversion.viaversion.api.rewriter.EntityRewriter {
@@ -323,14 +322,9 @@ public abstract class EntityRewriter intType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int entityId = wrapper.passthrough(intType);
- tracker(wrapper.user()).addEntity(entityId, entityType);
- });
- }
+ protocol.registerClientbound(packetType, wrapper -> {
+ int entityId = wrapper.passthrough(intType);
+ tracker(wrapper.user()).addEntity(entityId, entityType);
});
}
@@ -350,16 +344,11 @@ public abstract class EntityRewriter {
- int[] entityIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE);
- EntityTracker entityTracker = tracker(wrapper.user());
- for (int entity : entityIds) {
- entityTracker.removeEntity(entity);
- }
- });
+ protocol.registerClientbound(packetType, wrapper -> {
+ int[] entityIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE);
+ EntityTracker entityTracker = tracker(wrapper.user());
+ for (int entity : entityIds) {
+ entityTracker.removeEntity(entity);
}
});
}
@@ -370,14 +359,9 @@ public abstract class EntityRewriter {
- int entityId = wrapper.passthrough(Type.VAR_INT);
- tracker(wrapper.user()).removeEntity(entityId);
- });
- }
+ protocol.registerClientbound(packetType, wrapper -> {
+ int entityId = wrapper.passthrough(Type.VAR_INT);
+ tracker(wrapper.user()).removeEntity(entityId);
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java
index 4d9d030b6..f157222de 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java
@@ -197,110 +197,90 @@ public abstract class ItemRewriter {
- int itemId = wrapper.read(Type.VAR_INT);
- wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewItemId(itemId));
- });
- }
+ protocol.registerClientbound(packetType, wrapper -> {
+ int itemId = wrapper.read(Type.VAR_INT);
+ wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewItemId(itemId));
});
}
// 1.14.4+
public void registerTradeList(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- wrapper.passthrough(Type.VAR_INT);
- int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
- for (int i = 0; i < size; i++) {
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Input
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Output
+ protocol.registerClientbound(packetType, wrapper -> {
+ wrapper.passthrough(Type.VAR_INT);
+ int size = wrapper.passthrough(Type.UNSIGNED_BYTE);
+ for (int i = 0; i < size; i++) {
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Input
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Output
- if (wrapper.passthrough(Type.BOOLEAN)) { // Has second item
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Second Item
- }
+ if (wrapper.passthrough(Type.BOOLEAN)) { // Has second item
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Second Item
+ }
- wrapper.passthrough(Type.BOOLEAN); // Trade disabled
- wrapper.passthrough(Type.INT); // Number of tools uses
- wrapper.passthrough(Type.INT); // Maximum number of trade uses
+ wrapper.passthrough(Type.BOOLEAN); // Trade disabled
+ wrapper.passthrough(Type.INT); // Number of tools uses
+ wrapper.passthrough(Type.INT); // Maximum number of trade uses
- wrapper.passthrough(Type.INT); // XP
- wrapper.passthrough(Type.INT); // Special price
- wrapper.passthrough(Type.FLOAT); // Price multiplier
- wrapper.passthrough(Type.INT); // Demand
- }
- //...
- });
+ wrapper.passthrough(Type.INT); // XP
+ wrapper.passthrough(Type.INT); // Special price
+ wrapper.passthrough(Type.FLOAT); // Price multiplier
+ wrapper.passthrough(Type.INT); // Demand
}
+ //...
});
}
public void registerTradeList1_19(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- wrapper.passthrough(Type.VAR_INT); // Container id
- int size = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < size; i++) {
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Input
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Output
- handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Second Item
+ protocol.registerClientbound(packetType, wrapper -> {
+ wrapper.passthrough(Type.VAR_INT); // Container id
+ int size = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < size; i++) {
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Input
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Output
+ handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Second Item
- wrapper.passthrough(Type.BOOLEAN); // Trade disabled
- wrapper.passthrough(Type.INT); // Number of tools uses
- wrapper.passthrough(Type.INT); // Maximum number of trade uses
+ wrapper.passthrough(Type.BOOLEAN); // Trade disabled
+ wrapper.passthrough(Type.INT); // Number of tools uses
+ wrapper.passthrough(Type.INT); // Maximum number of trade uses
- wrapper.passthrough(Type.INT); // XP
- wrapper.passthrough(Type.INT); // Special price
- wrapper.passthrough(Type.FLOAT); // Price multiplier
- wrapper.passthrough(Type.INT); // Demand
- }
- });
+ wrapper.passthrough(Type.INT); // XP
+ wrapper.passthrough(Type.INT); // Special price
+ wrapper.passthrough(Type.FLOAT); // Price multiplier
+ wrapper.passthrough(Type.INT); // Demand
}
});
}
public void registerAdvancements(C packetType, Type- type) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- wrapper.passthrough(Type.BOOLEAN); // Reset/clear
- int size = wrapper.passthrough(Type.VAR_INT); // Mapping size
- for (int i = 0; i < size; i++) {
- wrapper.passthrough(Type.STRING); // Identifier
+ protocol.registerClientbound(packetType, wrapper -> {
+ wrapper.passthrough(Type.BOOLEAN); // Reset/clear
+ int size = wrapper.passthrough(Type.VAR_INT); // Mapping size
+ for (int i = 0; i < size; i++) {
+ wrapper.passthrough(Type.STRING); // Identifier
- // Parent
- if (wrapper.passthrough(Type.BOOLEAN))
- wrapper.passthrough(Type.STRING);
+ // Parent
+ if (wrapper.passthrough(Type.BOOLEAN))
+ wrapper.passthrough(Type.STRING);
- // Display data
- if (wrapper.passthrough(Type.BOOLEAN)) {
- wrapper.passthrough(Type.COMPONENT); // Title
- wrapper.passthrough(Type.COMPONENT); // Description
- handleItemToClient(wrapper.passthrough(type)); // Icon
- wrapper.passthrough(Type.VAR_INT); // Frame type
- int flags = wrapper.passthrough(Type.INT); // Flags
- if ((flags & 1) != 0) {
- wrapper.passthrough(Type.STRING); // Background texture
- }
- wrapper.passthrough(Type.FLOAT); // X
- wrapper.passthrough(Type.FLOAT); // Y
- }
-
- wrapper.passthrough(Type.STRING_ARRAY); // Criteria
-
- int arrayLength = wrapper.passthrough(Type.VAR_INT);
- for (int array = 0; array < arrayLength; array++) {
- wrapper.passthrough(Type.STRING_ARRAY); // String array
- }
+ // Display data
+ if (wrapper.passthrough(Type.BOOLEAN)) {
+ wrapper.passthrough(Type.COMPONENT); // Title
+ wrapper.passthrough(Type.COMPONENT); // Description
+ handleItemToClient(wrapper.passthrough(type)); // Icon
+ wrapper.passthrough(Type.VAR_INT); // Frame type
+ int flags = wrapper.passthrough(Type.INT); // Flags
+ if ((flags & 1) != 0) {
+ wrapper.passthrough(Type.STRING); // Background texture
}
- });
+ wrapper.passthrough(Type.FLOAT); // X
+ wrapper.passthrough(Type.FLOAT); // Y
+ }
+
+ wrapper.passthrough(Type.STRING_ARRAY); // Criteria
+
+ int arrayLength = wrapper.passthrough(Type.VAR_INT);
+ for (int array = 0; array < arrayLength; array++) {
+ wrapper.passthrough(Type.STRING_ARRAY); // String array
+ }
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java
index 907ce8634..14ee41574 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java
@@ -21,12 +21,10 @@ import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.HashMap;
import java.util.Map;
+import org.checkerframework.checker.nullness.qual.Nullable;
public abstract class RecipeRewriter {
@@ -45,17 +43,12 @@ public abstract class RecipeRewriter {
}
public void registerDefaultHandler(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int size = wrapper.passthrough(Type.VAR_INT);
- for (int i = 0; i < size; i++) {
- String type = wrapper.passthrough(Type.STRING).replace("minecraft:", "");
- wrapper.passthrough(Type.STRING); // Recipe Identifier
- handleRecipeType(wrapper, type);
- }
- });
+ protocol.registerClientbound(packetType, wrapper -> {
+ int size = wrapper.passthrough(Type.VAR_INT);
+ for (int i = 0; i < size; i++) {
+ String type = wrapper.passthrough(Type.STRING).replace("minecraft:", "");
+ wrapper.passthrough(Type.STRING); // Recipe Identifier
+ handleRecipeType(wrapper, type);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/SoundRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/SoundRewriter.java
index 69063dc23..00ac01534 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/SoundRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/SoundRewriter.java
@@ -49,26 +49,21 @@ public class SoundRewriter {
}
public void register1_19_3Sound(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- final int soundId = wrapper.read(Type.VAR_INT);
- if (soundId == 0) {
- // Is followed by the resource loation
- wrapper.write(Type.VAR_INT, 0);
- return;
- }
-
- final int mappedId = idRewriter.rewrite(soundId - 1); // Normalize sound id
- if (mappedId == -1) {
- wrapper.cancel();
- return;
- }
-
- wrapper.write(Type.VAR_INT, mappedId + 1);
- });
+ protocol.registerClientbound(packetType, wrapper -> {
+ final int soundId = wrapper.read(Type.VAR_INT);
+ if (soundId == 0) {
+ // Is followed by the resource loation
+ wrapper.write(Type.VAR_INT, 0);
+ return;
}
+
+ final int mappedId = idRewriter.rewrite(soundId - 1); // Normalize sound id
+ if (mappedId == -1) {
+ wrapper.cancel();
+ return;
+ }
+
+ wrapper.write(Type.VAR_INT, mappedId + 1);
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/StatisticsRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/StatisticsRewriter.java
index dd01c66d5..c3a679096 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/StatisticsRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/StatisticsRewriter.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.rewriter;
import com.viaversion.viaversion.api.minecraft.RegistryType;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -33,42 +32,37 @@ public class StatisticsRewriter {
}
public void register(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(wrapper -> {
- int size = wrapper.passthrough(Type.VAR_INT);
- int newSize = size;
- for (int i = 0; i < size; i++) {
- int categoryId = wrapper.read(Type.VAR_INT);
- int statisticId = wrapper.read(Type.VAR_INT);
- int value = wrapper.read(Type.VAR_INT);
- if (categoryId == CUSTOM_STATS_CATEGORY && protocol.getMappingData().getStatisticsMappings() != null) {
- // Rewrite custom statistics id
- statisticId = protocol.getMappingData().getStatisticsMappings().getNewId(statisticId);
- if (statisticId == -1) {
- // Remove entry
- newSize--;
- continue;
- }
- } else {
- // Rewrite the block/item/entity id
- RegistryType type = getRegistryTypeForStatistic(categoryId);
- IdRewriteFunction statisticsRewriter;
- if (type != null && (statisticsRewriter = getRewriter(type)) != null) {
- statisticId = statisticsRewriter.rewrite(statisticId);
- }
- }
-
- wrapper.write(Type.VAR_INT, categoryId);
- wrapper.write(Type.VAR_INT, statisticId);
- wrapper.write(Type.VAR_INT, value);
+ protocol.registerClientbound(packetType, wrapper -> {
+ int size = wrapper.passthrough(Type.VAR_INT);
+ int newSize = size;
+ for (int i = 0; i < size; i++) {
+ int categoryId = wrapper.read(Type.VAR_INT);
+ int statisticId = wrapper.read(Type.VAR_INT);
+ int value = wrapper.read(Type.VAR_INT);
+ if (categoryId == CUSTOM_STATS_CATEGORY && protocol.getMappingData().getStatisticsMappings() != null) {
+ // Rewrite custom statistics id
+ statisticId = protocol.getMappingData().getStatisticsMappings().getNewId(statisticId);
+ if (statisticId == -1) {
+ // Remove entry
+ newSize--;
+ continue;
}
-
- if (newSize != size) {
- wrapper.set(Type.VAR_INT, 0, newSize);
+ } else {
+ // Rewrite the block/item/entity id
+ RegistryType type = getRegistryTypeForStatistic(categoryId);
+ IdRewriteFunction statisticsRewriter;
+ if (type != null && (statisticsRewriter = getRewriter(type)) != null) {
+ statisticId = statisticsRewriter.rewrite(statisticId);
}
- });
+ }
+
+ wrapper.write(Type.VAR_INT, categoryId);
+ wrapper.write(Type.VAR_INT, statisticId);
+ wrapper.write(Type.VAR_INT, value);
+ }
+
+ if (newSize != size) {
+ wrapper.set(Type.VAR_INT, 0, newSize);
}
});
}
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/TagRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/TagRewriter.java
index 83a66945c..7ea563aba 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/TagRewriter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/TagRewriter.java
@@ -25,12 +25,9 @@ import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
-import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.type.Type;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
@@ -38,6 +35,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class TagRewriter {
private static final int[] EMPTY_ARRAY = {};
@@ -136,12 +134,7 @@ public class TagRewriter {
* @param readUntilType read and process the types until (including) the given registry type
*/
public void register(C packetType, @Nullable RegistryType readUntilType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(getHandler(readUntilType));
- }
- });
+ protocol.registerClientbound(packetType, getHandler(readUntilType));
}
/**
@@ -150,12 +143,7 @@ public class TagRewriter {
* @param packetType packet type
*/
public void registerGeneric(C packetType) {
- protocol.registerClientbound(packetType, new PacketHandlers() {
- @Override
- public void register() {
- handler(getGenericHandler());
- }
- });
+ protocol.registerClientbound(packetType, getGenericHandler());
}
public PacketHandler getHandler(@Nullable RegistryType readUntilType) {
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaFilter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaFilter.java
index f44c32d9b..133554e8b 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaFilter.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaFilter.java
@@ -22,9 +22,8 @@ import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.rewriter.EntityRewriter;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.Objects;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class MetaFilter {
private final MetaHandler handler;
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEvent.java b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEvent.java
index 884607a99..ff0a22b50 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEvent.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEvent.java
@@ -20,9 +20,8 @@ package com.viaversion.viaversion.rewriter.meta;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
public interface MetaHandlerEvent {
diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEventImpl.java b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEventImpl.java
index 5ebde16ca..313ec2988 100644
--- a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEventImpl.java
+++ b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEventImpl.java
@@ -21,11 +21,10 @@ package com.viaversion.viaversion.rewriter.meta;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class MetaHandlerEventImpl implements MetaHandlerEvent {
private final UserConnection connection;
diff --git a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java
index ac9154554..95da11a3b 100644
--- a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java
+++ b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java
@@ -20,7 +20,6 @@ package com.viaversion.viaversion.unsupported;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.platform.UnsupportedSoftware;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
diff --git a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java
index ac17752e0..cebe298b0 100644
--- a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java
+++ b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.unsupported;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.platform.UnsupportedSoftware;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
diff --git a/common/src/main/java/com/viaversion/viaversion/update/UpdateUtil.java b/common/src/main/java/com/viaversion/viaversion/update/UpdateUtil.java
index a7be76127..ed50a7632 100644
--- a/common/src/main/java/com/viaversion/viaversion/update/UpdateUtil.java
+++ b/common/src/main/java/com/viaversion/viaversion/update/UpdateUtil.java
@@ -21,16 +21,14 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.util.GsonUtil;
-import org.checkerframework.checker.nullness.qual.Nullable;
-
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
import java.net.URL;
import java.util.Locale;
import java.util.UUID;
+import org.checkerframework.checker.nullness.qual.Nullable;
public class UpdateUtil {
diff --git a/common/src/main/java/com/viaversion/viaversion/update/Version.java b/common/src/main/java/com/viaversion/viaversion/update/Version.java
index c6bab371b..d43ee5c1c 100644
--- a/common/src/main/java/com/viaversion/viaversion/update/Version.java
+++ b/common/src/main/java/com/viaversion/viaversion/update/Version.java
@@ -18,7 +18,6 @@
package com.viaversion.viaversion.update;
import com.google.common.base.Joiner;
-
import java.util.Arrays;
import java.util.Objects;
import java.util.regex.Matcher;
diff --git a/common/src/main/java/com/viaversion/viaversion/util/CipherUtil.java b/common/src/main/java/com/viaversion/viaversion/util/CipherUtil.java
index 83ba0af88..2b3270462 100644
--- a/common/src/main/java/com/viaversion/viaversion/util/CipherUtil.java
+++ b/common/src/main/java/com/viaversion/viaversion/util/CipherUtil.java
@@ -17,12 +17,12 @@
*/
package com.viaversion.viaversion.util;
-import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.spec.EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
+import javax.crypto.Cipher;
public final class CipherUtil {
diff --git a/common/src/main/java/com/viaversion/viaversion/util/CommentStore.java b/common/src/main/java/com/viaversion/viaversion/util/CommentStore.java
index a55ecb260..609b7ffc3 100644
--- a/common/src/main/java/com/viaversion/viaversion/util/CommentStore.java
+++ b/common/src/main/java/com/viaversion/viaversion/util/CommentStore.java
@@ -19,7 +19,6 @@ package com.viaversion.viaversion.util;
import com.google.common.io.CharStreams;
import com.google.common.io.Files;
-
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
diff --git a/common/src/main/java/com/viaversion/viaversion/util/Config.java b/common/src/main/java/com/viaversion/viaversion/util/Config.java
index 784b7e532..aed43a539 100644
--- a/common/src/main/java/com/viaversion/viaversion/util/Config.java
+++ b/common/src/main/java/com/viaversion/viaversion/util/Config.java
@@ -22,18 +22,20 @@ import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.configuration.ConfigurationProvider;
import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
-import org.checkerframework.checker.nullness.qual.Nullable;
-import org.yaml.snakeyaml.DumperOptions;
-import org.yaml.snakeyaml.Yaml;
-import org.yaml.snakeyaml.representer.Representer;
-
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentSkipListMap;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.representer.Representer;
public abstract class Config implements ConfigurationProvider {
private static final ThreadLocal YAML = ThreadLocal.withInitial(() -> {
diff --git a/common/src/main/java/com/viaversion/viaversion/util/SetWrapper.java b/common/src/main/java/com/viaversion/viaversion/util/SetWrapper.java
index 7480e0f4a..48b9ff640 100644
--- a/common/src/main/java/com/viaversion/viaversion/util/SetWrapper.java
+++ b/common/src/main/java/com/viaversion/viaversion/util/SetWrapper.java
@@ -18,11 +18,10 @@
package com.viaversion.viaversion.util;
import com.google.common.collect.ForwardingSet;
-import org.checkerframework.checker.nullness.qual.NonNull;
-
import java.util.Collection;
import java.util.Set;
import java.util.function.Consumer;
+import org.checkerframework.checker.nullness.qual.NonNull;
public class SetWrapper extends ForwardingSet {
diff --git a/common/src/main/java/com/viaversion/viaversion/util/SynchronizedListWrapper.java b/common/src/main/java/com/viaversion/viaversion/util/SynchronizedListWrapper.java
index 03c07fda9..b45f05325 100644
--- a/common/src/main/java/com/viaversion/viaversion/util/SynchronizedListWrapper.java
+++ b/common/src/main/java/com/viaversion/viaversion/util/SynchronizedListWrapper.java
@@ -17,8 +17,6 @@
*/
package com.viaversion.viaversion.util;
-import org.checkerframework.checker.nullness.qual.NonNull;
-
import java.util.Collection;
import java.util.Comparator;
import java.util.Iterator;
@@ -26,6 +24,7 @@ import java.util.List;
import java.util.ListIterator;
import java.util.function.Consumer;
import java.util.function.Predicate;
+import org.checkerframework.checker.nullness.qual.NonNull;
/**
* Synchronized list wrapper with the addition of an add handler called when an element is added to the list.
diff --git a/common/src/main/java/com/viaversion/viaversion/util/YamlConstructor.java b/common/src/main/java/com/viaversion/viaversion/util/YamlConstructor.java
index d97f7b0d1..bd0805288 100644
--- a/common/src/main/java/com/viaversion/viaversion/util/YamlConstructor.java
+++ b/common/src/main/java/com/viaversion/viaversion/util/YamlConstructor.java
@@ -17,14 +17,13 @@
*/
package com.viaversion.viaversion.util;
+import java.util.concurrent.ConcurrentSkipListMap;
import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.constructor.SafeConstructor;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.NodeId;
import org.yaml.snakeyaml.nodes.Tag;
-import java.util.concurrent.ConcurrentSkipListMap;
-
public class YamlConstructor extends SafeConstructor {
public YamlConstructor() {
super();
diff --git a/common/src/test/java/com/viaversion/viaversion/common/dummy/DummyInitializer.java b/common/src/test/java/com/viaversion/viaversion/common/dummy/DummyInitializer.java
index 96d3d09fc..2b20f280f 100644
--- a/common/src/test/java/com/viaversion/viaversion/common/dummy/DummyInitializer.java
+++ b/common/src/test/java/com/viaversion/viaversion/common/dummy/DummyInitializer.java
@@ -23,7 +23,14 @@ import com.viaversion.viaversion.protocol.ProtocolManagerImpl;
public final class DummyInitializer {
+ private static boolean initialized;
+
public static void init() {
+ if (initialized) {
+ return;
+ }
+
+ initialized = true;
Via.init(new ViaManagerImpl(new TestPlatform(), null, null, null));
((ProtocolManagerImpl) Via.getManager().getProtocolManager()).registerProtocols();
}
diff --git a/common/src/test/java/com/viaversion/viaversion/common/dummy/TestConfig.java b/common/src/test/java/com/viaversion/viaversion/common/dummy/TestConfig.java
index abc1a4d48..14f5367e8 100644
--- a/common/src/test/java/com/viaversion/viaversion/common/dummy/TestConfig.java
+++ b/common/src/test/java/com/viaversion/viaversion/common/dummy/TestConfig.java
@@ -18,7 +18,6 @@
package com.viaversion.viaversion.common.dummy;
import com.viaversion.viaversion.configuration.AbstractViaConfig;
-
import java.io.File;
import java.net.URL;
import java.util.Collections;
diff --git a/common/src/test/java/com/viaversion/viaversion/common/dummy/TestPlatform.java b/common/src/test/java/com/viaversion/viaversion/common/dummy/TestPlatform.java
index 6a1894e67..210aba024 100644
--- a/common/src/test/java/com/viaversion/viaversion/common/dummy/TestPlatform.java
+++ b/common/src/test/java/com/viaversion/viaversion/common/dummy/TestPlatform.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.configuration.ViaVersionConfig;
import com.viaversion.viaversion.api.platform.PlatformTask;
import com.viaversion.viaversion.api.platform.ViaPlatform;
import io.netty.buffer.ByteBuf;
-
import java.io.File;
import java.util.UUID;
import java.util.logging.Logger;
diff --git a/common/src/test/java/com/viaversion/viaversion/common/entities/EntityTypesTest.java b/common/src/test/java/com/viaversion/viaversion/common/entities/EntityTypesTest.java
index df636956a..a78b588cb 100644
--- a/common/src/test/java/com/viaversion/viaversion/common/entities/EntityTypesTest.java
+++ b/common/src/test/java/com/viaversion/viaversion/common/entities/EntityTypesTest.java
@@ -17,16 +17,15 @@
*/
package com.viaversion.viaversion.common.entities;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_14Types;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_15Types;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_16Types;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_16_2Types;
import com.viaversion.viaversion.api.minecraft.entities.Entity1_17Types;
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
-
import java.util.function.Function;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
/**
* Test to make sure the array storage approach of entity types works correctly.
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 1d14ec8cc..36ecf9faf 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
@@ -17,12 +17,10 @@
*/
package com.viaversion.viaversion.common.nbt;
-import com.github.steveice10.opennbt.tag.builtin.FloatTag;
+import java.io.IOException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import java.io.IOException;
-
import static com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO.readString;
public class NBTTagTest {
diff --git a/common/src/test/java/com/viaversion/viaversion/common/protocol/ProtocolVersionTest.java b/common/src/test/java/com/viaversion/viaversion/common/protocol/ProtocolVersionTest.java
index 9b77eddba..e5e60c2e8 100644
--- a/common/src/test/java/com/viaversion/viaversion/common/protocol/ProtocolVersionTest.java
+++ b/common/src/test/java/com/viaversion/viaversion/common/protocol/ProtocolVersionTest.java
@@ -17,9 +17,9 @@
*/
package com.viaversion.viaversion.common.protocol;
+import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
public class ProtocolVersionTest {
diff --git a/common/src/test/java/com/viaversion/viaversion/common/protocol/remapper/ProtocolHandlersTest.java b/common/src/test/java/com/viaversion/viaversion/common/protocol/remapper/ProtocolHandlersTest.java
new file mode 100644
index 000000000..907d68f67
--- /dev/null
+++ b/common/src/test/java/com/viaversion/viaversion/common/protocol/remapper/ProtocolHandlersTest.java
@@ -0,0 +1,72 @@
+/*
+ * This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
+ * Copyright (C) 2023 ViaVersion and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.viaversion.viaversion.common.protocol.remapper;
+
+import com.viaversion.viaversion.api.Via;
+import com.viaversion.viaversion.api.protocol.AbstractProtocol;
+import com.viaversion.viaversion.api.protocol.AbstractProtocol.ProtocolPacket;
+import com.viaversion.viaversion.api.protocol.Protocol;
+import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
+import com.viaversion.viaversion.common.dummy.DummyInitializer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+public class ProtocolHandlersTest {
+
+ private static final Logger LOGGER = Logger.getGlobal();
+ private static final boolean WARN = false;
+
+ @BeforeAll
+ static void init() {
+ DummyInitializer.init();
+ }
+
+ @Test
+ void testHandlersSize() {
+ if (!WARN) {
+ return;
+ }
+
+ for (final Protocol, ?, ?, ?> protocol : Via.getManager().getProtocolManager().getProtocols()) {
+ if (!(protocol instanceof AbstractProtocol)) {
+ continue;
+ }
+
+ final AbstractProtocol, ?, ?, ?> abstractProtocol = (AbstractProtocol, ?, ?, ?>) protocol;
+ final List protocolMappings = new ArrayList<>(abstractProtocol.getClientbound().values());
+ protocolMappings.addAll(abstractProtocol.getServerbound().values());
+
+ for (final ProtocolPacket protocolMapping : protocolMappings) {
+ if (!(protocolMapping.getRemapper() instanceof PacketHandlers)) {
+ continue;
+ }
+
+ final PacketHandlers packetHandlers = (PacketHandlers) protocolMapping.getRemapper();
+ if (packetHandlers.handlersSize() == 0) {
+ LOGGER.warning("PacketHandlers instance has no handlers: " + protocolMapping + " in " + protocol.getClass().getSimpleName());
+ } else if (packetHandlers.handlersSize() == 1) {
+ LOGGER.warning("PacketHandlers instance only has a single handler; consider using a PacketHandler lambda instead of extending PacketHandlers: "
+ + protocolMapping + " in " + protocol.getClass().getSimpleName());
+ }
+ }
+ }
+ }
+}
diff --git a/common/src/test/java/com/viaversion/viaversion/common/type/ItemTypeTest.java b/common/src/test/java/com/viaversion/viaversion/common/type/ItemTypeTest.java
index 86187b867..3a9a5af41 100644
--- a/common/src/test/java/com/viaversion/viaversion/common/type/ItemTypeTest.java
+++ b/common/src/test/java/com/viaversion/viaversion/common/type/ItemTypeTest.java
@@ -18,11 +18,11 @@
package com.viaversion.viaversion.common.type;
import com.viaversion.viaversion.api.minecraft.item.DataItem;
+import com.viaversion.viaversion.api.type.Type;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import com.viaversion.viaversion.api.type.Type;
public class ItemTypeTest {
@Test
diff --git a/common/src/test/java/com/viaversion/viaversion/common/type/StringTypeTest.java b/common/src/test/java/com/viaversion/viaversion/common/type/StringTypeTest.java
index edd9ad9da..ed15e83c8 100644
--- a/common/src/test/java/com/viaversion/viaversion/common/type/StringTypeTest.java
+++ b/common/src/test/java/com/viaversion/viaversion/common/type/StringTypeTest.java
@@ -17,13 +17,13 @@
*/
package com.viaversion.viaversion.common.type;
+import com.viaversion.viaversion.api.type.Type;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.function.Executable;
-import com.viaversion.viaversion.api.type.Type;
public class StringTypeTest {
@Test
diff --git a/compat/java-compat-common/src/main/java/com/viaversion/viaversion/compatibility/ForcefulFieldModifier.java b/compat/java-compat-common/src/main/java/com/viaversion/viaversion/compatibility/ForcefulFieldModifier.java
index 3c76c2bbb..c414347fe 100644
--- a/compat/java-compat-common/src/main/java/com/viaversion/viaversion/compatibility/ForcefulFieldModifier.java
+++ b/compat/java-compat-common/src/main/java/com/viaversion/viaversion/compatibility/ForcefulFieldModifier.java
@@ -33,10 +33,10 @@ public interface ForcefulFieldModifier {
* Note: This does not set the accessibility of the field.
*
*
- * @param field the field to set the modifiers of. Will throw if {@code null}.
+ * @param field the field to set the modifiers of. Will throw if {@code null}.
* @param holder the eye of the beholder. For static fields, use {@code null}.
* @param object the new value to set of the object.
*/
void setField(final Field field, final Object holder, final Object object)
- throws ReflectiveOperationException;
+ throws ReflectiveOperationException;
}
diff --git a/compat/java-compat-unsafe/src/main/java/com/viaversion/viaversion/compatibility/unsafe/UnsafeBackedForcefulFieldModifier.java b/compat/java-compat-unsafe/src/main/java/com/viaversion/viaversion/compatibility/unsafe/UnsafeBackedForcefulFieldModifier.java
index 1c393e78f..7d19cedca 100644
--- a/compat/java-compat-unsafe/src/main/java/com/viaversion/viaversion/compatibility/unsafe/UnsafeBackedForcefulFieldModifier.java
+++ b/compat/java-compat-unsafe/src/main/java/com/viaversion/viaversion/compatibility/unsafe/UnsafeBackedForcefulFieldModifier.java
@@ -18,7 +18,6 @@
package com.viaversion.viaversion.compatibility.unsafe;
import com.viaversion.viaversion.compatibility.ForcefulFieldModifier;
-
import java.lang.reflect.Field;
import java.util.Objects;
diff --git a/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java b/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java
index a2b0a14bb..80de4c58c 100644
--- a/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java
+++ b/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java
@@ -35,6 +35,14 @@ import com.viaversion.viaversion.sponge.platform.SpongeViaLoader;
import com.viaversion.viaversion.sponge.platform.SpongeViaTask;
import com.viaversion.viaversion.sponge.util.LoggerWrapper;
import com.viaversion.viaversion.util.GsonUtil;
+import java.io.File;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.UUID;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.spongepowered.api.Game;
import org.spongepowered.api.Platform;
@@ -55,15 +63,6 @@ import org.spongepowered.plugin.builtin.jvm.Plugin;
import org.spongepowered.plugin.metadata.PluginMetadata;
import org.spongepowered.plugin.metadata.model.PluginContributor;
-import java.io.File;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.UUID;
-import java.util.logging.Logger;
-import java.util.stream.Collectors;
-
@Plugin("viaversion")
public class SpongePlugin implements ViaPlatform {
diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java
index c54990d9f..7e83c27a7 100644
--- a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java
+++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java
@@ -18,6 +18,9 @@
package com.viaversion.viaversion.sponge.commands;
import com.viaversion.viaversion.commands.ViaCommandHandler;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
import net.kyori.adventure.text.Component;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.api.command.Command;
@@ -26,10 +29,6 @@ import org.spongepowered.api.command.CommandCompletion;
import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.command.parameter.ArgumentReader;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
public class SpongeCommandHandler extends ViaCommandHandler implements Command.Raw {
@Override
diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java
index 369036b5c..2ba698545 100644
--- a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java
+++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java
@@ -19,12 +19,11 @@ package com.viaversion.viaversion.sponge.commands;
import com.viaversion.viaversion.SpongePlugin;
import com.viaversion.viaversion.api.command.ViaCommandSender;
+import java.util.UUID;
import net.kyori.adventure.identity.Identity;
import org.spongepowered.api.command.CommandCause;
import org.spongepowered.api.util.Identifiable;
-import java.util.UUID;
-
public class SpongeCommandSender implements ViaCommandSender {
private final CommandCause source;
diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongePlayer.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongePlayer.java
index 9e4399dd5..31c15df65 100644
--- a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongePlayer.java
+++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongePlayer.java
@@ -19,9 +19,8 @@ package com.viaversion.viaversion.sponge.commands;
import com.viaversion.viaversion.SpongePlugin;
import com.viaversion.viaversion.api.command.ViaCommandSender;
-import org.spongepowered.api.entity.living.player.server.ServerPlayer;
-
import java.util.UUID;
+import org.spongepowered.api.entity.living.player.server.ServerPlayer;
public class SpongePlayer implements ViaCommandSender {
private final ServerPlayer player;
diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeChannelInitializer.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeChannelInitializer.java
index d5fbc5822..f7658a6a1 100644
--- a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeChannelInitializer.java
+++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeChannelInitializer.java
@@ -27,7 +27,6 @@ import io.netty.channel.ChannelInitializer;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.codec.ByteToMessageDecoder;
import io.netty.handler.codec.MessageToByteEncoder;
-
import java.lang.reflect.Method;
public class SpongeChannelInitializer extends ChannelInitializer implements WrappedChannelInitializer {
diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeDecodeHandler.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeDecodeHandler.java
index 33c01c935..b449f5503 100644
--- a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeDecodeHandler.java
+++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeDecodeHandler.java
@@ -24,7 +24,6 @@ import com.viaversion.viaversion.util.PipelineUtil;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
-
import java.lang.reflect.InvocationTargetException;
import java.util.List;
diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeEncodeHandler.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeEncodeHandler.java
index 1d7c41a2d..2a2047879 100644
--- a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeEncodeHandler.java
+++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeEncodeHandler.java
@@ -26,7 +26,6 @@ import com.viaversion.viaversion.util.PipelineUtil;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
-
import java.lang.reflect.InvocationTargetException;
public class SpongeEncodeHandler extends MessageToByteEncoder