Compare commits

..
4 Commits
Author SHA1 Message Date
Retrooper 8c15df942d Merge remote-tracking branch 'origin/master' 2020-07-06 13:13:56 +08:00
Retrooper 6ce4fbd7fc IDE files removed 2020-07-06 13:13:18 +08:00
Retrooper 3e4fc70442 1.4.1 Release
* ...getPlayerUtilities().getPlayerPing(player); deprecated, use getPing(player);

* ServerTickEvent deprecated and it's Bukkit task too, will be removed in the next VersionLookupUtils
* PacketEvents.getAPI().getSettings().setDefaultServerVersion(version); added
Settings the default version will let PacketEvents use the default version if PacketEvents fails to detect your server version.
No idea why this happens in mSpigot, but yea.
2020-07-06 13:11:39 +08:00
retrooper fc91416ab7 atlas credit removed as their file was removed 2020-07-05 21:32:36 +02:00
21 changed files with 108 additions and 41 deletions

No files matched your search

-5
View File
@@ -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
+1 -1
View File
@@ -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
@@ -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 {
@@ -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);
}
@@ -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,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,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,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,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,4 +1,4 @@
package io.github.retrooper.packetevents.utils.api;
package io.github.retrooper.packetevents.utils.versionlookup;
import org.bukkit.entity.Player;
@@ -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,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;