Compare commits
11 Commits
f948b287f5
...
a56ff2d4d2
Author | SHA1 | Date | |
---|---|---|---|
a56ff2d4d2 | |||
037cf6d97b | |||
dc520b9bdf | |||
b4095c4540 | |||
c30c57482e | |||
b13dcb3aa5 | |||
|
ffa011c7b1 | ||
|
22536c11bd | ||
|
2394e204fa | ||
|
1b88a84710 | ||
|
7606d4437b |
@ -52,7 +52,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.5.1</version>
|
||||
<version>3.5.2</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.md_5.bungee.protocol;
|
||||
|
||||
import java.util.function.Function;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
@ -31,4 +32,26 @@ public final class Either<L, R>
|
||||
{
|
||||
return new Either<>( null, right );
|
||||
}
|
||||
|
||||
public L getLeftOrCompute(Function<R, L> function)
|
||||
{
|
||||
if ( isLeft() )
|
||||
{
|
||||
return left;
|
||||
} else
|
||||
{
|
||||
return function.apply( right );
|
||||
}
|
||||
}
|
||||
|
||||
public R getRightOrCompute(Function<L, R> function)
|
||||
{
|
||||
if ( isRight() )
|
||||
{
|
||||
return right;
|
||||
} else
|
||||
{
|
||||
return function.apply( left );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ public class ProtocolConstants
|
||||
public static final int MINECRAFT_1_20 = 763;
|
||||
public static final int MINECRAFT_1_20_2 = 764;
|
||||
public static final int MINECRAFT_1_20_3 = 765;
|
||||
public static final int MINECRAFT_1_20_5 = 1073742000;
|
||||
public static final int MINECRAFT_1_20_5 = 1073742003;
|
||||
public static final List<String> SUPPORTED_VERSIONS;
|
||||
public static final List<Integer> SUPPORTED_VERSION_IDS;
|
||||
|
||||
|
@ -312,6 +312,7 @@ public class Commands extends DefinedPacket
|
||||
private static final ArgumentSerializer[] IDS_1_19_3;
|
||||
private static final ArgumentSerializer[] IDS_1_19_4;
|
||||
private static final ArgumentSerializer[] IDS_1_20_3;
|
||||
private static final ArgumentSerializer[] IDS_1_20_5;
|
||||
private static final Map<Class<?>, ProperArgumentSerializer<?>> PROPER_PROVIDERS = new HashMap<>();
|
||||
//
|
||||
private static final ArgumentSerializer<Void> VOID = new ArgumentSerializer<Void>()
|
||||
@ -868,6 +869,61 @@ public class Commands extends DefinedPacket
|
||||
get( "minecraft:uuid", VOID ),
|
||||
get( "minecraft:heightmap", VOID )
|
||||
};
|
||||
|
||||
IDS_1_20_5 = new ArgumentSerializer[]
|
||||
{
|
||||
get( "brigadier:bool", VOID ),
|
||||
get( "brigadier:float", FLOAT_RANGE ),
|
||||
get( "brigadier:double", DOUBLE_RANGE ),
|
||||
get( "brigadier:integer", INTEGER_RANGE ),
|
||||
get( "brigadier:long", LONG_RANGE ),
|
||||
get( "brigadier:string", STRING ),
|
||||
get( "minecraft:entity", BYTE ),
|
||||
get( "minecraft:game_profile", VOID ),
|
||||
get( "minecraft:block_pos", VOID ),
|
||||
get( "minecraft:column_pos", VOID ),
|
||||
get( "minecraft:vec3", VOID ),
|
||||
get( "minecraft:vec2", VOID ),
|
||||
get( "minecraft:block_state", VOID ),
|
||||
get( "minecraft:block_predicate", VOID ),
|
||||
get( "minecraft:item_stack", VOID ),
|
||||
get( "minecraft:item_predicate", VOID ),
|
||||
get( "minecraft:color", VOID ),
|
||||
get( "minecraft:component", VOID ),
|
||||
get( "minecraft:style", VOID ),
|
||||
get( "minecraft:message", VOID ),
|
||||
get( "minecraft:nbt_compound_tag", VOID ),
|
||||
get( "minecraft:nbt_tag", VOID ),
|
||||
get( "minecraft:nbt_path", VOID ),
|
||||
get( "minecraft:objective", VOID ),
|
||||
get( "minecraft:objective_criteria", VOID ),
|
||||
get( "minecraft:operation", VOID ),
|
||||
get( "minecraft:particle", VOID ),
|
||||
get( "minecraft:angle", VOID ),
|
||||
get( "minecraft:rotation", VOID ),
|
||||
get( "minecraft:scoreboard_slot", VOID ),
|
||||
get( "minecraft:score_holder", BYTE ),
|
||||
get( "minecraft:swizzle", VOID ),
|
||||
get( "minecraft:team", VOID ),
|
||||
get( "minecraft:item_slot", VOID ),
|
||||
get( "minecraft:item_slots", VOID ),
|
||||
get( "minecraft:resource_location", VOID ),
|
||||
get( "minecraft:function", VOID ),
|
||||
get( "minecraft:entity_anchor", VOID ),
|
||||
get( "minecraft:int_range", VOID ),
|
||||
get( "minecraft:float_range", VOID ),
|
||||
get( "minecraft:dimension", VOID ),
|
||||
get( "minecraft:gamemode", VOID ),
|
||||
get( "minecraft:time", INTEGER ),
|
||||
get( "minecraft:resource_or_tag", RAW_STRING ),
|
||||
get( "minecraft:resource_or_tag_key", RAW_STRING ),
|
||||
get( "minecraft:resource", RAW_STRING ),
|
||||
get( "minecraft:resource_key", RAW_STRING ),
|
||||
get( "minecraft:template_mirror", VOID ),
|
||||
get( "minecraft:template_rotation", VOID ),
|
||||
get( "minecraft:uuid", VOID ),
|
||||
get( "minecraft:heightmap", VOID )
|
||||
};
|
||||
}
|
||||
|
||||
private static void register(String name, ArgumentSerializer serializer)
|
||||
@ -1287,7 +1343,10 @@ public class Commands extends DefinedPacket
|
||||
{
|
||||
key = readVarInt( buf );
|
||||
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_3 )
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_5 )
|
||||
{
|
||||
reader = IDS_1_20_5[(Integer) key];
|
||||
} else if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_3 )
|
||||
{
|
||||
reader = IDS_1_20_3[(Integer) key];
|
||||
} else if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_19_4 )
|
||||
|
@ -133,7 +133,13 @@ public class Login extends DefinedPacket
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
limitedCrafting = buf.readBoolean();
|
||||
dimension = readString( buf );
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_5 )
|
||||
{
|
||||
dimension = readVarInt( buf );
|
||||
} else
|
||||
{
|
||||
dimension = readString( buf );
|
||||
}
|
||||
worldName = readString( buf );
|
||||
seed = buf.readLong();
|
||||
gameMode = buf.readUnsignedByte();
|
||||
@ -254,7 +260,13 @@ public class Login extends DefinedPacket
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
buf.writeBoolean( limitedCrafting );
|
||||
writeString( (String) dimension, buf );
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_5 )
|
||||
{
|
||||
writeVarInt( (Integer) dimension, buf );
|
||||
} else
|
||||
{
|
||||
writeString( (String) dimension, buf );
|
||||
}
|
||||
writeString( worldName, buf );
|
||||
buf.writeLong( seed );
|
||||
buf.writeByte( gameMode );
|
||||
|
@ -36,7 +36,10 @@ public class Respawn extends DefinedPacket
|
||||
{
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16_2 && protocolVersion < ProtocolConstants.MINECRAFT_1_19 )
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_5 )
|
||||
{
|
||||
dimension = readVarInt( buf );
|
||||
} else if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16_2 && protocolVersion < ProtocolConstants.MINECRAFT_1_19 )
|
||||
{
|
||||
dimension = readTag( buf, protocolVersion );
|
||||
} else
|
||||
@ -92,7 +95,10 @@ public class Respawn extends DefinedPacket
|
||||
{
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16_2 && protocolVersion < ProtocolConstants.MINECRAFT_1_19 )
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_5 )
|
||||
{
|
||||
writeVarInt( (Integer) dimension, buf );
|
||||
} else if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16_2 && protocolVersion < ProtocolConstants.MINECRAFT_1_19 )
|
||||
{
|
||||
writeTag( (Tag) dimension, buf, protocolVersion );
|
||||
} else
|
||||
|
@ -243,7 +243,7 @@ public class ServerConnector extends PacketHandler
|
||||
user.getForgeClientHandler().setHandshakeComplete();
|
||||
}
|
||||
|
||||
if ( user.getServer() == null || !( login.getDimension() instanceof Integer ) )
|
||||
if ( user.getServer() == null || user.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
// Once again, first connection
|
||||
user.setClientEntityId( login.getEntityId() );
|
||||
|
@ -272,9 +272,9 @@ public class DownstreamBridge extends PacketHandler
|
||||
{
|
||||
if ( team.getMode() == 0 || team.getMode() == 2 )
|
||||
{
|
||||
t.setDisplayName( ComponentSerializer.toString( team.getDisplayName() ) );
|
||||
t.setPrefix( ComponentSerializer.toString( team.getPrefix() ) );
|
||||
t.setSuffix( ComponentSerializer.toString( team.getSuffix() ) );
|
||||
t.setDisplayName( team.getDisplayName().getLeftOrCompute( ComponentSerializer::toString ) );
|
||||
t.setPrefix( team.getPrefix().getLeftOrCompute( ComponentSerializer::toString ) );
|
||||
t.setSuffix( team.getSuffix().getLeftOrCompute( ComponentSerializer::toString ) );
|
||||
t.setFriendlyFire( team.getFriendlyFire() );
|
||||
t.setNameTagVisibility( team.getNameTagVisibility() );
|
||||
t.setCollisionRule( team.getCollisionRule() );
|
||||
|
@ -17,7 +17,7 @@ public final class AllowedCharacters
|
||||
{
|
||||
if ( onlineMode )
|
||||
{
|
||||
return ( c >= 'a' && c <= 'z' ) || ( c >= '0' && c <= '9' ) || ( c >= 'A' && c <= 'Z' ) || c == '_' || c == '.' || c == '-';
|
||||
return ( c >= 'a' && c <= 'z' ) || ( c >= '0' && c <= '9' ) || ( c >= 'A' && c <= 'Z' ) || c == '_';
|
||||
} else
|
||||
{
|
||||
// Don't allow spaces, Yaml config doesn't support them
|
||||
|
Loading…
Reference in New Issue
Block a user