Улучшенная типизация пакетов

This commit is contained in:
RoyceDa
2026-02-04 06:00:05 +02:00
parent bb413a7976
commit 10f257297d
3 changed files with 12 additions and 12 deletions

View File

@@ -10,6 +10,13 @@ public abstract class Packet {
public int packetId;
public PacketManager packetManager;
/**
* Читает данные пакета из потока. Используется при получении
*
* @param stream Поток с данными пакета.
*/
public abstract void read(Stream stream);
/**
* Записывает данные пакета в поток. Исползуется при отправке
*
@@ -17,11 +24,4 @@ public abstract class Packet {
*/
public abstract Stream write();
/**
* Читает данные пакета из потока. Используется при получении
*
* @param stream Поток с данными пакета.
*/
public abstract void read(Stream stream);
}

View File

@@ -7,7 +7,7 @@ import io.orprotocol.client.Client;
/**
* Базовый класс для обработчиков пакетов.
*/
public abstract class PacketExecutor {
public abstract class PacketExecutor<T> {
public Settings settings;
/**
@@ -22,5 +22,5 @@ public abstract class PacketExecutor {
* @param packet Пакет, полученный от клиента.
* @param client Клиент, отправивший пакет.
*/
public abstract void onPacketReceived(Packet packet, Client client) throws Exception, ProtocolException;
public abstract void onPacketReceived(T packet, Client client) throws Exception, ProtocolException;
}

View File

@@ -8,7 +8,7 @@ import java.util.HashMap;
public class PacketManager {
private HashMap<Integer, Class<? extends Packet>> packets;
private HashMap<Integer, PacketExecutor> executors;
private HashMap<Integer, PacketExecutor<?>> executors;
public PacketManager() {
this.packets = new HashMap<>();
@@ -46,7 +46,7 @@ public class PacketManager {
* Возвращает зарегистрированные исполнители пакетов.
* @return Хэш-карта зарегистрированных исполнителей пакетов.
*/
public HashMap<Integer, PacketExecutor> getExecutors() {
public HashMap<Integer, PacketExecutor<?>> getExecutors() {
return this.executors;
}
@@ -73,7 +73,7 @@ public class PacketManager {
* @param packetId ID пакета
* @param executor Обработчик пакета
*/
public void registerExecutor(int packetId, PacketExecutor executor) {
public void registerExecutor(int packetId, PacketExecutor<?> executor) {
if (this.executors == null) {
this.executors = new HashMap<>();
}