Skip to content

Commit 25411ba

Browse files
committed
Common:
- Major internal refactor to use PE user object Folia: - Fix sometimes NPEing on Disconnect Fabric: - Fix default client brand
1 parent 715013d commit 25411ba

File tree

15 files changed

+77
-76
lines changed

15 files changed

+77
-76
lines changed

bukkit/src/main/java/me/caseload/knockbacksync/player/BukkitPlayer.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.github.retrooper.packetevents.protocol.player.User;
66
import com.github.retrooper.packetevents.protocol.world.BoundingBox;
77
import com.github.retrooper.packetevents.util.Vector3d;
8+
import com.google.common.base.Preconditions;
89
import me.caseload.knockbacksync.BukkitBase;
910
import me.caseload.knockbacksync.Platform;
1011
import me.caseload.knockbacksync.world.FoliaWorld;
@@ -25,6 +26,7 @@
2526

2627
public class BukkitPlayer implements PlatformPlayer {
2728
public final Player bukkitPlayer;
29+
public final User user;
2830
private String clientBrand = "vanilla";
2931

3032
// Reflection variables
@@ -74,6 +76,8 @@ public class BukkitPlayer implements PlatformPlayer {
7476

7577
public BukkitPlayer(Player player) {
7678
this.bukkitPlayer = player;
79+
this.user = PacketEvents.getAPI().getPlayerManager().getUser(bukkitPlayer);
80+
Preconditions.checkArgument(user != null);
7781
}
7882

7983
@Override
@@ -216,7 +220,7 @@ public BoundingBox getBoundingBox() {
216220

217221
@Override
218222
public User getUser() {
219-
return PacketEvents.getAPI().getPlayerManager().getUser(bukkitPlayer);
223+
return this.user;
220224
}
221225

222226
@Override

common/src/main/java/me/caseload/knockbacksync/command/subcommand/PingCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,12 @@ private String getPingMessage(UUID senderUUID, UUID targetUUID) {
8787
}
8888

8989
if (isSelf) {
90-
playerData = PlayerDataManager.getPlayerData(senderUUID);
90+
playerData = PlayerDataManager.getPlayerData(Base.INSTANCE.getPlatformServer().getPlayer(senderUUID).getUser());
9191
if (playerData == null) {
9292
return ChatUtil.translateAlternateColorCodes('&', knockbacksyncDisabledForYouMessage);
9393
}
9494
} else {
95-
playerData = PlayerDataManager.getPlayerData(targetUUID);
95+
playerData = PlayerDataManager.getPlayerData(Base.INSTANCE.getPlatformServer().getPlayer(targetUUID).getUser());
9696
if (playerData == null) {
9797
return ChatUtil.translateAlternateColorCodes('&', knockbacksyncDisabledForTargetMessage);
9898
}

common/src/main/java/me/caseload/knockbacksync/command/subcommand/StatusCommand.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ public void register(CommandManager<Sender> manager) {
8686

8787
private void showPlayerStatus(Sender sender, PlatformPlayer target) {
8888
boolean globalStatus = configManager.isToggled();
89-
UUID uuid = target.getUUID();
90-
boolean playerStatus = PlayerDataManager.containsPlayerData(uuid);
89+
boolean playerStatus = PlayerDataManager.containsPlayerData(target.getUser());
9190

9291
String statusMessage;
9392
if (!globalStatus) {

common/src/main/java/me/caseload/knockbacksync/command/subcommand/ToggleCommand.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.caseload.knockbacksync.command.subcommand;
22
import com.github.retrooper.packetevents.protocol.player.Combat;
3+
import com.github.retrooper.packetevents.protocol.player.User;
34
import me.caseload.knockbacksync.Base;
45
import me.caseload.knockbacksync.ConfigWrapper;
56
import me.caseload.knockbacksync.command.generic.BuilderCommand;
@@ -115,9 +116,9 @@ private static void toggleGlobalKnockback(ConfigManager configManager, Sender se
115116
}
116117

117118
private static void togglePlayerKnockback(PlatformPlayer target, ConfigManager configManager, Sender sender) {
118-
UUID uuid = target.getUUID();
119+
User user = target.getUser();
119120

120-
if (PlayerDataManager.shouldExempt(uuid)) {
121+
if (PlayerDataManager.shouldExempt(target.getUUID())) {
121122
String message = ChatUtil.translateAlternateColorCodes('&',
122123
configManager.getPlayerIneligibleMessage()
123124
).replace("%player%", target.getName());
@@ -126,14 +127,14 @@ private static void togglePlayerKnockback(PlatformPlayer target, ConfigManager c
126127
return;
127128
}
128129

129-
boolean hasPlayerData = PlayerDataManager.containsPlayerData(uuid);
130+
boolean hasPlayerData = PlayerDataManager.containsPlayerData(user);
130131
if (hasPlayerData) {
131-
if (CombatManager.getPlayers().contains(uuid)) {
132-
CombatManager.removePlayer(uuid);
132+
if (CombatManager.getPlayers().contains(user)) {
133+
CombatManager.removePlayer(user);
133134
}
134-
PlayerDataManager.removePlayerData(uuid);
135+
PlayerDataManager.removePlayerData(user);
135136
} else {
136-
PlayerDataManager.addPlayerData(uuid, new PlayerData(Base.INSTANCE.getPlatformServer().getPlayer(uuid)));
137+
PlayerDataManager.addPlayerData(user, target);
137138
}
138139

139140
String message = ChatUtil.translateAlternateColorCodes('&',

common/src/main/java/me/caseload/knockbacksync/listener/PlayerDamageListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public void onPlayerDamage(PlatformPlayer victim, PlatformPlayer attacker) {
1010
if (!Base.INSTANCE.getConfigManager().isToggled())
1111
return;
1212

13-
PlayerData playerData = PlayerDataManager.getPlayerData(victim.getUUID());
13+
PlayerData playerData = PlayerDataManager.getPlayerData(victim.getUser());
1414
if (playerData == null)
1515
return;
1616

common/src/main/java/me/caseload/knockbacksync/listener/PlayerKnockbackListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public void onPlayerVelocity(PlatformPlayer victim, Vector3d velocity) {
1414
if (!Base.INSTANCE.getConfigManager().isToggled())
1515
return;
1616

17-
PlayerData victimPlayerData = PlayerDataManager.getPlayerData(victim.getUUID());
17+
PlayerData victimPlayerData = PlayerDataManager.getPlayerData(victim.getUser());
1818
if (victimPlayerData == null)
1919
return;
2020

common/src/main/java/me/caseload/knockbacksync/listener/packetevents/AttributeChangeListener.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.github.retrooper.packetevents.protocol.attribute.Attributes;
66
import com.github.retrooper.packetevents.protocol.packettype.PacketType;
77
import com.github.retrooper.packetevents.protocol.player.ClientVersion;
8+
import com.github.retrooper.packetevents.protocol.player.User;
89
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerUpdateAttributes;
910
import me.caseload.knockbacksync.Base;
1011
import me.caseload.knockbacksync.manager.PlayerDataManager;
@@ -36,17 +37,16 @@ public void onPacketSend(PacketSendEvent event) {
3637

3738
WrapperPlayServerUpdateAttributes packet = new WrapperPlayServerUpdateAttributes(event);
3839

39-
UUID uuid = event.getUser().getUUID();
40-
if (!PlayerDataManager.containsPlayerData(uuid))
41-
return;
40+
User user = event.getUser();
41+
if (!PlayerDataManager.containsPlayerData(user)) return;
4242

4343
// Get the attributes from the packet
4444
for (WrapperPlayServerUpdateAttributes.Property property : packet.getProperties()) {
4545
// You can now check for specific attributes
4646
if (property.getAttribute().equals(Attributes.GENERIC_GRAVITY)) {
47-
onPlayerGravityChange(uuid, calculateValueWithModifiers(property));
47+
onPlayerGravityChange(user, calculateValueWithModifiers(property));
4848
} else if (property.getAttribute().equals(Attributes.GENERIC_KNOCKBACK_RESISTANCE)) {
49-
onPlayerKnockBackChange(uuid, calculateValueWithModifiers(property));
49+
onPlayerKnockBackChange(user, calculateValueWithModifiers(property));
5050
}
5151
}
5252
}
@@ -87,17 +87,17 @@ public double calculateValueWithModifiers(WrapperPlayServerUpdateAttributes.Prop
8787

8888
// Yes this is not properly latency compensated, that would require including a proper simulation engine
8989
// Laggy players will just have to deal with being on the wrong gravity for a few hundred ms, too bad!
90-
public void onPlayerGravityChange(UUID uuid, double newGravity) {
91-
PlayerData playerData = PlayerDataManager.getPlayerData(uuid);
90+
public void onPlayerGravityChange(User user, double newGravity) {
91+
PlayerData playerData = PlayerDataManager.getPlayerData(user);
9292
if (playerData.getClientVersion().isNewerThanOrEquals(ClientVersion.V_1_20_5)) {
9393
playerData.setGravityAttribute(newGravity);
9494
} else {
9595
currentGravity = defaultGravity;
9696
}
9797
}
9898

99-
private void onPlayerKnockBackChange(UUID uuid, double newKnockbackResistance) {
100-
PlayerData playerData = PlayerDataManager.getPlayerData(uuid);
99+
private void onPlayerKnockBackChange(User user, double newKnockbackResistance) {
100+
PlayerData playerData = PlayerDataManager.getPlayerData(user);
101101
playerData.setKnockbackResistanceAttribute(newKnockbackResistance);
102102
}
103103
}

common/src/main/java/me/caseload/knockbacksync/listener/packetevents/PacketPlayerJoinQuit.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
import com.github.retrooper.packetevents.event.PacketListenerAbstract;
44
import com.github.retrooper.packetevents.event.UserDisconnectEvent;
55
import com.github.retrooper.packetevents.event.UserLoginEvent;
6+
import com.github.retrooper.packetevents.protocol.player.User;
67
import com.google.common.base.Preconditions;
78
import me.caseload.knockbacksync.Base;
89
import me.caseload.knockbacksync.manager.PlayerDataManager;
910
import me.caseload.knockbacksync.player.PlatformPlayer;
1011
import me.caseload.knockbacksync.player.PlayerData;
1112
import me.caseload.knockbacksync.util.ChatUtil;
1213
import org.jetbrains.annotations.NotNull;
14+
import org.jetbrains.annotations.Nullable;
1315

1416
import java.util.UUID;
1517

@@ -20,31 +22,30 @@ public void onUserLogin(UserLoginEvent event) {
2022
Preconditions.checkArgument(nativePlayerObject != null);
2123

2224
@NotNull PlatformPlayer platformPlayer = Base.INSTANCE.getPlatformServer().getPlayer(nativePlayerObject);
23-
onPlayerJoin(new PlayerData(platformPlayer));
25+
onPlayerJoin(event.getUser(), platformPlayer);
2426
}
2527

2628
@Override
2729
public void onUserDisconnect(UserDisconnectEvent event) {
28-
onPlayerQuit(event.getUser().getUUID());
30+
onPlayerQuit(event.getUser());
2931
}
3032

31-
public void onPlayerJoin(PlayerData player) {
32-
PlayerDataManager.addPlayerData(player.getUuid(), player);
33-
PlatformPlayer platformPlayer = player.getPlatformPlayer();
33+
public void onPlayerJoin(User user, PlatformPlayer player) {
34+
PlayerDataManager.addPlayerData(user, player);
3435

35-
if (Base.INSTANCE.getConfigManager().isUpdateAvailable() && Base.INSTANCE.getConfigManager().isNotifyUpdate() && Base.INSTANCE.getPermissionChecker().hasPermission(platformPlayer, "knockbacksync.update"))
36-
platformPlayer.sendMessage(ChatUtil.translateAlternateColorCodes(
36+
if (Base.INSTANCE.getConfigManager().isUpdateAvailable() && Base.INSTANCE.getConfigManager().isNotifyUpdate() && Base.INSTANCE.getPermissionChecker().hasPermission(player, "knockbacksync.update"))
37+
player.sendMessage(ChatUtil.translateAlternateColorCodes(
3738
'&',
3839
"&6An updated version of &eKnockbackSync &6is now available for download at: &bhttps://github.com/CASELOAD7000/knockback-sync/releases/latest"
3940
));
4041
}
4142

42-
public void onPlayerQuit(UUID uuid) {
43-
PlayerData playerData = PlayerDataManager.getPlayerData(uuid);
43+
public void onPlayerQuit(@NotNull User user) {
44+
PlayerData playerData = PlayerDataManager.getPlayerData(user);
4445
if (playerData == null)
4546
return;
4647

4748
playerData.quitCombat(true);
48-
PlayerDataManager.removePlayerData(uuid);
49+
PlayerDataManager.removePlayerData(user);
4950
}
5051
}

common/src/main/java/me/caseload/knockbacksync/listener/packetevents/PingReceiveListener.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.github.retrooper.packetevents.event.*;
44
import com.github.retrooper.packetevents.protocol.packettype.PacketType;
55
import com.github.retrooper.packetevents.protocol.packettype.PacketTypeCommon;
6+
import com.github.retrooper.packetevents.protocol.player.User;
67
import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientKeepAlive;
78
import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientPong;
89
import com.github.retrooper.packetevents.wrapper.play.client.WrapperPlayClientWindowConfirmation;
@@ -27,9 +28,9 @@ public void onPacketReceive(PacketReceiveEvent event) {
2728
// And then receive a response we have to ensure that if the packet was sent by us we cancel it
2829
// otherwise the server will likely kick the player
2930
PacketTypeCommon packetType = event.getPacketType();
30-
UUID playerUUID = event.getUser().getUUID();
31-
if (playerUUID == null) return;
32-
PlayerData playerData = PlayerDataManager.getPlayerData(playerUUID);
31+
User user = event.getUser();
32+
if (user == null) return;
33+
PlayerData playerData = PlayerDataManager.getPlayerData(user);
3334
if (playerData == null) return;
3435

3536
if (playerData.pingStrategy == PingStrategy.KEEPALIVE && packetType == PacketType.Play.Client.KEEP_ALIVE) {

common/src/main/java/me/caseload/knockbacksync/listener/packetevents/PingSendListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void onPacketSend(PacketSendEvent event) {
3333
PacketTypeCommon packetType = event.getPacketType();
3434
UUID playerUUID = event.getUser().getUUID();
3535
if (playerUUID == null) return;
36-
PlayerData playerData = PlayerDataManager.getPlayerData(playerUUID);
36+
PlayerData playerData = PlayerDataManager.getPlayerData(event.getUser());
3737
if (playerData == null) return;
3838

3939
if (playerData.pingStrategy == PingStrategy.KEEPALIVE && packetType.equals(PacketType.Play.Server.KEEP_ALIVE)) {

0 commit comments

Comments
 (0)