FormInteractionFix

Form interaction spam blocker. Works everywhere on your server and no setup required.

APACHE-2.0 License

Stars
5

Form Interaction Fix

Interaction spam

Explanation

Interaction spam is often a problem for players who use the mouse as their input. Try to interact (right-click) while facing a block. You may notice that PlayerInteractEvent is called many times in a short period. If a plugin opens its form on interaction, these players will see the form opens more than once.

Problem demo (before installing)

Fix demo (after installing)

The fix

This plugin blocks interaction when a form opens. (NPC dialogues will be supported soon.) By listening for packets and cancelling interaction events after a form is sent to the player. Until the player responds to (or closes) it.

Potential problems

This plugin relies on packets very much. And can malfunction if a client does not respond with the correct packet. For instance, official clients would not open a form in that the JSON of its packet is invalid. Eventually, the client can neither react to any form nor make any interaction.

Inclusiveness

As this plugin is driven by packets, it works for all forms, no matter which plugin creates them.

Disclaimer

This plugin cannot prevent any malicious attacks or behaviours.

Developer note

Depending on this plugin

Your plugin can depend on this plugin instead of verbosely implementing an interaction cool down on your own.

await-generator & await-std

Both were made by @SOF3:

Do not worry when you see unusual code like while (true) and yield. It will not block the thread. Instead, yield can pause the code flow and make it behaves like concurrency.

IntegratedTest.php

Performs integrated tests with FakePlayer by Muqsit. Please refer to the doc comments in it for more details.

PHPStan & PHP-CS-Fixer

Common PHP dev tools:

Credit