mirror of
https://github.com/Minestom/Minestom.git
synced 2025-03-12 22:59:07 +01:00
Add ability to skip packet translating
This commit is contained in:
parent
931d790702
commit
f7b683c343
@ -13,7 +13,7 @@ import java.net.SocketAddress;
|
|||||||
public class FakePlayerConnection extends PlayerConnection {
|
public class FakePlayerConnection extends PlayerConnection {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendPacket(@NotNull ServerPacket serverPacket) {
|
public void sendPacket(@NotNull ServerPacket serverPacket, boolean skipTranslating) {
|
||||||
if (shouldSendPacket(serverPacket)) {
|
if (shouldSendPacket(serverPacket)) {
|
||||||
getFakePlayer().getController().consumePacket(serverPacket);
|
getFakePlayer().getController().consumePacket(serverPacket);
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ public class NettyPlayerConnection extends PlayerConnection {
|
|||||||
* @param serverPacket the packet to write
|
* @param serverPacket the packet to write
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void sendPacket(@NotNull ServerPacket serverPacket) {
|
public void sendPacket(@NotNull ServerPacket serverPacket, boolean skipTranslating) {
|
||||||
if (!channel.isActive())
|
if (!channel.isActive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ public class NettyPlayerConnection extends PlayerConnection {
|
|||||||
|
|
||||||
if (identifier == null) {
|
if (identifier == null) {
|
||||||
// This packet explicitly asks to do not retrieve the cache
|
// This packet explicitly asks to do not retrieve the cache
|
||||||
write(serverPacket);
|
write(serverPacket, skipTranslating);
|
||||||
} else {
|
} else {
|
||||||
final long timestamp = cacheablePacket.getTimestamp();
|
final long timestamp = cacheablePacket.getTimestamp();
|
||||||
// Try to retrieve the cached buffer
|
// Try to retrieve the cached buffer
|
||||||
@ -163,7 +163,7 @@ public class NettyPlayerConnection extends PlayerConnection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
write(serverPacket);
|
write(serverPacket, skipTranslating);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Player is probably not logged yet
|
// Player is probably not logged yet
|
||||||
@ -173,6 +173,10 @@ public class NettyPlayerConnection extends PlayerConnection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void write(@NotNull Object message) {
|
public void write(@NotNull Object message) {
|
||||||
|
this.write(message, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void write(@NotNull Object message, boolean skipTranslating) {
|
||||||
if (message instanceof FramedPacket) {
|
if (message instanceof FramedPacket) {
|
||||||
final FramedPacket framedPacket = (FramedPacket) message;
|
final FramedPacket framedPacket = (FramedPacket) message;
|
||||||
synchronized (tickBuffer) {
|
synchronized (tickBuffer) {
|
||||||
@ -183,7 +187,7 @@ public class NettyPlayerConnection extends PlayerConnection {
|
|||||||
} else if (message instanceof ServerPacket) {
|
} else if (message instanceof ServerPacket) {
|
||||||
final ServerPacket serverPacket = (ServerPacket) message;
|
final ServerPacket serverPacket = (ServerPacket) message;
|
||||||
|
|
||||||
if (getPlayer() != null && serverPacket instanceof ComponentHoldingServerPacket) {
|
if (!skipTranslating && getPlayer() != null && serverPacket instanceof ComponentHoldingServerPacket) {
|
||||||
serverPacket = ((ComponentHoldingServerPacket) serverPacket).copyWithOperator(component -> MinecraftServer.getSerializationManager().translate(component, getPlayer()));
|
serverPacket = ((ComponentHoldingServerPacket) serverPacket).copyWithOperator(component -> MinecraftServer.getSerializationManager().translate(component, getPlayer()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,19 @@ public abstract class PlayerConnection {
|
|||||||
* @param serverPacket the packet to send
|
* @param serverPacket the packet to send
|
||||||
* @see #shouldSendPacket(ServerPacket)
|
* @see #shouldSendPacket(ServerPacket)
|
||||||
*/
|
*/
|
||||||
public abstract void sendPacket(@NotNull ServerPacket serverPacket);
|
public void sendPacket(@NotNull ServerPacket serverPacket) {
|
||||||
|
this.sendPacket(serverPacket, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serializes the packet and send it to the client, skipping the translation phase.
|
||||||
|
* <p>
|
||||||
|
* Also responsible for executing {@link ConnectionManager#onPacketSend(ServerPacketConsumer)} consumers.
|
||||||
|
*
|
||||||
|
* @param serverPacket the packet to send
|
||||||
|
* @see #shouldSendPacket(ServerPacket)
|
||||||
|
*/
|
||||||
|
public abstract void sendPacket(@NotNull ServerPacket serverPacket, boolean skipTranslating);
|
||||||
|
|
||||||
protected boolean shouldSendPacket(@NotNull ServerPacket serverPacket) {
|
protected boolean shouldSendPacket(@NotNull ServerPacket serverPacket) {
|
||||||
return player == null ||
|
return player == null ||
|
||||||
|
Loading…
Reference in New Issue
Block a user