3
0
Mirror von https://github.com/PaperMC/Velocity.git synchronisiert 2024-11-17 05:20:14 +01:00

Removed all entity ID rewriting logic.

This was all a no-op anyway, and should the need for this arise again,
it is trivial to re-add. However, Velocity does not need this, and
probably will never need it. Let's have the complexity go away.
Dieser Commit ist enthalten in:
Andrew Steinborn 2018-08-26 23:58:35 -04:00
Ursprung f27b7e4e2f
Commit c7469ec13c
4 geänderte Dateien mit 2 neuen und 76 gelöschten Zeilen

Datei anzeigen

@ -86,11 +86,7 @@ public class BackendPlaySessionHandler implements MinecraftSessionHandler {
connection.getMinecraftConnection().close(); connection.getMinecraftConnection().close();
return; return;
} }
connection.getPlayer().getConnection().write(buf.retain());
ClientPlaySessionHandler playerHandler =
(ClientPlaySessionHandler) connection.getPlayer().getConnection().getSessionHandler();
ByteBuf remapped = playerHandler.getIdRemapper().remap(buf, ProtocolConstants.Direction.CLIENTBOUND);
connection.getPlayer().getConnection().write(remapped);
} }
@Override @Override

Datei anzeigen

@ -8,7 +8,6 @@ import com.velocitypowered.proxy.protocol.MinecraftPacket;
import com.velocitypowered.proxy.protocol.ProtocolConstants; import com.velocitypowered.proxy.protocol.ProtocolConstants;
import com.velocitypowered.proxy.protocol.packet.*; import com.velocitypowered.proxy.protocol.packet.*;
import com.velocitypowered.proxy.connection.MinecraftSessionHandler; import com.velocitypowered.proxy.connection.MinecraftSessionHandler;
import com.velocitypowered.proxy.protocol.remap.EntityIdRemapper;
import com.velocitypowered.proxy.protocol.util.PluginMessageUtil; import com.velocitypowered.proxy.protocol.util.PluginMessageUtil;
import com.velocitypowered.proxy.util.ThrowableUtils; import com.velocitypowered.proxy.util.ThrowableUtils;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@ -33,7 +32,6 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
private boolean spawned = false; private boolean spawned = false;
private final List<UUID> serverBossBars = new ArrayList<>(); private final List<UUID> serverBossBars = new ArrayList<>();
private final Set<String> clientPluginMsgChannels = new HashSet<>(); private final Set<String> clientPluginMsgChannels = new HashSet<>();
private EntityIdRemapper idRemapper;
public ClientPlaySessionHandler(ConnectedPlayer player) { public ClientPlaySessionHandler(ConnectedPlayer player) {
this.player = player; this.player = player;
@ -127,8 +125,7 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
@Override @Override
public void handleUnknown(ByteBuf buf) { public void handleUnknown(ByteBuf buf) {
ByteBuf remapped = idRemapper.remap(buf, ProtocolConstants.Direction.SERVERBOUND); player.getConnectedServer().getMinecraftConnection().write(buf.retain());
player.getConnectedServer().getMinecraftConnection().write(remapped);
} }
@Override @Override
@ -152,7 +149,6 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
// nothing special to do here // nothing special to do here
spawned = true; spawned = true;
player.getConnection().delayedWrite(joinGame); player.getConnection().delayedWrite(joinGame);
idRemapper = EntityIdRemapper.getMapper(joinGame.getEntityId(), player.getConnection().getProtocolVersion());
} else { } else {
// Ah, this is the meat and potatoes of the whole venture! // Ah, this is the meat and potatoes of the whole venture!
// //
@ -167,7 +163,6 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
// Most notably, by having the client accept the join game packet, we can work around the need to perform // Most notably, by having the client accept the join game packet, we can work around the need to perform
// entity ID rewrites, eliminating potential issues from rewriting packets and improving compatibility with // entity ID rewrites, eliminating potential issues from rewriting packets and improving compatibility with
// mods. // mods.
idRemapper.setServerEntityId(joinGame.getEntityId());
player.getConnection().delayedWrite(joinGame); player.getConnection().delayedWrite(joinGame);
int tempDim = joinGame.getDimension() == 0 ? -1 : 0; int tempDim = joinGame.getDimension() == 0 ? -1 : 0;
player.getConnection().delayedWrite(new Respawn(tempDim, joinGame.getDifficulty(), joinGame.getGamemode(), joinGame.getLevelType())); player.getConnection().delayedWrite(new Respawn(tempDim, joinGame.getDifficulty(), joinGame.getGamemode(), joinGame.getLevelType()));
@ -250,10 +245,6 @@ public class ClientPlaySessionHandler implements MinecraftSessionHandler {
return clientPluginMsgChannels; return clientPluginMsgChannels;
} }
public EntityIdRemapper getIdRemapper() {
return idRemapper;
}
public void setLastPing(long lastPing) { public void setLastPing(long lastPing) {
this.lastPingID = lastPing; this.lastPingID = lastPing;
this.lastPingSent = System.currentTimeMillis(); this.lastPingSent = System.currentTimeMillis();

Datei anzeigen

@ -1,29 +0,0 @@
package com.velocitypowered.proxy.protocol.remap;
import com.velocitypowered.proxy.protocol.ProtocolConstants;
import io.netty.buffer.ByteBuf;
/**
* Represents a protocol-specific entity ID remapper for certain Minecraft packets. This is mostly required to support
* old versions of Minecraft. For Minecraft 1.8 clients and above, Velocity can use a more efficient method based on
* sending JoinGame packets multiple times.
*/
public interface EntityIdRemapper {
/**
* Remaps the entity IDs in this packet so that they apply to the player.
* @param original the packet to remap
* @param direction the direction of the packet
* @return a remapped packet, which may either be a retained version of the original buffer or an entirely new buffer
*/
ByteBuf remap(ByteBuf original, ProtocolConstants.Direction direction);
int getClientEntityId();
int getServerEntityId();
void setServerEntityId(int id);
static EntityIdRemapper getMapper(int eid, int protocolVersion) {
return NoopEntityIdRemapper.INSTANCE;
}
}

Datei anzeigen

@ -1,32 +0,0 @@
package com.velocitypowered.proxy.protocol.remap;
import com.velocitypowered.proxy.protocol.ProtocolConstants;
import io.netty.buffer.ByteBuf;
public class NoopEntityIdRemapper implements EntityIdRemapper {
public static final NoopEntityIdRemapper INSTANCE = new NoopEntityIdRemapper();
private NoopEntityIdRemapper() {
}
@Override
public ByteBuf remap(ByteBuf original, ProtocolConstants.Direction direction) {
return original.retain();
}
@Override
public int getClientEntityId() {
return 0;
}
@Override
public int getServerEntityId() {
return 0;
}
@Override
public void setServerEntityId(int id) {
}
}