Compare commits

...
4 Commits
Author SHA1 Message Date
Retrooper c3d75f1e8d 1.5.3 Stable release!!!! 2020-07-12 05:08:47 +08:00
Retrooper b847e53221 1.5.2 pre release 2020-07-12 02:46:52 +08:00
Retrooper c9570b0ad7 1.5.1 pre release 2020-07-11 18:52:07 +08:00
Retrooper ee5caaa81c Started on player infondo not use 2020-07-08 20:21:42 +08:00
27 changed files with 368 additions and 145 deletions

No files matched your search

+29 -27
View File
@@ -6,7 +6,7 @@
<groupId>io.github.retrooper</groupId>
<artifactId>packetevents</artifactId>
<version>1.5</version>
<version>1.5.3</version>
<packaging>jar</packaging>
<name>packetevents</name>
@@ -15,35 +15,28 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- You can build the project with this: "mvn clean compile assembly:single" -->
<build>
<defaultGoal>clean package</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>spigot-repo</id>
@@ -69,19 +62,21 @@
<dependencies>
<dependency>
<groupId>org.github.spigot</groupId>
<artifactId>1.7.10</artifactId>
<version>1.7.10</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.github.spigot</groupId>
<artifactId>1.8.8</artifactId>
<version>1.8.8</version>
<scope>provided</scope>
</dependency>
<groupId>org.github.spigot</groupId>
<artifactId>1.8.8</artifactId>
<version>1.8.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.github.spigot</groupId>
<artifactId>1.7.10</artifactId>
<version>1.7.10</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
@@ -104,6 +99,13 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.8.8-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
@@ -1,13 +1,14 @@
package io.github.retrooper.packetevents;
import io.github.retrooper.packetevents.annotations.PacketHandler;
import io.github.retrooper.packetevents.api.PacketEventsAPI;
import io.github.retrooper.packetevents.enums.ClientVersion;
import io.github.retrooper.packetevents.event.PacketListener;
import io.github.retrooper.packetevents.event.impl.BukkitMoveEvent;
import io.github.retrooper.packetevents.event.impl.PacketReceiveEvent;
import io.github.retrooper.packetevents.event.impl.PlayerInjectEvent;
import io.github.retrooper.packetevents.packet.PacketType;
import io.github.retrooper.packetevents.packet.PacketTypeClasses;
import io.github.retrooper.packetevents.settings.Settings;
import io.github.retrooper.packetevents.utils.onlineplayers.OnlinePlayerUtilities;
import io.github.retrooper.packetevents.utils.versionlookup.VersionLookupUtils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -17,16 +18,10 @@ import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.Plugin;
import java.util.HashMap;
public final class PacketEvents implements PacketListener, Listener {
public static HashMap<Plugin, Integer> plugins = new HashMap<Plugin, Integer>();
public PacketEvents(final Plugin plugin) {
this.plugin = plugin;
plugins.put(plugin, plugins.size());
}
private final Plugin plugin;
private final PacketEventsAPI packetEventsAPI = new PacketEventsAPI();
private static Plugin plugin;
private static final PacketEventsAPI packetEventsAPI = new PacketEventsAPI();
private static final PacketEvents instance = new PacketEvents();
private static boolean hasLoaded;
private static final Settings settings = new Settings();
@@ -40,73 +35,70 @@ public final class PacketEvents implements PacketListener, Listener {
}
/**
*Loads PacketEvents if you haven't already, Sets everything up, injects all players
* Loads PacketEvents if you haven't already, Sets everything up, injects all players
*/
public void start() {
public static void start(final Plugin pl) {
if (!hasLoaded) {
load();
}
//Register Bukkit and PacketListener
getAPI().getEventManager().registerListener(this);
plugin = pl;
//Register Bukkit and PacketListener
getAPI().getEventManager().registerListener(instance);
Bukkit.getPluginManager().registerEvents(this, plugin);
for(final Player p : Bukkit.getServer().getOnlinePlayers()) {
getAPI().getPlayerUtilities().injectPlayer(p, this);
}
Bukkit.getPluginManager().registerEvents(instance, plugin);
for (final Player p : OnlinePlayerUtilities.getOnlinePlayers()) {
getAPI().getPlayerUtilities().injectPlayer(p);
}
}
/**
* Stop all tasks and unregisters all PacketEvents' listeners
*/
public void stop() {
public static void stop() {
for (final Player p : OnlinePlayerUtilities.getOnlinePlayers()) {
getAPI().getPlayerUtils().uninjectPlayerNow(p);
}
getAPI().getEventManager().unregisterAllListeners();
PacketType.Client.packetIds.clear();
PacketType.Server.packetIds.clear();
for(final Player p : Bukkit.getServer().getOnlinePlayers()) {
getAPI().getPlayerUtilities().uninjectPlayer(p, this);
}
}
public PacketEventsAPI getAPI() {
public static PacketEventsAPI getAPI() {
return packetEventsAPI;
}
public Plugin getPlugin() {
public static Plugin getPlugin() {
return plugin;
}
public String getHandlerName() {
return "packetevents_" + plugins.get(plugin);
public static String getHandlerName(final String name) {
return "pe-" + getSettings().getIdentifier() + "-" + name;
}
public static Settings getSettings() {
return settings;
}
@PacketHandler
public void onInject(final PlayerInjectEvent e) {
getAPI().getPlayerUtilities().setClientVersion(e.getPlayer(), e.getClientVersion());
}
@PacketHandler
public void onReceive(final PacketReceiveEvent e) {
}
@EventHandler
public void onJoin(final PlayerJoinEvent e) {
getAPI().getPlayerUtilities().injectPlayer(e.getPlayer(), this);
getAPI().getPlayerUtils().injectPlayer(e.getPlayer());
getAPI().getPlayerUtils().setClientVersion(e.getPlayer(), ClientVersion.fromProtocolVersion(VersionLookupUtils.getProtocolVersion(e.getPlayer())));
}
@EventHandler
public void onQuit(final PlayerQuitEvent e) {
getAPI().getPlayerUtilities().clearClientVersion(e.getPlayer());
getAPI().getPlayerUtilities().uninjectPlayer(e.getPlayer(), this);
getAPI().getPlayerUtils().clearClientVersion(e.getPlayer());
getAPI().getPlayerUtils().uninjectPlayer(e.getPlayer());
}
@EventHandler
public void onMove(final PlayerMoveEvent e) {
getAPI().getEventManager().callEvent(new BukkitMoveEvent(e), getPlugin());
BukkitMoveEvent moveEvent = new BukkitMoveEvent(e);
getAPI().getEventManager().callEvent(moveEvent);
e.setCancelled(moveEvent.isCancelled());
}
}
@@ -1,15 +1,13 @@
package io.github.retrooper.packetevents;
package io.github.retrooper.packetevents.api;
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 ServerUtils serverUtils = new ServerUtils();
/**
* Not thread safe
@@ -40,6 +38,16 @@ public final class PacketEventsAPI {
*
* @return Player Utilities
*/
public PlayerUtils getPlayerUtils() {
return playerUtils;
}
/**
* Use {@link #getPlayerUtils()}
*
* @return
*/
@Deprecated
public PlayerUtils getPlayerUtilities() {
return playerUtils;
}
@@ -49,6 +57,16 @@ public final class PacketEventsAPI {
*
* @return Server Utilities
*/
public ServerUtils getServerUtils() {
return serverUtils;
}
/**
* Please use {@link #getServerUtils()}
*
* @return
*/
@Deprecated
public ServerUtils getServerUtilities() {
return serverUtils;
}
@@ -64,5 +82,4 @@ public final class PacketEventsAPI {
}
}
@@ -23,8 +23,7 @@ public enum ServerVersion {
String valName = val.name().substring(2).replace("_", ".");
if (Bukkit.getBukkitVersion().contains(valName)) {
return val;
}
else if(PacketEvents.getSettings().getDefaultServerVersion() != null) {
} else if (PacketEvents.getSettings().getDefaultServerVersion() != null) {
return PacketEvents.getSettings().getDefaultServerVersion();
}
}
@@ -0,0 +1,25 @@
package io.github.retrooper.packetevents.enums.minecraft;
public enum Gamemode {
NOT_SET(-1, ""),
SURVIVAL(0, "survival"),
CREATIVE(1, "creative"),
ADVENTURE(2, "adventure"),
SPECTATOR(3, "spectator");
int f;
String g;
Gamemode(int var3, String var4) {
this.f = var3;
this.g = var4;
}
public int getId() {
return this.f;
}
public String b() {
return this.g;
}
}
@@ -0,0 +1,8 @@
package io.github.retrooper.packetevents.enums.minecraft;
public enum PlayerInfoAction {
ADD_PLAYER, UPDATE_GAME_MODE, UPDATE_LATENCY, UPDATE_DISPLAY_NAME, REMOVE_PLAYER;
PlayerInfoAction() {
}
}
@@ -1,7 +1,6 @@
package io.github.retrooper.packetevents.event;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.enums.ServerVersion;
public class PacketEvent {
@@ -8,6 +8,7 @@ import org.bukkit.event.player.PlayerMoveEvent;
public final class BukkitMoveEvent extends PacketEvent {
private final Player player;
private final Location to, from;
private boolean cancelled;
public BukkitMoveEvent(final Player player, final Location to, final Location from) {
this.player = player;
@@ -32,4 +33,16 @@ public final class BukkitMoveEvent extends PacketEvent {
public Location getTo() {
return to;
}
public void setCancelled(final boolean val) {
this.cancelled = val;
}
public boolean isCancelled() {
return cancelled;
}
public void cancel() {
setCancelled(true);
}
}
@@ -1,18 +1,14 @@
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.versionlookup.VersionLookupUtils;
import org.bukkit.entity.Player;
public final class PlayerInjectEvent extends PacketEvent {
private final Player player;
private final ClientVersion clientVersion;
private boolean cancelled;
public PlayerInjectEvent(final Player player) {
this.player = player;
this.clientVersion = ClientVersion.fromProtocolVersion(VersionLookupUtils.getProtocolVersion(player));
}
public boolean isCancelled() {
@@ -27,10 +23,6 @@ public final class PlayerInjectEvent extends PacketEvent {
setCancelled(true);
}
public ClientVersion getClientVersion() {
return clientVersion;
}
public Player getPlayer() {
return player;
}
@@ -6,9 +6,11 @@ import org.bukkit.entity.Player;
public final class PlayerUninjectEvent extends PacketEvent {
private final Player player;
private boolean cancelled;
private final boolean sync;
public PlayerUninjectEvent(final Player player) {
public PlayerUninjectEvent(final Player player, final boolean sync) {
this.player = player;
this.sync = sync;
}
public void cancel() {
@@ -23,6 +25,10 @@ public final class PlayerUninjectEvent extends PacketEvent {
this.cancelled = val;
}
public boolean isSync() {
return sync;
}
public Player getPlayer() {
return player;
}
@@ -6,7 +6,6 @@ import io.github.retrooper.packetevents.annotations.data.EventSynchronization;
import io.github.retrooper.packetevents.event.PacketEvent;
import io.github.retrooper.packetevents.event.PacketListener;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -28,7 +27,7 @@ public final class EventManager {
this(Runtime.getRuntime().availableProcessors());
}
public void callEvent(final PacketEvent e, final Plugin plugin) {
public void callEvent(final PacketEvent e) {
for (final PacketListener listener : registeredMethods.keySet()) {
//Annotated methods
final List<Method> methods = registeredMethods.get(listener);
@@ -50,7 +49,7 @@ public final class EventManager {
if (annotation.synchronization() == EventSynchronization.FORCE_ASYNC) {
executorService.execute(invokeMethod);
} else if (annotation.synchronization() == EventSynchronization.FORCE_SYNC) {
Bukkit.getScheduler().runTask(plugin, invokeMethod);
Bukkit.getScheduler().runTask(PacketEvents.getPlugin(), invokeMethod);
} else {
invokeMethod.run();
}
@@ -3,11 +3,14 @@ package io.github.retrooper.packetevents.example;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.annotations.PacketHandler;
import io.github.retrooper.packetevents.event.PacketListener;
import io.github.retrooper.packetevents.event.impl.PacketSendEvent;
import io.github.retrooper.packetevents.event.impl.PlayerInjectEvent;
import io.github.retrooper.packetevents.packet.PacketType;
import io.github.retrooper.packetevents.packetwrappers.out.keepalive.WrappedPacketOutKeepAlive;
import org.bukkit.plugin.java.JavaPlugin;
public class MainExample extends JavaPlugin implements PacketListener {
private final PacketEvents pe = new PacketEvents(this);
@Override
public void onLoad() {
PacketEvents.load();
@@ -15,21 +18,20 @@ public class MainExample extends JavaPlugin implements PacketListener {
@Override
public void onEnable() {
pe.start();
//If packetevents cannot detect your server version, it will use the recommended version
//Make sure you set a unique identifier, if another present plugin has the same identifier, you could run into issues
PacketEvents.getSettings().setIdentifier("official_api");
PacketEvents.start(this);
//If packetevents cannot detect your server version, it will use the default you specify version
// getAPI().getSettings().setDefaultServerVersion(ServerVersion.v_1_7_10);
pe.getAPI().getEventManager().registerListeners(this);
PacketEvents.getAPI().getEventManager().registerListeners(this);
}
@Override
public void onDisable() {
pe.stop();
PacketEvents.stop();
}
@PacketHandler
public void onInject(PlayerInjectEvent e) {
e.getPlayer().sendMessage("you have been injected");
System.out.println("he has been injected");
}
}
@@ -10,7 +10,6 @@ import org.bukkit.entity.Player;
import java.util.concurrent.Future;
public class NettyPacketHandler {
public static final String handlerName = "packet_handler";
private static boolean v1_7_nettyMode = false;
static {
@@ -21,21 +20,21 @@ public class NettyPacketHandler {
}
}
public static void injectPlayer(final Player player, PacketEvents pe) {
public static void injectPlayer(final Player player) {
final PlayerInjectEvent injectEvent = new PlayerInjectEvent(player);
pe.getAPI().getEventManager().callEvent(injectEvent, pe.getPlugin());
PacketEvents.getAPI().getEventManager().callEvent(injectEvent);
if (!injectEvent.isCancelled()) {
if (v1_7_nettyMode) {
NettyPacketHandler_7.injectPlayer(player, pe);
NettyPacketHandler_7.injectPlayer(player);
} else {
NettyPacketHandler_8.injectPlayer(player, pe);
NettyPacketHandler_8.injectPlayer(player);
}
}
}
public static Future<?> uninjectPlayer(final Player player, PacketEvents pe) {
final PlayerUninjectEvent uninjectEvent = new PlayerUninjectEvent(player);
pe.getAPI().getEventManager().callEvent(uninjectEvent, pe.getPlugin());
public static Future<?> uninjectPlayer(final Player player) {
final PlayerUninjectEvent uninjectEvent = new PlayerUninjectEvent(player, false);
PacketEvents.getAPI().getEventManager().callEvent(uninjectEvent);
if (!uninjectEvent.isCancelled()) {
if (v1_7_nettyMode) {
return NettyPacketHandler_7.uninjectPlayer(player);
@@ -46,20 +45,32 @@ public class NettyPacketHandler {
return null;
}
public static Object write(final Player sender, final Object packet, PacketEvents pe) {
public static void uninjectPlayerNow(final Player player) {
final PlayerUninjectEvent uninjectEvent = new PlayerUninjectEvent(player, true);
PacketEvents.getAPI().getEventManager().callEvent(uninjectEvent);
if (!uninjectEvent.isCancelled()) {
if (v1_7_nettyMode) {
NettyPacketHandler_7.uninjectPlayerNow(player);
} else {
NettyPacketHandler_8.uninjectPlayerNow(player);
}
}
}
public static Object write(final Player sender, final Object packet) {
final String packetName = packet.getClass().getSimpleName();
final PacketSendEvent packetSendEvent = new PacketSendEvent(sender, packetName, packet);
pe.getAPI().getEventManager().callEvent(packetSendEvent, pe.getPlugin());
PacketEvents.getAPI().getEventManager().callEvent(packetSendEvent);
if (!packetSendEvent.isCancelled()) {
return packet;
}
return null;
}
public static Object read(final Player receiver, final Object packet, PacketEvents pe) {
public static Object read(final Player receiver, final Object packet) {
final String packetName = packet.getClass().getSimpleName();
final PacketReceiveEvent packetReceiveEvent = new PacketReceiveEvent(receiver, packetName, packet);
pe.getAPI().getEventManager().callEvent(packetReceiveEvent, pe.getPlugin());
PacketEvents.getAPI().getEventManager().callEvent(packetReceiveEvent);
if (!packetReceiveEvent.isCancelled()) {
return packet;
}
@@ -9,11 +9,11 @@ import java.util.concurrent.Future;
final class NettyPacketHandler_7 {
public static void injectPlayer(final Player player, final PacketEvents pe) {
public static void injectPlayer(final Player player) {
final ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
Object packet = NettyPacketHandler.read(player, msg, pe);
Object packet = NettyPacketHandler.read(player, msg);
if (packet == null) {
return;
}
@@ -22,7 +22,7 @@ final class NettyPacketHandler_7 {
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
Object packet = NettyPacketHandler.write(player, msg, pe);
Object packet = NettyPacketHandler.write(player, msg);
if (packet == null) {
return;
}
@@ -30,7 +30,7 @@ final class NettyPacketHandler_7 {
}
};
final ChannelPipeline pipeline = ((Channel) NMSUtils.getChannel(player)).pipeline();
pipeline.addBefore(pe.getHandlerName(), player.getName(), channelDuplexHandler);
pipeline.addBefore("packet_handler", PacketEvents.getHandlerName(player.getName()), channelDuplexHandler);
}
public static Future<?> uninjectPlayer(final Player player) {
@@ -38,8 +38,13 @@ final class NettyPacketHandler_7 {
return channel.eventLoop().submit(new Runnable() {
@Override
public void run() {
channel.pipeline().remove(player.getName());
channel.pipeline().remove(PacketEvents.getHandlerName(player.getName()));
}
});
}
public static void uninjectPlayerNow(final Player player) {
final Channel channel = (Channel) NMSUtils.getChannel(player);
channel.pipeline().remove(PacketEvents.getHandlerName(player.getName()));
}
}
@@ -1,7 +1,6 @@
package io.github.retrooper.packetevents.handler;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.utils.NMSUtils;
import io.netty.channel.*;
import org.bukkit.entity.Player;
@@ -10,11 +9,11 @@ import java.util.concurrent.Future;
final class NettyPacketHandler_8 {
public static void injectPlayer(final Player player, final PacketEvents pe) {
public static void injectPlayer(final Player player) {
final ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
Object packet = NettyPacketHandler.read(player, msg, pe);
Object packet = NettyPacketHandler.read(player, msg);
if (packet == null) {
return;
}
@@ -23,7 +22,7 @@ final class NettyPacketHandler_8 {
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
Object packet = NettyPacketHandler.write(player, msg, pe);
Object packet = NettyPacketHandler.write(player, msg);
if (packet == null) {
return;
}
@@ -31,7 +30,7 @@ final class NettyPacketHandler_8 {
}
};
final ChannelPipeline pipeline = ((Channel) NMSUtils.getChannel(player)).pipeline();
pipeline.addBefore(pe.getHandlerName(), player.getName(), channelDuplexHandler);
pipeline.addBefore("packet_handler", PacketEvents.getHandlerName(player.getName()), channelDuplexHandler);
}
public static Future<?> uninjectPlayer(final Player player) {
@@ -39,8 +38,13 @@ final class NettyPacketHandler_8 {
return channel.eventLoop().submit(new Runnable() {
@Override
public void run() {
channel.pipeline().remove(player.getName());
channel.pipeline().remove(PacketEvents.getHandlerName(player.getName()));
}
});
}
public static void uninjectPlayerNow(final Player player) {
final Channel channel = (Channel) NMSUtils.getChannel(player);
channel.pipeline().remove(PacketEvents.getHandlerName(player.getName()));
}
}
@@ -1,16 +1,15 @@
package io.github.retrooper.packetevents.packetwrappers.in.keepalive;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.reflectionutils.Reflection;
import io.github.retrooper.packetevents.utils.NMSUtils;
public final class WrappedPacketInKeepAlive extends WrappedPacket {
private static Class<?> keepAliveClass;
private static Class<?> packetClass;
static {
try {
keepAliveClass = NMSUtils.getNMSClass("PacketPlayInKeepAlive");
packetClass = NMSUtils.getNMSClass("PacketPlayInKeepAlive");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
@@ -24,22 +23,26 @@ public final class WrappedPacketInKeepAlive extends WrappedPacket {
@Override
protected void setup() {
try {
if (version.isHigherThan(ServerVersion.v_1_12)) {
this.id = Reflection.getField(keepAliveClass, long.class, 0).getLong(packet);
} else {
this.id = Reflection.getField(keepAliveClass, int.class, 0).getInt(packet);
if (Reflection.getField(packetClass, int.class, 0) == null) {
try {
this.id = Reflection.getField(packetClass, long.class, 0).getLong(packet);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else {
try {
this.id = Reflection.getField(packetClass, int.class, 0).getInt(packet);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
/**
* Cast this long to an integer if you are using 1.7.10->1.12.2!
* In 1.13.2->1.15.2 a long is sent
* Optionally Cast this long to an integer if you are using 1.7.10->1.12.2!
* In 1.13.2->1.16.1 a long is sent
*
* @return
* @return response is
*/
public long getId() {
return id;
@@ -0,0 +1,52 @@
package io.github.retrooper.packetevents.packetwrappers.out.keepalive;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.reflectionutils.Reflection;
import io.github.retrooper.packetevents.utils.NMSUtils;
import net.minecraft.server.v1_8_R3.PacketPlayOutKeepAlive;
public class WrappedPacketOutKeepAlive extends WrappedPacket {
private long id;
public WrappedPacketOutKeepAlive(Object packet) {
super(packet);
}
/**
* Optionally Cast this long to an integer if you are using 1.7.10->1.12.2!
* In 1.13.2->1.16.1 a long is sent
*
* @return response is
*/
public long getId() {
return id;
}
@Override
protected void setup() {
if (Reflection.getField(packetClass, int.class, 0) == null) {
try {
this.id = Reflection.getField(packetClass, long.class, 0).getLong(packet);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} else {
try {
this.id = Reflection.getField(packetClass, int.class, 0).getInt(packet);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
private static Class<?> packetClass;
static {
try {
packetClass = NMSUtils.getNMSClass("PacketPlayOutKeepAlive");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
PacketPlayOutKeepAlive p;
}
}
@@ -0,0 +1,44 @@
package io.github.retrooper.packetevents.packetwrappers.out.playerinfo;
import io.github.retrooper.packetevents.enums.minecraft.Gamemode;
import io.github.retrooper.packetevents.enums.minecraft.PlayerInfoAction;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.reflectionutils.Reflection;
import io.github.retrooper.packetevents.utils.NMSUtils;
import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo;
public class WrappedPacketOutPlayerInfo extends WrappedPacket {
private PlayerInfoAction action;
public WrappedPacketOutPlayerInfo(Object packet) {
super(packet);
}
@Override
protected void setup() {
PacketPlayOutPlayerInfo.PlayerInfoData dl;
}
private static Class<?> packetClass, enumPlayerInfoActionClass;
static {
try {
packetClass = NMSUtils.getNMSClass("PacketPlayOutPlayerInfo");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
enumPlayerInfoActionClass = NMSUtils.getNMSClass("EnumPLayerInfoAction");
} catch (ClassNotFoundException e) {
enumPlayerInfoActionClass = Reflection.getSubClass(packetClass, "EnumPlayerInfoAction");
}
}
public class PlayerDataInfo {
public PlayerDataInfo(Object gameProfile, int var, Gamemode gamemode, String s) {
}
}
}
@@ -4,6 +4,7 @@ import io.github.retrooper.packetevents.enums.ServerVersion;
public class Settings {
private ServerVersion defaultServerVersion;
private String identifier = "";
/**
* If PacketEvents fails to detect your server version, it will use the recommended version
@@ -22,4 +23,12 @@ public class Settings {
public void setDefaultServerVersion(final ServerVersion version) {
defaultServerVersion = version;
}
public String getIdentifier() {
return identifier;
}
public void setIdentifier(final String identifier) {
this.identifier = identifier;
}
}
@@ -15,4 +15,4 @@ public class BlockIteratorUtils {
}
return block;
}
}
}
@@ -1,6 +1,5 @@
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;
@@ -16,7 +15,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public final class NMSUtils {
private static final ServerVersion version =ServerVersion.getVersion();
private static final ServerVersion version = ServerVersion.getVersion();
public static String nettyPrefix;
private static final String nmsDir = ServerVersion.getNMSDirectory();
private static final String obcDir = ServerVersion.getOBCDirectory();
@@ -1,6 +1,5 @@
package io.github.retrooper.packetevents.utils.api;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.enums.ClientVersion;
import io.github.retrooper.packetevents.handler.NettyPacketHandler;
import io.github.retrooper.packetevents.packetwrappers.Sendable;
@@ -41,12 +40,16 @@ public final class PlayerUtils {
clearClientVersion(player.getUniqueId());
}
public void injectPlayer(final Player player, final PacketEvents pe) {
NettyPacketHandler.injectPlayer(player,pe);
public void injectPlayer(final Player player) {
NettyPacketHandler.injectPlayer(player);
}
public void uninjectPlayer(final Player player, final PacketEvents pe) {
NettyPacketHandler.uninjectPlayer(player, pe);
public void uninjectPlayer(final Player player) {
NettyPacketHandler.uninjectPlayer(player);
}
public void uninjectPlayerNow(final Player player) {
NettyPacketHandler.uninjectPlayerNow(player);
}
public void sendPacket(final Player player, final Sendable sendable) {
@@ -11,10 +11,12 @@ public final class ServerUtils {
public ServerVersion getServerVersion() {
return getVersion();
}
@Deprecated
public double[] getRecentServerTPS() {
return getRecentTPS();
return getRecentTPS();
}
@Deprecated
public double getCurrentServerTPS() {
return getCurrentTPS();
@@ -1,6 +1,5 @@
package io.github.retrooper.packetevents.utils.nms_entityfinder;
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.utils.NMSUtils;
@@ -13,7 +12,7 @@ import java.lang.reflect.Method;
public final class EntityFinderUtils {
@Nullable
private static final ServerVersion version =ServerVersion.getVersion();
private static final ServerVersion version = ServerVersion.getVersion();
private static Class<?> worldServerClass;
private static Class<?> craftWorldClass;
private static Class<?> entityClass;
@@ -0,0 +1,16 @@
package io.github.retrooper.packetevents.utils.onlineplayers;
import io.github.retrooper.packetevents.enums.ServerVersion;
import org.bukkit.entity.Player;
public class OnlinePlayerUtilities {
private static final ServerVersion version = ServerVersion.getVersion();
public static Player[] getOnlinePlayers() {
if (version.isLowerThan(ServerVersion.v_1_9)) {
return OnlinePlayerUtils_8.getOnlinePlayers();
} else {
return OnlinePlayerUtils_9.getOnlinePlayers();
}
}
}
@@ -0,0 +1,12 @@
package io.github.retrooper.packetevents.utils.onlineplayers;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class OnlinePlayerUtils_8 {
public static Player[] getOnlinePlayers() {
return Bukkit.getServer().getOnlinePlayers().toArray(new Player[0]);
}
}
@@ -0,0 +1,10 @@
package io.github.retrooper.packetevents.utils.onlineplayers;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class OnlinePlayerUtils_9 {
public static Player[] getOnlinePlayers() {
return Bukkit.getOnlinePlayers().toArray(new Player[0]);
}
}