Compare commits

...
67 Commits
Author SHA1 Message Date
purplexdev dc4dc80bdc Merge remote-tracking branch 'origin/master' 2020-06-05 20:17:47 +02:00
purplexdev 808a7b69d8 1.2.7 release,
Optimizations & bug fixes

* WrappedPacketInUseEntity getHand() null bug, so for now I just removed the getHand() method.

* WrappedPacketInEntityAction added as a couple of you suggested

* Optimization to getting entities by their id(used in use entity and entity action packet)

* After optimizing getEntity, file size has reduced by about 10%
2020-06-05 20:17:00 +02:00
retrooper 5b3b6ff509 jitpack version updated to 1.2.6 and link updated 2020-06-03 16:43:39 +02:00
purplexdev b923e86a91 Merge remote-tracking branch 'origin/master' 2020-06-03 13:43:54 +02:00
purplexdev 2c078dd1d4 Packages moved
io.github.explored.packetevents -> io.github.retrooper.packetevents
2020-06-03 13:43:41 +02:00
retrooper feb80c38b8 username changed 2020-06-03 13:29:16 +02:00
purplexdev b525407ad5 Keep alive packet added 2020-06-03 13:26:13 +02:00
purplexdev b660673743 * Get player ping
PacketEvents.getPing(Player);
2020-06-03 12:17:14 +02:00
purplexdev ba6e7c03fb 1.2.6 Bug fixes!
* Fixed listener not calling events outside of the "onPacket" function in the new
optimized event system!

* pom.xml updated to use new group id

* Registered listener example updated, more documented

This will be the 1.2.6 release build!
2020-06-02 10:22:08 +02:00
purplexdev 50e4b46018 Merge remote-tracking branch 'origin/master' 2020-06-02 09:57:12 +02:00
purplexdev a837bf38b1 Version 1.2.6 out,
* Packages moved from me.purplex.packetevents -> io.github.explored.packetevents
* The event calling has been massively optimized!
* Some unneeded imports have been removed.
2020-06-02 09:56:48 +02:00
explored 6fb102edf9 if link doesnt work 2020-06-01 17:58:31 +02:00
explored e45ed75e91 proper spacing 2020-06-01 17:56:32 +02:00
explored ef6b6b9466 readme details changed
* Changed my username (purplexdev -> explored)

* check out the details on the link specified
2020-06-01 17:55:35 +02:00
explored f6df333304 name changed 2020-05-31 20:33:49 +02:00
purplexdev 83aee85f48 Random debugs removed 2020-05-31 17:45:36 +02:00
purplexdev 73c5a0dfad Random debugs removed,
Now injecting players in PlayerLoginEvent
2020-05-29 13:06:29 +02:00
purplexdev 555c2b86c7 Merge remote-tracking branch 'origin/master' 2020-05-29 12:44:37 +02:00
purplexdev b5fd4b68bf LoginHandshake wrappers removed, BlockPlace added, WrappedPacketInUseEntity getEntity() optimized, to use worldServer.getEntity(ID); (faster) 2020-05-29 12:44:08 +02:00
purplex 3baaa64754 release version updated to 1.2.5 2020-05-28 20:34:22 +02:00
purplexdev e142d95abc attempt because github annoying 2020-05-28 19:53:33 +02:00
purplexdev 6ac93a97df attempt because github annoying 2020-05-28 19:50:57 +02:00
purplexdev 7db7e44bfc channelmanager 2020-05-28 19:48:32 +02:00
purplexdev 4792bda57b listener example commit failure fix 2020-05-28 19:46:12 +02:00
purplexdev cd009e7080 listener example commit failure fix 2020-05-28 19:32:51 +02:00
purplexdev bcc967d72d 1.2.5 Beta out!
Tested on 1.7.10 & 1.8.8, but should work for 1.7.10->1.15.2
Massive code cleanup, massive file size reduction.
Vector utility classes added,
TPS Accessing, All current wrapper classes OPTIMIZED.

Packets not received when relogging BUG FIXED!

New custom enums: Hand, Direction.
2020-05-28 19:16:02 +02:00
purplexdev 913cbf94f4 1.2.4 Update, pretty stable, many bugs fixed and lots of optimizations!
* PacketManager renamed to EventManager
* 1.7.10 player injecting fixed
* Channel handling for injecting players optimized
* Unneeded wrapper classes are not public anymore(unaccessible and your IDE shouldn't recommend them anymore)
* Wrapper classes start with WrappedPacketIn and not WrappedPacketPlayIn to shorten, for example WrappedPacketInAbilities,
* Handshake packet adding attempt but not finished
Next update wrappers and TPS accessing will be optimized!
2020-05-28 08:26:04 +02:00
purplexdev 1941d2c34d useless comments removed, NOT STABLE, 1.2.3 2020-05-26 18:45:55 +02:00
purplexdev 36140fb42b Stackoverflow exception fixed, dumb mistake 2020-05-26 18:39:59 +02:00
purplexdev 91e2668998 1.2.3 Massive beta, lots of code cleanup,
reload event not started,
packetloginevent added,
Not tested, most likely not stable.
2020-05-26 18:36:39 +02:00
purplexdev b6f625b498 Merge remote-tracking branch 'og/master' 2020-05-26 17:51:46 +02:00
purplexdev 0c176aabd2 Crazy package movement, mass code cleanup and working on player version manager 2020-05-26 17:51:23 +02:00
purplexdev 39ec5958e1 Crazy package movement, mass code cleanup and working on player version manager 2020-05-26 17:51:10 +02:00
purplex 6467fece64 no dependencies :) 2020-05-25 21:31:40 +02:00
purplexdev c6a8d5ad84 Massive code cleanup and optimizations for 1.2.2 2020-05-25 21:15:45 +02:00
purplexdev 42b1f2b1a9 1.2.2 PacketEvents cleanup method unnecessary argument removed 2020-05-25 21:07:21 +02:00
purplexdev 208823466c 1.2.2 PacketEvents cleanup method unnecessary argument removed 2020-05-25 21:07:02 +02:00
purplexdev 0c67bfb999 PacketEvents.getCurrentServerTPS() //Easily get current and recent server tps,
Many class packages moved, better package organization.
2020-05-25 21:01:54 +02:00
purplexdev d64e92d84a 1.2.1, ServerTickEvent.java now includes the current tick count and if a second has passed 2020-05-25 20:22:11 +02:00
purplexdev 29ec5f6638 MainExample (main class) better documented! 2020-05-25 19:49:50 +02:00
purplexdev 9d10d5001d Merge remote-tracking branch 'og/master' 2020-05-25 19:18:08 +02:00
purplexdev 834b29f84a testexample top edited 2020-05-25 19:16:41 +02:00
purplex 7787ce9f33 random config file removed 2020-05-25 18:24:38 +02:00
purplexdev 4775e9f815 Merge remote-tracking branch 'og/master' 2020-05-25 18:22:31 +02:00
purplexdev 7764939208 More documentation, tested and working for sure! 2020-05-25 18:22:07 +02:00
purplex 9c331ef630 Set theme jekyll-theme-cayman 2020-05-20 20:59:15 +02:00
purplex 3c3261bd96 Set theme jekyll-theme-architect 2020-05-20 20:57:09 +02:00
purplex f71530a4ee Set theme jekyll-theme-cayman 2020-05-20 20:54:07 +02:00
purplex c9e4f627c8 readme small update 2020-05-20 20:49:21 +02:00
purplex 75a5ec6022 readme small update 2020-05-20 20:49:13 +02:00
purplexdev 366490d7fc Merge remote-tracking branch 'og/master' 2020-05-11 10:42:25 +02:00
purplexdev 9f22bebd3b More understandable examples added and comments added 2020-05-11 10:42:00 +02:00
purplex 35b0e6ccd8 jitpack version updated to 1.1.9 2020-05-07 20:12:31 +02:00
purplexdev 3073342482 1.1.9 update, netty deadlock bug fixed by injecting player asynchronously 2020-05-07 09:28:31 +02:00
purplex e83086fd21 readme version updated
1.1.8 is new update
2020-05-04 17:17:06 +02:00
unknown 9c886d8abb injecting errors fixed 2020-05-04 12:28:29 +02:00
purplex 36b574edda release version updated 2020-05-01 22:18:09 +02:00
unknown 90e490466e Massive code cleanup, multiple 1.9+ bugs fixed, reflection usage is minimalized and optimized! 2020-05-01 14:49:30 +02:00
purplex 2743dafc40 latest stable versions 2020-05-01 09:38:42 +02:00
purplex 7443f3f965 readme updated and highlighted gradle, maven,.... bold 2020-05-01 08:51:03 +02:00
purplex 5e493a386c license tag part removed 2020-05-01 08:47:26 +02:00
purplex 321b306a34 gpl3 license badge update 2020-05-01 08:47:04 +02:00
purplex 08996c3e17 gpl3 badge added 2020-05-01 08:46:09 +02:00
purplex 39fc28def6 readme text updated 2020-04-30 20:53:56 +02:00
purplex c2b0109820 readme text updated 2020-04-30 11:22:38 +02:00
purplex 86dbca109b jitpack.io badge repositioned 2020-04-30 11:21:59 +02:00
purplex 904a9c458d jitpack.io badge 2020-04-30 11:21:30 +02:00
120 changed files with 2472 additions and 4354 deletions

No files matched your search

+18 -62
View File
@@ -1,68 +1,24 @@
# packetevents by purplex
Listen to minecraft packets.
# packetevents by retrooper
PacketEvents coded by purplex.
An asynchronous spigot packetListener coded by retrooper.
Coding help discord server: https://discord.gg/ZWTkg4v
Examples can be found in this class->
me/purplex/packetevents/example/TestExample.java
How to use with gradle, maven, sbt and leiningen.
The last stable tested versions are displayed below.
Updated daily.
# Gradle
```gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.purplexdev:packetevents:1.1.5'
}
```
# Maven
```xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.purplexdev</groupId>
<artifactId>packetevents</artifactId>
<version>1.1.5</version>
</dependency>
</dependencies>
```
# sbt
```
resolvers += "jitpack" at "https://jitpack.io"
libraryDependencies += "com.github.purplexdev" % "packetevents" % "1.1.5"
```
# leiningen
```
:repositories [["jitpack" "https://jitpack.io"]]
:dependencies [[com.github.purplexdev/packetevents "1.1.5"]]
```
* No dependencies
* Licensed with the GPL3 license.
[![](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
Join my discord server(to talk to me): https://discord.gg/ZWTkg4v
How to use with **Gradle, Maven, sbt and leiningen**.
Click the link below.
Make sure to replace **Tag** with a proper release version.
I recommend you to use the latest released version!
[![](https://jitpack.io/v/retrooper/packetevents.svg)](https://jitpack.io/#retrooper/packetevents)
If clicking the badge doesn't work paste this link into your browser http://jitpack.io/#explored/packetevents
+2 -11
View File
@@ -4,9 +4,9 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>me.purplex</groupId>
<groupId>io.github.retrooper</groupId>
<artifactId>packetevents</artifactId>
<version>1.1.5</version>
<version>1.2.7</version>
<packaging>jar</packaging>
<name>packetevents</name>
<properties>
@@ -56,7 +56,6 @@
<id>funkemunky-releases</id>
<url>https://nexus.funkemunky.cc/content/repositories/releases/</url>
</repository>
</repositories>
@@ -181,13 +180,5 @@
<version>1.14</version>
<scope>provided</scope>
</dependency>
<!--Bukkit-->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.8-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,116 @@
package io.github.retrooper.packetevents;
import io.github.retrooper.packetevents.event.impl.ServerTickEvent;
import io.github.retrooper.packetevents.event.manager.EventManager;
import io.github.retrooper.packetevents.injector.PacketInjector;
import io.github.retrooper.packetevents.utils.NMSUtils;
import io.github.retrooper.packetevents.utils.TPSUtils;
import io.github.retrooper.packetevents.enums.ServerVersion;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.*;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;
import javax.annotation.Nullable;
import java.util.concurrent.*;
public class PacketEvents implements Listener {
private static final ServerVersion version = ServerVersion.getVersion();
private static PacketEvents instance;
private static final PacketInjector packetInjector = new PacketInjector();
public static ExecutorService executor = Executors.newCachedThreadPool();
private static final EventManager eventManager = new EventManager();
private static int currentTick;
private static BukkitTask serverTickTask;
public static JavaPlugin plugin;
public static EventManager getEventManager() {
return eventManager;
}
public static void setup(final JavaPlugin plugin, final boolean serverTickEventEnabled) {
PacketEvents.plugin = plugin;
Bukkit.getPluginManager().registerEvents(getInstance(), plugin);
if (serverTickEventEnabled) {
final Runnable runnable = new Runnable() {
@Override
public void run() {
PacketEvents.getEventManager().callEvent(new ServerTickEvent(currentTick++, PacketEvents.currentTimeMS()));
}
};
serverTickTask = Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, runnable, 0L, 1L);
}
}
public static void cleanup() {
if (serverTickTask != null) {
serverTickTask.cancel();
}
getEventManager().unregisterAllListeners();
}
@EventHandler
public void onJoin(PlayerJoinEvent e) {
if (executor == null) {
executor = Executors.newCachedThreadPool();
packetInjector.injectPlayer(e.getPlayer());
System.out.println("Failed to inject " + e.getPlayer().getName() + " asynchronously!");
}
final Runnable runnable = new Runnable() {
@Override
public void run() {
packetInjector.injectPlayer(e.getPlayer());
}
};
Future<?> future = executor.submit(runnable);
}
@EventHandler
public void onQuit(PlayerQuitEvent e) {
packetInjector.uninjectPlayer(e.getPlayer());
}
public static ServerVersion getServerVersion() {
return version;
}
public static PacketEvents getInstance() {
return instance == null ? instance = new PacketEvents() : instance;
}
public static boolean isServerTickTaskEnabled() {
return serverTickTask != null;
}
@Nullable
public static double[] getRecentServerTPS() {
final double[] tpsArray = TPSUtils.getRecentTPS();
final int size = tpsArray.length;
for (int i = 0; i < size; i++) {
if (tpsArray[i] > 20.0) {
tpsArray[i] = 20.0;
}
}
return tpsArray;
}
public static double getCurrentServerTPS() {
return getRecentServerTPS()[0];
}
public static int getPing(final Player player) {
return NMSUtils.getPlayerPing(player);
}
public static long currentTimeMS() {
return System.nanoTime() / 1000000;
}
}
@@ -0,0 +1,17 @@
package io.github.retrooper.packetevents.enums;
public enum Direction {
DOWN, UP, NORTH, SOUTH, WEST, EAST
,NORTH_EAST,
NORTH_WEST, SOUTH_EAST,
SOUTH_WEST, WEST_NORTH_WEST,
NORTH_NORTH_WEST, NORTH_NORTH_EAST,
EAST_NORTH_EAST, EAST_SOUTH_EAST,
SOUTH_SOUTH_EAST, SOUTH_SOUTH_WEST,
WEST_SOUTH_WEST, SELF, NULL;
public static Direction get(final byte i) {
return values()[i];
}
}
@@ -0,0 +1,9 @@
package io.github.retrooper.packetevents.enums;
public enum EntityUseAction {
INTERACT, INTERACT_AT, ATTACK, INVALID;
public static EntityUseAction get(final byte i) {
return values()[i];
}
}
@@ -0,0 +1,6 @@
package io.github.retrooper.packetevents.enums;
public enum Hand {
MAIN_HAND,
OFF_HAND;
}
@@ -1,4 +1,4 @@
package me.purplex.packetevents.enums;
package io.github.retrooper.packetevents.enums;
public enum PlayerAction {
START_SNEAKING,
@@ -18,4 +18,8 @@ public enum PlayerAction {
OPEN_INVENTORY,
START_FALL_FLYING;
public static PlayerAction get(final byte i) {
return values()[i];
}
}
@@ -1,4 +1,4 @@
package me.purplex.packetevents.enums;
package io.github.retrooper.packetevents.enums;
public enum PlayerDigType {
@@ -18,6 +18,7 @@ public enum PlayerDigType {
WRONG_PACKET;
public static PlayerDigType get(final byte i) {
return values()[i];
}
}
@@ -0,0 +1,71 @@
package io.github.retrooper.packetevents.enums;
import org.apache.commons.lang.ArrayUtils;
import org.bukkit.Bukkit;
public enum ServerVersion {
v_1_7_10, v_1_8, v_1_8_3, v_1_8_8, v_1_9, v_1_9_4, v_1_10, v_1_11, v_1_12, v_1_13, v_1_13_2, v_1_14, v_1_15,
ERROR;
public static ServerVersion getVersion() {
ServerVersion[] vals = values();
ArrayUtils.reverse(vals);
for (ServerVersion val : vals) {
String valName = val.name().substring(2).replace("_", ".");
if (Bukkit.getBukkitVersion().contains(valName)) {
return val;
}
}
return ERROR;
}
private static final String nmsVersionSuffix = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
public static String getNmsSuffix() {
return nmsVersionSuffix;
}
public static String getNMSDirectory() {
return "net.minecraft.server." + nmsVersionSuffix;
}
public static String getOBCDirectory() {
return "org.bukkit.craftbukkit." + getNmsSuffix();
}
/**
* Returns if the current version is more up to date than the argument passed version
*
* @param version
* @return
*/
public boolean isHigherThan(final ServerVersion version) {
if (this == version) return false;
return !isLowerThan(version);
}
/**
* Returns if the current version is more outdated than the argument passed version
*
* @param version
* @return
*/
public boolean isLowerThan(final ServerVersion version) {
if(version == this) return false;
byte len = (byte) values().length;
for (byte i = 0; i < len; i++) {
final ServerVersion v = values()[i];
if(v == this) {
return true;
}
else if(v == version) {
return false;
}
}
return false;
}
}
@@ -0,0 +1,22 @@
package io.github.retrooper.packetevents.event;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.enums.ServerVersion;
/**
* Incoming and sent packets are called asynchronously,
* recommended to avoid non thread safe bukkit operations
*/
public class PacketEvent {
protected long timestamp = PacketEvents.currentTimeMS();
protected static ServerVersion version = PacketEvents.getServerVersion();
/**
* Timestamp of the packet
* @return
*/
public long getTimestamp() {
return timestamp;
}
}
@@ -1,4 +1,4 @@
package me.purplex.packetevents.events.handler;
package io.github.retrooper.packetevents.event;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -7,6 +7,10 @@ import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
/**
* Just like Bukkit's @EventHandler, but for packets.
* Make sure your class implements the PacketListener interface, and is registered!
*/
public @interface PacketHandler {
@@ -0,0 +1,4 @@
package io.github.retrooper.packetevents.event;
public interface PacketListener {
}
@@ -0,0 +1,28 @@
package io.github.retrooper.packetevents.event.impl;
import io.github.retrooper.packetevents.event.PacketEvent;
import org.bukkit.entity.Player;
//unfinished
public class PacketLoginEvent extends PacketEvent {
private final Player player;
private final String name;
private final Object packet;
public PacketLoginEvent(final Player player, final String packetName, final Object packet) {
this.player = player;
this.name = packetName;
this.packet = packet;
}
public Player getPlayer() {
return player;
}
public String getPacketName() {
return name;
}
public Object getPacket() {
return packet;
}
}
@@ -1,26 +1,18 @@
package me.purplex.packetevents.events.packetevent;
package io.github.retrooper.packetevents.event.impl;
import me.purplex.packetevents.PacketEvents;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.events.PacketEvent;
import io.github.retrooper.packetevents.event.PacketEvent;
import org.bukkit.entity.Player;
public class PacketReceiveEvent extends PacketEvent {
private final Player player;
private final String name;
private final Object packet;
private final long timestamp;
private boolean cancelled;
public final ServerVersion version;
public PacketReceiveEvent(Player player, String packetName, Object packet) {
this.version = PacketEvents.getServerVersion();
public PacketReceiveEvent(final Player player, final String packetName, final Object packet) {
this.player = player;
this.name = packetName;
this.packet = packet;
this.timestamp = (System.nanoTime() / 1000000);
this.cancelled = false;
}
/**
@@ -50,15 +42,6 @@ public class PacketReceiveEvent extends PacketEvent {
return this.packet;
}
/**
* The time the packet was received(ms)
*
* @return
*/
public long getTimestamp() {
return timestamp;
}
/**
* Cancel the packet
*
@@ -1,24 +1,18 @@
package me.purplex.packetevents.events.packetevent;
package io.github.retrooper.packetevents.event.impl;
import me.purplex.packetevents.PacketEvents;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.events.PacketEvent;
import io.github.retrooper.packetevents.event.PacketEvent;
import org.bukkit.entity.Player;
public class PacketSendEvent extends PacketEvent {
private final Player player;
private final String name;
private final Object packet;
private final long timestamp;
private boolean cancelled;
public final ServerVersion version;
public PacketSendEvent(Player player, String packetName, Object packet) {
this.version = PacketEvents.getServerVersion();
public PacketSendEvent(final Player player, final String packetName, final Object packet) {
this.player = player;
this.name = packetName;
this.packet = packet;
this.timestamp = (System.nanoTime() / 1000000);
this.cancelled = false;
}
@@ -41,12 +35,6 @@ public class PacketSendEvent extends PacketEvent {
}
public long getTimestamp() {
return timestamp;
}
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
@@ -0,0 +1,16 @@
package io.github.retrooper.packetevents.event.impl;
import io.github.retrooper.packetevents.event.PacketEvent;
import org.bukkit.entity.Player;
public class PlayerInjectEvent extends PacketEvent {
private final Player player;
public PlayerInjectEvent(final Player player) {
this.player = player;
}
public Player getPlayer() {
return player;
}
}
@@ -0,0 +1,16 @@
package io.github.retrooper.packetevents.event.impl;
import io.github.retrooper.packetevents.event.PacketEvent;
import org.bukkit.entity.Player;
public class PlayerUninjectEvent extends PacketEvent {
private final Player player;
public PlayerUninjectEvent(final Player player) {
this.player = player;
}
public Player getPlayer() {
return player;
}
}
@@ -0,0 +1,21 @@
package io.github.retrooper.packetevents.event.impl;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.event.PacketEvent;
//unfinished
public class ServerReloadEvent extends PacketEvent {
private final long currentTime;
public ServerReloadEvent(final long currentTime){
this.currentTime = currentTime;
}
public ServerReloadEvent() {
this.currentTime = PacketEvents.currentTimeMS();
}
public final long getCurrentTime() {
return currentTime;
}
}
@@ -0,0 +1,32 @@
package io.github.retrooper.packetevents.event.impl;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.event.PacketEvent;
public class ServerTickEvent extends PacketEvent {
private final int tick;
private final double tps;
public ServerTickEvent(final int tick, final long timestamp) {
this.tick = tick;
this.timestamp = timestamp;
this.tps = PacketEvents.getCurrentServerTPS();
}
public ServerTickEvent(final int tick) {
this.tick = tick;
this.tps = PacketEvents.getCurrentServerTPS();
}
public long getTimestamp() {
return timestamp;
}
public int getCurrentTick() {
return tick;
}
public double getCurrentServerTPS() {
return tps;
}
}
@@ -0,0 +1,57 @@
package io.github.retrooper.packetevents.event.manager;
import io.github.retrooper.packetevents.event.PacketEvent;
import io.github.retrooper.packetevents.event.PacketListener;
import io.github.retrooper.packetevents.event.PacketHandler;
import java.lang.reflect.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class EventManager {
private static HashMap<PacketListener, List<Method>> registeredMethods = new HashMap<PacketListener, List<Method>>();
public static void callEvent(final PacketEvent e) {
for (final PacketListener listener : registeredMethods.keySet()) {
//Annotated methods
final List<Method> methods = registeredMethods.get(listener);
for (final Method method : methods) {
if (method.getParameterTypes()[0].equals(PacketEvent.class)
|| method.getParameterTypes()[0].getSimpleName().equals(e.getClass().getSimpleName())) {
try {
method.invoke(listener, e);
} catch (IllegalAccessException | InvocationTargetException ex) {
ex.printStackTrace();
}
}
}
}
}
public static void registerListener(final PacketListener e) {
final List<Method> methods = new ArrayList<Method>();
for (final Method m : e.getClass().getMethods()) {
if (m.isAnnotationPresent(PacketHandler.class)) {
methods.add(m);
}
}
registeredMethods.put(e, methods);
}
public static void unregisterListener(final PacketListener e) {
registeredMethods.remove(e);
}
public static void unregisterAllListeners() {
registeredMethods.clear();
}
/*@Override
public void sendPacket(Player player, WrappedPacket packet) {
}*/
}
@@ -0,0 +1,59 @@
package io.github.retrooper.packetevents.example;
import io.github.retrooper.packetevents.event.PacketEvent;
import org.bukkit.Location;
import org.bukkit.entity.Player;
/**
* Example packetevent
* Make sure to initiate the super timestamp variable,
* if you want to use the getTimestamp() function
*/
public class CustomMoveEvent extends PacketEvent {
private final Player player;
private Location to, from;
private boolean cancelled;
public CustomMoveEvent(final Player player, final Location to, final Location from) {
this.player = player;
this.to = to;
this.from = from;
this.cancelled = false;
//Timestamp is initialized automatically, so you don't need to initiate it, but you may modify it if you like
//this.timestamp = PacketEvents.currentTimeMS();
}
@Override
public long getTimestamp() {
return super.getTimestamp();
}
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
public boolean isCancelled() {
return this.cancelled;
}
public Player getPlayer() {
return player;
}
public Location getTo() {
return to;
}
public Location getFrom() {
return from;
}
public void setTo(final Location loc) {
this.to = loc;
}
public void setFrom(final Location loc) {
this.from = from;
}
}
@@ -0,0 +1,37 @@
package io.github.retrooper.packetevents.example;
import io.github.retrooper.packetevents.PacketEvents;
import org.bukkit.plugin.java.JavaPlugin;
public class MainExample extends JavaPlugin {
@Override
public void onEnable() {
//Should the ServerTickEvent ever get called?
final boolean serverTickEventEnabled = true;
/**
* Starts the servertickevent repeating task (if enabled)
* and registers onJoin and onQuit events to inject and uninject players.
* The first argument is an instance to your Main Class,
* The second argument is a boolean whether the servertickevent should ever get called
*/
PacketEvents.setup(this, serverTickEventEnabled);
/**
* Register TestExample's PacketListener
*/
PacketEvents.getEventManager().registerListener(new RegisteredListener());
}
@Override
public void onDisable() {
/**
* Stops server tick event task if enabled and unregister all listeners
*/
PacketEvents.cleanup();
}
}
@@ -0,0 +1,184 @@
package io.github.retrooper.packetevents.example;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.enums.*;
import io.github.retrooper.packetevents.event.PacketEvent;
import io.github.retrooper.packetevents.event.PacketHandler;
import io.github.retrooper.packetevents.event.PacketListener;
import io.github.retrooper.packetevents.packetwrappers.in.abilities.WrappedPacketInAbilities;
import io.github.retrooper.packetevents.packetwrappers.in.blockdig.WrappedPacketInBlockDig;
import io.github.retrooper.packetevents.packetwrappers.in.blockplace.WrappedPacketInBlockPlace;
import io.github.retrooper.packetevents.packetwrappers.in.chat.WrappedPacketInChat;
import io.github.retrooper.packetevents.packetwrappers.in.entityaction.WrappedPacketInEntityAction;
import io.github.retrooper.packetevents.packetwrappers.in.flying.WrappedPacketInFlying;
import io.github.retrooper.packetevents.packetwrappers.in.keepalive.WrappedPacketInKeepAlive;
import io.github.retrooper.packetevents.packetwrappers.in.useentity.WrappedPacketInUseEntity;
import io.github.retrooper.packetevents.packet.Packet;
import io.github.retrooper.packetevents.utils.vector.Vector3i;
import io.github.retrooper.packetevents.event.impl.*;
import org.bukkit.Location;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.inventory.ItemStack;
/**
* Implementing PacketListener to listen to packets and packetevents' custom events,
* Implementing org.bukkit.event.Listener to listen to bukkit's events
*/
public class RegisteredListener implements PacketListener, Listener {
/**
* Listen to PacketReceiveEvent
*
* @param e PacketReceiveEvent
*/
@PacketHandler
public void onPacketReceive(PacketReceiveEvent e) {
final Player p = e.getPlayer();
final long timestamp = e.getTimestamp();
//ONLY CLIENT PACKETS ALLOWED HERE!
switch (e.getPacketName()) {
case Packet.Client.USE_ENTITY:
final WrappedPacketInUseEntity useEntity = new WrappedPacketInUseEntity(e.getPacket());
final Entity entity = useEntity.getEntity();
final double distanceSquared = entity.getLocation().distanceSquared(p.getLocation());
final EntityUseAction useAction = useEntity.getAction();
break;
case Packet.Client.ABILITIES:
final WrappedPacketInAbilities abilities = new WrappedPacketInAbilities(e.getPacket());
final boolean isVulnerable = abilities.isVulnerable();
final boolean isFlying = abilities.isFlying();
final boolean canFly = abilities.canFly();
final boolean canInstantlyBuild = abilities.canInstantlyBuild();
final float flySpeed = abilities.getFlySpeed();
final float walkSpeed = abilities.getWalkSpeed();
// e.getPlayer().sendMessage("walkspeed: " + walkSpeed + ", flyspeed: " + flySpeed + ", canFly: " + canFly);
break;
case Packet.Client.BLOCK_DIG:
//Custom PlayerDigType enum
final WrappedPacketInBlockDig blockDig = new WrappedPacketInBlockDig(e.getPacket());
final PlayerDigType type = blockDig.getDigType();
final Direction direction = blockDig.getDirection();
break;
case Packet.Client.FLYING:
final WrappedPacketInFlying flying = new WrappedPacketInFlying(e.getPacket());
final float pitch = flying.getPitch();
final float yaw = flying.getYaw();
break;
case Packet.Client.POSITION:
final WrappedPacketInFlying.WrappedPacketInPosition position =
new WrappedPacketInFlying.WrappedPacketInPosition(e.getPacket());
final boolean isPos = position.isPosition(); //true
break;
case Packet.Client.POSITION_LOOK:
final WrappedPacketInFlying.WrappedPacketInPosition_Look position_look =
new WrappedPacketInFlying.WrappedPacketInPosition_Look(e.getPacket());
final boolean isLook = position_look.isLook(); //true
break;
case Packet.Client.CHAT:
final WrappedPacketInChat chat = new WrappedPacketInChat(e.getPacket());
final String message = chat.getMessage();
//e.getPlayer().sendMessage(message);
break;
case Packet.Client.BLOCK_PLACE:
final WrappedPacketInBlockPlace blockPlace = new WrappedPacketInBlockPlace(e.getPlayer(), e.getPacket());
final Vector3i blockPosition = blockPlace.getBlockPosition();
final Hand h = blockPlace.getHand();
final ItemStack stack = blockPlace.getItemStack();
break;
case Packet.Client.KEEP_ALIVE:
final WrappedPacketInKeepAlive keepAlive = new WrappedPacketInKeepAlive(e.getPacket());
final long responseID = keepAlive.getId();
break;
case Packet.Client.ENTITY_ACTION:
final WrappedPacketInEntityAction entityAction = new WrappedPacketInEntityAction(e.getPacket());
final PlayerAction action = entityAction.getAction();
final int jumpBoost = entityAction.getJumpBoost();
break;
//System.out.println("YOU SAID: " + message);
}
}
/**
* Example of a custom event
* @param e
*/
@PacketHandler
public void onCustomMove(CustomMoveEvent e) {
double distance = e.getTo().distanceSquared(e.getFrom());
}
/**
* I recommend you use the player inject event
* to register your players instead of any other bukkit event,
* to avoid any issues.
* @param event
*/
@PacketHandler
public void onInject(PlayerInjectEvent event) {
}
/**
* I recommend you use the player uninject event,
* to unregister your players
*
* You can also call this event to "whitelist" a player,
* our API won't even notice the player exists, so you won't
* be able to listen to any packets from the player
* @param e
*/
@PacketHandler
public void onUninject(PlayerUninjectEvent e) {
}
/**
* Another way to listen to packets
*
* @param e PacketEvent
*/
@PacketHandler
public void onPacket(final PacketEvent e) {
if (e instanceof PacketSendEvent) {
final PacketSendEvent p = (PacketSendEvent) e;
final Player targetPlayer = p.getPlayer();
final Object rawNMSPacket = p.getPacket();
final long timestamp = p.getTimestamp();
} else if (e instanceof CustomMoveEvent) {
final CustomMoveEvent event = (CustomMoveEvent) e;
final Player player = event.getPlayer();
final Location to = event.getTo();
final Location from = event.getFrom();
} else if (e instanceof ServerTickEvent) {
final ServerTickEvent event = (ServerTickEvent) e;
final int currentTick = event.getCurrentTick();
// System.out.println(PacketEvents.getCurrentServerTPS() + " is tps");
}
}
/**
* Call the CustomMoveEvent event
*
* @param e PlayerMoveEvent
*/
@EventHandler
public void onMove(PlayerMoveEvent e) {
final CustomMoveEvent customMoveEvent = new CustomMoveEvent(e.getPlayer(), e.getTo(), e.getFrom());
e.setCancelled(customMoveEvent.isCancelled());
PacketEvents.getEventManager().callEvent(customMoveEvent);
if (e.getTo() != customMoveEvent.getTo()) {
e.setTo(customMoveEvent.getTo());
}
if (e.getFrom() != customMoveEvent.getFrom()) {
e.setFrom(customMoveEvent.getFrom());
}
}
}
@@ -0,0 +1,131 @@
package io.github.retrooper.packetevents.injector;
import io.github.retrooper.packetevents.enums.ServerVersion;
import org.bukkit.entity.Player;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.UUID;
public class ChannelManager {
private static final ServerVersion version = ServerVersion.getVersion();
private static final String nmsDir = ServerVersion.getNMSDirectory();
private static final Class<?> networkManager;
private static final Field channelField;
private static final Class<?> craftPlayer;
private static final Method handleMethod;
private static final Class<?> entityPlayer;
private static final Class<?> playerConnection;
private static final Field playerConnectionField;
private static final Field networkManagerField;
private static HashMap<UUID, Object> playerChannels = new HashMap<>();
static {
try {
networkManager = Class.forName(nmsDir + ".NetworkManager");
craftPlayer = Class.forName("org.bukkit.craftbukkit." + ServerVersion.getNmsSuffix() + ".entity.CraftPlayer");
entityPlayer = Class.forName(nmsDir + ".EntityPlayer");
playerConnection = Class.forName(nmsDir + ".PlayerConnection");
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new IllegalStateException("Failed to find a NMS class! You are probably using an unsupported version of spigot.");
}
try {
channelField = networkManager.getDeclaredField(getChannelFieldName());
} catch (NoSuchFieldException e) {
e.printStackTrace();
throw new IllegalStateException("Failed to find the channel field in the NetworkManager! You are probably using an unsupported version of spigot.");
}
if (!channelField.isAccessible()) {
channelField.setAccessible(true);
}
try {
handleMethod = craftPlayer.getMethod("getHandle");
} catch (NoSuchMethodException e) {
e.printStackTrace();
throw new IllegalStateException("Failed to find the getHandle function in the CraftPlayer class! You are probably using an unsupported version of spigot.");
}
try {
playerConnectionField = entityPlayer.getDeclaredField("playerConnection");
} catch (NoSuchFieldException e) {
e.printStackTrace();
throw new IllegalStateException("Failed to find the playerConnection field in the EntityPlayer class! You are probably using an unsupported version of spigot.");
}
if (!playerConnectionField.isAccessible()) {
playerConnectionField.setAccessible(true);
}
try {
networkManagerField = playerConnection.getDeclaredField("networkManager");
} catch (NoSuchFieldException e) {
e.printStackTrace();
throw new IllegalStateException("Failed to find the networkManager field in the PlayerConnection class! You are probably using an unsupported version of spigot.");
}
if (!networkManagerField.isAccessible()) {
networkManagerField.setAccessible(true);
}
}
private static Object getChannelObject(final Player player) throws IllegalAccessException, InvocationTargetException {
final Object craftPlayerObj = craftPlayer.cast(player);
final Object entityPlayerObj = handleMethod.invoke(craftPlayerObj);
final Object playerConnectionObj = playerConnectionField.get(entityPlayerObj);
final Object networkManagerObj = networkManagerField.get(playerConnectionObj);
return channelField.get(networkManagerObj);
}
public static void removeChannel(final UUID uuid) {
playerChannels.remove(uuid);
}
public static boolean contains(final Player player) {
return playerChannels.containsKey(player.getUniqueId());
}
public static Object getChannel(final Player player) {
final UUID uuid = player.getUniqueId();
if (contains(player)) {
return playerChannels.get(uuid);
}
Object channel = null;
try {
channel = getChannelObject(player);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
if (channel != null) {
playerChannels.put(uuid, channel);
} else {
System.out.println("ITS NULL");
}
return channel;
}
private static String getChannelFieldName() {
if (version == ServerVersion.v_1_7_10) {
return "m";
} else if (version == ServerVersion.v_1_8) {
return "i";
} else if (version == ServerVersion.v_1_8_3) {
return "k";
} else { //all 1.8.8 ->1.15
return "channel";
}
}
}
@@ -0,0 +1,31 @@
package io.github.retrooper.packetevents.injector;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.enums.ServerVersion;
import org.bukkit.entity.Player;
public class PacketInjector {
private final static ServerVersion version = PacketEvents.getServerVersion();
public void injectPlayer(final Player player) {
if(version == ServerVersion.v_1_7_10) {
PlayerInject_1_7_10.injectPlayer(player);
}
else {
PlayerInject_1_8.injectPlayer(player);
}
}
public void uninjectPlayer(final Player player) {
if(version == ServerVersion.v_1_7_10) {
PlayerInject_1_7_10.uninjectPlayer(player);
}
else {
PlayerInject_1_8.uninjectPlayer(player);
}
ChannelManager.removeChannel(player.getUniqueId());
}
}
@@ -0,0 +1,62 @@
package io.github.retrooper.packetevents.injector;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.event.impl.PacketReceiveEvent;
import io.github.retrooper.packetevents.event.impl.PacketSendEvent;
import io.github.retrooper.packetevents.event.impl.PlayerInjectEvent;
import io.github.retrooper.packetevents.event.impl.PlayerUninjectEvent;
import net.minecraft.util.io.netty.channel.Channel;
import net.minecraft.util.io.netty.channel.ChannelDuplexHandler;
import net.minecraft.util.io.netty.channel.ChannelHandlerContext;
import net.minecraft.util.io.netty.channel.ChannelPromise;
import org.bukkit.entity.Player;
class PlayerInject_1_7_10 {
public static void injectPlayer(final Player player) {
final ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
@Override
public void channelRead(final ChannelHandlerContext ctx, final Object packet) throws Exception {
String packetName = packet.getClass().getSimpleName();
PacketReceiveEvent e = new PacketReceiveEvent(player, packetName, packet);
PacketEvents.getEventManager().callEvent(e);
if (e.isCancelled()) {
return;
}
super.channelRead(ctx, packet);
}
@Override
public void write(final ChannelHandlerContext ctx, final Object packet, final ChannelPromise promise) throws Exception {
String packetName = packet.getClass().getSimpleName();
PacketSendEvent e = new PacketSendEvent(player, packetName, packet);
PacketEvents.getEventManager().callEvent(e);
if (e.isCancelled()) {
return;
}
super.write(ctx, packet, promise);
}
};
final PlayerInjectEvent injectEvent = new PlayerInjectEvent(player);
PacketEvents.getEventManager().callEvent(injectEvent);
getChannel(player).pipeline().addBefore("packet_handler", player.getName(), channelDuplexHandler);
}
public static void uninjectPlayer(final Player player) {
final Channel channel = getChannel(player);
final Runnable runnable = new Runnable() {
@Override
public void run() {
channel.pipeline().remove(player.getName());
}
};
final PlayerUninjectEvent uninjectEvent = new PlayerUninjectEvent(player);
PacketEvents.getEventManager().callEvent(uninjectEvent);
channel.eventLoop().submit(runnable);
}
public static Channel getChannel(final Player player) {
return (Channel) ChannelManager.getChannel(player);
}
}
@@ -0,0 +1,62 @@
package io.github.retrooper.packetevents.injector;
import io.github.retrooper.packetevents.event.impl.PacketReceiveEvent;
import io.github.retrooper.packetevents.event.impl.PacketSendEvent;
import io.github.retrooper.packetevents.event.impl.PlayerInjectEvent;
import io.github.retrooper.packetevents.event.impl.PlayerUninjectEvent;
import io.netty.channel.Channel;
import io.netty.channel.ChannelDuplexHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelPromise;
import io.github.retrooper.packetevents.PacketEvents;
import org.bukkit.entity.Player;
class PlayerInject_1_8 {
public static void injectPlayer(final Player player) {
final ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
@Override
public void channelRead(final ChannelHandlerContext ctx, final Object packet) throws Exception {
String packetName = packet.getClass().getSimpleName();
PacketReceiveEvent e = new PacketReceiveEvent(player, packetName, packet);
PacketEvents.getEventManager().callEvent(e);
if (e.isCancelled()) {
return;
}
super.channelRead(ctx, packet);
}
@Override
public void write(final ChannelHandlerContext ctx, final Object packet, final ChannelPromise promise) throws Exception {
String packetName = packet.getClass().getSimpleName();
PacketSendEvent e = new PacketSendEvent(player, packetName, packet);
PacketEvents.getEventManager().callEvent(e);
if (e.isCancelled()) {
return;
}
super.write(ctx, packet, promise);
}
};
final PlayerInjectEvent injectEvent = new PlayerInjectEvent(player);
PacketEvents.getEventManager().callEvent(injectEvent);
getChannel(player).pipeline().addBefore("packet_handler", player.getName(), channelDuplexHandler);
}
public static void uninjectPlayer(final Player player) {
final Channel channel = getChannel(player);
final Runnable runnable = new Runnable() {
@Override
public void run() {
channel.pipeline().remove(player.getName());
}
};
final PlayerUninjectEvent uninjectEvent = new PlayerUninjectEvent(player);
PacketEvents.getEventManager().callEvent(uninjectEvent);
channel.eventLoop().submit(runnable);
}
public static Channel getChannel(final Player player) {
return (Channel) ChannelManager.getChannel(player);
}
}
@@ -0,0 +1,81 @@
package io.github.retrooper.packetevents.packet;
public abstract class Packet {
public static class Client {
private static final String c = "PacketPlayIn";
@Deprecated
public static final String FLYING = c + "Flying";
public static final String POSITION = c + "Position";
public static final String POSITION_LOOK = c + "PositionLook";
public static final String LOOK = c + "Look";
public static final String CLIENT_COMMAND = c + "ClientCommand";
public static final String TRANSACTION = c + "Transaction";
public static final String BLOCK_DIG = c + "BlockDig";
public static final String ENTITY_ACTION = c + "EntityAction";
public static final String USE_ENTITY = c + "UseEntity";
public static final String WINDOW_CLICK = c + "WindowClick";
public static final String STEER_VEHICLE = c + "SteerVehicle";
public static final String CUSTOM_PAYLOAD = c + "CustomPayload";
public static final String ARM_ANIMATION = c + "ArmAnimation";
public static final String BLOCK_PLACE = c + "BlockPlace";
public static final String ABILITIES = c + "Abilities";
public static final String HELD_ITEM_SLOT = c + "HeldItemSlot";
public static final String CLOSE_WINDOW = c + "CloseWindow";
public static final String TAB_COMPLETE = c + "TabComplete";
public static final String CHAT = c + "Chat";
public static final String SET_CREATIVE_SLOT = c + "SetCreativeSlot";
public static final String KEEP_ALIVE = c + "KeepAlive";
}
public static class Server {
private static final String s = "PacketPlayOut";
public static final String ANIMATION = s + "Animation";
public static final String KEEP_ALIVE = s + "KeepAlive";
public static final String CHAT = s + "Chat";
public static final String POSITION = s + "Position";
public static final String TRANSACTION = s + "Transaction";
public static final String NAMED_ENTITY_SPAWN = s + "NamedEntitySpawn";
public static final String SPAWN_ENTITY_LIVING = s + "SpawnEntityLiving";
public static final String SPAWN_ENTITY = s + "SpawnEntity";
public static final String CUSTOM_PAYLOAD = s + "CustomPayload";
public static final String ABILITIES = s + "Abilities";
public static final String ENTITY_METADATA = s + "EntityMetadata";
public static final String ENTITY_VELOCITY = s + "EntityVelocity";
public static final String ENTITY_DESTROY = s + "EntityDestroy";
public static final String ENTITY_HEAD_ROTATION = s + "EntityHeadRotation";
public static final String BLOCK_CHANGE = s + "BlockChange";
public static final String CLOSE_WINDOW = s + "CloseWindow";
public static final String HELD_ITEM_SLOT = s + "HeldItemSlot";
public static final String TAB_COMPLETE = s + "TabComplete";
public static final String RESPAWN = s + "Respawn";
public static final String WORLD_PARTICLES = s + "WorldParticles";
public static final String COMMANDS = s + "Commands";
public static final String OPEN_WINDOW = s + "OpenWindow";
public static final String LOGIN = s + "Login";
public static final String SERVER_DIFFICULTY = s + "ServerDifficulty";
}
public static class Login {
public static final String HANDSHAKE = "PacketHandshakingInSetProtocol";
public static final String PING = "PacketStatusInPing";
public static final String START = "PacketStatusInStart";
public static final String SUCCESS = "PacketLoginOutSuccess";
}
public static boolean isInstanceOf(String fatherPacket, String childPacket) {
if (fatherPacket.equals(Client.FLYING) && childPacket.equals(Client.POSITION) || childPacket.equals(Client.POSITION_LOOK) || childPacket.equals(Client.LOOK)) {
return true;
}
return fatherPacket.equals(childPacket);
}
}
@@ -0,0 +1,48 @@
package io.github.retrooper.packetevents.packetwrappers.api;
import io.github.retrooper.packetevents.enums.ServerVersion;
import org.bukkit.entity.Player;
public class WrappedPacket {
private final Player player;
protected Object packet;
protected static ServerVersion version = ServerVersion.getVersion();
private static final String err = "Your Version is unsupported, " +
"please contact explored " +
"through his discord server (http://discord.gg/2uZY5A4) " +
"and tell him what version your server is running on! " +
"Make sure you are using spigot!";
public WrappedPacket(final Object packet) {
this.player = null;
this.packet = packet;
try {
setup();
} catch (final Exception e) {
e.printStackTrace();
}
}
public WrappedPacket(final Player player, final Object packet) {
this.player = player;
this.packet = packet;
try {
setup();
} catch (final Exception e) {
e.printStackTrace();
}
}
protected void setup() throws Exception {
}
protected void throwUnsupportedVersion() {
throw new IllegalStateException(err);
}
public Player getPlayer() {
return player;
}
}
@@ -0,0 +1,84 @@
package io.github.retrooper.packetevents.packetwrappers.in.abilities;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.NMSUtils;
import java.lang.reflect.Field;
public class WrappedPacketInAbilities extends WrappedPacket {
private boolean isVulnerable;
private boolean isFlying;
private boolean allowFly;
private boolean instantBuild;
private float flySpeed;
private float walkSpeed;
public WrappedPacketInAbilities(Object packet) {
super(packet);
}
@Override
protected void setup() throws IllegalAccessException {
this.isVulnerable = fields[0].getBoolean(packet);
this.isFlying = fields[1].getBoolean(packet);
this.allowFly = fields[2].getBoolean(packet);
this.instantBuild = fields[3].getBoolean(packet);
this.flySpeed = fields[4].getFloat(packet);
this.walkSpeed = fields[5].getFloat(packet);
}
public boolean isVulnerable() {
return isVulnerable;
}
public boolean isFlying() {
return isFlying;
}
public boolean canFly() {
return allowFly;
}
public boolean canInstantlyBuild() {
return instantBuild;
}
public float getFlySpeed() {
return flySpeed;
}
public float getWalkSpeed() {
return walkSpeed;
}
private static Class<?> abilitiesClass;
private static Field[] fields = new Field[6];
static {
try {
abilitiesClass = NMSUtils.getNMSClass("PacketPlayInAbilities");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
fields[0] = abilitiesClass.getDeclaredField("a");
fields[1] = abilitiesClass.getDeclaredField("b");
fields[2] = abilitiesClass.getDeclaredField("c");
fields[3] = abilitiesClass.getDeclaredField("d");
fields[4] = abilitiesClass.getDeclaredField("e");
fields[5] = abilitiesClass.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
for (Field f : fields) {
if (f != null) {
f.setAccessible(true);
}
}
}
}
@@ -0,0 +1,139 @@
package io.github.retrooper.packetevents.packetwrappers.in.blockdig;
import io.github.retrooper.packetevents.enums.PlayerDigType;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.BaseBlockUtils;
import io.github.retrooper.packetevents.utils.NMSUtils;
import io.github.retrooper.packetevents.utils.vector.Vector3i;
import io.github.retrooper.packetevents.enums.Direction;
import java.lang.reflect.Field;
public class WrappedPacketInBlockDig extends WrappedPacket {
private Vector3i blockPosition;
private Direction direction;
private PlayerDigType digType;
public WrappedPacketInBlockDig(Object packet) {
super(packet);
}
@Override
protected void setup() throws Exception {
final Direction enumDirection;
final PlayerDigType enumDigType;
//1.7.10
if (version == ServerVersion.v_1_7_10) {
final int x = fields[0].getInt(packet);
final int y = fields[1].getInt(packet);
final int z = fields[2].getInt(packet);
this.blockPosition = new Vector3i(x, y, z);
enumDirection = Direction.get((byte) face.getInt(packet));
enumDigType = PlayerDigType.get((byte)e.getInt(packet));
} else {
//1.8+
final Object blockPosObj = fields[0].get(packet);
final Object enumDirectionObj = fields[1].get(packet);
final Object digTypeObj = fields[2].get(packet);
final int x = blockPosXYZ[0].getInt(blockPosObj);
final int y = blockPosXYZ[1].getInt(blockPosObj);
final int z = blockPosXYZ[2].getInt(blockPosObj);
this.blockPosition = new Vector3i(x, y, z);
enumDirection = Direction.valueOf(((Enum)enumDirectionObj).name());
enumDigType = PlayerDigType.valueOf(((Enum)digTypeObj).name());
}
this.direction = enumDirection;
this.digType = enumDigType;
}
public Vector3i getBlockPosition() {
return blockPosition;
}
public Direction getDirection() {
return direction;
}
public PlayerDigType getDigType() {
return digType;
}
//ALL
private static Class<?> blockDigClass;
//1.8
private static Field[] fields = new Field[3];
private static Class<?> blockPositionClass;
private static Field[] blockPosXYZ = new Field[3];
//1.7
private static Field face;
private static Field e;
static {
try {
blockDigClass = NMSUtils.getNMSClass("PacketPlayInBlockDig");
if (version != ServerVersion.v_1_7_10) {
blockPositionClass = NMSUtils.getNMSClass("BlockPosition");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//blockpos
fields[0] = blockDigClass.getDeclaredField("a");
//direction
fields[1] = blockDigClass.getDeclaredField("b");
//digtype
fields[2] = blockDigClass.getDeclaredField("c");
if (version != ServerVersion.v_1_7_10) {
blockPosXYZ[0] = blockPositionClass.getSuperclass().getDeclaredField(BaseBlockUtils.getPosXFieldName());
blockPosXYZ[1] = blockPositionClass.getSuperclass().getDeclaredField(BaseBlockUtils.getPosXFieldName());
blockPosXYZ[2] = blockPositionClass.getSuperclass().getDeclaredField(BaseBlockUtils.getPosZFieldName());
} else {
face = blockDigClass.getDeclaredField("face");
e = blockDigClass.getDeclaredField("e");
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
for(Field f : fields) {
if(f != null) {
f.setAccessible(true);
}
}
for(Field f : blockPosXYZ) {
if(f != null) {
f.setAccessible(true);
}
}
if(e != null) {
e.setAccessible(true);
}
if(face != null) {
face.setAccessible(true);
}
}
}
@@ -0,0 +1,75 @@
package io.github.retrooper.packetevents.packetwrappers.in.blockplace;
import io.github.retrooper.packetevents.enums.Direction;
import io.github.retrooper.packetevents.enums.Hand;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.vector.Vector3i;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class WrappedPacketInBlockPlace extends WrappedPacket {
private Vector3i blockPosition;
private Hand hand;
private Direction direction;
private ItemStack itemStack;
public WrappedPacketInBlockPlace(final Player player, final Object packet) {
super(player, packet);
}
@Override
protected void setup() throws Exception {
//1.7.10
final Direction direction;
final Vector3i position;
final ItemStack itemStack;
final Hand hand;
if (version.isHigherThan(ServerVersion.v_1_8_8)) {
final WrappedPacketInBlockPlace_1_9 updatedBlockPlace = new WrappedPacketInBlockPlace_1_9(getPlayer(), packet);
final Block block = updatedBlockPlace.getBlock();
position = new Vector3i(block.getX(), block.getY(), block.getZ());
hand = updatedBlockPlace.getHand();
itemStack = new ItemStack(block.getType());
// init direction
} else {
final WrappedPacketInBlockPlace_Legacy legacyBlockPlace = new WrappedPacketInBlockPlace_Legacy(packet);
position = legacyBlockPlace.getBlockPosition();
hand = legacyBlockPlace.getHand();
itemStack = legacyBlockPlace.getItemStack();
//init direction
}
this.direction = Direction.NULL;
this.blockPosition = position;
this.itemStack = itemStack;
this.hand = hand;
}
public Vector3i getBlockPosition() {
return blockPosition;
}
public Hand getHand() {
return hand;
}
public ItemStack getItemStack() {
return itemStack;
}
@Deprecated
public Direction getDirection() {
return direction;
}
static {
if (version.isHigherThan(ServerVersion.v_1_8_8)) {
WrappedPacketInBlockPlace_1_9.setupStaticVars();
} else {
WrappedPacketInBlockPlace_Legacy.setupStaticVars();
}
}
}
@@ -0,0 +1,61 @@
package io.github.retrooper.packetevents.packetwrappers.in.blockplace;
import io.github.retrooper.packetevents.enums.Hand;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.BlockFinder;
import io.github.retrooper.packetevents.utils.NMSUtils;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import java.lang.reflect.Field;
class WrappedPacketInBlockPlace_1_9 extends WrappedPacket {
private Block block;
private Hand hand;
public WrappedPacketInBlockPlace_1_9(final Player player, final Object packet) {
super(player, packet);
}
@Override
protected void setup() throws Exception {
this.block = BlockFinder.getBlocksInDirection(getPlayer(), 10);
final Object enumHandObj = enumHandField.get(packet);
this.hand = Hand.valueOf(enumHandObj.toString());
}
public Hand getHand() {
return hand;
}
public Block getBlock() {
return block;
}
private static Class<?> blockPlaceClass_1_9;
private static Field enumHandField;
protected static void setupStaticVars() {
try {
blockPlaceClass_1_9 = NMSUtils.getNMSClass("PacketPlayInBlockPlace");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
enumHandField = blockPlaceClass_1_9.getDeclaredField("a");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
if(!enumHandField.isAccessible()) {
enumHandField.setAccessible(true);
}
}
}
@@ -0,0 +1,148 @@
package io.github.retrooper.packetevents.packetwrappers.in.blockplace;
import io.github.retrooper.packetevents.enums.Hand;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.BaseBlockUtils;
import io.github.retrooper.packetevents.utils.NMSUtils;
import io.github.retrooper.packetevents.utils.vector.Vector3i;
import org.bukkit.inventory.ItemStack;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
class WrappedPacketInBlockPlace_Legacy extends WrappedPacket {
private Vector3i blockPosition;
private ItemStack itemStack;
private Hand hand;
WrappedPacketInBlockPlace_Legacy(final Object packet) {
super(packet);
}
@Override
protected void setup() throws Exception {
final Hand hand = Hand.MAIN_HAND;
final ItemStack itemStack;
final int x, y, z;
if (version.isHigherThan(ServerVersion.v_1_7_10)) {
final Object nmsBlockPosObj = fields[0].get(packet);
x = blockPosXYZ[0].getInt(nmsBlockPosObj);
y = blockPosXYZ[1].getInt(nmsBlockPosObj);
z = blockPosXYZ[2].getInt(nmsBlockPosObj);
Object nmsItemStackObj = fields[1].get(packet);
Object craftItemStack = asBukkitCopyMethod.invoke(null, nmsItemStackObj);
itemStack = (ItemStack) craftItemStack;
}
//1.7.10
else {
x = fields_1_7[0].getInt(packet);
y = fields_1_7[1].getInt(packet);
z = fields_1_7[2].getInt(packet);
Object nmsItemStackObj = fields_1_7[3].get(packet);
Object craftItemStack = asBukkitCopyMethod.invoke(null, nmsItemStackObj);
itemStack = (ItemStack) craftItemStack;
}
this.hand = hand;
this.itemStack = itemStack;
this.blockPosition = new Vector3i(x, y, z);
}
public Hand getHand() {
return hand;
}
public ItemStack getItemStack() {
return itemStack;
}
public Vector3i getBlockPosition() {
return blockPosition;
}
private static Class<?> blockPlaceClass;
private static Class<?> itemStackClass;
private static Class<?> craftItemStackClass;
private static Class<?> blockPositionClass;
private static Field[] fields = new Field[2];
private static Field[] fields_1_7 = new Field[4];
private static Field[] blockPosXYZ = new Field[3];
private static Method asBukkitCopyMethod;
protected static void setupStaticVars() {
try {
blockPlaceClass = NMSUtils.getNMSClass("PacketPlayInBlockPlace");
itemStackClass = NMSUtils.getNMSClass("ItemStack");
craftItemStackClass = NMSUtils.getOBCClass("inventory.CraftItemStack");
if (version.isHigherThan(ServerVersion.v_1_7_10)) {
blockPositionClass = NMSUtils.getNMSClass("BlockPosition");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
asBukkitCopyMethod = craftItemStackClass.getMethod("asBukkitCopy", itemStackClass);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
if (version.isLowerThan(ServerVersion.v_1_8)) {
//x
fields_1_7[0] = blockPlaceClass.getDeclaredField("a");
//y
fields_1_7[1] = blockPlaceClass.getDeclaredField("b");
//z
fields_1_7[2] = blockPlaceClass.getDeclaredField("c");
//itemstack
fields_1_7[3] = blockPlaceClass.getDeclaredField("e");
} else {
//block pos
fields[0] = blockPlaceClass.getDeclaredField("b");
//itemstack
fields[1] = blockPlaceClass.getDeclaredField("d");
blockPosXYZ[0] = blockPositionClass.getSuperclass().getDeclaredField(BaseBlockUtils.getPosXFieldName());
blockPosXYZ[1] = blockPositionClass.getSuperclass().getDeclaredField(BaseBlockUtils.getPosYFieldName());
blockPosXYZ[2] = blockPositionClass.getSuperclass().getDeclaredField(BaseBlockUtils.getPosZFieldName());
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
for (Field f : fields) {
if (f != null) {
f.setAccessible(true);
}
}
for (Field f : fields_1_7) {
if (f != null) {
f.setAccessible(true);
}
}
for (Field f : blockPosXYZ) {
if (f != null) {
f.setAccessible(true);
}
}
}
}
@@ -0,0 +1,53 @@
package io.github.retrooper.packetevents.packetwrappers.in.chat;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.NMSUtils;
import java.lang.reflect.Field;
public class WrappedPacketInChat extends WrappedPacket {
private String message;
public WrappedPacketInChat(Object packet) {
super(packet);
}
@Override
protected void setup() throws IllegalAccessException {
final Object obj = field.get(packet);
this.message = obj.toString();
}
public String getMessage() {
return message;
}
private static Class<?> chatPacketClass;
private static Field field;
static {
try {
chatPacketClass = NMSUtils.getNMSClass("PacketPlayInChat");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
field = chatPacketClass.getDeclaredField(getChatFieldName());
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
field.setAccessible(true);
}
private static String getChatFieldName() {
if (version == ServerVersion.v_1_7_10) {
return "message";
}
return "a";
}
}
@@ -0,0 +1,108 @@
package io.github.retrooper.packetevents.packetwrappers.in.entityaction;
import io.github.retrooper.packetevents.enums.PlayerAction;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.NMSUtils;
import org.bukkit.entity.Entity;
import javax.annotation.Nullable;
import java.lang.reflect.Field;
public class WrappedPacketInEntityAction extends WrappedPacket {
private Entity entity;
private int entityId;
private PlayerAction action;
private int jumpBoost;
public WrappedPacketInEntityAction(final Object packet) {
super(packet);
}
@Override
protected void setup() throws Exception {
final int entityId = fields[0].getInt(packet);
final int jumpBoost = fields[2].getInt(packet);
int animationIndex = -1;
//1.7.10
if (version.isLowerThan(ServerVersion.v_1_8)) {
animationIndex = fields[1].getInt(packet);
} else {
final Object enumObj = fields[1].get(packet);
final Object[] enumValues = enumPlayerActionConstants;
final int len = enumValues.length;
for (int i = 0; i < len; i++) {
final Object val = enumValues[i];
if (val.toString().equals(enumObj.toString())) {
animationIndex = i;
break;
}
}
}
this.entityId = entityId;
this.action = action;
this.jumpBoost = jumpBoost;
this.action = PlayerAction.get((byte) animationIndex);
this.entity = NMSUtils.getEntityById(this.entityId);
}
public Entity getEntity() {
return entity;
}
public int getEntityId() {
return entityId;
}
public PlayerAction getAction() {
return action;
}
public int getJumpBoost() {
return jumpBoost;
}
private static Class<?> entityActionClass;
@Nullable
private static Class<?> enumPlayerActionClass;
private static Field[] fields = new Field[3];
@Nullable
private static Object[] enumPlayerActionConstants;
static {
try {
entityActionClass = NMSUtils.getNMSClass("PacketPlayInEntityAction");
if (version.isHigherThan(ServerVersion.v_1_7_10)) {
enumPlayerActionClass = NMSUtils.getNMSClass("PacketPlayInEntityAction$EnumPlayerAction");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
//ints in 1.7.10, EnumPlayerAction in 1.8+
fields[0] = entityActionClass.getDeclaredField("a");
fields[1] = entityActionClass.getDeclaredField("animation");
fields[2] = entityActionClass.getDeclaredField("c");
if (version.isHigherThan(ServerVersion.v_1_7_10)) {
enumPlayerActionConstants = enumPlayerActionClass.getEnumConstants();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
for (final Field f : fields) {
f.setAccessible(true);
}
}
}
@@ -0,0 +1,145 @@
package io.github.retrooper.packetevents.packetwrappers.in.flying;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.NMSUtils;
import java.lang.reflect.Field;
public class WrappedPacketInFlying extends WrappedPacket {
private double x;
private double y;
private double z;
private float yaw;
private float pitch;
private boolean onGround;
private boolean isPosition;
private boolean isLook;
public WrappedPacketInFlying(Object packet) {
super(packet);
}
@Override
protected void setup() throws IllegalAccessException {
this.x = fields[0].getDouble(packet);
this.y = fields[1].getDouble(packet);
this.z = fields[2].getDouble(packet);
this.yaw = fields[3].getFloat(packet);
this.pitch = fields[4].getFloat(packet);
this.onGround = fields[5].getBoolean(packet);
this.isPosition = fields[6].getBoolean(packet);
this.isLook = fields[7].getBoolean(packet);
}
public static class WrappedPacketInPosition extends WrappedPacketInFlying {
public WrappedPacketInPosition(Object packet) {
super(packet);
}
@Override
public boolean isPosition() {
return true;
}
@Override
public boolean isLook() {
return false;
}
}
public static class WrappedPacketInPosition_Look extends WrappedPacketInFlying {
public WrappedPacketInPosition_Look(Object packet) {
super(packet);
}
@Override
public boolean isLook() {
return true;
}
@Override
public boolean isPosition() {
return false;
}
}
public double getX() {
return x;
}
public double getY() {
return y;
}
public double getZ() {
return z;
}
public float getYaw() {
return yaw;
}
public float getPitch() {
return pitch;
}
public boolean isOnGround() {
return onGround;
}
public boolean isPosition() {
return isPosition;
}
public boolean isLook() {
return isLook;
}
private static Class<?> flyingClass;
private static Field[] fields = new Field[8]; //x, y, z, yaw pitch, onGround, isPositionPacket, isLookPacket
static {
try {
flyingClass = NMSUtils.getNMSClass("PacketPlayInFlying");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
fields[0] = flyingClass.getDeclaredField("x");
fields[1] = flyingClass.getDeclaredField("y");
fields[2] = flyingClass.getDeclaredField("z");
fields[3] = flyingClass.getDeclaredField("yaw");
fields[4] = flyingClass.getDeclaredField("pitch");
fields[5] = flyingClass.getDeclaredField(getOnGroundFieldName());
fields[6] = flyingClass.getDeclaredField("hasPos");
fields[7] = flyingClass.getDeclaredField("hasLook");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
for (Field f : fields) {
if (f != null) {
f.setAccessible(true);
}
}
}
private static String getOnGroundFieldName() {
if (version == ServerVersion.v_1_7_10) {
return "g";
}
return "f";
}
}
@@ -0,0 +1,54 @@
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.utils.NMSUtils;
import java.lang.reflect.Field;
public class WrappedPacketInKeepAlive extends WrappedPacket {
public WrappedPacketInKeepAlive(final Object packet) {
super(packet);
}
private long id;
@Override
protected void setup() throws Exception {
if(version.isHigherThan(ServerVersion.v_1_12)) {
this.id = idField.getLong(packet);
}
else {
this.id = idField.getInt(packet);
}
}
/**
* 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
* @return
*/
public long getId() {
return id;
}
private static Class<?> keepAliveClass;
//1.7.10->1.12.2 has int field "a", rest as long field "a"
private static Field idField;
static {
try {
keepAliveClass = NMSUtils.getNMSClass("PacketPlayInKeepAlive");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
idField = keepAliveClass.getDeclaredField("a");
idField.setAccessible(true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,73 @@
package io.github.retrooper.packetevents.packetwrappers.in.useentity;
import io.github.retrooper.packetevents.enums.EntityUseAction;
import io.github.retrooper.packetevents.packetwrappers.api.WrappedPacket;
import io.github.retrooper.packetevents.utils.NMSUtils;
import org.bukkit.entity.Entity;
import java.lang.reflect.Field;
public class WrappedPacketInUseEntity extends WrappedPacket {
private int entityId;
private Entity entity;
private EntityUseAction action;
public WrappedPacketInUseEntity(final Object packet) {
super(packet);
}
@Override
protected void setup() throws IllegalAccessException {
this.entityId = fields[0].getInt(packet);
this.entity = NMSUtils.getEntityById(this.entityId);
final Object useActionEnum = fields[1].get(packet);
this.action = EntityUseAction.valueOf(useActionEnum.toString());
}
public Entity getEntity() {
return entity;
}
public int getEntityId() {
return entityId;
}
public EntityUseAction getAction() {
return action;
}
private static Class<?> useEntityClass;
private static Class<?> entityClass;
private static Field[] fields = new Field[2];
static {
try {
useEntityClass = NMSUtils.getNMSClass("PacketPlayInUseEntity");
entityClass = NMSUtils.getNMSClass("Entity");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
fields[0] = useEntityClass.getDeclaredField("a");
fields[1] = useEntityClass.getDeclaredField("action");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
for (Field f : fields) {
if (f != null) {
f.setAccessible(true);
}
}
}
}
@@ -0,0 +1,33 @@
package io.github.retrooper.packetevents.utils;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.enums.ServerVersion;
public class BaseBlockUtils {
private static final ServerVersion version = PacketEvents.getServerVersion();
public static String getPosXFieldName() {
return "a";
}
public static String getPosYFieldName() {
if (version == ServerVersion.v_1_8) {
return "b";
} else if (version == ServerVersion.v_1_8_3
|| version == ServerVersion.v_1_8_8
|| version == ServerVersion.v_1_9) {
return "c";
}
//1.9.4 and higher
return "b";
}
public static String getPosZFieldName() {
if (version == ServerVersion.v_1_8) {
return "c";
} else if (version == ServerVersion.v_1_8_3 || version == ServerVersion.v_1_8_8 || version == ServerVersion.v_1_9) {
return "d";
}
return "c";
}
}
@@ -0,0 +1,16 @@
package io.github.retrooper.packetevents.utils;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.util.BlockIterator;
public class BlockFinder {
public static Block getBlocksInDirection(final Player player, final int blockDistance) {
final BlockIterator it = new BlockIterator(player, blockDistance);
Block cur = null;
while(it.hasNext()) {
cur = it.next();
}
return cur;
}
}
@@ -0,0 +1,126 @@
package io.github.retrooper.packetevents.utils;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.utils.nms_entityfinder.EntityFinderUtils;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import javax.annotation.Nullable;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class NMSUtils {
private static final ServerVersion version = ServerVersion.getVersion();
private static final String nettyPrefix = version == ServerVersion.v_1_7_10 ? "net.minecraft.util.io.netty" : "io.netty";
private static final String nmsDir = ServerVersion.getNMSDirectory();
private static final String obcDir = ServerVersion.getOBCDirectory();
public static Class<?> minecraftServerClass;
private static Class<?> craftWorldsClass;
private static Method getServerMethod;
private static Field recentTPSField;
private static Method getCraftWorldHandleMethod;
private static Method entityMethod;
private static Class<?> craftPlayerClass;
private static Class<?> entityPlayerClass;
private static Method getCraftPlayerHandle;
private static Field entityPlayerPingField;
static {
try {
minecraftServerClass = getNMSClass("MinecraftServer");
craftWorldsClass = getOBCClass("CraftWorld");
craftPlayerClass = getOBCClass("entity.CraftPlayer");
entityPlayerClass = getNMSClass("EntityPlayer");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//METHODS
try {
getServerMethod = minecraftServerClass.getMethod("getServer");
getCraftWorldHandleMethod = craftWorldsClass.getMethod("getHandle");
getCraftPlayerHandle = craftPlayerClass.getMethod("getHandle");
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
recentTPSField = minecraftServerClass.getField("recentTps");
entityPlayerPingField = entityPlayerClass.getField("ping");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
public static Object getMinecraftServerInstance() throws InvocationTargetException, IllegalAccessException {
return getServerMethod.invoke(null);
}
public static double[] recentTPS() throws IllegalAccessException, InvocationTargetException {
final Object minecraftServerObj = getMinecraftServerInstance();
double[] recentTPS = (double[]) recentTPSField.get(minecraftServerObj);
return recentTPS;
}
public static Class<?> getNMSClass(String name) throws ClassNotFoundException {
return Class.forName(nmsDir + "." + name);
}
public static Class<?> getOBCClass(String name) throws ClassNotFoundException {
return Class.forName(obcDir + "." + name);
}
public static Class<?> getNettyClass(String name) throws ClassNotFoundException {
return Class.forName(nettyPrefix + "." + name);
}
@Nullable
public static Entity getEntityById(final int id) {
return EntityFinderUtils.getEntityById(id);
}
@Nullable
public static Entity getEntityByIdWithWorld(final World world, final int id) {
return EntityFinderUtils.getEntityByIdWithWorld(world, id);
}
public static int getPlayerPing(final Player player) {
final Object craftPlayer = craftPlayerClass.cast(player);
Object entityPlayer = null;
try {
entityPlayer = getCraftPlayerHandle.invoke(craftPlayer);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
try {
return entityPlayerPingField.getInt(entityPlayer);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return -1;
}
public static boolean is_1_8() {
return version.isHigherThan(ServerVersion.v_1_7_10)
&& version.isLowerThan(ServerVersion.v_1_9);
}
public static String getServerConnectionFieldName() {
return "p";
}
}
@@ -0,0 +1,17 @@
package io.github.retrooper.packetevents.utils;
import javax.annotation.Nullable;
import java.lang.reflect.InvocationTargetException;
public class TPSUtils {
@Nullable
public static double[] getRecentTPS() {
try {
return NMSUtils.recentTPS();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return null;
}
}
@@ -0,0 +1,94 @@
package io.github.retrooper.packetevents.utils.nms_entityfinder;
import io.github.retrooper.packetevents.PacketEvents;
import io.github.retrooper.packetevents.enums.ServerVersion;
import io.github.retrooper.packetevents.utils.NMSUtils;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import javax.annotation.Nullable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class EntityFinderUtils {
@Nullable
private static ServerVersion version = PacketEvents.getServerVersion();
public static Entity getEntityById(final int id) {
for (final World world : Bukkit.getWorlds()) {
final Entity entity = getEntityByIdWithWorld(world, id);
if (entity != null) {
return entity;
}
}
return null;
}
@Nullable
public static Entity getEntityByIdWithWorld(final World world, final int id) {
Object craftWorld = craftWorldClass.cast(world);
Object worldServer = null;
try {
worldServer = craftWorldGetHandle.invoke(craftWorld);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
Object nmsEntity = null;
try {
nmsEntity = getEntityByIdMethod.invoke(worldServer, id);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
try {
return (Entity) getBukkitEntity.invoke(nmsEntity);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return null;
}
private static Class<?> worldServerClass;
private static Class<?> craftWorldClass;
private static Class<?> entityClass;
private static Method getEntityByIdMethod;
private static Method craftWorldGetHandle;
private static Method getBukkitEntity;
static {
try {
worldServerClass = NMSUtils.getNMSClass("WorldServer");
craftWorldClass = NMSUtils.getOBCClass("CraftWorld");
entityClass = NMSUtils.getNMSClass("Entity");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
getEntityByIdMethod = worldServerClass.getMethod(getEntityByNameMethodName(), int.class);
craftWorldGetHandle = craftWorldClass.getMethod("getHandle");
getBukkitEntity = entityClass.getMethod("getBukkitEntity");
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
public static String getEntityByNameMethodName() {
if (version.isHigherThan(ServerVersion.v_1_7_10) && version.isLowerThan(ServerVersion.v_1_9)) {
return "a";
}
return "getEntity";
}
}
@@ -0,0 +1,15 @@
package io.github.retrooper.packetevents.utils.vector;
public class Vector2d {
public double x, y;
public Vector2d(final double x, final double y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "X: " + x + ", Y: " + y;
}
}
@@ -0,0 +1,14 @@
package io.github.retrooper.packetevents.utils.vector;
public class Vector2f {
public float x, y;
public Vector2f(final float x, final float y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "X: " + x + ", Y: " + y;
}
}
@@ -0,0 +1,15 @@
package io.github.retrooper.packetevents.utils.vector;
public class Vector2i {
public int x, y;
public Vector2i(final int x, final int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "X: " + x + ", Y: " + y;
}
}
@@ -0,0 +1,16 @@
package io.github.retrooper.packetevents.utils.vector;
public class Vector3d {
public double x, y, z;
public Vector3d(final double x, final double y, final double z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
public String toString() {
return "X: " + x + ", Y: " + y + ", Z: " + z;
}
}
@@ -0,0 +1,16 @@
package io.github.retrooper.packetevents.utils.vector;
public class Vector3f {
public float x, y, z;
public Vector3f(final float x, final float y, final float z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
public String toString() {
return "X: " + x + ", Y: " + y + ", Z: " + z;
}
}
@@ -0,0 +1,16 @@
package io.github.retrooper.packetevents.utils.vector;
public class Vector3i {
public int x, y, z;
public Vector3i(final int x, final int y, final int z) {
this.x = x;
this.y = y;
this.z = z;
}
@Override
public String toString() {
return "X: " + x + ", Y: " + y + ", Z: " + z;
}
}
@@ -1,64 +0,0 @@
package me.purplex.packetevents;
import me.purplex.packetevents.customlistener.injector.PacketInjector;
import me.purplex.packetevents.events.packetevent.ServerTickEvent;
import me.purplex.packetevents.example.TestExample;
import org.bukkit.Bukkit;
import org.bukkit.event.*;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin implements Listener {
private static Main instance;
private static PacketInjector packetInjector;
@Override
public void onEnable() {
instance = this;
Bukkit.getPluginManager().registerEvents(this, this);
packetInjector = new PacketInjector();
PacketEvents.getPacketManager().registerListener(new TestExample());
Bukkit.getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
long now = System.currentTimeMillis();
PacketEvents.getPacketManager().callEvent(new ServerTickEvent(now));
}
}, 0L, 1L);
}
@Override
public void onDisable() {
/**
* You don't need to unregister all events when the server shutsdown,
* This is just an example
*/
PacketEvents.getPacketManager().unregisterListener(new TestExample());
}
@EventHandler
public void onJoin(PlayerJoinEvent e) {
Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable() {
@Override
public void run() {
packetInjector.injectPlayer(e.getPlayer());
}
});
}
@EventHandler
public void onQuit(PlayerQuitEvent e) {
packetInjector.uninjectPlayer(e.getPlayer());
}
public static Main getInstance() {
return instance;
}
}
@@ -1,20 +0,0 @@
package me.purplex.packetevents;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.packetmanager.PacketManager;
public class PacketEvents {
private static PacketManager packetManager;
public static ServerVersion getServerVersion() {
return ServerVersion.getVersion();
}
public static PacketManager getPacketManager() {
if (packetManager == null) {
packetManager = new PacketManager();
}
return packetManager;
}
}
@@ -1,99 +0,0 @@
package me.purplex.packetevents.customlistener.injector;
import io.netty.channel.*;
import me.purplex.packetevents.PacketEvents;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.events.packetevent.*;
import org.bukkit.entity.Player;
public class PacketInjector {
private final static ServerVersion version = ServerVersion.getVersion();
public void injectPlayer(Player player) {
ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object packet) throws Exception {
String packetName = packet.getClass().getSimpleName();
PacketReceiveEvent e = new PacketReceiveEvent(player, packetName, packet);
PacketEvents.getPacketManager().callEvent(e);
if (e.isCancelled()) {
return;
}
super.channelRead(ctx, packet);
}
@Override
public void write(ChannelHandlerContext ctx, Object packet, ChannelPromise promise) throws Exception {
String packetName = packet.getClass().getSimpleName();
PacketSendEvent e = new PacketSendEvent(player, packetName, packet);
PacketEvents.getPacketManager().callEvent(e);
if (e.isCancelled()) {
return;
}
super.write(ctx, packet, promise);
}
};
Channel channel = getChannel(player);
ChannelPipeline pipeline = channel.pipeline();
pipeline.addBefore("packet_handler", player.getName(), channelDuplexHandler);
}
public void uninjectPlayer(Player player) {
Channel channel = getChannel(player);
channel.eventLoop().submit(() -> {
channel.pipeline().remove(player.getName());
return null;
});
}
public Channel getChannel(Player player) {
Channel channel = null;
if (version == ServerVersion.v_1_8) {
net.minecraft.server.v1_8_R1.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
try {
channel = (Channel) networkManager.getClass().getField("i").get(networkManager);
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
} else if (version == ServerVersion.v_1_8_3) {
net.minecraft.server.v1_8_R2.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.k;
} else if (version == ServerVersion.v_1_8_8) {
net.minecraft.server.v1_8_R3.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_9) {
net.minecraft.server.v1_9_R1.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_9_4) {
net.minecraft.server.v1_9_R2.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_10) {
net.minecraft.server.v1_10_R1.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_11) {
net.minecraft.server.v1_11_R1.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_12) {
net.minecraft.server.v1_12_R1.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_13) {
net.minecraft.server.v1_13_R1.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_13_R1.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_13_2) {
net.minecraft.server.v1_13_R2.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_13_R2.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_14) {
net.minecraft.server.v1_14_R1.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else if (version == ServerVersion.v_1_15) {
net.minecraft.server.v1_15_R1.NetworkManager networkManager = ((org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer) player).getHandle().playerConnection.networkManager;
channel = networkManager.channel;
} else {
System.err.println("Version unsupported, please contact purplex#0001 and tell him what version your server is running on! Make sure you are using paperspigot or spigot.");
}
return channel;
}
}
@@ -1,5 +0,0 @@
package me.purplex.packetevents.enums;
public enum EntityUseAction {
INTERACT, INTERACT_AT, ATTACK, INVALID;
}
@@ -1,24 +0,0 @@
package me.purplex.packetevents.enums;
import org.apache.commons.lang.ArrayUtils;
import org.bukkit.Bukkit;
public enum ServerVersion
{
v_1_7_10, v_1_8, v_1_8_3, v_1_8_8, v_1_9, v_1_9_4, v_1_10, v_1_11, v_1_12, v_1_13, v_1_13_2, v_1_14, v_1_15,
ERROR;
public static ServerVersion getVersion() {
ServerVersion[] vals = values();
ArrayUtils.reverse(vals);
for(ServerVersion val : vals) {
String valName = val.name().substring(2).replace("_", ".");
if(Bukkit.getBukkitVersion().contains(valName)) {
return val;
}
}
return ERROR;
}
}
@@ -1,22 +0,0 @@
package me.purplex.packetevents.eventmanager;
import me.purplex.packetevents.events.PacketEvent;
import me.purplex.packetevents.events.packetevent.ServerTickEvent;
import me.purplex.packetevents.events.listener.PacketListener;
import me.purplex.packetevents.events.packetevent.PacketReceiveEvent;
import me.purplex.packetevents.events.packetevent.PacketSendEvent;
import java.util.LinkedList;
public interface PacketEventManager {
public LinkedList<PacketListener> packetListeners = new LinkedList<>();
public void callEvent(PacketEvent e);
public void registerListener(PacketListener e);
public void unregisterListener(PacketListener e);
public void unregisterAllListeners(PacketListener e);
}
@@ -1,6 +0,0 @@
package me.purplex.packetevents.events;
public class PacketEvent {
}
@@ -1,4 +0,0 @@
package me.purplex.packetevents.events.listener;
public interface PacketListener {
}
@@ -1,19 +0,0 @@
package me.purplex.packetevents.events.packetevent;
import me.purplex.packetevents.events.PacketEvent;
public class ServerTickEvent extends PacketEvent {
private long timestamp;
public ServerTickEvent(long timestamp) {
this.timestamp = timestamp;
}
public long getTimestamp() {
return timestamp;
}
}
@@ -1,83 +0,0 @@
package me.purplex.packetevents.example;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.PlayerDigType;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.events.packetevent.ServerTickEvent;
import me.purplex.packetevents.events.handler.PacketHandler;
import me.purplex.packetevents.events.listener.PacketListener;
import me.purplex.packetevents.events.packetevent.*;
import me.purplex.packetevents.packetwrappers.in.*;
import me.purplex.packetevents.packets.Packet;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
public class TestExample implements PacketListener {
/**
* How to register a packet listener?
* <p>
* PacketEvents.getPacketManager().registerPacketListener(new TestExample());
*/
private int tick;
@PacketHandler
public void onPacketReceive(PacketReceiveEvent e) {
final Player p = e.getPlayer();
//ONLY CLIENT PACKETS ALLOWED HERE!
switch (e.getPacketName()) {
case Packet.Client.USE_ENTITY:
final WrappedPacketPlayInUseEntity useEntity = new WrappedPacketPlayInUseEntity(e.getPacket());
final Entity entity = useEntity.getEntity();
if (useEntity.getEntityUseAction() == EntityUseAction.ATTACK) {
final double dist = entity.getLocation().distanceSquared(p.getLocation());
//p.sendMessage("dist: " + dist);
}
break;
case Packet.Client.ABILITIES:
final WrappedPacketPlayInAbilities abilities = new WrappedPacketPlayInAbilities(e.getPacket());
final boolean a = abilities.a;
final boolean b = abilities.b;
final boolean c = abilities.c;
final boolean d = abilities.d;
final float eFloat = abilities.e;
final float fFloat = abilities.f;
//just like the 1.8 NMS classes.
break;
case Packet.Client.BLOCK_DIG:
final WrappedPacketPlayInBlockDig blockDig = new WrappedPacketPlayInBlockDig(e.getPacket());
final PlayerDigType type = blockDig.getPlayerDigType();
break;
case Packet.Client.FLYING:
final WrappedPacketPlayInFlying flying = new WrappedPacketPlayInFlying(e.getPacket());
final float pitch = flying.pitch;
final float yaw = flying.yaw;
final boolean hasPos = flying.hasPos;
final boolean hasLook = flying.hasLook;
break;
case Packet.Client.POSITION:
final WrappedPacketPlayInFlying.WrappedPacketPlayInPosition position =
new WrappedPacketPlayInFlying.WrappedPacketPlayInPosition(e.getPacket());
final boolean isPos = position.hasPos; //true
break;
case Packet.Client.POSITION_LOOK:
final WrappedPacketPlayInFlying.WrappedPacketPlayInPosition_Look position_look =
new WrappedPacketPlayInFlying.WrappedPacketPlayInPosition_Look(e.getPacket());
final boolean isLook = position_look.hasLook; //true
break;
}
}
@PacketHandler
public void onServerTick(ServerTickEvent e) {
//CALLED EVERY TICK
tick++;
if (tick % 20 == 0) {
/*for (Player p : Bukkit.getOnlinePlayers()) {
p.sendMessage("One second has passed!");
}*/
}
}
}
@@ -1,88 +0,0 @@
package me.purplex.packetevents.packetmanager;
import me.purplex.packetevents.events.PacketEvent;
import me.purplex.packetevents.events.packetevent.ServerTickEvent;
import me.purplex.packetevents.eventmanager.PacketEventManager;
import me.purplex.packetevents.events.handler.PacketHandler;
import me.purplex.packetevents.events.listener.PacketListener;
import me.purplex.packetevents.events.packetevent.PacketReceiveEvent;
import me.purplex.packetevents.events.packetevent.PacketSendEvent;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class PacketManager implements PacketEventManager {
@Override
public void callEvent(PacketEvent e) {
for (PacketListener listener : this.packetListeners) {
Method[] methods = listener.getClass().getMethods();
for (Method m : methods) {
if (m.isAnnotationPresent(PacketHandler.class)) {
if(e instanceof PacketReceiveEvent) {
PacketReceiveEvent event = (PacketReceiveEvent)e;
if(m.getParameterTypes()[0].getSimpleName().equals(event.getClass().getSimpleName())) {
try {
m.invoke(listener, event);
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InvocationTargetException ex) {
ex.printStackTrace();
}
}
}
else if(e instanceof PacketSendEvent) {
PacketSendEvent event = (PacketSendEvent)e;
if(m.getParameterTypes()[0].getSimpleName().equals(event.getClass().getSimpleName())) {
try {
m.invoke(listener, event);
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InvocationTargetException ex) {
ex.printStackTrace();
}
}
}
else if(e instanceof ServerTickEvent) {
ServerTickEvent event = (ServerTickEvent)e;
if(m.getParameterTypes()[0].getSimpleName().equals(event.getClass().getSimpleName())) {
try {
m.invoke(listener, event);
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InvocationTargetException ex) {
ex.printStackTrace();
}
}
}
else {
if(m.getParameterTypes()[0].getSimpleName().equals(e.getClass().getSimpleName())) {
try {
m.invoke(listener, e);
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InvocationTargetException ex) {
ex.printStackTrace();
}
}
}
}
}
}
}
@Override
public void registerListener(PacketListener e) {
this.packetListeners.add(e);
}
@Override
public void unregisterListener(PacketListener e) {
this.packetListeners.remove(e);
}
@Override
public void unregisterAllListeners(PacketListener e) {
this.packetListeners.clear();
}
}
@@ -1,73 +0,0 @@
package me.purplex.packetevents.packets;
public abstract class Packet {
public static class Client {
private static final String CLIENT = "PacketPlayIn";
public static final String KEEP_ALIVE = CLIENT + "KeepAlive";
@Deprecated
public static final String FLYING = CLIENT + "Flying";
public static final String POSITION = CLIENT + "Position";
public static final String POSITION_LOOK = CLIENT + "PositionLook";
public static final String LOOK = CLIENT + "Look";
@Deprecated
public static final String LEGACY_POSITION = FLYING + "$" + CLIENT + "Position";
@Deprecated
public static final String LEGACY_POSITION_LOOK = FLYING + "$" + CLIENT + "PositionLook";
@Deprecated
public static final String LEGACY_LOOK = FLYING + "$" + CLIENT + "Look";
public static final String TRANSACTION = CLIENT + "Transaction";
public static final String BLOCK_DIG = CLIENT + "BlockDig";
public static final String ENTITY_ACTION = CLIENT + "EntityAction";
public static final String USE_ENTITY = CLIENT + "UseEntity";
public static final String WINDOW_CLICK = CLIENT + "WindowClick";
public static final String STEER_VEHICLE = CLIENT + "SteerVehicle";
public static final String CUSTOM_PAYLOAD = CLIENT + "CustomPayload";
public static final String ARM_ANIMATION = CLIENT + "ArmAnimation";
public static final String BLOCK_PLACE_1_9 = CLIENT + "BlockPlace1_9";
public static final String BLOCK_PLACE = CLIENT + "BlockPlace";
public static final String ABILITIES = CLIENT + "Abilities";
public static final String HELD_ITEM_SLOT = CLIENT + "HeldItemSlot";
public static final String CLOSE_WINDOW = CLIENT + "CloseWindow";
public static final String TAB_COMPLETE = CLIENT + "TabComplete";
public static final String CHAT = CLIENT + "Chat";
public static final String CREATIVE_SLOT = CLIENT + "SetCreativeSlot";
public static final String CLIENT_COMMAND = CLIENT + "ClientCommand";
}
public static class Server {
private static final String SERVER = "PacketPlayOut";
public static final String ANIMATION = SERVER + "Animation";
public static final String KEEP_ALIVE = SERVER + "KeepAlive";
public static final String CHAT = SERVER + "Chat";
public static final String POSITION = SERVER + "Position";
public static final String TRANSACTION = SERVER + "Transaction";
public static final String NAMED_ENTITY_SPAWN = SERVER + "NamedEntitySpawn";
public static final String SPAWN_ENTITY_LIVING = SERVER + "SpawnEntityLiving";
public static final String SPAWN_ENTITY = SERVER + "SpawnEntity";
public static final String CUSTOM_PAYLOAD = SERVER + "CustomPayload";
public static final String ABILITIES = SERVER + "Abilities";
public static final String ENTITY_METADATA = SERVER + "EntityMetadata";
public static final String ENTITY_VELOCITY = SERVER + "EntityVelocity";
public static final String ENTITY_DESTROY = SERVER + "EntityDestroy";
public static final String ENTITY_HEAD_ROTATION = SERVER + "EntityHeadRotation";
public static final String BLOCK_CHANGE = SERVER + "BlockChange";
public static final String CLOSE_WINDOW = SERVER + "CloseWindow";
public static final String HELD_ITEM = SERVER + "HeldItemSlot";
public static final String TAB_COMPLETE = SERVER + "TabComplete";
public static final String RESPAWN = SERVER + "Respawn";
public static final String WORLD_PARTICLE = SERVER + "WorldParticles";
public static final String COMMANDS = SERVER + "Commands";
public static final String OPEN_WINDOW = SERVER + "OpenWindow";
public static final String LOGIN = SERVER + "Login";
public static final String SERVER_DIFFICULTY = SERVER + "ServerDifficulty";
}
public static class Login {
public static final String HANDSHAKE = "PacketHandshakingInSetProtocol";
public static final String PING = "PacketStatusInPing";
public static final String START = "PacketStatusInStart";
public static final String SUCCESS = "PacketLoginOutSuccess";
}
}
@@ -1,20 +0,0 @@
package me.purplex.packetevents.packetwrappers.api;
import me.purplex.packetevents.enums.ServerVersion;
/**
* All the wrappers are still under development.
* It is a lot of work, I must make 13 wrappers for each packet.
*/
public class WrappedPacket {
protected Object packet;
protected static final ServerVersion version = ServerVersion.getVersion();
public WrappedPacket(Object packet) {
this.packet = packet;
setup();
}
protected void setup() {
}
}
@@ -1,130 +0,0 @@
package me.purplex.packetevents.packetwrappers.in;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.packetwrappers.api.WrappedPacket;
import me.purplex.packetevents.packetwrappers.in._1_10.WrappedPacketPlayInAbilities_1_10;
import me.purplex.packetevents.packetwrappers.in._1_11.WrappedPacketPlayInAbilities_1_11;
import me.purplex.packetevents.packetwrappers.in._1_12.WrappedPacketPlayInAbilities_1_12;
import me.purplex.packetevents.packetwrappers.in._1_13.WrappedPacketPlayInAbilities_1_13;
import me.purplex.packetevents.packetwrappers.in._1_13_2.WrappedPacketPlayInAbilities_1_13_2;
import me.purplex.packetevents.packetwrappers.in._1_14.WrappedPacketPlayInAbilities_1_14;
import me.purplex.packetevents.packetwrappers.in._1_15.WrappedPacketPlayInAbilities_1_15;
import me.purplex.packetevents.packetwrappers.in._1_7_10.WrappedPacketPlayInAbilities_1_7_10;
import me.purplex.packetevents.packetwrappers.in._1_8.WrappedPacketPlayInAbilities_1_8;
import me.purplex.packetevents.packetwrappers.in._1_8_3.WrappedPacketPlayInAbilities_1_8_3;
import me.purplex.packetevents.packetwrappers.in._1_8_8.WrappedPacketPlayInAbilities_1_8_8;
import me.purplex.packetevents.packetwrappers.in._1_9.WrappedPacketPlayInAbilities_1_9;
import me.purplex.packetevents.packetwrappers.in._1_9_4.WrappedPacketPlayInAbilities_1_9_4;
public class WrappedPacketPlayInAbilities extends WrappedPacket {
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
public WrappedPacketPlayInAbilities(Object packet) {
super(packet);
}
@Override
protected void setup() {
if(version == ServerVersion.v_1_7_10) {
WrappedPacketPlayInAbilities_1_7_10 p = new WrappedPacketPlayInAbilities_1_7_10(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.d = p.d;
this.e = p.e;
}
else if (version == ServerVersion.v_1_8) {
WrappedPacketPlayInAbilities_1_8 p = new WrappedPacketPlayInAbilities_1_8(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_8_3) {
WrappedPacketPlayInAbilities_1_8_3 p = new WrappedPacketPlayInAbilities_1_8_3(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_8_8) {
WrappedPacketPlayInAbilities_1_8_8 p = new WrappedPacketPlayInAbilities_1_8_8(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_9) {
WrappedPacketPlayInAbilities_1_9 p = new WrappedPacketPlayInAbilities_1_9(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_9_4) {
WrappedPacketPlayInAbilities_1_9_4 p = new WrappedPacketPlayInAbilities_1_9_4(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_10) {
WrappedPacketPlayInAbilities_1_10 p = new WrappedPacketPlayInAbilities_1_10(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_11) {
WrappedPacketPlayInAbilities_1_11 p = new WrappedPacketPlayInAbilities_1_11(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_12) {
WrappedPacketPlayInAbilities_1_12 p = new WrappedPacketPlayInAbilities_1_12(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_13) {
WrappedPacketPlayInAbilities_1_13 p = new WrappedPacketPlayInAbilities_1_13(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_13_2) {
WrappedPacketPlayInAbilities_1_13_2 p = new WrappedPacketPlayInAbilities_1_13_2(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_14) {
WrappedPacketPlayInAbilities_1_14 p = new WrappedPacketPlayInAbilities_1_14(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
} else if (version == ServerVersion.v_1_15) {
WrappedPacketPlayInAbilities_1_15 p = new WrappedPacketPlayInAbilities_1_15(packet);
this.a = p.a;
this.b = p.b;
this.c = p.c;
this.e = p.e;
this.f = p.f;
}
}
}
@@ -1,76 +0,0 @@
package me.purplex.packetevents.packetwrappers.in;
import me.purplex.packetevents.enums.PlayerDigType;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.packetwrappers.api.WrappedPacket;
import me.purplex.packetevents.packetwrappers.in._1_10.WrappedPacketPlayInBlockDig_1_10;
import me.purplex.packetevents.packetwrappers.in._1_11.WrappedPacketPlayInBlockDig_1_11;
import me.purplex.packetevents.packetwrappers.in._1_12.WrappedPacketPlayInBlockDig_1_12;
import me.purplex.packetevents.packetwrappers.in._1_13.WrappedPacketPlayInBlockDig_1_13;
import me.purplex.packetevents.packetwrappers.in._1_13_2.WrappedPacketPlayInBlockDig_1_13_2;
import me.purplex.packetevents.packetwrappers.in._1_14.WrappedPacketPlayInBlockDig_1_14;
import me.purplex.packetevents.packetwrappers.in._1_15.WrappedPacketPlayInBlockDig_1_15;
import me.purplex.packetevents.packetwrappers.in._1_7_10.WrappedPacketPlayInBlockDig_1_7_10;
import me.purplex.packetevents.packetwrappers.in._1_8.WrappedPacketPlayInBlockDig_1_8;
import me.purplex.packetevents.packetwrappers.in._1_8_3.WrappedPacketPlayInBlockDig_1_8_3;
import me.purplex.packetevents.packetwrappers.in._1_8_8.WrappedPacketPlayInBlockDig_1_8_8;
import me.purplex.packetevents.packetwrappers.in._1_9.WrappedPacketPlayInBlockDig_1_9;
import me.purplex.packetevents.packetwrappers.in._1_9_4.WrappedPacketPlayInBlockDig_1_9_4;
public class WrappedPacketPlayInBlockDig extends WrappedPacket {
private PlayerDigType digType;
public WrappedPacketPlayInBlockDig(Object packet) {
super(packet);
}
public PlayerDigType getPlayerDigType() {
return digType;
}
@Override
public void setup() {
if(version == ServerVersion.v_1_7_10) {
WrappedPacketPlayInBlockDig_1_7_10 p = new WrappedPacketPlayInBlockDig_1_7_10(this.packet);
this.digType = p.digType;
}
else if (version == ServerVersion.v_1_8) {
WrappedPacketPlayInBlockDig_1_8 p = new WrappedPacketPlayInBlockDig_1_8(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_8_3) {
WrappedPacketPlayInBlockDig_1_8_3 p = new WrappedPacketPlayInBlockDig_1_8_3(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_8_8) {
WrappedPacketPlayInBlockDig_1_8_8 p = new WrappedPacketPlayInBlockDig_1_8_8(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_9) {
WrappedPacketPlayInBlockDig_1_9 p = new WrappedPacketPlayInBlockDig_1_9(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_9_4) {
WrappedPacketPlayInBlockDig_1_9_4 p = new WrappedPacketPlayInBlockDig_1_9_4(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_10) {
WrappedPacketPlayInBlockDig_1_10 p = new WrappedPacketPlayInBlockDig_1_10(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_11) {
WrappedPacketPlayInBlockDig_1_11 p = new WrappedPacketPlayInBlockDig_1_11(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_12) {
WrappedPacketPlayInBlockDig_1_12 p = new WrappedPacketPlayInBlockDig_1_12(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_13) {
WrappedPacketPlayInBlockDig_1_13 p = new WrappedPacketPlayInBlockDig_1_13(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_13_2) {
WrappedPacketPlayInBlockDig_1_13_2 p = new WrappedPacketPlayInBlockDig_1_13_2(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_14) {
WrappedPacketPlayInBlockDig_1_14 p = new WrappedPacketPlayInBlockDig_1_14(packet);
this.digType = p.digType;
} else if (version == ServerVersion.v_1_15) {
WrappedPacketPlayInBlockDig_1_15 p = new WrappedPacketPlayInBlockDig_1_15(packet);
this.digType = p.digType;
}
}
}
@@ -1,439 +0,0 @@
package me.purplex.packetevents.packetwrappers.in;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.packetwrappers.api.WrappedPacket;
import me.purplex.packetevents.packetwrappers.in._1_10.WrappedPacketPlayInFlying_1_10;
import me.purplex.packetevents.packetwrappers.in._1_11.WrappedPacketPlayInFlying_1_11;
import me.purplex.packetevents.packetwrappers.in._1_12.WrappedPacketPlayInFlying_1_12;
import me.purplex.packetevents.packetwrappers.in._1_13.WrappedPacketPlayInFlying_1_13;
import me.purplex.packetevents.packetwrappers.in._1_13_2.WrappedPacketPlayInFlying_1_13_2;
import me.purplex.packetevents.packetwrappers.in._1_14.WrappedPacketPlayInFlying_1_14;
import me.purplex.packetevents.packetwrappers.in._1_15.WrappedPacketPlayInFlying_1_15;
import me.purplex.packetevents.packetwrappers.in._1_7_10.WrappedPacketPlayInFlying_1_7_10;
import me.purplex.packetevents.packetwrappers.in._1_8.WrappedPacketPlayInFlying_1_8;
import me.purplex.packetevents.packetwrappers.in._1_8_3.WrappedPacketPlayInFlying_1_8_3;
import me.purplex.packetevents.packetwrappers.in._1_8_8.WrappedPacketPlayInFlying_1_8_8;
import me.purplex.packetevents.packetwrappers.in._1_9.WrappedPacketPlayInFlying_1_9;
import me.purplex.packetevents.packetwrappers.in._1_9_4.WrappedPacketPlayInFlying_1_9_4;
public class WrappedPacketPlayInFlying extends WrappedPacket {
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
public WrappedPacketPlayInFlying(Object packet) {
super(packet);
}
@Override
protected void setup(){
if(version == ServerVersion.v_1_7_10) {
WrappedPacketPlayInFlying_1_7_10 p = new WrappedPacketPlayInFlying_1_7_10(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8) {
WrappedPacketPlayInFlying_1_8 p = new WrappedPacketPlayInFlying_1_8(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8_3) {
WrappedPacketPlayInFlying_1_8_3 p = new WrappedPacketPlayInFlying_1_8_3(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8_8) {
WrappedPacketPlayInFlying_1_8_8 p = new WrappedPacketPlayInFlying_1_8_8(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_9) {
WrappedPacketPlayInFlying_1_9 p = new WrappedPacketPlayInFlying_1_9(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_9_4) {
WrappedPacketPlayInFlying_1_9_4 p = new WrappedPacketPlayInFlying_1_9_4(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_10) {
WrappedPacketPlayInFlying_1_10 p = new WrappedPacketPlayInFlying_1_10(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version== ServerVersion.v_1_11) {
WrappedPacketPlayInFlying_1_11 p = new WrappedPacketPlayInFlying_1_11(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_12) {
WrappedPacketPlayInFlying_1_12 p = new WrappedPacketPlayInFlying_1_12(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version== ServerVersion.v_1_13) {
WrappedPacketPlayInFlying_1_13 p = new WrappedPacketPlayInFlying_1_13(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_13_2) {
WrappedPacketPlayInFlying_1_13_2 p = new WrappedPacketPlayInFlying_1_13_2(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_14) {
WrappedPacketPlayInFlying_1_14 p = new WrappedPacketPlayInFlying_1_14(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_15) {
WrappedPacketPlayInFlying_1_15 p = new WrappedPacketPlayInFlying_1_15(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
}
public static class WrappedPacketPlayInPosition extends WrappedPacketPlayInFlying {
public WrappedPacketPlayInPosition(Object packet) {
super(packet);
}
@Override
protected void setup() {
if(version == ServerVersion.v_1_7_10) {
WrappedPacketPlayInFlying_1_7_10.WrappedPacketPlayInPosition_1_7_10 p
= new WrappedPacketPlayInFlying_1_7_10.WrappedPacketPlayInPosition_1_7_10(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8) {
WrappedPacketPlayInFlying_1_8.WrappedPacketPlayInPosition_1_8 p
= new WrappedPacketPlayInFlying_1_8.WrappedPacketPlayInPosition_1_8(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8_3) {
WrappedPacketPlayInFlying_1_8_3.WrappedPacketPlayInPosition_1_8_3 p
= new WrappedPacketPlayInFlying_1_8_3.WrappedPacketPlayInPosition_1_8_3(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8_8) {
WrappedPacketPlayInFlying_1_8_8.WrappedPacketPlayInPosition_1_8_8 p
= new WrappedPacketPlayInFlying_1_8_8.WrappedPacketPlayInPosition_1_8_8(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_9) {
WrappedPacketPlayInFlying_1_9.WrappedPacketPlayInPosition_1_9 p
= new WrappedPacketPlayInFlying_1_9.WrappedPacketPlayInPosition_1_9(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_9_4) {
WrappedPacketPlayInFlying_1_9_4.WrappedPacketPlayInPosition_1_9_4 p
= new WrappedPacketPlayInFlying_1_9_4.WrappedPacketPlayInPosition_1_9_4(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_10) {
WrappedPacketPlayInFlying_1_10.WrappedPacketPlayInPosition_1_10 p
= new WrappedPacketPlayInFlying_1_10.WrappedPacketPlayInPosition_1_10(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version== ServerVersion.v_1_11) {
WrappedPacketPlayInFlying_1_11.WrappedPacketPlayInPosition_1_11 p
= new WrappedPacketPlayInFlying_1_11.WrappedPacketPlayInPosition_1_11(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_12) {
WrappedPacketPlayInFlying_1_12.WrappedPacketPlayInPosition_1_12 p
= new WrappedPacketPlayInFlying_1_12.WrappedPacketPlayInPosition_1_12(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version== ServerVersion.v_1_13) {
WrappedPacketPlayInFlying_1_13.WrappedPacketPlayInPosition_1_13 p
= new WrappedPacketPlayInFlying_1_13.WrappedPacketPlayInPosition_1_13(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_13_2) {
WrappedPacketPlayInFlying_1_13_2.WrappedPacketPlayInPosition_1_13_2 p
= new WrappedPacketPlayInFlying_1_13_2.WrappedPacketPlayInPosition_1_13_2(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_14) {
WrappedPacketPlayInFlying_1_14.WrappedPacketPlayInPosition_1_14 p
= new WrappedPacketPlayInFlying_1_14.WrappedPacketPlayInPosition_1_14(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_15) {
WrappedPacketPlayInFlying_1_15.WrappedPacketPlayInPosition_1_15 p
= new WrappedPacketPlayInFlying_1_15.WrappedPacketPlayInPosition_1_15(packet);
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
}
}
public static class WrappedPacketPlayInPosition_Look extends WrappedPacketPlayInFlying {
public WrappedPacketPlayInPosition_Look(Object packet) {
super(packet);
}
@Override
protected void setup() {
if(version == ServerVersion.v_1_7_10) {
WrappedPacketPlayInFlying_1_7_10.WrappedPacketPlayInPosition_Look_1_7_10 p
= new WrappedPacketPlayInFlying_1_7_10.WrappedPacketPlayInPosition_Look_1_7_10(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8) {
WrappedPacketPlayInFlying_1_8.WrappedPacketPlayInPosition_Look_1_8 p
= new WrappedPacketPlayInFlying_1_8.WrappedPacketPlayInPosition_Look_1_8(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8_3) {
WrappedPacketPlayInFlying_1_8_3.WrappedPacketPlayInPosition_Look_1_8_3 p
= new WrappedPacketPlayInFlying_1_8_3.WrappedPacketPlayInPosition_Look_1_8_3(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_8_8) {
WrappedPacketPlayInFlying_1_8_8.WrappedPacketPlayInPosition_Look_1_8_8 p
= new WrappedPacketPlayInFlying_1_8_8.WrappedPacketPlayInPosition_Look_1_8_8(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_9) {
WrappedPacketPlayInFlying_1_9.WrappedPacketPlayInPosition_Look_1_9 p
= new WrappedPacketPlayInFlying_1_9.WrappedPacketPlayInPosition_Look_1_9(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_9_4) {
WrappedPacketPlayInFlying_1_9_4.WrappedPacketPlayInPosition_Look_1_9_4 p
= new WrappedPacketPlayInFlying_1_9_4.WrappedPacketPlayInPosition_Look_1_9_4(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_10) {
WrappedPacketPlayInFlying_1_10.WrappedPacketPlayInPosition_Look_1_10 p
= new WrappedPacketPlayInFlying_1_10.WrappedPacketPlayInPosition_Look_1_10(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version== ServerVersion.v_1_11) {
WrappedPacketPlayInFlying_1_11.WrappedPacketPlayInPosition_Look_1_11 p
= new WrappedPacketPlayInFlying_1_11.WrappedPacketPlayInPosition_Look_1_11(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_12) {
WrappedPacketPlayInFlying_1_12.WrappedPacketPlayInPosition_Look_1_12 p
= new WrappedPacketPlayInFlying_1_12.WrappedPacketPlayInPosition_Look_1_12(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version== ServerVersion.v_1_13) {
WrappedPacketPlayInFlying_1_13.WrappedPacketPlayInPosition_Look_1_13 p
= new WrappedPacketPlayInFlying_1_13.WrappedPacketPlayInPosition_Look_1_13(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_13_2) {
WrappedPacketPlayInFlying_1_13_2.WrappedPacketPlayInPosition_Look_1_13_2 p
= new WrappedPacketPlayInFlying_1_13_2.WrappedPacketPlayInPosition_Look_1_13_2(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_14) {
WrappedPacketPlayInFlying_1_14.WrappedPacketPlayInPosition_Look_1_14 p
= new WrappedPacketPlayInFlying_1_14.WrappedPacketPlayInPosition_Look_1_14(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
else if(version == ServerVersion.v_1_15) {
WrappedPacketPlayInFlying_1_15.WrappedPacketPlayInPosition_Look_1_15 p
= new WrappedPacketPlayInFlying_1_15.WrappedPacketPlayInPosition_Look_1_15(packet);
this.x = p.x;
this.y = p.y;
this.z = p.z;
this.yaw = p.yaw;
this.pitch = p.pitch;
this.f = p.f;
this.hasPos = p.hasPos;
this.hasLook = p.hasLook;
}
}
}
}
@@ -1,95 +0,0 @@
package me.purplex.packetevents.packetwrappers.in;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import me.purplex.packetevents.packetwrappers.api.WrappedPacket;
import me.purplex.packetevents.packetwrappers.in._1_10.WrappedPacketPlayInUseEntity_1_10;
import me.purplex.packetevents.packetwrappers.in._1_11.WrappedPacketPlayInUseEntity_1_11;
import me.purplex.packetevents.packetwrappers.in._1_12.WrappedPacketPlayInUseEntity_1_12;
import me.purplex.packetevents.packetwrappers.in._1_13.WrappedPacketPlayInUseEntity_1_13;
import me.purplex.packetevents.packetwrappers.in._1_13_2.WrappedPacketPlayInUseEntity_1_13_2;
import me.purplex.packetevents.packetwrappers.in._1_14.WrappedPacketPlayInUseEntity_1_14;
import me.purplex.packetevents.packetwrappers.in._1_15.WrappedPacketPlayInUseEntity_1_15;
import me.purplex.packetevents.packetwrappers.in._1_7_10.WrappedPacketPlayInUseEntity_1_7_10;
import me.purplex.packetevents.packetwrappers.in._1_8.WrappedPacketPlayInUseEntity_1_8;
import me.purplex.packetevents.packetwrappers.in._1_8_3.WrappedPacketPlayInUseEntity_1_8_3;
import me.purplex.packetevents.packetwrappers.in._1_8_8.WrappedPacketPlayInUseEntity_1_8_8;
import me.purplex.packetevents.packetwrappers.in._1_9.WrappedPacketPlayInUseEntity_1_9;
import me.purplex.packetevents.packetwrappers.in._1_9_4.WrappedPacketPlayInUseEntity_1_9_4;
import org.bukkit.entity.Entity;
public class WrappedPacketPlayInUseEntity extends WrappedPacket {
private Entity entity;
private EntityUseAction action;
public WrappedPacketPlayInUseEntity(Object packet) {
super(packet);
}
public Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
@Override
protected void setup() {
if(version == ServerVersion.v_1_7_10) {
WrappedPacketPlayInUseEntity_1_7_10 p = new WrappedPacketPlayInUseEntity_1_7_10(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
}
else if (version == ServerVersion.v_1_8) {
WrappedPacketPlayInUseEntity_1_8 p = new WrappedPacketPlayInUseEntity_1_8(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_8_3) {
WrappedPacketPlayInUseEntity_1_8_3 p = new WrappedPacketPlayInUseEntity_1_8_3(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_8_8) {
WrappedPacketPlayInUseEntity_1_8_8 p = new WrappedPacketPlayInUseEntity_1_8_8(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_9) {
WrappedPacketPlayInUseEntity_1_9 p = new WrappedPacketPlayInUseEntity_1_9(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_9_4) {
WrappedPacketPlayInUseEntity_1_9_4 p = new WrappedPacketPlayInUseEntity_1_9_4(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_10) {
WrappedPacketPlayInUseEntity_1_10 p = new WrappedPacketPlayInUseEntity_1_10(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_11) {
WrappedPacketPlayInUseEntity_1_11 p = new WrappedPacketPlayInUseEntity_1_11(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_12) {
WrappedPacketPlayInUseEntity_1_12 p = new WrappedPacketPlayInUseEntity_1_12(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_13) {
WrappedPacketPlayInUseEntity_1_13 p = new WrappedPacketPlayInUseEntity_1_13(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_13_2) {
WrappedPacketPlayInUseEntity_1_13_2 p = new WrappedPacketPlayInUseEntity_1_13_2(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_14) {
WrappedPacketPlayInUseEntity_1_14 p = new WrappedPacketPlayInUseEntity_1_14(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
} else if (version == ServerVersion.v_1_15) {
WrappedPacketPlayInUseEntity_1_15 p = new WrappedPacketPlayInUseEntity_1_15(packet);
this.entity = p.getEntity();
this.action = p.getEntityUseAction();
}
}
}
@@ -1,52 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_10;
import net.minecraft.server.v1_10_R1.PacketPlayInAbilities;
import java.lang.reflect.Field;
public class WrappedPacketPlayInAbilities_1_10 {
private final Object packet;
private Field fieldE;
private Field fieldF;
public WrappedPacketPlayInAbilities_1_10(Object packet) {
this.packet = packet;
try {
this.fieldE = PacketPlayInAbilities.class.getDeclaredField("e");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
this.fieldF = PacketPlayInAbilities.class.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.a();
this.b = p.isFlying();
this.c = p.c();
this.d = p.d();
try {
this.e = fieldE.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
try {
this.f = fieldF.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
@@ -1,21 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_10;
import me.purplex.packetevents.enums.PlayerDigType;
import net.minecraft.server.v1_10_R1.PacketPlayInBlockDig;
public class WrappedPacketPlayInBlockDig_1_10 {
private final Object packet;
public WrappedPacketPlayInBlockDig_1_10(Object packet) {
this.packet = packet;
setupDigType();
}
private void setupDigType() {
PacketPlayInBlockDig p = (PacketPlayInBlockDig)packet;
String name = p.c().name();
this.digType = PlayerDigType.valueOf(name);
}
public PlayerDigType digType;
}
@@ -1,122 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_10;
import net.minecraft.server.v1_10_R1.PacketPlayInFlying;
import java.lang.reflect.Field;
public class WrappedPacketPlayInFlying_1_10 {
private final Object packet;
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
public WrappedPacketPlayInFlying_1_10(Object packet) {
this.packet = packet;
try {
setupFields();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
private void setupFields() throws IllegalAccessException {
PacketPlayInFlying p = (PacketPlayInFlying) packet;
this.hasPos = fieldHasPos.getBoolean(p);
this.hasLook = fieldHasLook.getBoolean(p);
if (hasPos) {
this.x = p.a(0.0D);
this.y = p.b(0.0D);
this.z = p.c(0.0D);
} else {
this.x = fieldX.getDouble(p);
this.y = fieldY.getDouble(p);
this.z = fieldZ.getDouble(p);
}
if (hasLook) {
this.yaw = p.a(0.0F);
this.pitch = p.b(0.0F);
}
else {
this.yaw = fieldYaw.getFloat(p);
this.pitch = fieldPitch.getFloat(p);
}
this.f = p.a();
}
public static class WrappedPacketPlayInPosition_1_10 extends WrappedPacketPlayInFlying_1_10 {
public WrappedPacketPlayInPosition_1_10(Object packet) {
super(packet);
this.hasPos = true;
}
}
public static class WrappedPacketPlayInPosition_Look_1_10 extends WrappedPacketPlayInFlying_1_10 {
public WrappedPacketPlayInPosition_Look_1_10(Object packet) {
super(packet);
this.hasLook = true;
}
}
private static Field fieldHasPos;
private static Field fieldHasLook;
private static Field fieldX;
private static Field fieldY;
private static Field fieldZ;
private static Field fieldYaw;
private static Field fieldPitch;
static {
try {
fieldHasPos = PacketPlayInFlying.class.getDeclaredField("hasPos");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldHasLook = PacketPlayInFlying.class.getDeclaredField("hasLook");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldX = PacketPlayInFlying.class.getDeclaredField("x");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldY = PacketPlayInFlying.class.getDeclaredField("y");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldZ = PacketPlayInFlying.class.getDeclaredField("z");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldYaw = PacketPlayInFlying.class.getDeclaredField("yaw");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldPitch = PacketPlayInFlying.class.getDeclaredField("pitch");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
@@ -1,54 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_10;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
public class WrappedPacketPlayInUseEntity_1_10 {
private final ServerVersion version;
private Entity entity;
private EntityUseAction action;
private final Object packet;
public WrappedPacketPlayInUseEntity_1_10(Object packet) {
this.version = ServerVersion.getVersion();
this.packet = packet;
setupEntity();
setupAction();
}
private Object getRawPacket() {
return this.packet;
}
public Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
private void setupEntity() {
net.minecraft.server.v1_10_R1.PacketPlayInUseEntity packet = (net.minecraft.server.v1_10_R1.PacketPlayInUseEntity) getRawPacket();
net.minecraft.server.v1_10_R1.WorldServer worldServer = null;
for (World bukkitWorld : Bukkit.getWorlds()) {
org.bukkit.craftbukkit.v1_10_R1.CraftWorld craftWorld = (org.bukkit.craftbukkit.v1_10_R1.CraftWorld) bukkitWorld;
worldServer = craftWorld.getHandle();
if (packet.a(worldServer) != null) {
break;
}
}
net.minecraft.server.v1_10_R1.Entity entity = packet.a(worldServer);
this.entity = entity.getBukkitEntity();
}
private void setupAction() {
net.minecraft.server.v1_10_R1.PacketPlayInUseEntity packet = (net.minecraft.server.v1_10_R1.PacketPlayInUseEntity) getRawPacket();
String name = packet.a().name();
this.action = EntityUseAction.valueOf(name);
}
}
@@ -1,52 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_11;
import net.minecraft.server.v1_11_R1.PacketPlayInAbilities;
import java.lang.reflect.Field;
public class WrappedPacketPlayInAbilities_1_11 {
private final Object packet;
private Field fieldE;
private Field fieldF;
public WrappedPacketPlayInAbilities_1_11(Object packet) {
this.packet = packet;
try {
this.fieldE = PacketPlayInAbilities.class.getDeclaredField("e");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
this.fieldF = PacketPlayInAbilities.class.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.a();
this.b = p.isFlying();
this.c = p.c();
this.d = p.d();
try {
this.e = fieldE.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
try {
this.f = fieldF.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
@@ -1,21 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_11;
import me.purplex.packetevents.enums.PlayerDigType;
import net.minecraft.server.v1_11_R1.PacketPlayInBlockDig;
public class WrappedPacketPlayInBlockDig_1_11 {
private final Object packet;
public WrappedPacketPlayInBlockDig_1_11(Object packet) {
this.packet = packet;
setupDigType();
}
private void setupDigType() {
PacketPlayInBlockDig p = (PacketPlayInBlockDig)packet;
String name = p.c().name();
this.digType = PlayerDigType.valueOf(name);
}
public PlayerDigType digType;
}
@@ -1,123 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_11;
import net.minecraft.server.v1_11_R1.PacketPlayInFlying;
import java.lang.reflect.Field;
public class WrappedPacketPlayInFlying_1_11 {
private final Object packet;
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
public WrappedPacketPlayInFlying_1_11(Object packet) {
this.packet = packet;
try {
setupFields();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
private void setupFields() throws IllegalAccessException {
PacketPlayInFlying p = (PacketPlayInFlying) packet;
this.hasPos = fieldHasPos.getBoolean(p);
this.hasLook = fieldHasLook.getBoolean(p);
if (hasPos) {
this.x = p.a(0.0D);
this.y = p.b(0.0D);
this.z = p.c(0.0D);
} else {
this.x = fieldX.getDouble(p);
this.y = fieldY.getDouble(p);
this.z = fieldZ.getDouble(p);
}
if (hasLook) {
this.yaw = p.a(0.0F);
this.pitch = p.b(0.0F);
}
else {
this.yaw = fieldYaw.getFloat(p);
this.pitch = fieldPitch.getFloat(p);
}
this.f = p.a();
}
public static class WrappedPacketPlayInPosition_1_11 extends WrappedPacketPlayInFlying_1_11{
public WrappedPacketPlayInPosition_1_11(Object packet) {
super(packet);
this.hasPos = true;
}
}
public static class WrappedPacketPlayInPosition_Look_1_11 extends WrappedPacketPlayInFlying_1_11 {
public WrappedPacketPlayInPosition_Look_1_11(Object packet) {
super(packet);
this.hasLook = true;
}
}
private static Field fieldHasPos;
private static Field fieldHasLook;
private static Field fieldX;
private static Field fieldY;
private static Field fieldZ;
private static Field fieldYaw;
private static Field fieldPitch;
static {
try {
fieldHasPos = PacketPlayInFlying.class.getDeclaredField("hasPos");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldHasLook = PacketPlayInFlying.class.getDeclaredField("hasLook");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldX = PacketPlayInFlying.class.getDeclaredField("x");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldY = PacketPlayInFlying.class.getDeclaredField("y");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldZ = PacketPlayInFlying.class.getDeclaredField("z");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldYaw = PacketPlayInFlying.class.getDeclaredField("yaw");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldPitch = PacketPlayInFlying.class.getDeclaredField("pitch");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
@@ -1,54 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_11;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
public class WrappedPacketPlayInUseEntity_1_11 {
private final ServerVersion version;
private Entity entity;
private EntityUseAction action;
private final Object packet;
public WrappedPacketPlayInUseEntity_1_11(Object packet) {
this.version = ServerVersion.getVersion();
this.packet = packet;
setupEntity();
setupAction();
}
private Object getRawPacket() {
return this.packet;
}
public Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
private void setupEntity() {
net.minecraft.server.v1_11_R1.PacketPlayInUseEntity packet = (net.minecraft.server.v1_11_R1.PacketPlayInUseEntity) getRawPacket();
net.minecraft.server.v1_11_R1.WorldServer worldServer = null;
for (World bukkitWorld : Bukkit.getWorlds()) {
org.bukkit.craftbukkit.v1_11_R1.CraftWorld craftWorld = (org.bukkit.craftbukkit.v1_11_R1.CraftWorld) bukkitWorld;
worldServer = craftWorld.getHandle();
if (packet.a(worldServer) != null) {
break;
}
}
net.minecraft.server.v1_11_R1.Entity entity = packet.a(worldServer);
this.entity = entity.getBukkitEntity();
}
private void setupAction() {
net.minecraft.server.v1_11_R1.PacketPlayInUseEntity packet = (net.minecraft.server.v1_11_R1.PacketPlayInUseEntity) getRawPacket();
String name = packet.a().name();
this.action = EntityUseAction.valueOf(name);
}
}
@@ -1,52 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_12;
import net.minecraft.server.v1_12_R1.PacketPlayInAbilities;
import java.lang.reflect.Field;
public class WrappedPacketPlayInAbilities_1_12 {
private final Object packet;
private Field fieldE;
private Field fieldF;
public WrappedPacketPlayInAbilities_1_12(Object packet) {
this.packet = packet;
try {
this.fieldE = PacketPlayInAbilities.class.getDeclaredField("e");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
this.fieldF = PacketPlayInAbilities.class.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.a();
this.b = p.isFlying();
this.c = p.c();
this.d = p.d();
try {
this.e = fieldE.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
try {
this.f = fieldF.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
@@ -1,21 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_12;
import me.purplex.packetevents.enums.PlayerDigType;
import net.minecraft.server.v1_12_R1.PacketPlayInBlockDig;
public class WrappedPacketPlayInBlockDig_1_12 {
private final Object packet;
public WrappedPacketPlayInBlockDig_1_12(Object packet) {
this.packet = packet;
setupDigType();
}
private void setupDigType() {
PacketPlayInBlockDig p = (PacketPlayInBlockDig)packet;
String name = p.c().name();
this.digType = PlayerDigType.valueOf(name);
}
public PlayerDigType digType;
}
@@ -1,122 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_12;
import net.minecraft.server.v1_12_R1.PacketPlayInFlying;
import java.lang.reflect.Field;
public class WrappedPacketPlayInFlying_1_12 {
private final Object packet;
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
public WrappedPacketPlayInFlying_1_12(Object packet) {
this.packet = packet;
try {
setupFields();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
private void setupFields() throws IllegalAccessException {
PacketPlayInFlying p = (PacketPlayInFlying) packet;
this.hasPos = fieldHasPos.getBoolean(p);
this.hasLook = fieldHasLook.getBoolean(p);
if (hasPos) {
this.x = p.a(0.0D);
this.y = p.b(0.0D);
this.z = p.c(0.0D);
} else {
this.x = fieldX.getDouble(p);
this.y = fieldY.getDouble(p);
this.z = fieldZ.getDouble(p);
}
if (hasLook) {
this.yaw = p.a(0.0F);
this.pitch = p.b(0.0F);
}
else {
this.yaw = fieldYaw.getFloat(p);
this.pitch = fieldPitch.getFloat(p);
}
this.f = p.a();
}
public static class WrappedPacketPlayInPosition_1_12 extends WrappedPacketPlayInFlying_1_12 {
public WrappedPacketPlayInPosition_1_12(Object packet) {
super(packet);
this.hasPos = true;
}
}
public static class WrappedPacketPlayInPosition_Look_1_12 extends WrappedPacketPlayInFlying_1_12 {
public WrappedPacketPlayInPosition_Look_1_12(Object packet) {
super(packet);
this.hasLook = true;
}
}
private static Field fieldHasPos;
private static Field fieldHasLook;
private static Field fieldX;
private static Field fieldY;
private static Field fieldZ;
private static Field fieldYaw;
private static Field fieldPitch;
static {
try {
fieldHasPos = PacketPlayInFlying.class.getDeclaredField("hasPos");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldHasLook = PacketPlayInFlying.class.getDeclaredField("hasLook");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldX = PacketPlayInFlying.class.getDeclaredField("x");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldY = PacketPlayInFlying.class.getDeclaredField("y");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldZ = PacketPlayInFlying.class.getDeclaredField("z");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldYaw = PacketPlayInFlying.class.getDeclaredField("yaw");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldPitch = PacketPlayInFlying.class.getDeclaredField("pitch");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
@@ -1,54 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_12;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
public class WrappedPacketPlayInUseEntity_1_12 {
private final ServerVersion version;
private Entity entity;
private EntityUseAction action;
private final Object packet;
public WrappedPacketPlayInUseEntity_1_12(Object packet) {
this.version = ServerVersion.getVersion();
this.packet = packet;
setupEntity();
setupAction();
}
private Object getRawPacket() {
return this.packet;
}
public Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
private void setupEntity() {
net.minecraft.server.v1_12_R1.PacketPlayInUseEntity packet = (net.minecraft.server.v1_12_R1.PacketPlayInUseEntity) getRawPacket();
net.minecraft.server.v1_12_R1.WorldServer worldServer = null;
for (World bukkitWorld : Bukkit.getWorlds()) {
org.bukkit.craftbukkit.v1_12_R1.CraftWorld craftWorld = (org.bukkit.craftbukkit.v1_12_R1.CraftWorld) bukkitWorld;
worldServer = craftWorld.getHandle();
if (packet.a(worldServer) != null) {
break;
}
}
net.minecraft.server.v1_12_R1.Entity entity = packet.a(worldServer);
this.entity = entity.getBukkitEntity();
}
private void setupAction() {
net.minecraft.server.v1_12_R1.PacketPlayInUseEntity packet = (net.minecraft.server.v1_12_R1.PacketPlayInUseEntity) getRawPacket();
String name = packet.a().name();
this.action = EntityUseAction.valueOf(name);
}
}
@@ -1,52 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_13;
import net.minecraft.server.v1_13_R1.PacketPlayInAbilities;
import java.lang.reflect.Field;
public class WrappedPacketPlayInAbilities_1_13 {
private final Object packet;
private Field fieldE;
private Field fieldF;
public WrappedPacketPlayInAbilities_1_13(Object packet) {
this.packet = packet;
try {
this.fieldE = PacketPlayInAbilities.class.getDeclaredField("e");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
this.fieldF = PacketPlayInAbilities.class.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.b();
this.b = p.isFlying();
this.c = p.d();
this.d = p.e();
try {
this.e = fieldE.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
try {
this.f = fieldF.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
@@ -1,21 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_13;
import me.purplex.packetevents.enums.PlayerDigType;
import net.minecraft.server.v1_13_R1.PacketPlayInBlockDig;
public class WrappedPacketPlayInBlockDig_1_13 {
private final Object packet;
public WrappedPacketPlayInBlockDig_1_13(Object packet) {
this.packet = packet;
setupDigType();
}
private void setupDigType() {
PacketPlayInBlockDig p = (PacketPlayInBlockDig)packet;
String name = p.d().name();
this.digType = PlayerDigType.valueOf(name);
}
public PlayerDigType digType;
}
@@ -1,122 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_13;
import net.minecraft.server.v1_13_R1.PacketPlayInFlying;
import java.lang.reflect.Field;
public class WrappedPacketPlayInFlying_1_13 {
private final Object packet;
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
public WrappedPacketPlayInFlying_1_13(Object packet) {
this.packet = packet;
try {
setupFields();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
private void setupFields() throws IllegalAccessException {
PacketPlayInFlying p = (PacketPlayInFlying) packet;
this.hasPos = fieldHasPos.getBoolean(p);
this.hasLook = fieldHasLook.getBoolean(p);
if (hasPos) {
this.x = p.a(0.0D);
this.y = p.b(0.0D);
this.z = p.c(0.0D);
} else {
this.x = fieldX.getDouble(p);
this.y = fieldY.getDouble(p);
this.z = fieldZ.getDouble(p);
}
if (hasLook) {
this.yaw = p.a(0.0F);
this.pitch = p.b(0.0F);
}
else {
this.yaw = fieldYaw.getFloat(p);
this.pitch = fieldPitch.getFloat(p);
}
this.f = p.a();
}
public static class WrappedPacketPlayInPosition_1_13 extends WrappedPacketPlayInFlying_1_13{
public WrappedPacketPlayInPosition_1_13(Object packet) {
super(packet);
this.hasPos = true;
}
}
public static class WrappedPacketPlayInPosition_Look_1_13 extends WrappedPacketPlayInFlying_1_13 {
public WrappedPacketPlayInPosition_Look_1_13(Object packet) {
super(packet);
this.hasLook = true;
}
}
private static Field fieldHasPos;
private static Field fieldHasLook;
private static Field fieldX;
private static Field fieldY;
private static Field fieldZ;
private static Field fieldYaw;
private static Field fieldPitch;
static {
try {
fieldHasPos = PacketPlayInFlying.class.getDeclaredField("hasPos");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldHasLook = PacketPlayInFlying.class.getDeclaredField("hasLook");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldX = PacketPlayInFlying.class.getDeclaredField("x");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldY = PacketPlayInFlying.class.getDeclaredField("y");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldZ = PacketPlayInFlying.class.getDeclaredField("z");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldYaw = PacketPlayInFlying.class.getDeclaredField("yaw");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldPitch = PacketPlayInFlying.class.getDeclaredField("pitch");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
@@ -1,57 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_13;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import net.minecraft.server.v1_13_R1.PacketPlayInUseEntity;
import net.minecraft.server.v1_13_R1.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_13_R1.CraftWorld;
import org.bukkit.entity.Entity;
public class WrappedPacketPlayInUseEntity_1_13 {
private final ServerVersion version;
private Entity entity;
private EntityUseAction action;
private final Object packet;
public WrappedPacketPlayInUseEntity_1_13(Object packet) {
this.version = ServerVersion.getVersion();
this.packet = packet;
setupEntity();
setupAction();
}
private Object getRawPacket() {
return this.packet;
}
public Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
private void setupEntity() {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
WorldServer worldServer = null;
for (World bukkitWorld : Bukkit.getWorlds()) {
CraftWorld craftWorld = (CraftWorld) bukkitWorld;
worldServer = craftWorld.getHandle();
if (packet.a(worldServer) != null) {
break;
}
}
net.minecraft.server.v1_13_R1.Entity entity = packet.a(worldServer);
this.entity = entity.getBukkitEntity();
}
private void setupAction() {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
String name = packet.b().name();
this.action = EntityUseAction.valueOf(name);
}
}
@@ -1,52 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_13_2;
import net.minecraft.server.v1_13_R2.PacketPlayInAbilities;
import java.lang.reflect.Field;
public class WrappedPacketPlayInAbilities_1_13_2 {
private final Object packet;
private Field fieldE;
private Field fieldF;
public WrappedPacketPlayInAbilities_1_13_2(Object packet) {
this.packet = packet;
try {
this.fieldE = PacketPlayInAbilities.class.getDeclaredField("e");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
this.fieldF = PacketPlayInAbilities.class.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.b();
this.b = p.isFlying();
this.c = p.d();
this.d = p.e();
try {
this.e = fieldE.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
try {
this.f = fieldF.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
@@ -1,21 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_13_2;
import me.purplex.packetevents.enums.PlayerDigType;
import net.minecraft.server.v1_13_R2.PacketPlayInBlockDig;
public class WrappedPacketPlayInBlockDig_1_13_2 {
private final Object packet;
public WrappedPacketPlayInBlockDig_1_13_2(Object packet) {
this.packet = packet;
setupDigType();
}
private void setupDigType() {
PacketPlayInBlockDig p = (PacketPlayInBlockDig)packet;
String name = p.d().name();
this.digType = PlayerDigType.valueOf(name);
}
public PlayerDigType digType;
}
@@ -1,122 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_13_2;
import net.minecraft.server.v1_13_R2.PacketPlayInFlying;
import java.lang.reflect.Field;
public class WrappedPacketPlayInFlying_1_13_2 {
private final Object packet;
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
public WrappedPacketPlayInFlying_1_13_2(Object packet) {
this.packet = packet;
try {
setupFields();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
private void setupFields() throws IllegalAccessException {
PacketPlayInFlying p = (PacketPlayInFlying) packet;
this.hasPos = fieldHasPos.getBoolean(p);
this.hasLook = fieldHasLook.getBoolean(p);
if (hasPos) {
this.x = p.a(0.0D);
this.y = p.b(0.0D);
this.z = p.c(0.0D);
} else {
this.x = fieldX.getDouble(p);
this.y = fieldY.getDouble(p);
this.z = fieldZ.getDouble(p);
}
if (hasLook) {
this.yaw = p.a(0.0F);
this.pitch = p.b(0.0F);
}
else {
this.yaw = fieldYaw.getFloat(p);
this.pitch = fieldPitch.getFloat(p);
}
this.f = p.a();
}
public static class WrappedPacketPlayInPosition_1_13_2 extends WrappedPacketPlayInFlying_1_13_2 {
public WrappedPacketPlayInPosition_1_13_2(Object packet) {
super(packet);
this.hasPos = true;
}
}
public static class WrappedPacketPlayInPosition_Look_1_13_2 extends WrappedPacketPlayInFlying_1_13_2 {
public WrappedPacketPlayInPosition_Look_1_13_2(Object packet) {
super(packet);
this.hasLook = true;
}
}
private static Field fieldHasPos;
private static Field fieldHasLook;
private static Field fieldX;
private static Field fieldY;
private static Field fieldZ;
private static Field fieldYaw;
private static Field fieldPitch;
static {
try {
fieldHasPos = PacketPlayInFlying.class.getDeclaredField("hasPos");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldHasLook = PacketPlayInFlying.class.getDeclaredField("hasLook");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldX = PacketPlayInFlying.class.getDeclaredField("x");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldY = PacketPlayInFlying.class.getDeclaredField("y");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldZ = PacketPlayInFlying.class.getDeclaredField("z");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldYaw = PacketPlayInFlying.class.getDeclaredField("yaw");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldPitch = PacketPlayInFlying.class.getDeclaredField("pitch");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
@@ -1,56 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_13_2;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_13_R2.CraftWorld;
import org.bukkit.entity.Entity;
import net.minecraft.server.v1_13_R2.PacketPlayInUseEntity;
import net.minecraft.server.v1_13_R2.WorldServer;
public class WrappedPacketPlayInUseEntity_1_13_2 {
private final ServerVersion version;
private Entity entity;
private EntityUseAction action;
private final Object packet;
public WrappedPacketPlayInUseEntity_1_13_2(Object packet) {
this.version = ServerVersion.getVersion();
this.packet = packet;
setupEntity();
setupAction();
}
private Object getRawPacket() {
return this.packet;
}
public Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
private void setupEntity() {
PacketPlayInUseEntity packet = (net.minecraft.server.v1_13_R2.PacketPlayInUseEntity) getRawPacket();
WorldServer worldServer = null;
for (World bukkitWorld : Bukkit.getWorlds()) {
CraftWorld craftWorld = (CraftWorld) bukkitWorld;
worldServer = craftWorld.getHandle();
if (packet.a(worldServer) != null) {
break;
}
}
net.minecraft.server.v1_13_R2.Entity entity = packet.a(worldServer);
this.entity = entity.getBukkitEntity();
}
private void setupAction() {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
String name = packet.b().name();
this.action = EntityUseAction.valueOf(name);
}
}
@@ -1,52 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_14;
import net.minecraft.server.v1_14_R1.PacketPlayInAbilities;
import java.lang.reflect.Field;
public class WrappedPacketPlayInAbilities_1_14 {
private final Object packet;
private Field fieldE;
private Field fieldF;
public WrappedPacketPlayInAbilities_1_14(Object packet) {
this.packet = packet;
try {
this.fieldE = PacketPlayInAbilities.class.getDeclaredField("e");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
this.fieldF = PacketPlayInAbilities.class.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.b();
this.b = p.isFlying();
this.c = p.d();
this.d = p.e();
try {
this.e = fieldE.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
try {
this.f = fieldF.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
@@ -1,21 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_14;
import me.purplex.packetevents.enums.PlayerDigType;
import net.minecraft.server.v1_14_R1.PacketPlayInBlockDig;
public class WrappedPacketPlayInBlockDig_1_14 {
private final Object packet;
public WrappedPacketPlayInBlockDig_1_14(Object packet) {
this.packet = packet;
setupDigType();
}
private void setupDigType() {
PacketPlayInBlockDig p = (PacketPlayInBlockDig)packet;
String name = p.d().name();
this.digType = PlayerDigType.valueOf(name);
}
public PlayerDigType digType;
}
@@ -1,123 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_14;
import net.minecraft.server.v1_14_R1.PacketPlayInFlying;
import java.lang.reflect.Field;
public class WrappedPacketPlayInFlying_1_14 {
private final Object packet;
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
public WrappedPacketPlayInFlying_1_14(Object packet) {
this.packet = packet;
try {
setupFields();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
private void setupFields() throws IllegalAccessException {
PacketPlayInFlying p = (PacketPlayInFlying) packet;
this.hasPos = fieldHasPos.getBoolean(p);
this.hasLook = fieldHasLook.getBoolean(p);
if (hasPos) {
this.x = p.a(0.0D);
this.y = p.b(0.0D);
this.z = p.c(0.0D);
} else {
this.x = fieldX.getDouble(p);
this.y = fieldY.getDouble(p);
this.z = fieldZ.getDouble(p);
}
if (hasLook) {
this.yaw = p.a(0.0F);
this.pitch = p.b(0.0F);
}
else {
this.yaw = fieldYaw.getFloat(p);
this.pitch = fieldPitch.getFloat(p);
}
this.f = p.a();
}
public static class WrappedPacketPlayInPosition_1_14 extends WrappedPacketPlayInFlying_1_14 {
public WrappedPacketPlayInPosition_1_14(Object packet) {
super(packet);
this.hasPos = true;
}
}
public static class WrappedPacketPlayInPosition_Look_1_14 extends WrappedPacketPlayInFlying_1_14 {
public WrappedPacketPlayInPosition_Look_1_14(Object packet) {
super(packet);
this.hasLook = true;
}
}
private static Field fieldHasPos;
private static Field fieldHasLook;
private static Field fieldX;
private static Field fieldY;
private static Field fieldZ;
private static Field fieldYaw;
private static Field fieldPitch;
static {
try {
fieldHasPos = PacketPlayInFlying.class.getDeclaredField("hasPos");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldHasLook = PacketPlayInFlying.class.getDeclaredField("hasLook");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldX = PacketPlayInFlying.class.getDeclaredField("x");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldY = PacketPlayInFlying.class.getDeclaredField("y");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldZ = PacketPlayInFlying.class.getDeclaredField("z");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldYaw = PacketPlayInFlying.class.getDeclaredField("yaw");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldPitch = PacketPlayInFlying.class.getDeclaredField("pitch");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
@@ -1,56 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_14;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import net.minecraft.server.v1_14_R1.PacketPlayInUseEntity;
import net.minecraft.server.v1_14_R1.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Entity;
public class WrappedPacketPlayInUseEntity_1_14 {
private final ServerVersion version;
private Entity entity;
private EntityUseAction action;
private final Object packet;
public WrappedPacketPlayInUseEntity_1_14(Object packet) {
this.version = ServerVersion.getVersion();
this.packet = packet;
setupEntity();
setupAction();
}
private Object getRawPacket() {
return this.packet;
}
public Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
private void setupEntity() {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
WorldServer worldServer = null;
for (World bukkitWorld : Bukkit.getWorlds()) {
org.bukkit.craftbukkit.v1_14_R1.CraftWorld craftWorld = (org.bukkit.craftbukkit.v1_14_R1.CraftWorld) bukkitWorld;
worldServer = craftWorld.getHandle();
if (packet.a(worldServer) != null) {
break;
}
}
net.minecraft.server.v1_14_R1.Entity entity = packet.a(worldServer);
this.entity = entity.getBukkitEntity();
}
private void setupAction() {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
String name = packet.b().name();
this.action = EntityUseAction.valueOf(name);
}
}
@@ -1,52 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_15;
import net.minecraft.server.v1_15_R1.PacketPlayInAbilities;
import java.lang.reflect.Field;
public class WrappedPacketPlayInAbilities_1_15 {
private final Object packet;
private Field fieldE;
private Field fieldF;
public WrappedPacketPlayInAbilities_1_15(Object packet) {
this.packet = packet;
try {
this.fieldE = PacketPlayInAbilities.class.getDeclaredField("e");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
this.fieldF = PacketPlayInAbilities.class.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.b();
this.b = p.isFlying();
this.c = p.d();
this.d = p.e();
try {
this.e = fieldE.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
try {
this.f = fieldF.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
@@ -1,21 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_15;
import me.purplex.packetevents.enums.PlayerDigType;
import net.minecraft.server.v1_15_R1.PacketPlayInBlockDig;
public class WrappedPacketPlayInBlockDig_1_15 {
private final Object packet;
public WrappedPacketPlayInBlockDig_1_15(Object packet) {
this.packet = packet;
setupDigType();
}
private void setupDigType() {
PacketPlayInBlockDig p = (PacketPlayInBlockDig)packet;
String name = p.d().name();
this.digType = PlayerDigType.valueOf(name);
}
public PlayerDigType digType;
}
@@ -1,122 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_15;
import net.minecraft.server.v1_15_R1.PacketPlayInFlying;
import java.lang.reflect.Field;
public class WrappedPacketPlayInFlying_1_15 {
private final Object packet;
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
public WrappedPacketPlayInFlying_1_15(Object packet) {
this.packet = packet;
try {
setupFields();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
private void setupFields() throws IllegalAccessException {
PacketPlayInFlying p = (PacketPlayInFlying) packet;
this.hasPos = fieldHasPos.getBoolean(p);
this.hasLook = fieldHasLook.getBoolean(p);
if (hasPos) {
this.x = p.a(0.0D);
this.y = p.b(0.0D);
this.z = p.c(0.0D);
} else {
this.x = fieldX.getDouble(p);
this.y = fieldY.getDouble(p);
this.z = fieldZ.getDouble(p);
}
if (hasLook) {
this.yaw = p.a(0.0F);
this.pitch = p.b(0.0F);
}
else {
this.yaw = fieldYaw.getFloat(p);
this.pitch = fieldPitch.getFloat(p);
}
this.f = p.a();
}
public static class WrappedPacketPlayInPosition_1_15 extends WrappedPacketPlayInFlying_1_15 {
public WrappedPacketPlayInPosition_1_15(Object packet) {
super(packet);
this.hasPos = true;
}
}
public static class WrappedPacketPlayInPosition_Look_1_15 extends WrappedPacketPlayInFlying_1_15 {
public WrappedPacketPlayInPosition_Look_1_15(Object packet) {
super(packet);
this.hasLook = true;
}
}
private static Field fieldHasPos;
private static Field fieldHasLook;
private static Field fieldX;
private static Field fieldY;
private static Field fieldZ;
private static Field fieldYaw;
private static Field fieldPitch;
static {
try {
fieldHasPos = PacketPlayInFlying.class.getDeclaredField("hasPos");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldHasLook = PacketPlayInFlying.class.getDeclaredField("hasLook");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldX = PacketPlayInFlying.class.getDeclaredField("x");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldY = PacketPlayInFlying.class.getDeclaredField("y");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldZ = PacketPlayInFlying.class.getDeclaredField("z");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldYaw = PacketPlayInFlying.class.getDeclaredField("yaw");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
fieldPitch = PacketPlayInFlying.class.getDeclaredField("pitch");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
@@ -1,57 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_15;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import net.minecraft.server.v1_15_R1.PacketPlayInUseEntity;
import net.minecraft.server.v1_15_R1.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
import org.bukkit.entity.Entity;
public class WrappedPacketPlayInUseEntity_1_15 {
private final ServerVersion version;
private Entity entity;
private EntityUseAction action;
private final Object packet;
public WrappedPacketPlayInUseEntity_1_15(Object packet) {
this.version = ServerVersion.getVersion();
this.packet = packet;
setupEntity();
setupAction();
}
private Object getRawPacket() {
return this.packet;
}
public Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
private void setupEntity() {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
WorldServer worldServer = null;
for (World bukkitWorld : Bukkit.getWorlds()) {
CraftWorld craftWorld = (CraftWorld) bukkitWorld;
worldServer = craftWorld.getHandle();
if (packet.a(worldServer) != null) {
break;
}
}
net.minecraft.server.v1_15_R1.Entity entity = packet.a(worldServer);
this.entity = entity.getBukkitEntity();
}
private void setupAction() {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
String name = packet.b().name();
this.action = EntityUseAction.valueOf(name);
}
}
@@ -1,31 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_7_10;
import net.minecraft.server.v1_7_R4.PacketPlayInAbilities;
public class WrappedPacketPlayInAbilities_1_7_10 {
private final Object packet;
public WrappedPacketPlayInAbilities_1_7_10(Object packet) {
this.packet = packet;
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.c();
this.b = p.isFlying();
this.c = p.e();
this.d = p.f();
this.e = p.g();
this.f = p.h();
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
@@ -1,21 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_7_10;
import me.purplex.packetevents.enums.PlayerDigType;
import net.minecraft.server.v1_7_R4.PacketPlayInBlockDig;
public class WrappedPacketPlayInBlockDig_1_7_10 {
private final Object packet;
public WrappedPacketPlayInBlockDig_1_7_10(Object packet) {
this.packet = packet;
setupDigType();
}
private void setupDigType() {
PacketPlayInBlockDig p = (PacketPlayInBlockDig)packet;
int status = p.e();
this.digType = PlayerDigType.values()[status];
}
public PlayerDigType digType;
}
@@ -1,49 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_7_10;
import net.minecraft.server.v1_7_R4.PacketPlayInFlying;
public class WrappedPacketPlayInFlying_1_7_10 {
private final Object packet;
public WrappedPacketPlayInFlying_1_7_10(Object packet) {
this.packet = packet;
setupFields();
}
public double x;
public double y;
public double z;
public float yaw;
public float pitch;
public boolean f;
public boolean hasPos;
public boolean hasLook;
private void setupFields() {
PacketPlayInFlying p = (PacketPlayInFlying)packet;
this.x = p.c();
this.y = p.d();
this.z = p.e();
this.yaw = p.g();
this.pitch = p.h();
this.f = p.i();
}
public static class WrappedPacketPlayInPosition_1_7_10 extends WrappedPacketPlayInFlying_1_7_10 {
public WrappedPacketPlayInPosition_1_7_10(Object packet) {
super(packet);
this.hasPos = true;
}
}
public static class WrappedPacketPlayInPosition_Look_1_7_10 extends WrappedPacketPlayInFlying_1_7_10 {
public WrappedPacketPlayInPosition_Look_1_7_10(Object packet) {
super(packet);
this.hasLook = true;
}
}
}
@@ -1,58 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_7_10;
import me.purplex.packetevents.enums.EntityUseAction;
import me.purplex.packetevents.enums.ServerVersion;
import net.minecraft.server.v1_7_R4.Entity;
import net.minecraft.server.v1_7_R4.PacketPlayInUseEntity;
import net.minecraft.server.v1_7_R4.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
public class WrappedPacketPlayInUseEntity_1_7_10 {
private final ServerVersion version;
private org.bukkit.entity.Entity entity;
private EntityUseAction action;
private final Object packet;
public WrappedPacketPlayInUseEntity_1_7_10(Object packet) {
this.version = ServerVersion.getVersion();
this.packet = packet;
setupEntity();
setupAction();
}
private Object getRawPacket() {
return this.packet;
}
public org.bukkit.entity.Entity getEntity() {
return entity;
}
public EntityUseAction getEntityUseAction() {
return action;
}
private void setupEntity() {
if (version == ServerVersion.v_1_8) {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
WorldServer worldServer = null;
for (World bukkitWorld : Bukkit.getWorlds()) {
CraftWorld craftWorld = (CraftWorld) bukkitWorld;
worldServer = craftWorld.getHandle();
if (packet.a(worldServer) != null) {
break;
}
}
Entity entity = packet.a(worldServer);
this.entity = entity.getBukkitEntity();
}
}
private void setupAction() {
PacketPlayInUseEntity packet = (PacketPlayInUseEntity) getRawPacket();
String name = packet.c().name();
this.action = EntityUseAction.valueOf(name);
}
}
@@ -1,52 +0,0 @@
package me.purplex.packetevents.packetwrappers.in._1_8;
import net.minecraft.server.v1_8_R1.PacketPlayInAbilities;
import java.lang.reflect.Field;
public class WrappedPacketPlayInAbilities_1_8 {
private final Object packet;
private Field fieldE;
private Field fieldF;
public WrappedPacketPlayInAbilities_1_8(Object packet) {
this.packet = packet;
try {
this.fieldE = PacketPlayInAbilities.class.getDeclaredField("e");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
try {
this.fieldF = PacketPlayInAbilities.class.getDeclaredField("f");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
setupFields();
}
private void setupFields() {
PacketPlayInAbilities p = (PacketPlayInAbilities) packet;
this.a = p.a();
this.b = p.isFlying();
this.c = p.c();
this.d = p.d();
try {
this.e = fieldE.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
try {
this.f = fieldF.getFloat(p);
} catch (IllegalAccessException illegalAccessException) {
illegalAccessException.printStackTrace();
}
}
public boolean a;
public boolean b;
public boolean c;
public boolean d;
public float e;
public float f;
}
Loaded 100 of 120 files, more files were not shown because too many files have changed in this diff. Show more