diff --git a/pom.xml b/pom.xml
index ae8e8ceb..d1f82b91 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
${project.version}
2.0.7
- 1.17-R0.1-SNAPSHOT
+ 1.17.1-R0.1-SNAPSHOT
diff --git a/src/main/java/com/comphenix/protocol/PacketType.java b/src/main/java/com/comphenix/protocol/PacketType.java
index dc273026..f5ea08a6 100644
--- a/src/main/java/com/comphenix/protocol/PacketType.java
+++ b/src/main/java/com/comphenix/protocol/PacketType.java
@@ -11,6 +11,7 @@ import java.util.function.Consumer;
import com.comphenix.protocol.PacketTypeLookup.ClassLookup;
import com.comphenix.protocol.events.ConnectionSide;
import com.comphenix.protocol.injector.packet.PacketRegistry;
+import com.comphenix.protocol.utility.Constants;
import com.comphenix.protocol.utility.MinecraftReflection;
import com.comphenix.protocol.utility.MinecraftVersion;
import com.google.common.base.Preconditions;
@@ -653,7 +654,7 @@ public class PacketType implements Serializable, Cloneable, Comparable> getIntLists() {
+ return structureModifier.withType(
+ List.class,
+ BukkitConverters.getListConverter(
+ MinecraftReflection.getIntArrayListClass(),
+ Converters.passthrough(int.class)
+ )
+ );
+ }
+
/**
* Retrieve a read/write structure for the Map class.
* @param keyConverter Converter for map keys
diff --git a/src/main/java/com/comphenix/protocol/utility/MinecraftProtocolVersion.java b/src/main/java/com/comphenix/protocol/utility/MinecraftProtocolVersion.java
index 40efd3c8..88575d5e 100644
--- a/src/main/java/com/comphenix/protocol/utility/MinecraftProtocolVersion.java
+++ b/src/main/java/com/comphenix/protocol/utility/MinecraftProtocolVersion.java
@@ -75,6 +75,7 @@ public class MinecraftProtocolVersion {
map.put(new MinecraftVersion(1, 16, 5), 754);
map.put(new MinecraftVersion(1, 17, 0), 755);
+ map.put(new MinecraftVersion(1, 17, 1), 756);
return map;
}
diff --git a/src/main/java/com/comphenix/protocol/utility/MinecraftReflection.java b/src/main/java/com/comphenix/protocol/utility/MinecraftReflection.java
index ac8653e8..f2026048 100644
--- a/src/main/java/com/comphenix/protocol/utility/MinecraftReflection.java
+++ b/src/main/java/com/comphenix/protocol/utility/MinecraftReflection.java
@@ -2250,17 +2250,21 @@ public class MinecraftReflection {
return getMinecraftClass("world.entity.ai.attributes.AttributeBase", "AttributeBase");
}
- public static Class> getInt2ObjectMapClass() {
+ public static Class> getFastUtilClass(String className) {
try {
- return getMinecraftLibraryClass("it.unimi.dsi.fastutil.ints.Int2ObjectMap");
+ return getMinecraftLibraryClass("it.unimi.dsi.fastutil." + className);
} catch (RuntimeException ex) {
- try {
- Class> clazz = getMinecraftLibraryClass("org.bukkit.craftbukkit.libs.it.unimi.dsi.fastutil.ints.Int2ObjectMap");
- setMinecraftLibraryClass("it.unimi.dsi.fastutil.ints.Int2ObjectMap", clazz);
- return clazz;
- } catch (RuntimeException ignored) {
- throw ex;
- }
+ Class> clazz = getMinecraftLibraryClass("org.bukkit.craftbukkit.libs.it.unimi.dsi.fastutil." + className);
+ setMinecraftLibraryClass("it.unimi.dsi.fastutil." + className, clazz);
+ return clazz;
}
}
+
+ public static Class> getInt2ObjectMapClass() {
+ return getFastUtilClass("ints.Int2ObjectMap");
+ }
+
+ public static Class> getIntArrayListClass() {
+ return getFastUtilClass("ints.IntArrayList");
+ }
}
diff --git a/src/main/java/com/comphenix/protocol/wrappers/BukkitConverters.java b/src/main/java/com/comphenix/protocol/wrappers/BukkitConverters.java
index a9532083..0cf6bdd4 100644
--- a/src/main/java/com/comphenix/protocol/wrappers/BukkitConverters.java
+++ b/src/main/java/com/comphenix/protocol/wrappers/BukkitConverters.java
@@ -267,7 +267,86 @@ public class BukkitConverters {
};
}
- private static Map, Supplier>> LIST_SUPPLIERS = new ConcurrentHashMap<>();
+ private static final Map, Supplier>> LIST_SUPPLIERS = new ConcurrentHashMap<>();
+
+ private static Object getGenericList(Class> listClass, List specific, EquivalentConverter itemConverter) {
+ List