Remove 1.7.x Support
This commit is contained in:
@@ -139,10 +139,7 @@ public class BungeeCord extends ProxyServer
|
||||
@Getter
|
||||
private final Logger logger;
|
||||
public final Gson gson = new GsonBuilder()
|
||||
.registerTypeAdapter( ServerPing.PlayerInfo.class, new PlayerInfoSerializer( ProtocolConstants.MINECRAFT_1_7_6 ) )
|
||||
.registerTypeAdapter( Favicon.class, Favicon.getFaviconTypeAdapter() ).create();
|
||||
public final Gson gsonLegacy = new GsonBuilder()
|
||||
.registerTypeAdapter( ServerPing.PlayerInfo.class, new PlayerInfoSerializer( ProtocolConstants.MINECRAFT_1_7_2 ) )
|
||||
.registerTypeAdapter( ServerPing.PlayerInfo.class, new PlayerInfoSerializer() )
|
||||
.registerTypeAdapter( Favicon.class, Favicon.getFaviconTypeAdapter() ).create();
|
||||
@Getter
|
||||
private ConnectionThrottle connectionThrottle;
|
||||
|
@@ -152,16 +152,11 @@ public class BungeeTitle implements Title
|
||||
@Override
|
||||
public Title send(ProxiedPlayer player)
|
||||
{
|
||||
if ( player.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
// Send the packets in the correct order
|
||||
sendPacket( player, clear );
|
||||
sendPacket( player, reset );
|
||||
sendPacket( player, times );
|
||||
sendPacket( player, subtitle );
|
||||
sendPacket( player, title );
|
||||
}
|
||||
|
||||
sendPacket( player, clear );
|
||||
sendPacket( player, reset );
|
||||
sendPacket( player, times );
|
||||
sendPacket( player, subtitle );
|
||||
sendPacket( player, title );
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
@@ -14,21 +14,13 @@ import java.util.UUID;
|
||||
|
||||
public class PlayerInfoSerializer implements JsonSerializer<ServerPing.PlayerInfo>, JsonDeserializer<ServerPing.PlayerInfo>
|
||||
{
|
||||
|
||||
private final int protocol;
|
||||
|
||||
public PlayerInfoSerializer(int protocol)
|
||||
{
|
||||
this.protocol = protocol;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServerPing.PlayerInfo deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException
|
||||
{
|
||||
JsonObject js = json.getAsJsonObject();
|
||||
ServerPing.PlayerInfo info = new ServerPing.PlayerInfo( js.get( "name" ).getAsString(), (UUID) null );
|
||||
String id = js.get( "id" ).getAsString();
|
||||
if ( protocol == 4 || !id.contains( "-" ) )
|
||||
if ( !id.contains( "-" ) )
|
||||
{
|
||||
info.setId( id );
|
||||
} else
|
||||
@@ -43,13 +35,7 @@ public class PlayerInfoSerializer implements JsonSerializer<ServerPing.PlayerInf
|
||||
{
|
||||
JsonObject out = new JsonObject();
|
||||
out.addProperty( "name", src.getName() );
|
||||
if ( protocol == 4 )
|
||||
{
|
||||
out.addProperty( "id", src.getId() );
|
||||
} else
|
||||
{
|
||||
out.addProperty( "id", src.getUniqueId().toString() );
|
||||
}
|
||||
out.addProperty( "id", src.getUniqueId().toString() );
|
||||
return out;
|
||||
}
|
||||
}
|
||||
|
@@ -28,7 +28,6 @@ import net.md_5.bungee.netty.ChannelWrapper;
|
||||
import net.md_5.bungee.netty.HandlerBoss;
|
||||
import net.md_5.bungee.netty.PacketHandler;
|
||||
import net.md_5.bungee.protocol.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.MinecraftOutput;
|
||||
import net.md_5.bungee.protocol.Protocol;
|
||||
import net.md_5.bungee.protocol.ProtocolConstants;
|
||||
import net.md_5.bungee.protocol.packet.EncryptionRequest;
|
||||
@@ -193,18 +192,10 @@ public class ServerConnector extends PacketHandler
|
||||
|
||||
user.unsafe().sendPacket( modLogin );
|
||||
|
||||
if ( user.getPendingConnection().getVersion() < ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
MinecraftOutput out = new MinecraftOutput();
|
||||
out.writeStringUTF8WithoutLengthHeaderBecauseDinnerboneStuffedUpTheMCBrandPacket( ProxyServer.getInstance().getName() + " (" + ProxyServer.getInstance().getVersion() + ")" );
|
||||
user.unsafe().sendPacket( new PluginMessage( "MC|Brand", out.toArray(), handshakeHandler.isServerForge() ) );
|
||||
} else
|
||||
{
|
||||
ByteBuf brand = ByteBufAllocator.DEFAULT.heapBuffer();
|
||||
DefinedPacket.writeString( bungee.getName() + " (" + bungee.getVersion() + ")", brand );
|
||||
user.unsafe().sendPacket( new PluginMessage( "MC|Brand", brand.array().clone(), handshakeHandler.isServerForge() ) );
|
||||
brand.release();
|
||||
}
|
||||
ByteBuf brand = ByteBufAllocator.DEFAULT.heapBuffer();
|
||||
DefinedPacket.writeString( bungee.getName() + " (" + bungee.getVersion() + ")", brand );
|
||||
user.unsafe().sendPacket( new PluginMessage( "MC|Brand", brand.array().clone(), handshakeHandler.isServerForge() ) );
|
||||
brand.release();
|
||||
} else
|
||||
{
|
||||
user.getServer().setObsolete( true );
|
||||
|
@@ -391,7 +391,7 @@ public final class UserConnection implements ProxiedPlayer
|
||||
public void sendMessage(ChatMessageType position, BaseComponent... message)
|
||||
{
|
||||
// Action bar doesn't display the new JSON formattings, legacy works - send it using this for now
|
||||
if ( position == ChatMessageType.ACTION_BAR && pendingConnection.getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
if ( position == ChatMessageType.ACTION_BAR )
|
||||
{
|
||||
sendMessage( position, ComponentSerializer.toString( new TextComponent( TextComponent.toLegacyText( message ) ) ) );
|
||||
} else
|
||||
@@ -404,7 +404,7 @@ public final class UserConnection implements ProxiedPlayer
|
||||
public void sendMessage(ChatMessageType position, BaseComponent message)
|
||||
{
|
||||
// Action bar doesn't display the new JSON formattings, legacy works - send it using this for now
|
||||
if ( position == ChatMessageType.ACTION_BAR && pendingConnection.getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
if ( position == ChatMessageType.ACTION_BAR )
|
||||
{
|
||||
sendMessage( position, ComponentSerializer.toString( new TextComponent( TextComponent.toLegacyText( message ) ) ) );
|
||||
} else
|
||||
@@ -541,25 +541,19 @@ public final class UserConnection implements ProxiedPlayer
|
||||
@Override
|
||||
public void setTabHeader(BaseComponent header, BaseComponent footer)
|
||||
{
|
||||
if ( pendingConnection.getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
unsafe().sendPacket( new PlayerListHeaderFooter(
|
||||
( header != null ) ? ComponentSerializer.toString( header ) : EMPTY_TEXT,
|
||||
( footer != null ) ? ComponentSerializer.toString( footer ) : EMPTY_TEXT
|
||||
) );
|
||||
}
|
||||
unsafe().sendPacket( new PlayerListHeaderFooter(
|
||||
( header != null ) ? ComponentSerializer.toString( header ) : EMPTY_TEXT,
|
||||
( footer != null ) ? ComponentSerializer.toString( footer ) : EMPTY_TEXT
|
||||
) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTabHeader(BaseComponent[] header, BaseComponent[] footer)
|
||||
{
|
||||
if ( pendingConnection.getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
unsafe().sendPacket( new PlayerListHeaderFooter(
|
||||
( header != null ) ? ComponentSerializer.toString( header ) : EMPTY_TEXT,
|
||||
( footer != null ) ? ComponentSerializer.toString( footer ) : EMPTY_TEXT
|
||||
) );
|
||||
}
|
||||
unsafe().sendPacket( new PlayerListHeaderFooter(
|
||||
( header != null ) ? ComponentSerializer.toString( header ) : EMPTY_TEXT,
|
||||
( footer != null ) ? ComponentSerializer.toString( footer ) : EMPTY_TEXT
|
||||
) );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -229,28 +229,13 @@ public class DownstreamBridge extends PacketHandler
|
||||
|
||||
if ( pluginMessage.getTag().equals( "MC|Brand" ) )
|
||||
{
|
||||
if ( con.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
try
|
||||
{
|
||||
ByteBuf brand = Unpooled.wrappedBuffer( pluginMessage.getData() );
|
||||
String serverBrand = DefinedPacket.readString( brand );
|
||||
brand.release();
|
||||
brand = ByteBufAllocator.DEFAULT.heapBuffer();
|
||||
DefinedPacket.writeString( bungee.getName() + " (" + bungee.getVersion() + ")" + " <- " + serverBrand, brand );
|
||||
pluginMessage.setData( brand.array().clone() );
|
||||
brand.release();
|
||||
} catch ( Exception ignored )
|
||||
{
|
||||
// TODO: Remove this
|
||||
// Older spigot protocol builds sent the brand incorrectly
|
||||
return;
|
||||
}
|
||||
} else
|
||||
{
|
||||
String serverBrand = new String( pluginMessage.getData(), "UTF-8" );
|
||||
pluginMessage.setData( ( bungee.getName() + " (" + bungee.getVersion() + ")" + " <- " + serverBrand ).getBytes( "UTF-8" ) );
|
||||
}
|
||||
ByteBuf brand = Unpooled.wrappedBuffer( pluginMessage.getData() );
|
||||
String serverBrand = DefinedPacket.readString( brand );
|
||||
brand.release();
|
||||
brand = ByteBufAllocator.DEFAULT.heapBuffer();
|
||||
DefinedPacket.writeString( bungee.getName() + " (" + bungee.getVersion() + ")" + " <- " + serverBrand, brand );
|
||||
pluginMessage.setData( brand.array().clone() );
|
||||
brand.release();
|
||||
// changes in the packet are ignored so we need to send it manually
|
||||
con.unsafe().sendPacket( pluginMessage );
|
||||
throw CancelSendSignal.INSTANCE;
|
||||
|
@@ -213,7 +213,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
|
||||
public void done(ProxyPingEvent pingResult, Throwable error)
|
||||
{
|
||||
BungeeCord.getInstance().getConnectionThrottle().unthrottle( getAddress().getAddress() );
|
||||
Gson gson = handshake.getProtocolVersion() == ProtocolConstants.MINECRAFT_1_7_2 ? BungeeCord.getInstance().gsonLegacy : BungeeCord.getInstance().gson;
|
||||
Gson gson = BungeeCord.getInstance().gson;
|
||||
unsafe.sendPacket( new StatusResponse( gson.toJson( pingResult.getResponse() ) ) );
|
||||
}
|
||||
};
|
||||
@@ -478,13 +478,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
|
||||
userCon.setCompressionThreshold( BungeeCord.getInstance().config.getCompressionThreshold() );
|
||||
userCon.init();
|
||||
|
||||
if ( getVersion() >= ProtocolConstants.MINECRAFT_1_7_6 )
|
||||
{
|
||||
unsafe.sendPacket( new LoginSuccess( getUniqueId().toString(), getName() ) ); // With dashes in between
|
||||
} else
|
||||
{
|
||||
unsafe.sendPacket( new LoginSuccess( getUUID(), getName() ) ); // Without dashes, for older clients.
|
||||
}
|
||||
unsafe.sendPacket( new LoginSuccess( getUniqueId().toString(), getName() ) ); // With dashes in between
|
||||
ch.setProtocol( Protocol.GAME );
|
||||
|
||||
ch.getHandle().pipeline().get( HandlerBoss.class ).setHandler( new UpstreamBridge( bungee, userCon ) );
|
||||
|
@@ -53,7 +53,7 @@ public class PingHandler extends PacketHandler
|
||||
@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR")
|
||||
public void handle(StatusResponse statusResponse) throws Exception
|
||||
{
|
||||
Gson gson = protocol == ProtocolConstants.MINECRAFT_1_7_2 ? BungeeCord.getInstance().gsonLegacy : BungeeCord.getInstance().gson;
|
||||
Gson gson = BungeeCord.getInstance().gson;
|
||||
callback.done( gson.fromJson( statusResponse.getResponse(), ServerPing.class ), null );
|
||||
channel.close();
|
||||
}
|
||||
|
@@ -74,10 +74,7 @@ public class UpstreamBridge extends PacketHandler
|
||||
} );
|
||||
for ( ProxiedPlayer player : con.getServer().getInfo().getPlayers() )
|
||||
{
|
||||
if ( player.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
player.unsafe().sendPacket( packet );
|
||||
}
|
||||
player.unsafe().sendPacket( packet );
|
||||
}
|
||||
con.getServer().disconnect( "Quitting" );
|
||||
}
|
||||
|
@@ -25,10 +25,6 @@ public abstract class EntityMap
|
||||
{
|
||||
switch ( version )
|
||||
{
|
||||
case ProtocolConstants.MINECRAFT_1_7_2:
|
||||
return EntityMap_1_7_2.INSTANCE;
|
||||
case ProtocolConstants.MINECRAFT_1_7_6:
|
||||
return EntityMap_1_7_6.INSTANCE;
|
||||
case ProtocolConstants.MINECRAFT_1_8:
|
||||
return EntityMap_1_8.INSTANCE;
|
||||
}
|
||||
|
@@ -87,19 +87,15 @@ enum ForgeClientHandshakeState implements IForgeClientPacketHandler<ForgeClientH
|
||||
Map<String, String> clientModList = ForgeUtils.readModList( message );
|
||||
con.getForgeClientHandler().setClientModList( clientModList );
|
||||
|
||||
// If the user is running 1.8 or above, we don't need to check the version of FML - it's always an OK version.
|
||||
if ( con.getPendingConnection().getVersion() < ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
// Get the version from the mod list.
|
||||
int buildNumber = ForgeUtils.getFmlBuildNumber( clientModList );
|
||||
// Get the version from the mod list.
|
||||
int buildNumber = ForgeUtils.getFmlBuildNumber( clientModList );
|
||||
|
||||
// If we get 0, we're probably using a testing build, so let it though. Otherwise, check the build number.
|
||||
if ( buildNumber < ForgeConstants.FML_MIN_BUILD_VERSION && buildNumber != 0 )
|
||||
{
|
||||
// Mark the user as an old Forge user. This will then cause any Forge ServerConnectors to cancel any
|
||||
// connections to it.
|
||||
con.getForgeClientHandler().setForgeOutdated( true );
|
||||
}
|
||||
// If we get 0, we're probably using a testing build, so let it though. Otherwise, check the build number.
|
||||
if ( buildNumber < ForgeConstants.FML_MIN_BUILD_VERSION && buildNumber != 0 )
|
||||
{
|
||||
// Mark the user as an old Forge user. This will then cause any Forge ServerConnectors to cancel any
|
||||
// connections to it.
|
||||
con.getForgeClientHandler().setForgeOutdated( true );
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -90,24 +90,7 @@ public class Global extends TabList
|
||||
item.setGamemode( ( (UserConnection) p ).getGamemode() );
|
||||
item.setPing( p.getPing() );
|
||||
}
|
||||
if ( player.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
player.unsafe().sendPacket( playerListItem );
|
||||
} else
|
||||
{
|
||||
// Split up the packet
|
||||
for ( PlayerListItem.Item item : playerListItem.getItems() )
|
||||
{
|
||||
PlayerListItem packet = new PlayerListItem();
|
||||
packet.setAction( playerListItem.getAction() );
|
||||
|
||||
packet.setItems( new PlayerListItem.Item[]
|
||||
{
|
||||
item
|
||||
} );
|
||||
player.unsafe().sendPacket( packet );
|
||||
}
|
||||
}
|
||||
player.unsafe().sendPacket( playerListItem );
|
||||
PlayerListItem packet = new PlayerListItem();
|
||||
packet.setAction( PlayerListItem.Action.ADD_PLAYER );
|
||||
PlayerListItem.Item item = new PlayerListItem.Item();
|
||||
|
@@ -12,7 +12,6 @@ public class ServerUnique extends TabList
|
||||
{
|
||||
|
||||
private final Collection<UUID> uuids = new HashSet<>();
|
||||
private final Collection<String> usernames = new HashSet<>(); // Support for <=1.7.9
|
||||
|
||||
public ServerUnique(ProxiedPlayer player)
|
||||
{
|
||||
@@ -26,22 +25,10 @@ public class ServerUnique extends TabList
|
||||
{
|
||||
if ( playerListItem.getAction() == PlayerListItem.Action.ADD_PLAYER )
|
||||
{
|
||||
if ( item.getUuid() != null )
|
||||
{
|
||||
uuids.add( item.getUuid() );
|
||||
} else
|
||||
{
|
||||
usernames.add( item.getUsername() );
|
||||
}
|
||||
uuids.add( item.getUuid() );
|
||||
} else if ( playerListItem.getAction() == PlayerListItem.Action.REMOVE_PLAYER )
|
||||
{
|
||||
if ( item.getUuid() != null )
|
||||
{
|
||||
uuids.remove( item.getUuid() );
|
||||
} else
|
||||
{
|
||||
usernames.remove( item.getUsername() );
|
||||
}
|
||||
uuids.remove( item.getUuid() );
|
||||
}
|
||||
}
|
||||
player.unsafe().sendPacket( playerListItem );
|
||||
@@ -58,40 +45,16 @@ public class ServerUnique extends TabList
|
||||
{
|
||||
PlayerListItem packet = new PlayerListItem();
|
||||
packet.setAction( PlayerListItem.Action.REMOVE_PLAYER );
|
||||
PlayerListItem.Item[] items = new PlayerListItem.Item[ uuids.size() + usernames.size() ];
|
||||
PlayerListItem.Item[] items = new PlayerListItem.Item[ uuids.size() ];
|
||||
int i = 0;
|
||||
for ( UUID uuid : uuids )
|
||||
{
|
||||
PlayerListItem.Item item = items[i++] = new PlayerListItem.Item();
|
||||
item.setUuid( uuid );
|
||||
}
|
||||
for ( String username : usernames )
|
||||
{
|
||||
PlayerListItem.Item item = items[i++] = new PlayerListItem.Item();
|
||||
item.setUsername( username );
|
||||
item.setDisplayName( username );
|
||||
}
|
||||
packet.setItems( items );
|
||||
if ( player.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_8 )
|
||||
{
|
||||
player.unsafe().sendPacket( packet );
|
||||
} else
|
||||
{
|
||||
// Split up the packet
|
||||
for ( PlayerListItem.Item item : packet.getItems() )
|
||||
{
|
||||
PlayerListItem p2 = new PlayerListItem();
|
||||
p2.setAction( packet.getAction() );
|
||||
|
||||
p2.setItems( new PlayerListItem.Item[]
|
||||
{
|
||||
item
|
||||
} );
|
||||
player.unsafe().sendPacket( p2 );
|
||||
}
|
||||
}
|
||||
player.unsafe().sendPacket( packet );
|
||||
uuids.clear();
|
||||
usernames.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user