Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-11-16 21:10:30 +01:00
Implement brigadier:long argument type, fixes #295
Dieser Commit ist enthalten in:
Ursprung
bb129a3d0b
Commit
88641662d8
@ -59,6 +59,7 @@ artifacts {
|
||||
javadoc {
|
||||
options.encoding = 'UTF-8'
|
||||
options.charSet = 'UTF-8'
|
||||
options.source = '8'
|
||||
options.links(
|
||||
'http://www.slf4j.org/apidocs/',
|
||||
'https://google.github.io/guava/releases/25.1-jre/api/docs/',
|
||||
|
@ -64,7 +64,7 @@ dependencies {
|
||||
compile 'it.unimi.dsi:fastutil:8.2.2'
|
||||
compile 'net.kyori:event-method-asm:3.0.0'
|
||||
|
||||
compile 'com.mojang:brigadier:1.0.15'
|
||||
compile 'com.mojang:brigadier:1.0.17'
|
||||
|
||||
testCompile "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
|
||||
testCompile "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
|
||||
|
@ -4,6 +4,7 @@ import static com.velocitypowered.proxy.protocol.packet.brigadier.DoubleArgument
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.DummyVoidArgumentPropertySerializer.DUMMY;
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.FloatArgumentPropertySerializer.FLOAT;
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.IntegerArgumentPropertySerializer.INTEGER;
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.LongArgumentPropertySerializer.LONG;
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.StringArgumentPropertySerializer.STRING;
|
||||
|
||||
import com.mojang.brigadier.arguments.ArgumentType;
|
||||
@ -11,6 +12,7 @@ import com.mojang.brigadier.arguments.BoolArgumentType;
|
||||
import com.mojang.brigadier.arguments.DoubleArgumentType;
|
||||
import com.mojang.brigadier.arguments.FloatArgumentType;
|
||||
import com.mojang.brigadier.arguments.IntegerArgumentType;
|
||||
import com.mojang.brigadier.arguments.LongArgumentType;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.velocitypowered.proxy.protocol.ProtocolUtils;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
@ -90,6 +92,7 @@ public class ArgumentPropertyRegistry {
|
||||
register("brigadier:double", DoubleArgumentType.class, DOUBLE);
|
||||
register("brigadier:bool", BoolArgumentType.class,
|
||||
VoidArgumentPropertySerializer.create(BoolArgumentType::bool));
|
||||
register("brigadier:long", LongArgumentType.class, LONG);
|
||||
|
||||
// Minecraft argument types with extra properties
|
||||
dummy("minecraft:entity", ByteArgumentPropertySerializer.BYTE);
|
||||
|
@ -17,11 +17,6 @@ class DummyProperty<T> implements ArgumentType<T> {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <S> T parse(StringReader reader) throws CommandSyntaxException {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return identifier;
|
||||
}
|
||||
@ -33,4 +28,9 @@ class DummyProperty<T> implements ArgumentType<T> {
|
||||
public @Nullable T getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T parse(StringReader reader) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
package com.velocitypowered.proxy.protocol.packet.brigadier;
|
||||
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.IntegerArgumentPropertySerializer.HAS_MAXIMUM;
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.IntegerArgumentPropertySerializer.HAS_MINIMUM;
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.IntegerArgumentPropertySerializer.getFlags;
|
||||
|
||||
import com.mojang.brigadier.arguments.LongArgumentType;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
class LongArgumentPropertySerializer implements ArgumentPropertySerializer<LongArgumentType> {
|
||||
|
||||
static final LongArgumentPropertySerializer LONG = new LongArgumentPropertySerializer();
|
||||
|
||||
private LongArgumentPropertySerializer() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public LongArgumentType deserialize(ByteBuf buf) {
|
||||
byte flags = buf.readByte();
|
||||
long minimum = (flags & HAS_MINIMUM) != 0 ? buf.readLong() : Long.MIN_VALUE;
|
||||
long maximum = (flags & HAS_MAXIMUM) != 0 ? buf.readLong() : Long.MAX_VALUE;
|
||||
return LongArgumentType.longArg(minimum, maximum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(LongArgumentType object, ByteBuf buf) {
|
||||
boolean hasMinimum = object.getMinimum() != Long.MIN_VALUE;
|
||||
boolean hasMaximum = object.getMaximum() != Long.MAX_VALUE;
|
||||
byte flag = getFlags(hasMinimum, hasMaximum);
|
||||
|
||||
buf.writeByte(flag);
|
||||
if (hasMinimum) {
|
||||
buf.writeLong(object.getMinimum());
|
||||
}
|
||||
if (hasMaximum) {
|
||||
buf.writeLong(object.getMaximum());
|
||||
}
|
||||
}
|
||||
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren