3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-07-11 01:38:02 +02:00

Merge branch 'master' into dev

Dieser Commit ist enthalten in:
Myles 2019-04-22 18:56:29 +01:00
Commit d3662d226b
4 geänderte Dateien mit 33 neuen und 29 gelöschten Zeilen

Datei anzeigen

@ -227,7 +227,7 @@ public class BukkitViaConfig extends Config implements ViaVersionConfig {
@Override @Override
public String getBlockConnectionMethod() { public String getBlockConnectionMethod() {
return getString("blockconnection-method", "world"); return getString("blockconnection-method", "packet");
} }
@Override @Override

Datei anzeigen

@ -129,8 +129,8 @@ change-1_14-hitbox: false
# #
# Enable serverside block-connections for 1.13+ clients # Enable serverside block-connections for 1.13+ clients
serverside-blockconnections: false serverside-blockconnections: false
# Sets the method for the block connections (world for world-level or packet for packet-level) # Sets the method for the block connections (world for highly experimental (USE AT OWN RISK) world-level or packet for packet-level)
blockconnection-method: world blockconnection-method: packet
# When activated, only the most important blocks are stored in the blockstorage. (fences, glass panes etc. won't connect to solid blocks) # When activated, only the most important blocks are stored in the blockstorage. (fences, glass panes etc. won't connect to solid blocks)
reduce-blockstorage-memory: false reduce-blockstorage-memory: false
# When activated with serverside-blockconnections, flower parts with blocks above will be sent as stems # When activated with serverside-blockconnections, flower parts with blocks above will be sent as stems

Datei anzeigen

@ -233,7 +233,7 @@ public class SpongeViaConfig extends Config implements ViaVersionConfig {
@Override @Override
public String getBlockConnectionMethod() { public String getBlockConnectionMethod() {
return getString("blockconnection-method", "world"); return getString("blockconnection-method", "packet");
} }
@Override @Override

Datei anzeigen

@ -34,6 +34,7 @@ public class VelocityServerHandler {
private static Method getMinecraftConnection; private static Method getMinecraftConnection;
private static Method getNextProtocolVersion; private static Method getNextProtocolVersion;
private static Method getKnownChannels; private static Method getKnownChannels;
private static Class<?> clientPlaySessionHandler;
static { static {
try { try {
@ -45,7 +46,8 @@ public class VelocityServerHandler {
.getDeclaredMethod("getMinecraftConnection"); .getDeclaredMethod("getMinecraftConnection");
getNextProtocolVersion = Class.forName("com.velocitypowered.proxy.connection.MinecraftConnection") getNextProtocolVersion = Class.forName("com.velocitypowered.proxy.connection.MinecraftConnection")
.getDeclaredMethod("getNextProtocolVersion"); .getDeclaredMethod("getNextProtocolVersion");
getKnownChannels = Class.forName("com.velocitypowered.proxy.connection.client.ClientPlaySessionHandler") clientPlaySessionHandler = Class.forName("com.velocitypowered.proxy.connection.client.ClientPlaySessionHandler");
getKnownChannels = clientPlaySessionHandler
.getDeclaredMethod("getKnownChannels"); .getDeclaredMethod("getKnownChannels");
} catch (NoSuchMethodException | ClassNotFoundException e) { } catch (NoSuchMethodException | ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
@ -144,34 +146,36 @@ public class VelocityServerHandler {
pipeline.add(ProtocolRegistry.getBaseProtocol(protocolId)); pipeline.add(ProtocolRegistry.getBaseProtocol(protocolId));
// Workaround 1.13 server change // Workaround 1.13 server change
Set<String> knownChannels = (Set<String>) getKnownChannels.invoke( Object sessionHandler = ReflectionUtil.invoke(
ReflectionUtil.invoke( getMinecraftConnection.invoke(e.getPlayer()),
getMinecraftConnection.invoke(e.getPlayer()), "getSessionHandler"
"getSessionHandler"
)
); );
if (previousServerProtocol != -1) {
int id1_13 = ProtocolVersion.MINECRAFT_1_13.getProtocol(); if (clientPlaySessionHandler.isInstance(sessionHandler)) { // It may be InitialConnectSessionHandler on the first server connection
if (previousServerProtocol < id1_13 && protocolId >= id1_13) { Set<String> knownChannels = (Set<String>) getKnownChannels.invoke(sessionHandler);
ArrayList<String> newChannels = new ArrayList<>(); if (previousServerProtocol != -1) {
for (String oldChannel : knownChannels) { int id1_13 = ProtocolVersion.MINECRAFT_1_13.getProtocol();
String transformed = InventoryPackets.getNewPluginChannelId(oldChannel); if (previousServerProtocol < id1_13 && protocolId >= id1_13) {
if (transformed != null) { ArrayList<String> newChannels = new ArrayList<>();
newChannels.add(transformed); for (String oldChannel : knownChannels) {
String transformed = InventoryPackets.getNewPluginChannelId(oldChannel);
if (transformed != null) {
newChannels.add(transformed);
}
} }
} knownChannels.clear();
knownChannels.clear(); knownChannels.addAll(newChannels);
knownChannels.addAll(newChannels); } else if (previousServerProtocol >= id1_13 && protocolId < id1_13) {
} else if (previousServerProtocol >= id1_13 && protocolId < id1_13) { ArrayList<String> newChannels = new ArrayList<>();
ArrayList<String> newChannels = new ArrayList<>(); for (String oldChannel : knownChannels) {
for (String oldChannel : knownChannels) { String transformed = InventoryPackets.getOldPluginChannelId(oldChannel);
String transformed = InventoryPackets.getOldPluginChannelId(oldChannel); if (transformed != null) {
if (transformed != null) { newChannels.add(transformed);
newChannels.add(transformed); }
} }
knownChannels.clear();
knownChannels.addAll(newChannels);
} }
knownChannels.clear();
knownChannels.addAll(newChannels);
} }
} }