SamB440 / ForcePack

Spigot/Velocity plugin to aid resource pack deployment and enforcement, among other utilities.
https://fortitude.islandearth.net/category/forcepack
GNU General Public License v3.0
48 stars 17 forks source link

Players can play without sending a resource pack response #11

Closed galacticwarrior9 closed 1 year ago

galacticwarrior9 commented 1 year ago

The plugin version is 1.2.6 and here is my config.

Most players on my server accept the resource pack normally:

[10:46:11] [Server thread/INFO]: → Pandakiraly
[10:46:11] [Server thread/INFO]: [ForcePack] Pandakiraly's exemptions: geyser, false. permission, false.
[10:46:11] [Server thread/INFO]: [ForcePack] Pandakiraly sent status: ACCEPTED
[10:46:14] [Server thread/INFO]: [ForcePack] Pandakiraly's exemptions: geyser, false. permission, false.
[10:46:14] [Server thread/INFO]: [ForcePack] Pandakiraly sent status: SUCCESSFULLY_LOADED

But there are some players who are sent the pack and never send a status back:

[14:56:59] [Paper Async Command Builder Thread Pool - 143/INFO]: [Essentials] Created a User for TheLocalChair (ed006616-e57c-3787-ad77-95baebb155d6) for non Bukkit type: org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer
[14:56:59] [Server thread/INFO]: [ForcePack] TheLocalChair's exemptions: geyser, false. permission, false.
[14:56:59] [Server thread/INFO]: [ForcePack] Sent resource pack to player
[14:56:59] [Server thread/INFO]: [ForcePack] Using 1.18 method

And that's it: there is no response. They can play due to not being kicked and do not take damage:

[14:57:20] [Server thread/INFO]: [ForcePack] Cancelled damage for player 'TheLocalChair' due to resource pack not applied.

I am running a Pufferfish 1.19.2 server. I only began to notice this after updating to ViaVersion 4.5.0 to allow 1.19.3 players to connect, but I am not sure whether that's the cause or just me being more vigilant after updating.

SamB440 commented 1 year ago

Enable prevent-movement, this isn't really fixable in any other way apart from stopping them playing entirely.

I don't see any way for players to skip a status and be able to play without hacking or their screen being cancelled by another plugin

galacticwarrior9 commented 1 year ago

Thanks. In the case of it being another plugin, which event would it be cancelling?

SamB440 commented 1 year ago

I haven't tested ViaVer 4.5.0 or 1.19.3 extensively yet, so I'm not sure if it is a plugin.

The plugin won't be cancelling an event, it's more along the lines of something such as AuthMe that does some weird stuff, or a plugin sending close inventory packets. Or another plugin trying to send a resource pack, or server.properties containing a resource pack.

SamB440 commented 1 year ago

I just tested your config with a 1.19.2 server and viaver 4.5.1 and some various other plugins and the resource pack loaded fine with a 1.19.3 client, so unsure how players could be in this state legitimately

Plugins (18): Battlegrounds, Citizens, FastAsyncWorldEdit, ForcePack, GrimAC, InteractiveBooks, ItemEdit, LibsDisguises, LuckPerms, ProtocolLib, RPGRegions, SchematicsExtended, ServerUtils, ViaBackwards, ViaVersion, Votifier, WorldGuard and spark
galacticwarrior9 commented 1 year ago

Did some more research - apparently teleporting players causes their clients to close the prompt. I do have EssentialsXSpawn which teleports new players to a configured spawn on their first join, and interestingly enough this issue only affects players on their first join (this would explain #10). Would it be possible to add a configurable delay to sending the pack? I think sending it a few ticks later would do the trick.