Add support for legacy mod packet IDs (such as 211). May fix issue #32
Dieser Commit ist enthalten in:
Ursprung
db8d08f602
Commit
16dd2d5d1b
@ -631,6 +631,29 @@ public class PacketType implements Serializable {
|
|||||||
return getLookup().getFromCurrent(protocol, sender, packetId) != null;
|
return getLookup().getFromCurrent(protocol, sender, packetId) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve a packet type from a legacy ID.
|
||||||
|
* <p>
|
||||||
|
* If no associated packet type could be found, a new will be registered under LEGACY.
|
||||||
|
* @param id - the legacy ID.
|
||||||
|
* @param sender - the sender of the packet, or NULL if unknown.
|
||||||
|
* @return The packet type.
|
||||||
|
* @throws IllegalArgumentException If the sender is NULL and the packet doesn't exist.
|
||||||
|
*/
|
||||||
|
public static PacketType fromLegacy(int id, Sender sender) {
|
||||||
|
PacketType type = getLookup().getFromLegacy(id);
|
||||||
|
|
||||||
|
if (type == null) {
|
||||||
|
if (sender == null)
|
||||||
|
throw new IllegalArgumentException("Cannot find legacy packet " + id);
|
||||||
|
type = newLegacy(sender, id);
|
||||||
|
|
||||||
|
// As below
|
||||||
|
scheduleRegister(type, "Dynamic-" + UUID.randomUUID().toString());
|
||||||
|
}
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve a packet type from a protocol, sender and packet ID.
|
* Retrieve a packet type from a protocol, sender and packet ID.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -1018,7 +1018,7 @@ public final class PacketFilterManager implements ProtocolManager, ListenerInvok
|
|||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public int getPacketID(Object packet) {
|
public int getPacketID(Object packet) {
|
||||||
return getPacketType(packet).getLegacyId();
|
return PacketRegistry.getPacketID(packet.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -396,11 +396,25 @@ public class PacketRegistry {
|
|||||||
* @return The packet type, or NULL if not found.
|
* @return The packet type, or NULL if not found.
|
||||||
*/
|
*/
|
||||||
public static PacketType getPacketType(Class<?> packet) {
|
public static PacketType getPacketType(Class<?> packet) {
|
||||||
|
return getPacketType(packet, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the packet type of a given packet.
|
||||||
|
* @param packet - the class of the packet.
|
||||||
|
* @param sender - the sender of the packet, or NULL.
|
||||||
|
* @return The packet type, or NULL if not found.
|
||||||
|
*/
|
||||||
|
public static PacketType getPacketType(Class<?> packet, Sender sender) {
|
||||||
initialize();
|
initialize();
|
||||||
|
|
||||||
if (NETTY != null)
|
if (NETTY != null) {
|
||||||
return NETTY.getPacketClassLookup().get(packet);
|
return NETTY.getPacketClassLookup().get(packet);
|
||||||
|
} else {
|
||||||
final int id = LEGACY.getPacketID(packet);
|
final int id = LEGACY.getPacketID(packet);
|
||||||
return PacketType.hasLegacy(id) ? PacketType.findLegacy(id) : null;
|
|
||||||
|
return PacketType.hasLegacy(id) ?
|
||||||
|
PacketType.fromLegacy(id, sender) : null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren