Skip to content
Alihan edited this page Jun 29, 2026 · 62 revisions

Can I install PAT just on my proxy server?

Yes you can. Though it might decrease the amount of features PAT has to offer. But only by a tiny bit.

Those are the draw backs:

  • The "Custom-Unknown-Command" feature won't work if it's enabled on the proxy.
  • Commands of a player will not automatically update (even after giving a permission). It is required for the player to rejoin/switch the servers, in order to update its commands. (Referring to the tab-completions only)

Except those, everything will just work fine! ^^



Why do I not have the permission to execute a command?

Some people might assume that by registering a command in PAT automatically makes the command work completely, but then get a "No permissions" message instead.
Well, if this is a message you haven't set in ProAntiTab, then it is most certainly not from ProAntiTab and actually sent by the plugin which created this command.

Here an example: Let's say you have registered the following command from Essentials:

global:
  commands:
    - gm

Then according to PAT, you are allowed to execute and tab-complete /gm.
But if you don't have the actual permission for this command, then you would most likely get message saying something like "No permission".
You might not even be able to tab-complete the command.

This basically just means that you are missing the actual permission for this command.
In this case, it would be the essentials.gm permission, which the user requires additionally.

Or to put it more simply:
Just because a command is registered in PAT, doesn't automatically mean that it can be accessed comepletely. You still require the actual permission for the command.

Here's another example:
Let's say you registered the /ban command for a PAT group or listed it in the general list. The player still would require the actual ban permission from the ban plugin to use the command.


Just think of the way you would give a player the permissions to use a command the normal way, if PAT would not be installed. This is also the way PAT was intended to be used.


You see. PAT only filters all available tab completions a player already has. It's able to filter them out to the way the administrator want them to be.
But PAT cannot create new tab completions and commands out of nowhere.
It can only remove the already available once.



How to remove this "Confirm Command Execution" popup?

Let's say you have a command like /profile which should only be executable but not tab-completable, thus having it written like this inside your storage.yml:

global:
  commands:
    - "[CMD]profile"

Now you wanted to execute the command by clicking on a chat message and receive this "warning popup" instead.
But what exactly is this and why does it pop up?


Well to keep it short, this is an issue with Minecraft 1.21+ itself and has been introduced as a security measurement.
This appears only if the client tries to execute a command by clicking on a chat message or book text.

If the command which is executed does not have a tab-completion, the client interprets it as a security risk and asks for confirmation from the user, displaying this warning popup.

This is unfortunately something which cannot be fixed from the server side and really is a client thing.

In order to get rid of the warning entirely, you would have to allow the tab-completion of this command.

So either:

global:
  commands:
    - "[CMD]profile"
    - "[TAB]profile"

Or just:

global:
  commands:
    - profile



Can PAT automatically read and allow commands using LuckPerms permissions?

I am going to assume that you want to allow something like /gm in PAT automatically, by only giving your player the essentials.gamemode permission.
Well, this is simply not possible for me to do. There is not way for me to get certain information out of every command and its connected permission.
Why? Because each and every plugin has different ways of checking for command permissions. Therefore, impossible to check.

Also, permissions don't really have a command which they are connected to. Only the other way around, and only able to check, if the command has been made properly using the plugin.yml, which most plugins haven't done.

So to put it shortly: Nope, it's unfortunately impossible to make.



Why do my PAT group commands not work?

This can have multiple reasons actually:

Reason 1: Missing PAT group permission.

Ensure that your user/group actually has the proantitab.group.<group> permission.
Also make sure to not use any LuckPerms contexts while giving a PAT related permission.

If you want to give a PAT related permission with a LuckPerms context, then you must either have enabled the option update-groups-per-world (on Bukkit/Spigot) or update-groups-per-server (on Proxy). Only then you can give PAT related permissions with LuckPerms contexts. This has been made on purpose, since enabling it by default might cause performance issues on servers with a higher player count. (500+ actively switching worlds/servers)



Reason 2: Missing the actual permission of the command.

Ensure that your user/group actually has the necessary permission to use the command.
For example, if you've whitelisted the /fly command from Essentials, then also make sure to actually give the required essentials.fly permission.


Small pro tip:

You can easily check this by executing the command. If you don't get the blocked-message you've set inside PAT, then it is from the plugin where the command is from and not related to PAT. This can either be related to a missing permission or something else.

You can read more about it here.



Reason 3: Wrong setup of group priorities.

Let's say your storage.yml looks like this:

etc . . .
groups:
  admin:
    priority: 1
    commands:
      - tell
      - msg
    moderator: 2
    commands:
      - ban
      - kick

In this shown example the admin group has a priority of 1 and the moderator group a priority of 2.

Let's also say that you have both the proantitab.group.admin and proantitab.group.moderator permission.
Then according to the way the priority system acts, you can only use /tell and msg, but would be unable to use ban and kick.

For an easy and simple solution just set all group priorities to 1.

Once you understood how the group priority system was actually meant to work, you can use it again.

etc . . .
groups:
  admin:
    priority: 1
    commands:
      - tell
      - msg
    moderator: 1
    commands:
      - ban
      - kick

But until then, perhaps avoiding it first would be the best approach. It's not mandatory to use after all. ^^

No known permissions plugin found

You have gotten the following message in your server console and wondering what it means:

No known permissions plugin found, so some features may be disabled.
Read more about it here: https://rayzs.de/products/proantitab/nkppf

But what does this mean and what features exactly are disabled?
PAT works directly with some known permissions plugins such as LuckPerms and GroupManager to get and update PAT related permissions in advance.
This is being done to allow things like:

- Auto detecting when a player receives a new PAT group permission. (Auto updating commands and such)
- Fetching all PAT related permissions in advance to reduce performance issues.

Something like this is only possible with some permission plugins which allow the developer to interact with such "scenarios" by providing "events" for the developer to work with. Such events are present in plugins like LuckPerms and GroupManager, which is why they both are considered "supported and known" inside PAT.


But what about the other permissions plugins like Phoenix which don't provide such an event for developers to work with? Well, this just means that PAT cannot do the things explained above. Here is a list of things of features which will not work and why.


PAT groups of players won't update automatically, after giving them a new PAT group permission.

This is because there simply is no possible way for me to know what PAT group permission has changed for a player. I would have to check all group permissions for all players in a period of time just to provide such a feature in this case, which would only lead to unnecessary performance issues, which is why it will simply not work.

What does it mean for you?

  1. This simply means that you would have to update the player permission yourself by using the following command: /(b)pat update <user>
  2. Or your simply let this user rejoin the server. This should auto update all of its permissions automatically.


The permission proantitab.bypass. won't work for you.

This permission heavily relies on checking for all commands if they have this permission, which simply is a very heavy check, if PAT isn't able to fetch all PAT related permissions in advance, which is why it's simply disabled.

PS: This feature wasn't being used by most of the servers anyway, so it's actually scheduled for removal in the future.



Player kicked after failed injection

If you're reading this, you probably here because some of your players can't join your server because they are being kicked by PAT.

Why is that? Well, in order to prevent any chances that someone might have bypassed PATs filter and now can use exploits to see all your plugins, players where the injection failed are being kicked from the server. Of course, PAT attempts to inject into a player twice. Once the second injection attempt failed aswell, the player is kicked from the server.


What could be the reason?
Most common reasons why this could happen are:

  • Unsupported server software. Maybe an unsupported/broken fork, or a version of Minecraft which isn't supported yet.
  • Another plugin intervience. In case some other plugin does something to the player pipeline which destroys or fully rewrites it. There are no plugin that do such things though fortunately, so this is very unlikely.
  • The kicked player is a fake/spoofed player. Since those are fake-players, they are missing few parts which PAT requires in order to inject into the player successfully.

Can I fix this?
Yea sure you can. Here are the fixes for each of the above mentioned points.


Unsupported server software:
Upgrade to a supported server software/version of Minecraft. Or contact me on Discord to ask if I could implement special support for it.


Another plugin intervience:
Try to remove all plugins from your server except PAT and load the plugins one-by-one and see when it starts to kick you. You can then either remove/replace this plugin causing it, or contact me on Discord to ask for help.


The kicked player is a fake/spoofed player:
Inside your PAT config.yml is a section called injection-failed. Go there and set kick-on-failure to false. This will prevent your players from getting kicked after PAT failed to inject into the player. This includes fake players, thus allowing them to join.

Why do we need to disable it entirely just for fake players to join? Well, you see the way fake players are created variates in each plugin. This also changes the part which is missing for PAT to work with. Some spoofer/fakeplayer plugins offer an API or some other identification to identify fake players from real ones. However, most do not have this, and I can't implement a way to skip those fake players otherwise.

Can I ask for this plugin to be supported in PAT? Of course you can. Just contact me on Discord and lemme know what plugin it is and where I can find it's API. I'll then implement the support specially for it in the next update if it's possible.