geforkt von Mirrors/Velocity
Merge pull request #30 from kashike/fu
use fastutil's Object2IntOpenHashMap
Dieser Commit ist enthalten in:
Commit
1cf19e9152
@ -37,10 +37,53 @@ dependencies {
|
|||||||
runtime 'net.java.dev.jna:jna:4.5.2' // Needed for JLine
|
runtime 'net.java.dev.jna:jna:4.5.2' // Needed for JLine
|
||||||
runtime 'com.lmax:disruptor:3.4.2' // Async loggers
|
runtime 'com.lmax:disruptor:3.4.2' // Async loggers
|
||||||
|
|
||||||
|
compile 'it.unimi.dsi:fastutil:8.2.1'
|
||||||
|
|
||||||
testCompile "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
|
testCompile "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
|
||||||
testCompile "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
|
testCompile "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shadowJar {
|
||||||
|
exclude 'it/unimi/dsi/fastutil/booleans/**'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/bytes/**'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/chars/**'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/doubles/**'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/floats/**'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/*Int2*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/IntAVL*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/IntArray*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/IntBi*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/IntList*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/IntOpen*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/IntRB*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/IntSet*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/ints/IntSorted*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/io/**'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/longs/**'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*ObjectArray*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*ObjectAVL*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object*Big*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Boolean*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Byte*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Char*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Double*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Float*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2IntArray*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2IntAVL*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2IntLinked*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object*OpenCustom*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2IntRB*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2IntSorted*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Long*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Object*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Reference*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Object2Short*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*ObjectRB*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*ObjectSorted*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/objects/*Reference*'
|
||||||
|
exclude 'it/unimi/dsi/fastutil/shorts/**'
|
||||||
|
}
|
||||||
|
|
||||||
artifacts {
|
artifacts {
|
||||||
archives shadowJar
|
archives shadowJar
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@ import com.google.common.primitives.ImmutableIntArray;
|
|||||||
import com.velocitypowered.proxy.protocol.packet.*;
|
import com.velocitypowered.proxy.protocol.packet.*;
|
||||||
import io.netty.util.collection.IntObjectHashMap;
|
import io.netty.util.collection.IntObjectHashMap;
|
||||||
import io.netty.util.collection.IntObjectMap;
|
import io.netty.util.collection.IntObjectMap;
|
||||||
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
@ -217,10 +219,11 @@ public enum StateRegistry {
|
|||||||
public class ProtocolVersion {
|
public class ProtocolVersion {
|
||||||
public final int id;
|
public final int id;
|
||||||
final IntObjectMap<Supplier<? extends MinecraftPacket>> packetIdToSupplier = new IntObjectHashMap<>(16, 0.5f);
|
final IntObjectMap<Supplier<? extends MinecraftPacket>> packetIdToSupplier = new IntObjectHashMap<>(16, 0.5f);
|
||||||
final Map<Class<? extends MinecraftPacket>, Integer> packetClassToId = new HashMap<>(16, 0.5f);
|
final Object2IntMap<Class<? extends MinecraftPacket>> packetClassToId = new Object2IntOpenHashMap<>(16, 0.5f);
|
||||||
|
|
||||||
ProtocolVersion(final int id) {
|
ProtocolVersion(final int id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
this.packetClassToId.defaultReturnValue(Integer.MIN_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MinecraftPacket createPacket(final int id) {
|
public MinecraftPacket createPacket(final int id) {
|
||||||
@ -232,8 +235,8 @@ public enum StateRegistry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getPacketId(final MinecraftPacket packet) {
|
public int getPacketId(final MinecraftPacket packet) {
|
||||||
final Integer id = this.packetClassToId.get(packet.getClass());
|
final int id = this.packetClassToId.getInt(packet.getClass());
|
||||||
if (id == null) {
|
if (id == Integer.MIN_VALUE) {
|
||||||
throw new IllegalArgumentException(String.format(
|
throw new IllegalArgumentException(String.format(
|
||||||
"Unable to find id for packet of type %s in %s protocol %s",
|
"Unable to find id for packet of type %s in %s protocol %s",
|
||||||
packet.getClass().getName(), PacketRegistry.this.direction, this.id
|
packet.getClass().getName(), PacketRegistry.this.direction, this.id
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren