EngineHub / WorldGuard

🛡️ Protect your Minecraft server and lets players claim areas
https://enginehub.org/worldguard/
Other
836 stars 545 forks source link

/locate command from worldguard overwrites the vanilla one #2013

Open CryRocks opened 1 year ago

CryRocks commented 1 year ago

The Problem

the /locate command from worldguard, overwrites the /locate biome/structure command from the vanilla game.

A Solution

maybe add the option to the worldguard config, to activate/deactivate that command or change the command name so that /locate is not overwritten and the vanilla function can be used.

Alternatives

No response

Anything Else?

maybe i'm just blind and didn't find the option in the config or so but i checked and couldn't find any. Also setting the permission from the command to false, didn't work.

me4502 commented 1 year ago

This is up to the platform to handle, not plugins. Paper provides a command.yml file to handle this, WorldGuard cannot change what overwrites what

CryRocks commented 1 year ago

This is up to the platform to handle, not plugins. Paper provides a command.yml file to handle this, WorldGuard cannot change what overwrites what

oh i see, tried a bit of stuff but it says unknown command:

  locate:
  - minecraft:locate
  wglocate:
  - worldguard:locate

second one works, but something is wrong with the first one, do you maybe know how it done correctly? would appreciate the help :)

me4502 commented 1 year ago

You'd have to ask Paper for help

xpdlx commented 1 year ago

I'm having the same problem with WorldGuard overriding /heal in my plugin.

Having a way to disable certain WorldGuard commands would be nice. I tried overriding it in commands.yml, which worked, but that doesn't seem to support command completions, so that's pretty annoying.

I also tried negating the permission for it, but that just made it say "You don't have permission to do that." instead of using my command.

I fixed it by making my plugin load before WorldGuard, but it would be nice if there was a way in WorldGuard to do this (either by negating the permission, or have a thing in the config to disable commands).

black-kirito commented 1 year ago

you can use the minecraft: tag example: /minecraft:locate biome minecraft:savanna

Leahcimkrob commented 1 year ago

Why should you enter a standard command in such a complicated way just because you overwrote it? We don't need your locate command, but we have minecraft command loacte in rank system. Please make the worldguard:locate command deactivatable, or use another one.

me4502 commented 1 year ago

The WorldGuard locate command existed for a very very long time before the Minecraft one. If your server platform has decided it’s taking precedence, you should use the systems that they provide you to let the Minecraft command take precedence. If there are issues with that system that should be a bug report to your server platform.

Leahcimkrob commented 1 year ago

under MC 1.16 we already had that. and now with the new Paper (1.20) no more.

Even the devs at Worldguard say this: If your server platform has decided it's taking precedence, you should use the systems that they provide you to let the Minecraft command take precedence. If there are issues with that system that should be a bug report to your server platform.

So it's a bug now and not before.

codeHusky commented 1 year ago

Please add commands to disable the non-essential worldguard heal/god/etc commands that are better implemented by existing, long-standing solutions (Essentials, etc) - it's very frustrating to have these WorldGuard commands randomly overriding commands from other plugins when they didn't before. I'd rather not run have to make special config adjustments just so I can continue using WorldGuard without these commands causing problems.

IMO, worldguard should NOT be using these aliases if another plugin is registering them. It's pointless. Map them to /wgheal and /wggod or something. Given the number of people confused or annoyed by this, it ought to change.

Edit: Also, as far as I can see, this isn't intended?

  • Removed /god, /heal, /locate, and /stack from WorldGuard to CommandBook. [...]

Back in 5.5, these commands were intentionally moved to CommandBook, likely to reduce this unexpected functionality since nobody's installing WorldGuard for /heal, /god, etc. Why was this changed? If it wasn't, why is this basically a breaking issue now?

wizjany commented 1 year ago

These commands have existed since hmod days. They were never removed, only delegated to commandbook if it was enabled. Since commandbook isn't in development anymore, the delegation was removed. Nothing else has changed on our end. (just to add, this was changed because of a change made in spigot, so blame them for changing how command registration works)

The bukkit api doesn't provide plugins any way to prioritize or re-alias commands dynamically based on other plugins/commands, never mind vanilla ones. Command conflicts need to be handled by the platform itself, and afaik commands.yml is the only way to remap these manually, bad as it might be.

We will not be simply dropping commands that have existed for 12+ years in a minor release just because people are unhappy with how the server handles command conflicts. I understand that we now exist in a time where these are better served by other plugins, but it's not trivial to simply remove them entirely, especially when it comes to things like /god which are integrated with the main part of worldguard (regions, via the invincibility flag) which would need additional code to handle invincibility from other plugins (afaik, also not provided by the bukkit api, so we'd likely need to find some common metadata plugins like essentials use?).

Unless you are opening a pull request to fix this in a way that addresses all these things, I'm closing discussion on this (and will continue to close duplicates) as everything that needs to be said has been said, and comments are just getting spammy at this point.