From 68bb479f4a8aa1842477a10f81f45394c681490e Mon Sep 17 00:00:00 2001 From: themode Date: Tue, 10 Nov 2020 07:42:11 +0100 Subject: [PATCH] Cleanup --- .../net/minestom/server/MinecraftServer.java | 4 +-- .../minestom/server/extras/MojangAuth.java | 2 +- .../server/extras/PlacementRules.java | 2 +- .../server/extras/mojangAuth/MojangCrypt.java | 2 +- .../server/network/PacketProcessor.java | 22 +++++++-------- .../network/packet/client/ClientPacket.java | 10 +++---- .../client/handler/ClientPacketsHandler.java | 28 ++++++++++++++++--- .../packet/client/login/LoginStartPacket.java | 2 +- .../network/player/NettyPlayerConnection.java | 2 +- 9 files changed, 47 insertions(+), 27 deletions(-) diff --git a/src/main/java/net/minestom/server/MinecraftServer.java b/src/main/java/net/minestom/server/MinecraftServer.java index 311de281f..2fe64734a 100644 --- a/src/main/java/net/minestom/server/MinecraftServer.java +++ b/src/main/java/net/minestom/server/MinecraftServer.java @@ -70,7 +70,7 @@ import java.util.Collection; * The server needs to be initialized with {@link #init()} and started with {@link #start(String, int)}. * You should register all of your dimensions, biomes, commands, events, etc... in-between. */ -public class MinecraftServer { +public final class MinecraftServer { @Getter private final static Logger LOGGER = LoggerFactory.getLogger(MinecraftServer.class); @@ -289,7 +289,7 @@ public class MinecraftServer { // The difficulty packet ServerDifficultyPacket serverDifficultyPacket = new ServerDifficultyPacket(); serverDifficultyPacket.difficulty = difficulty; - serverDifficultyPacket.locked = true; // Can only be modified on singleplayer + serverDifficultyPacket.locked = true; // Can only be modified on single-player // Send the packet to all online players PacketWriterUtils.writeAndSend(connectionManager.getOnlinePlayers(), serverDifficultyPacket); } diff --git a/src/main/java/net/minestom/server/extras/MojangAuth.java b/src/main/java/net/minestom/server/extras/MojangAuth.java index 8d7bbfa39..08ff99972 100644 --- a/src/main/java/net/minestom/server/extras/MojangAuth.java +++ b/src/main/java/net/minestom/server/extras/MojangAuth.java @@ -3,7 +3,7 @@ package net.minestom.server.extras; import lombok.Getter; import net.minestom.server.MinecraftServer; -public class MojangAuth { +public final class MojangAuth { @Getter private static boolean usingMojangAuth = false; diff --git a/src/main/java/net/minestom/server/extras/PlacementRules.java b/src/main/java/net/minestom/server/extras/PlacementRules.java index e2014517c..bb6d92905 100644 --- a/src/main/java/net/minestom/server/extras/PlacementRules.java +++ b/src/main/java/net/minestom/server/extras/PlacementRules.java @@ -7,7 +7,7 @@ import net.minestom.server.instance.block.rule.vanilla.AxisPlacementRule; import net.minestom.server.instance.block.rule.vanilla.RedstonePlacementRule; import net.minestom.server.instance.block.rule.vanilla.WallPlacementRule; -public class PlacementRules { +public final class PlacementRules { public static void init() { BlockManager blockManager = MinecraftServer.getBlockManager(); diff --git a/src/main/java/net/minestom/server/extras/mojangAuth/MojangCrypt.java b/src/main/java/net/minestom/server/extras/mojangAuth/MojangCrypt.java index 1f23e18b8..c0f08a2f3 100644 --- a/src/main/java/net/minestom/server/extras/mojangAuth/MojangCrypt.java +++ b/src/main/java/net/minestom/server/extras/mojangAuth/MojangCrypt.java @@ -10,7 +10,7 @@ import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.*; -public class MojangCrypt { +public final class MojangCrypt { private static final Logger LOGGER = LogManager.getLogger(); @Nullable diff --git a/src/main/java/net/minestom/server/network/PacketProcessor.java b/src/main/java/net/minestom/server/network/PacketProcessor.java index 21a919ab9..df8d60e9b 100644 --- a/src/main/java/net/minestom/server/network/PacketProcessor.java +++ b/src/main/java/net/minestom/server/network/PacketProcessor.java @@ -14,31 +14,28 @@ import net.minestom.server.network.packet.client.handshake.HandshakePacket; import net.minestom.server.network.player.NettyPlayerConnection; import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.utils.binary.BinaryReader; +import org.jetbrains.annotations.Nullable; -import java.util.Arrays; -import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -public class PacketProcessor { +public final class PacketProcessor { private final Map connectionPlayerConnectionMap = new ConcurrentHashMap<>(); - // Protocols + // Protocols state private final ClientStatusPacketsHandler statusPacketsHandler; private final ClientLoginPacketsHandler loginPacketsHandler; private final ClientPlayPacketsHandler playPacketsHandler; public PacketProcessor() { - this.statusPacketsHandler = new ClientStatusPacketsHandler(); this.loginPacketsHandler = new ClientLoginPacketsHandler(); this.playPacketsHandler = new ClientPlayPacketsHandler(); } - private List printBlackList = Arrays.asList(17, 18, 19); - public void process(ChannelHandlerContext channel, InboundPacket packet) { + // Create the netty player connection object if not existing PlayerConnection playerConnection = connectionPlayerConnectionMap.computeIfAbsent( channel, c -> new NettyPlayerConnection((SocketChannel) channel.channel()) ); @@ -48,10 +45,6 @@ public class PacketProcessor { final ConnectionState connectionState = playerConnection.getConnectionState(); - //if (!printBlackList.contains(id)) { - //System.out.println("RECEIVED ID: 0x" + Integer.toHexString(id) + " State: " + connectionState); - //} - BinaryReader binaryReader = new BinaryReader(packet.body); if (connectionState == ConnectionState.UNKNOWN) { @@ -84,6 +77,13 @@ public class PacketProcessor { } } + /** + * Retrieves a player connection from its channel. + * + * @param channel the connection channel + * @return the connection of this channel, null if not found + */ + @Nullable public PlayerConnection getPlayerConnection(ChannelHandlerContext channel) { return connectionPlayerConnectionMap.get(channel); } diff --git a/src/main/java/net/minestom/server/network/packet/client/ClientPacket.java b/src/main/java/net/minestom/server/network/packet/client/ClientPacket.java index 62564b4f4..43bcdd328 100644 --- a/src/main/java/net/minestom/server/network/packet/client/ClientPacket.java +++ b/src/main/java/net/minestom/server/network/packet/client/ClientPacket.java @@ -1,10 +1,10 @@ package net.minestom.server.network.packet.client; -import net.minestom.server.utils.binary.BinaryReader; -import org.jetbrains.annotations.NotNull; +import net.minestom.server.utils.binary.Readable; -public interface ClientPacket { - - void read(@NotNull BinaryReader reader); +/** + * Represents a packet received from a client. + */ +public interface ClientPacket extends Readable { } diff --git a/src/main/java/net/minestom/server/network/packet/client/handler/ClientPacketsHandler.java b/src/main/java/net/minestom/server/network/packet/client/handler/ClientPacketsHandler.java index 2b6650afd..214f18487 100644 --- a/src/main/java/net/minestom/server/network/packet/client/handler/ClientPacketsHandler.java +++ b/src/main/java/net/minestom/server/network/packet/client/handler/ClientPacketsHandler.java @@ -1,6 +1,7 @@ package net.minestom.server.network.packet.client.handler; import net.minestom.server.network.packet.client.ClientPacket; +import org.jetbrains.annotations.NotNull; import java.util.function.Supplier; @@ -9,17 +10,30 @@ public class ClientPacketsHandler { // Max packet id private static final int SIZE = 0x30; - private final Supplier[] supplierAccesses = new Supplier[SIZE]; + private final ClientPacketSupplier[] supplierAccesses = new ClientPacketSupplier[SIZE]; - public void register(int id, Supplier packetSupplier) { - supplierAccesses[id] = packetSupplier; + /** + * Registers a client packet which can be retrieved later using {@link #getPacketInstance(int)}. + * + * @param id the packet id + * @param packetSupplier the supplier of the packet + */ + public void register(int id, @NotNull ClientPacketSupplier packetSupplier) { + this.supplierAccesses[id] = packetSupplier; } + /** + * Retrieves a {@link net.minestom.server.network.packet.client.ClientPlayPacket} from its id. + * + * @param id the packet id + * @return the associated client packet + * @throws IllegalStateException if {@code id} is not a valid packet id, or unregistered + */ public ClientPacket getPacketInstance(int id) { if (id > SIZE) throw new IllegalStateException("Packet ID 0x" + Integer.toHexString(id) + " has been tried to be parsed, debug needed"); - Supplier supplier = supplierAccesses[id]; + ClientPacketSupplier supplier = supplierAccesses[id]; if (supplierAccesses[id] == null) throw new IllegalStateException("Packet id 0x" + Integer.toHexString(id) + " isn't registered!"); @@ -28,4 +42,10 @@ public class ClientPacketsHandler { return supplier.get(); } + /** + * Convenient interface to supply a {@link ClientPacket}. + */ + protected interface ClientPacketSupplier extends Supplier { + } + } diff --git a/src/main/java/net/minestom/server/network/packet/client/login/LoginStartPacket.java b/src/main/java/net/minestom/server/network/packet/client/login/LoginStartPacket.java index faa9c1620..f31071c44 100644 --- a/src/main/java/net/minestom/server/network/packet/client/login/LoginStartPacket.java +++ b/src/main/java/net/minestom/server/network/packet/client/login/LoginStartPacket.java @@ -43,7 +43,7 @@ public class LoginStartPacket implements ClientPreplayPacket { final int messageId = ThreadLocalRandom.current().nextInt(); final String channel = VelocityProxy.PLAYER_INFO_CHANNEL; - // Important to retrieve the channel in the response packet + // Important in order to retrieve the channel in the response packet nettyPlayerConnection.addPluginRequestEntry(messageId, channel); LoginPluginRequestPacket loginPluginRequestPacket = new LoginPluginRequestPacket(); diff --git a/src/main/java/net/minestom/server/network/player/NettyPlayerConnection.java b/src/main/java/net/minestom/server/network/player/NettyPlayerConnection.java index d9d09d1d7..d2e0bd24c 100644 --- a/src/main/java/net/minestom/server/network/player/NettyPlayerConnection.java +++ b/src/main/java/net/minestom/server/network/player/NettyPlayerConnection.java @@ -43,7 +43,7 @@ public class NettyPlayerConnection extends PlayerConnection { private String serverAddress; private int serverPort; - // Used for the login plugin request packet, to retrive the channel from a message id, + // Used for the login plugin request packet, to retrieve the channel from a message id, // cleared once the player enters the play state private Map pluginRequestMap = new ConcurrentHashMap<>();