Refactor login event to use UserLoginEvent() with PE, prevents unneccessary stacktrace from PE join errors

This commit is contained in:
Axionize committed 2025-03-16 00:56:55 -04:00
1 parent a59ff6e625
commit 715013d90f
15 files changed
+56 -84

No files matched your search

+13
View File
@@ -37,6 +37,19 @@ jobs:
with:
token: ${{ secrets.GITHUB_TOKEN }}
# Temporary tasks so built jar works because PacketEvents won't merge my fixes for their broken fabric support
- name: Clone Axionize's PacketEvents Repository
run: |
git clone -b fix/fabric-events https://github.com/Axionize/packetevents.git packetevents
cd packetevents
echo "Cloned PacketEvents repository"
- name: Build and Publish PacketEvents to Maven Local
uses: gradle/actions/setup-gradle@v3
with:
build-root-directory: packetevents
arguments: publishToMavenLocal
- name: Update version in build.gradle.kts
id: update_version
run: |
+2 -2
View File
@@ -40,9 +40,9 @@ dependencies {
shadeThisThing(implementation("org.kohsuke:github-api:1.326")!!)
if (shadePE) {
shadeThisThing(implementation("com.github.retrooper:packetevents-spigot:2.7.0-SNAPSHOT")!!)
shadeThisThing(implementation("com.github.retrooper:packetevents-spigot:2.7.1-SNAPSHOT")!!)
} else {
compileOnly("com.github.retrooper:packetevents-spigot:2.7.0-SNAPSHOT")
compileOnly("com.github.retrooper:packetevents-spigot:2.7.1-SNAPSHOT")
}
shadeThisThing(implementation("org.incendo:cloud-paper:2.0.0-beta.10")!!)
shadeThisThing(implementation("org.incendo:cloud-core:2.0.0")!!)
@@ -132,8 +132,7 @@ public class BukkitBase extends Base {
protected void registerPlatformListeners() {
registerPluginListeners(
new BukkitPlayerDamageListener(),
new BukkitPlayerKnockbackListener(),
new BukkitPlayerJoinQuitListener()
new BukkitPlayerKnockbackListener()
);
}
@@ -1,36 +0,0 @@
package me.caseload.knockbacksync.listener.bukkit;
import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.manager.server.ServerVersion;
import me.caseload.knockbacksync.listener.PlayerJoinQuitListener;
import me.caseload.knockbacksync.player.BukkitPlayer;
import me.caseload.knockbacksync.player.PlayerData;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class BukkitPlayerJoinQuitListener extends PlayerJoinQuitListener implements Listener {
public static List<Object> chunkMapList = new ArrayList<>();
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
onPlayerJoin(new PlayerData(new BukkitPlayer(event.getPlayer())));
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
onPlayerQuit(event.getPlayer().getUniqueId());
}
}
@@ -31,7 +31,7 @@ public class BukkitPlayer implements PlatformPlayer {
private static Class<?> craftPlayerClass;
private static Method getHandleMethod;
private static Method getAttackStrengthScaleMethod;
private static ServerVersion currentVersion = PacketEvents.getAPI().getServerManager().getVersion();
private static final ServerVersion currentVersion = PacketEvents.getAPI().getServerManager().getVersion();
// 1.12.2 support
static {
@@ -3,6 +3,7 @@ package me.caseload.knockbacksync.world;
import me.caseload.knockbacksync.player.BukkitPlayer;
import me.caseload.knockbacksync.player.PlatformPlayer;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.Collection;
import java.util.UUID;
@@ -19,4 +20,9 @@ public class BukkitServer implements PlatformServer {
public PlatformPlayer getPlayer(UUID uuid) {
return new BukkitPlayer(Bukkit.getPlayer(uuid));
}
@Override
public PlatformPlayer getPlayer(Object nativePlatformPlayer) {
return new BukkitPlayer((Player) nativePlatformPlayer);
}
}
+2 -2
View File
@@ -13,9 +13,9 @@ dependencies {
// Shaded in or bundled by platform-specific code
if (shadePE) {
implementation("com.github.retrooper:packetevents-api:2.7.0-SNAPSHOT")
implementation("com.github.retrooper:packetevents-api:2.7.1-SNAPSHOT")
} else {
compileOnly("com.github.retrooper:packetevents-api:2.7.0-SNAPSHOT")
compileOnly("com.github.retrooper:packetevents-api:2.7.1-SNAPSHOT")
}
implementation("org.yaml:snakeyaml:2.0")
@@ -13,10 +13,7 @@ import me.caseload.knockbacksync.command.subcommand.ToggleOffGroundSubcommand;
import me.caseload.knockbacksync.event.Event;
import me.caseload.knockbacksync.event.EventBus;
import me.caseload.knockbacksync.event.OptimizedEventBus;
import me.caseload.knockbacksync.listener.packetevents.AttributeChangeListener;
import me.caseload.knockbacksync.listener.packetevents.ClientBrandListener;
import me.caseload.knockbacksync.listener.packetevents.PingReceiveListener;
import me.caseload.knockbacksync.listener.packetevents.PingSendListener;
import me.caseload.knockbacksync.listener.packetevents.*;
import me.caseload.knockbacksync.manager.ConfigManager;
import me.caseload.knockbacksync.permission.PermissionChecker;
import me.caseload.knockbacksync.scheduler.SchedulerAdapter;
@@ -119,6 +116,7 @@ public abstract class Base {
new AttributeChangeListener(),
new PingSendListener(),
new PingReceiveListener(),
new PacketPlayerJoinQuit(),
new ClientBrandListener()
);
Event.setEventBus(eventBus);
@@ -1,14 +1,33 @@
package me.caseload.knockbacksync.listener;
package me.caseload.knockbacksync.listener.packetevents;
import com.github.retrooper.packetevents.event.PacketListenerAbstract;
import com.github.retrooper.packetevents.event.UserDisconnectEvent;
import com.github.retrooper.packetevents.event.UserLoginEvent;
import com.google.common.base.Preconditions;
import me.caseload.knockbacksync.Base;
import me.caseload.knockbacksync.manager.PlayerDataManager;
import me.caseload.knockbacksync.player.PlatformPlayer;
import me.caseload.knockbacksync.player.PlayerData;
import me.caseload.knockbacksync.util.ChatUtil;
import org.jetbrains.annotations.NotNull;
import java.util.UUID;
public abstract class PlayerJoinQuitListener {
public class PacketPlayerJoinQuit extends PacketListenerAbstract {
@Override
public void onUserLogin(UserLoginEvent event) {
Object nativePlayerObject = event.getPlayer();
Preconditions.checkArgument(nativePlayerObject != null);
@NotNull PlatformPlayer platformPlayer = Base.INSTANCE.getPlatformServer().getPlayer(nativePlayerObject);
onPlayerJoin(new PlayerData(platformPlayer));
}
@Override
public void onUserDisconnect(UserDisconnectEvent event) {
onPlayerQuit(event.getUser().getUUID());
}
public void onPlayerJoin(PlayerData player) {
PlayerDataManager.addPlayerData(player.getUuid(), player);
PlatformPlayer platformPlayer = player.getPlatformPlayer();
@@ -354,7 +354,7 @@ public class PlayerData {
@KBSyncEventHandler
public void onToggledEvent(ToggleOnOffEvent event) {
if (event.getStatus() == false) {
if (!event.getStatus()) {
transactionsSent.clear();
keepaliveMap.clear();
}
@@ -10,18 +10,5 @@ public interface PlatformServer {
PlatformPlayer getPlayer(UUID uuid);
// switch (KnockbackSyncBase.INSTANCE.platform) {
// case BUKKIT:
// case FOLIA:
// return Bukkit.getOnlinePlayers().stream()
// .map(BukkitPlayer::new)
// .collect(Collectors.toList());
// case FABRIC:
// MinecraftServer server = (MinecraftServer) FabricLoader.getInstance().getGameInstance();
// return server.getPlayerList().getPlayers().stream()
// .map(FabricPlayer::new)
// .collect(Collectors.toList());
// default:
// throw new IllegalStateException("Unexpected platform: " + KnockbackSyncBase.INSTANCE.platform);
// }
PlatformPlayer getPlayer(Object nativePlatformPlayer);
}
+1 -1
View File
@@ -44,7 +44,7 @@ dependencies {
modImplementation("net.fabricmc.fabric-api:fabric-api:${rootProject.property("fabric_version")}")
include(modImplementation("me.lucko:fabric-permissions-api:0.3.1")!!)
include(modImplementation("com.github.retrooper:packetevents-fabric:2.7.0-SNAPSHOT")!!)
include(modImplementation("com.github.retrooper:packetevents-fabric:2.7.1-SNAPSHOT")!!)
include(modImplementation("org.incendo:cloud-fabric:2.0.0-beta.9")!!)
include(implementation("org.yaml:snakeyaml:2.0")!!)
@@ -5,7 +5,6 @@ import io.github.retrooper.packetevents.factory.fabric.FabricPacketEventsAPI;
import lombok.Getter;
import me.caseload.knockbacksync.entity.EntityTickManager;
import me.caseload.knockbacksync.listener.fabric.FabricPlayerDamageListener;
import me.caseload.knockbacksync.listener.fabric.FabricPlayerJoinQuitListener;
import me.caseload.knockbacksync.listener.fabric.FabricPlayerKnockbackListener;
import me.caseload.knockbacksync.listener.fabric.FabricTickRateChangeListener;
import me.caseload.knockbacksync.manager.ConfigManager;
@@ -85,7 +84,6 @@ public class FabricBase extends Base {
@Override
protected void registerPlatformListeners() {
new FabricPlayerJoinQuitListener().register();
new FabricPlayerDamageListener().register();
new FabricPlayerKnockbackListener().register();
new FabricTickRateChangeListener().register();
@@ -1,17 +0,0 @@
package me.caseload.knockbacksync.listener.fabric;
import me.caseload.knockbacksync.listener.PlayerJoinQuitListener;
import me.caseload.knockbacksync.player.FabricPlayer;
import me.caseload.knockbacksync.player.PlayerData;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
public class FabricPlayerJoinQuitListener extends PlayerJoinQuitListener {
public void register() {
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> {
onPlayerJoin(new PlayerData(new FabricPlayer(handler.player)));
});
ServerPlayConnectionEvents.DISCONNECT.register(((handler, server) -> {
onPlayerQuit(handler.player.getUUID());
}));
}
}
@@ -3,6 +3,7 @@ package me.caseload.knockbacksync.world;
import me.caseload.knockbacksync.FabricLoaderMod;
import me.caseload.knockbacksync.player.FabricPlayer;
import me.caseload.knockbacksync.player.PlatformPlayer;
import net.minecraft.server.level.ServerPlayer;
import java.util.Collection;
import java.util.UUID;
@@ -20,4 +21,8 @@ public class FabricServer implements PlatformServer {
return new FabricPlayer(FabricLoaderMod.getServer().getPlayerList().getPlayer(uuid));
}
@Override
public PlatformPlayer getPlayer(Object nativePlatformPlayer) {
return new FabricPlayer((ServerPlayer) nativePlatformPlayer);
}
}