Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-11-16 21:10:30 +01:00
Ursprung
2a8a982538
Commit
b94303d2be
@ -23,7 +23,9 @@ import com.velocitypowered.proxy.protocol.MinecraftPacket;
|
||||
import com.velocitypowered.proxy.protocol.ProtocolUtils;
|
||||
import com.velocitypowered.proxy.protocol.ProtocolUtils.Direction;
|
||||
import com.velocitypowered.proxy.protocol.packet.brigadier.ArgumentPropertyRegistry;
|
||||
import com.velocitypowered.proxy.util.collect.IdentityHashStrategy;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenCustomHashMap;
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||
import java.util.ArrayDeque;
|
||||
@ -96,7 +98,8 @@ public class AvailableCommands implements MinecraftPacket {
|
||||
public void encode(ByteBuf buf, Direction direction, ProtocolVersion protocolVersion) {
|
||||
// Assign all the children an index.
|
||||
Deque<CommandNode<CommandSource>> childrenQueue = new ArrayDeque<>(ImmutableList.of(rootNode));
|
||||
Object2IntMap<CommandNode<CommandSource>> idMappings = new Object2IntLinkedOpenHashMap<>();
|
||||
Object2IntMap<CommandNode<CommandSource>> idMappings = new Object2IntLinkedOpenCustomHashMap<>(
|
||||
IdentityHashStrategy.instance());
|
||||
while (!childrenQueue.isEmpty()) {
|
||||
CommandNode<CommandSource> child = childrenQueue.poll();
|
||||
if (!idMappings.containsKey(child)) {
|
||||
|
@ -0,0 +1,24 @@
|
||||
package com.velocitypowered.proxy.util.collect;
|
||||
|
||||
import it.unimi.dsi.fastutil.Hash.Strategy;
|
||||
|
||||
public final class IdentityHashStrategy<T> implements Strategy<T> {
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
private static final IdentityHashStrategy INSTANCE = new IdentityHashStrategy();
|
||||
|
||||
public static <T> Strategy<T> instance() {
|
||||
//noinspection unchecked
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode(T o) {
|
||||
return System.identityHashCode(o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(T a, T b) {
|
||||
return a == b;
|
||||
}
|
||||
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren