Commit Graph

114 Commits

Author SHA1 Message Date
chickeneer 586afc6193 Set locale field to be accessible - GH-234 2019-08-14 11:11:24 -05:00
chickeneer 625171b206 Fix an infinite loop issue on server shutdown
Related to GH-215
2019-06-17 16:09:47 -05:00
Niklas Eicker b175f092d8 resolves #214 (#215) 2019-06-07 01:25:08 -05:00
JanTuck 4880a02371 Fix memory leak in unregister command (#208)
Fixes #198
2019-04-15 10:15:58 -04:00
Aikar a0c4cd7a50 Register ACF help system into bukkit 2019-03-15 01:48:24 -04:00
Aikar 9c1521a456 Implement Bukkit Description for /help 2019-03-14 23:18:41 -04:00
Aikar f6a8c68d80 Add Logger and FileConfiguration as default bukkit dependencies 2019-03-14 22:37:51 -04:00
Aikar 4e103adca4 Add Proper support for Default Completion Handlers 2019-03-14 22:34:56 -04:00
Aikar 67d631d47c Move to an improved CommandRouter, improve routing logic
now supports splitting commands over multiple BaseCommands better
should now only match probable @Default handlers, so @CatchUnknown
can still work in obviously wrong scenarios.

@HelpCommand no longer implies @Default as @CatchUnknown will pick it up
2019-02-25 21:45:12 -05:00
Aikar 9032570ca2 Fix getFirstElement to not care if there is more than 1 2019-02-24 13:19:25 -05:00
Aikar 17d89ad216 More work towards relocating OnlinePlayer context
This context was conflicting with each other over multiple
ACF modules, so if someone wanted to use multiple ACF's in same jar,
it would clash and not work.

The PR to move these was incomplete and this finishes fixing the
context handlers to support new and old.
2019-02-23 21:23:35 -05:00
Aikar 805e5a62ed Remove debug of minecraft version # 2019-02-23 17:35:44 -05:00
McLive f4a5d6f705 Move OnlinePlayer to own packages and deprecate at old locations (#194) 2019-02-23 17:35:37 -05:00
Xavier 952e15ba68 Switched getField to getDeclaredField for the locale field in BukkitCommandManager (#189)
This resolves an issue where CraftBukkit has the locale field as private.
2019-02-12 16:49:36 -05:00
Aikar 999c803091 Improve permission resolution of RootCommand's
ACF's permission tree can go more complex where a single root command
may have multiple dependent perm nodes.

So essentially ACF does not assign permission nodes to root in bukkit
and the such in a reasonable manner.

With this commit, we try to identify a single unique permission node,
and assign that permission node as the node to use where applicable.

In Bukkit/Sponge, we implement testPermission instead, which does a smarter
look up of all potential commands that root command might execute for the
given issuer, and if they have permission to any of them, then pass as true.

This is much more accurate, so if the issuer has access to no subcommand
then the root command should not be revealed anymore in Bukkit or Sponge.

In bungee, we are best guess at the unique perm node, and if there is
any ambiguity, it will be null and seen by everyone (but still enforces
permission checks)
2019-02-05 00:56:08 -05:00
Mark Vainomaa 65ff5a5500 Replace Guava Iterables (#158)
Goes under #120

After this, only MultiMaps remain.
2018-08-03 09:57:38 -04:00
Osip Fatkullin 3c979a9ef2 Drop trivial Guava usages (#142)
#120, #127
2018-07-19 19:43:17 -04:00
willies952002 786ebe831f Sanitize Bukkit Command Label Before Passing On (#149)
Fixes #146 

This might not be the 100% perfect method for fixing this, but as it stands, it's the least amount of diff
 needed to fix said issue.
2018-07-04 01:27:01 -04:00
Aikar 46edb06f9b Unwrap CommandExceptions thrown by Bukkit before passing to Exception handlers 2018-06-18 21:22:21 -04:00
Gabik21MC 7c75cdd48c Improvements (#143)
Improve help output for commands split over multiple base commands
Fix help last page detection
Fix missing argument on Player Context Resolve
Expose registered root commands
2018-06-18 15:15:03 -04:00
Gabik21MC 961009a77c Support old user names (#133)
Recently a player with a two letter account joined on my server and I noticed that the context resolver for the player interface does not work. This PR also fixes crazy names like these:
https://de.namemc.com/profile/%24.1
https://de.namemc.com/profile/u.1
2018-05-29 11:04:14 -04:00
Aikar d57dbcefab Update Maven Plugins, hopefully will fix #129 2018-05-27 12:43:32 -04:00
Aikar 8335d580f6 Improvements to help formatter 2018-03-21 22:02:48 -04:00
Aikar 55a5e5eaf9 Merge branch 'annotations'
* annotations:
  Default empty descriptions
  fix annotation lookup
  Fix Bukkit Description being null, supply usage/description to Sponge/Bungee
  fix looking up annotations without value methods
  More cleanup and refactoring
  move annotation lookup methods into their own file to declutter class
  clean up code more, break out methods
  Refactor all annotation lookups in prep for processors
2018-03-17 23:51:22 -04:00
Aikar d3a00bfde6 fix bukkit get offline player check 2018-03-17 22:37:56 -04:00
Aikar ec235d80fc Fix Bukkit Description being null, supply usage/description to Sponge/Bungee 2018-03-17 19:51:52 -04:00
Aikar 2d0995a3ac Refactor how parameter annotations are parsed to prep for processors
this also will improve performance, as we will only do flag parsing and replacements
once on register instead of every execution for some things.
2018-03-15 23:22:18 -04:00
Aikar 4b74170a92 Automatically remove commands registered through plugin.yml
avoids mystery "command does nothing" accidents.
2018-03-05 22:17:54 -05:00
Aikar 82390e5443 restore .setPlayerLocale API on bukkit manager
This was public, so cant remove it
2018-02-28 18:03:58 -05:00
games647 edf7ecc020 Add support for per issuer locale in Sponge and BungeeCord (#104)
* Add support for per issuer locale in Sponge and BungeeCord

* Added Optional<UUID> getUniqueId to CommandIssuer
* Added update task and delayed join listener in BungeeCord
* Added settings change listener in Sponge
* Moved setLocale method up to the CommandManager to remove the
amount of duplicated code

* Remove Optional usage

* Remove player terminology in core
2018-02-28 17:53:27 -05:00
Xavier 816f1953df Added the autoDetectFromClient feature for Bukkit languages, it will disable the automated language detection system. (#100) 2018-02-08 15:28:54 -05:00
Xavier 0d0b2ef425 Added support for loading message bundles from other ClassLoaders, an… (#99)
* Added support for loading message bundles from other ClassLoaders, and made the Bukkit & Bungee locales attempt to load from the ClassLoader that ACF is apart of, and the ClassLoader that the CommandManagers plugin belongs to

* Added the ability to add/register a ClassLoader to be scanned for Locales. The Locales automatically adds its own ClassLoader to the list, and the Bungee, Bukkit and Sponge implementations automatically add the plugins ClassLoader to the list

* Fixes the issue with conflicting bundle names although they may belong to two different ClassLoaders
2018-02-08 15:27:50 -05:00
MiniDigger cebe28ef6c [WIP] Add dependency injection functionality, Closes #85 (#86)
* misc improvements (as suggested by intellij)

* first draft of the DI functionality (#85)

* address review

* reenabled disabled inspections

* overload registerDependency method

* inject fields of superclasses two and remove invalid sponge default dependency
2018-01-25 14:21:16 -05:00
Aikar a14b30caea Add @CatchAll as a better named replacement to @UnknownHandler
UnknownHandler will still work until we remove it in some future major update
2018-01-14 19:01:26 -05:00
Aikar dce6bd2e64 add setPlayerLocale API for Bukkit 2018-01-13 11:20:45 -05:00
Aikar 40eaa9ea07 Command Conditions and MANY other code changes for Generics <3🌮
This completes and fully enables a new feature called "Conditions"

We already had some forms of conditions built into @Flags such as
on the Player for itemheld.

However, letting end users add additional restrictions to existing context
handlers such as players is not possible without redefining the context.

That's not friendly nor scalable.

Flags will now be primarily only for controlling how to resolve a context,
and then Conditions will then be the way to validate the context and trigger
a failure if the condition is not met.

Conditions can be placed on Command Class, Methods, or individual Parameters.
2018-01-08 23:30:27 -05:00
Aikar f591117733 Support looking up offline players 2018-01-05 19:51:15 -05:00
Aikar a1c9382251 Allow using Bukkit Player in place of OnlinePlayer
requires @Flags("other") is set
and also supports @Flags("other,defaultself") to target self if not supplied
2018-01-05 19:38:22 -05:00
Aikar 2057ed8a42 More work on Command Conditions #58 2017-12-17 13:46:22 -05:00
Aikar d23588b046 Bukkit/Paper: expose .getPlayer() to completion/execution context 2017-12-09 13:01:39 -05:00
Aikar fbed6f2be3 Add Support for Async Tab Completions for Paper Servers
This adds the ability for plugins to define completion handlers as async safe (not on games main thread)

When they are defined async safe, and ran on a Paper 1.12.2+ server, with a Paper ACF manager,
completions will be handled mostly async, letting you safely do heavier operations in tab completions.
2017-11-30 01:18:43 -05:00
Aikar 8251b81a94 Fix Plugin Logger on Bukkit/Paper (not sure whats wrong with plugin.getLogger()) 2017-11-25 22:07:23 -05:00
Aikar b032c677b8 require opting into per-issuer locale 2017-11-25 20:50:19 -05:00
Aikar e8c05cc39b Fix Cast to player issue for Bukkit 2017-11-25 19:17:33 -05:00
Aikar adfb4b11a1 Add support for Per Player Locale on Bukkit - Resolves #62 2017-11-24 13:05:20 -05:00
Aikar fd314b0f7c Fix syntax/desc returning null 2017-10-28 12:42:23 -04:00
Aikar a02d761e5e Set bukkit usage/description data 2017-10-28 12:21:35 -04:00
Aikar c188312fb1 Fix unregister of bukkit/bungee commands.
A RootCommand is shared between any BaseCommand that all use the same root.

We should not unregister the root command until all sub commands are unregistered.
2017-09-05 23:35:27 -04:00
Aikar b2b7b18cb1 Remove the .iml files to make kashike happy. 2017-08-23 20:23:51 -04:00
Aikar 11dcf57113 Work on the help system to start work on pagination and search 2017-08-23 19:16:45 -04:00