Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c15df942d | ||
|
|
6ce4fbd7fc | ||
|
|
3e4fc70442 | ||
|
|
fc91416ab7 |
No files matched your search
@@ -2,11 +2,6 @@
|
||||
|
||||
A lightweight spigot packetlistener & packetsender coded by retrooper.
|
||||
|
||||
## Credit
|
||||
|
||||
PacketEvents forked [Atlas](https://github.com/funkemunky/Atlas)' [Packet](https://github.com/funkemunky/Atlas/blob/master/AtlasParent/Atlas/src/main/java/cc/funkemunky/api/tinyprotocol/api/Packet.java) class.
|
||||
|
||||
[Find our forked version](https://github.com/retrooper/packetevents/blob/master/src/main/java/io/github/retrooper/packetevents/packet/PacketType.java)
|
||||
## About
|
||||
|
||||
This packetlistener is **only** supported on spigot servers and has been tested to work on these spigot forks: PaperSpigot, Tuinity
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>io.github.retrooper</groupId>
|
||||
<artifactId>packetevents</artifactId>
|
||||
<version>1.4</version>
|
||||
<version>1.4.1</version>
|
||||
<packaging>jar</packaging>
|
||||
<name>packetevents</name>
|
||||
<properties>
|
||||
|
||||
@@ -101,7 +101,7 @@ public final class PacketEvents implements PacketListener, Listener {
|
||||
*/
|
||||
@PacketHandler
|
||||
public void onInject(final PlayerInjectEvent e) {
|
||||
getAPI().getPlayerUtilities().clientVersionsMap.put(e.getPlayer().getUniqueId(), e.getClientVersion());
|
||||
getAPI().getPlayerUtilities().setClientVersion(e.getPlayer(), e.getClientVersion());
|
||||
}
|
||||
|
||||
@PacketHandler
|
||||
@@ -115,6 +115,7 @@ public final class PacketEvents implements PacketListener, Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onQuit(final PlayerQuitEvent e) {
|
||||
getAPI().getPlayerUtilities().clearClientVersion(e.getPlayer());
|
||||
getAPI().getPlayerUtilities().uninjectPlayer(e.getPlayer());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
package io.github.retrooper.packetevents;
|
||||
|
||||
import io.github.retrooper.packetevents.event.manager.EventManager;
|
||||
import io.github.retrooper.packetevents.settings.Settings;
|
||||
import io.github.retrooper.packetevents.utils.api.PlayerUtils;
|
||||
import io.github.retrooper.packetevents.utils.api.ServerUtils;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
public final class PacketEventsAPI {
|
||||
private final EventManager eventManager = new EventManager();
|
||||
private final PlayerUtils playerUtils = new PlayerUtils();
|
||||
private final ServerUtils serverUtils = new ServerUtils();
|
||||
private final Settings settings = new Settings();
|
||||
|
||||
private BukkitTask serverTickTask;
|
||||
|
||||
@@ -67,6 +71,7 @@ public final class PacketEventsAPI {
|
||||
*
|
||||
* @return server tick task
|
||||
*/
|
||||
@Deprecated
|
||||
public BukkitTask getServerTickTask() {
|
||||
return serverTickTask;
|
||||
}
|
||||
@@ -76,9 +81,14 @@ public final class PacketEventsAPI {
|
||||
*
|
||||
* @param task
|
||||
*/
|
||||
@Deprecated
|
||||
public void setServerTickTask(final BukkitTask task) {
|
||||
this.serverTickTask = task;
|
||||
}
|
||||
|
||||
public Settings getSettings() {
|
||||
return settings;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.github.retrooper.packetevents.enums;
|
||||
|
||||
import io.github.retrooper.packetevents.PacketEvents;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
/**
|
||||
@@ -24,6 +25,9 @@ public enum ServerVersion {
|
||||
return val;
|
||||
}
|
||||
}
|
||||
if (PacketEvents.getAPI().getSettings().getDefaultServerVersion() != null) {
|
||||
return PacketEvents.getAPI().getSettings().getDefaultServerVersion();
|
||||
}
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
@@ -34,6 +38,7 @@ public enum ServerVersion {
|
||||
return cachedVersion;
|
||||
}
|
||||
|
||||
|
||||
private static ServerVersion[] reverse(final ServerVersion[] arr) {
|
||||
ServerVersion[] array = arr.clone();
|
||||
if (array == null) {
|
||||
@@ -57,7 +62,7 @@ public enum ServerVersion {
|
||||
}
|
||||
|
||||
public static String getNMSDirectory() {
|
||||
return "net.minecraft.server." + nmsVersionSuffix;
|
||||
return "net.minecraft.server." + getNmsSuffix();
|
||||
}
|
||||
|
||||
public static String getOBCDirectory() {
|
||||
|
||||
@@ -2,7 +2,7 @@ package io.github.retrooper.packetevents.event.impl;
|
||||
|
||||
import io.github.retrooper.packetevents.enums.ClientVersion;
|
||||
import io.github.retrooper.packetevents.event.PacketEvent;
|
||||
import io.github.retrooper.packetevents.utils.api.VersionLookupUtils;
|
||||
import io.github.retrooper.packetevents.utils.versionlookup.VersionLookupUtils;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public final class PlayerInjectEvent extends PacketEvent {
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.github.retrooper.packetevents.event.impl;
|
||||
import io.github.retrooper.packetevents.PacketEvents;
|
||||
import io.github.retrooper.packetevents.event.PacketEvent;
|
||||
|
||||
@Deprecated
|
||||
public final class ServerTickEvent extends PacketEvent {
|
||||
private final int tick;
|
||||
private final double tps;
|
||||
|
||||
@@ -73,7 +73,7 @@ public final class EventManager {
|
||||
}
|
||||
|
||||
public void registerListeners(final PacketListener... listeners) {
|
||||
for(final PacketListener listener : listeners) {
|
||||
for (final PacketListener listener : listeners) {
|
||||
registerListener(listener);
|
||||
}
|
||||
}
|
||||
@@ -83,7 +83,7 @@ public final class EventManager {
|
||||
}
|
||||
|
||||
public void unregisterListeners(final PacketListener... listeners) {
|
||||
for(final PacketListener listener : listeners) {
|
||||
for (final PacketListener listener : listeners) {
|
||||
unregisterListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,6 @@ package io.github.retrooper.packetevents.example;
|
||||
import io.github.retrooper.packetevents.PacketEvents;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import static io.github.retrooper.packetevents.PacketEvents.getAPI;
|
||||
|
||||
public class MainExample extends JavaPlugin {
|
||||
|
||||
@Override
|
||||
@@ -15,7 +13,8 @@ public class MainExample extends JavaPlugin {
|
||||
@Override
|
||||
public void onEnable() {
|
||||
PacketEvents.start(this);
|
||||
getAPI().getServerTickTask().cancel();
|
||||
//If packeteventa cannot detect your server version, it will use the recommended version
|
||||
// getAPI().getSettings().setDefaultServerVersion(ServerVersion.v_1_7_10);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+6
-6
@@ -10,18 +10,19 @@ public class WrappedPacketOutEntity extends WrappedPacket {
|
||||
private double deltaX, deltaY, deltaZ;
|
||||
private byte yaw, pitch;
|
||||
private boolean onGround;
|
||||
|
||||
public WrappedPacketOutEntity(Object packet) {
|
||||
super(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setup(){
|
||||
protected void setup() {
|
||||
try {
|
||||
this.entityId = Reflection.getField(packetClass, int.class, 0).getInt(packet);
|
||||
this.onGround = Reflection.getField(packetClass, boolean.class, 0).getBoolean(packet);
|
||||
if(version.isLowerThan(ServerVersion.v_1_9)) {
|
||||
byte dX = Reflection.getField(packetClass, byte.class, 0).getByte(packet);
|
||||
byte dY = Reflection.getField(packetClass, byte.class, 1).getByte(packet);
|
||||
if (version.isLowerThan(ServerVersion.v_1_9)) {
|
||||
byte dX = Reflection.getField(packetClass, byte.class, 0).getByte(packet);
|
||||
byte dY = Reflection.getField(packetClass, byte.class, 1).getByte(packet);
|
||||
byte dZ = Reflection.getField(packetClass, byte.class, 2).getByte(packet);
|
||||
|
||||
this.deltaX = dX / 32.0;
|
||||
@@ -30,8 +31,7 @@ public class WrappedPacketOutEntity extends WrappedPacket {
|
||||
|
||||
this.yaw = Reflection.getField(packetClass, byte.class, 3).getByte(packet);
|
||||
this.pitch = Reflection.getField(packetClass, byte.class, 4).getByte(packet);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
short dX = Reflection.getField(packetClass, short.class, 0).getShort(packet);
|
||||
short dY = Reflection.getField(packetClass, short.class, 1).getShort(packet);
|
||||
short dZ = Reflection.getField(packetClass, short.class, 2).getShort(packet);
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package io.github.retrooper.packetevents.settings;
|
||||
|
||||
import io.github.retrooper.packetevents.enums.ServerVersion;
|
||||
|
||||
public class Settings {
|
||||
private ServerVersion defaultServerVersion;
|
||||
|
||||
/**
|
||||
* If PacketEvents fails to detect your server version, it will use the recommended version
|
||||
*
|
||||
* @return Recommended version
|
||||
*/
|
||||
public ServerVersion getDefaultServerVersion() {
|
||||
return defaultServerVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the recommended version
|
||||
*
|
||||
* @param version
|
||||
*/
|
||||
public void setDefaultServerVersion(final ServerVersion version) {
|
||||
defaultServerVersion = version;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.github.retrooper.packetevents.utils;
|
||||
|
||||
import io.github.retrooper.packetevents.PacketEvents;
|
||||
import io.github.retrooper.packetevents.annotations.Nullable;
|
||||
import io.github.retrooper.packetevents.enums.ServerVersion;
|
||||
import io.github.retrooper.packetevents.packetwrappers.Sendable;
|
||||
@@ -15,18 +16,24 @@ import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public final class NMSUtils {
|
||||
private static final ServerVersion version = ServerVersion.getVersion();
|
||||
public static final String nettyPrefix = version.isLowerThan(ServerVersion.v_1_8) ? "net.minecraft.util.io.netty" : "io.netty";
|
||||
private static final ServerVersion version = PacketEvents.getAPI().getServerUtilities().getServerVersion();
|
||||
public static String nettyPrefix;
|
||||
private static final String nmsDir = ServerVersion.getNMSDirectory();
|
||||
private static final String obcDir = ServerVersion.getOBCDirectory();
|
||||
public static Class<?> minecraftServerClass, craftWorldsClass,
|
||||
packetClass, entityPlayerClass, playerConnectionClass,
|
||||
craftPlayerClass, serverConnectionClass, craftEntityClass,
|
||||
craftItemStack, nmsItemStackClass, networkManagerClass, nettyChannelClass;
|
||||
private static Method getServerMethod, getCraftWorldHandleMethod, getServerConnection, getCraftPlayerHandle, getCraftEntityHandle, sendPacketMethod, asBukkitCopy;
|
||||
private static Field recentTPSField, entityPlayerPingField, playerConnectionField;
|
||||
private static Method getCraftWorldHandleMethod, getServerConnection, getCraftPlayerHandle, getCraftEntityHandle, sendPacketMethod, asBukkitCopy;
|
||||
private static Field entityPlayerPingField, playerConnectionField;
|
||||
|
||||
static {
|
||||
try {
|
||||
nettyPrefix = "io.netty";
|
||||
Class.forName("io.netty.channel.Channel");
|
||||
} catch (ClassNotFoundException e) {
|
||||
nettyPrefix = "net.minecraft.util.io.netty";
|
||||
}
|
||||
try {
|
||||
nettyChannelClass = getNettyClass("channel.Channel");
|
||||
minecraftServerClass = getNMSClass("MinecraftServer");
|
||||
@@ -46,7 +53,6 @@ public final class NMSUtils {
|
||||
|
||||
//METHODS
|
||||
try {
|
||||
getServerMethod = minecraftServerClass.getMethod("getServer");
|
||||
getCraftWorldHandleMethod = craftWorldsClass.getMethod("getHandle");
|
||||
getCraftPlayerHandle = craftPlayerClass.getMethod("getHandle");
|
||||
getCraftEntityHandle = craftEntityClass.getMethod("getHandle");
|
||||
@@ -59,7 +65,6 @@ public final class NMSUtils {
|
||||
|
||||
|
||||
try {
|
||||
recentTPSField = minecraftServerClass.getField("recentTps");
|
||||
entityPlayerPingField = entityPlayerClass.getField("ping");
|
||||
playerConnectionField = entityPlayerClass.getField("playerConnection");
|
||||
} catch (NoSuchFieldException e) {
|
||||
@@ -68,13 +73,12 @@ public final class NMSUtils {
|
||||
}
|
||||
|
||||
public static Object getMinecraftServerInstance() throws InvocationTargetException, IllegalAccessException {
|
||||
return getServerMethod.invoke(null);
|
||||
return Reflection.getMethod(minecraftServerClass, "getServer", 0).invoke(null);
|
||||
}
|
||||
|
||||
public static double[] recentTPS() throws IllegalAccessException, InvocationTargetException {
|
||||
final Object minecraftServerObj = getMinecraftServerInstance();
|
||||
double[] recentTPS = (double[]) recentTPSField.get(minecraftServerObj);
|
||||
return recentTPS;
|
||||
return (double[]) Reflection.getField(minecraftServerClass, double[].class, 0).get(minecraftServerObj);
|
||||
}
|
||||
|
||||
public static Class<?> getNMSClass(String name) throws ClassNotFoundException {
|
||||
|
||||
+30
-3
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents;
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
|
||||
import io.github.retrooper.packetevents.enums.ClientVersion;
|
||||
import io.github.retrooper.packetevents.handler.NettyPacketHandler;
|
||||
@@ -9,10 +9,21 @@ import org.bukkit.entity.Player;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PlayerUtils {
|
||||
protected final HashMap<UUID, ClientVersion> clientVersionsMap = new HashMap<UUID, ClientVersion>();
|
||||
public final class PlayerUtils {
|
||||
private final HashMap<UUID, ClientVersion> clientVersionsMap = new HashMap<UUID, ClientVersion>();
|
||||
|
||||
/**
|
||||
* Use {@link #getPing(Player)}
|
||||
*
|
||||
* @param player
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public int getPlayerPing(final Player player) {
|
||||
return getPing(player);
|
||||
}
|
||||
|
||||
public int getPing(final Player player) {
|
||||
return NMSUtils.getPlayerPing(player);
|
||||
}
|
||||
|
||||
@@ -24,6 +35,22 @@ public class PlayerUtils {
|
||||
return getClientVersion(player.getUniqueId());
|
||||
}
|
||||
|
||||
public void setClientVersion(final UUID uuid, final ClientVersion version) {
|
||||
clientVersionsMap.put(uuid, version);
|
||||
}
|
||||
|
||||
public void setClientVersion(final Player player, final ClientVersion version) {
|
||||
setClientVersion(player.getUniqueId(), version);
|
||||
}
|
||||
|
||||
public void clearClientVersion(final UUID uuid) {
|
||||
clientVersionsMap.remove(uuid);
|
||||
}
|
||||
|
||||
public void clearClientVersion(final Player player) {
|
||||
clearClientVersion(player.getUniqueId());
|
||||
}
|
||||
|
||||
public void injectPlayer(final Player player) {
|
||||
NettyPacketHandler.injectPlayer(player);
|
||||
}
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents;
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
|
||||
import io.github.retrooper.packetevents.enums.ServerVersion;
|
||||
import io.github.retrooper.packetevents.enums.SystemOS;
|
||||
@@ -6,7 +6,7 @@ import io.github.retrooper.packetevents.utils.NMSUtils;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
public class ServerUtils {
|
||||
public final class ServerUtils {
|
||||
public ServerVersion getServerVersion() {
|
||||
return ServerVersion.getVersion();
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
package io.github.retrooper.packetevents.utils.versionlookup;
|
||||
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import org.bukkit.entity.Player;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
package io.github.retrooper.packetevents.utils.versionlookup;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
package io.github.retrooper.packetevents.utils.versionlookup;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import protocolsupport.api.ProtocolSupportAPI;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
package io.github.retrooper.packetevents.utils.versionlookup;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
package io.github.retrooper.packetevents.utils.versionlookup;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
package io.github.retrooper.packetevents.utils.versionlookup;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import us.myles.ViaVersion.api.Via;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package io.github.retrooper.packetevents.utils.api;
|
||||
package io.github.retrooper.packetevents.utils.versionlookup;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
Reference in new issue
Block a user