Commit Graph

175 Commits

Author SHA1 Message Date
tastybento
4fe94bee3b Finished up the place and break block listeners.
There's a lot more that needs to be checked in these listeners! I moved
some common methods into the abstract class because they will be used
again and again by other listeners.

Added an anvil listener.

Added the flags. They were from ASkyBlock so may have name changes.
2018-01-31 15:46:38 -08:00
tastybento
177023f314 Added code to support protection flag listeners.
Made getIslandsAt() Optional to enable better code structures in the
listeners.

Created an abstract class to simplify flag protection listeners.

Added default setting for flags that will be able to be set by config.
This default is used for any space in the worlds not occupied by an
island.
2018-01-30 16:59:10 -08:00
Tastybento
f7b6898559 Added protection methods. 2018-01-28 20:44:57 -08:00
Tastybento
f1072e5984 Fixed flag optional aspect. 2018-01-28 09:47:51 -08:00
Florian CUNY
1d5b0ab8dd API Improvements on PanelItem and Flags
Their respective builders now have default values
Flags get automatically registered once built
Added some convenience methods
2018-01-28 13:31:07 +01:00
Tastybento
2b434bf93a Added ability for panel description to be just a string. 2018-01-27 15:58:15 -08:00
Florian CUNY
72c862c0d5 Starting to implement some Flags to test the API 2018-01-27 17:04:08 +01:00
Florian CUNY
6c08763cbb Made PanelItemBuilder methods' name suit the Builder style 2018-01-27 17:03:30 +01:00
Tastybento
475f9b1416 Made changes to fix events and support the FAWE addon. 2018-01-25 22:19:33 -08:00
Tastybento
f6ca7f7866 Fixed subcommand aliases. Added admin tp command.
While writing the admin tp command, I realized that subcommand aliases
were not working. Also, it was not possible to tell what alias had been
used for a command. I added that capability. i.e., if the alias is used,
then the label of that command is set to the alias.
2018-01-21 12:58:35 -08:00
Tastybento
09b9d4dd49 Now uses the official config.yml in the BSkyBlock data folder.
Saves a backup of the config after validation in the database so it can
be checked.

To Be Done: Validation of the config when it is loaded against the
database version.
2018-01-07 14:43:37 -08:00
Tastybento
16bcb90127 Added saveSettings and loadSettings methods.
These methods are used specifically for loading and saving settings
classes (those use the ISettings interface). The saving saves a copy of
any settings class in the database for future reference. The loading
loads a copy from the database if it exists and checks if any fields are
different from the config file. If they are different and some action
needs to be taken, the action is taken. This is still be to be coded.

In other news, the saving of arrays is unsupported and currently should
be avoided. Use Lists or Sets instead.
2018-01-07 11:56:43 -08:00
Tastybento
2765e5f3ab Fixed code according to comments on last commit.
Reworked locales so they use a nice and pretty folder structure.

Added the ability to define adapters to serialize certain data
structures. Added the PotionType list adapter.

Saving and loading of configs basically works. Known issues:

1. The config.yml is saved and loaded to/from the database folder
2. More error handling is required for the config loading. e.g., a list
value with only one value in it is not read as a list. This could get
tricky.
3. Comments are not saved (yet)
2018-01-06 19:40:25 -08:00
Tastybento
92af75e602 Converted to using the Settings loaded by the database handler.
Removed a lot of static references.

Constants have their own class.
2018-01-06 15:23:01 -08:00
Tastybento
2d447afa88 Added annotation handling to the flatfile database handler.
Currently it handles the @ConfigEntry path and specificTo fields.

Experimental: There is a class called Setting2.java. It has an
annotation that defines its filename as config.yml. Currently, it is
using the database folder as its location, but it could be the plugin's
datafolder in the future. By placing the config.yml file in the database
folder, it will be read. See the code in BSkyBlock onEnable() for how
that is done.

The main differences between Settings2.java and Settings.java are that
all fields are NOT static and therefore it is an object and uses getters
and setters. This is because it is a JavaBean. In other code, settings
should be queried using this config object.
2018-01-05 19:58:08 -08:00
Tastybento
478968dac7 Extended the config api annotations.
Added the concept of an adapter class that would convert the YAML input
to the setting type and value.
I included an example adapter class for Enum.

I fixed a number of the settings to match the config/yml or the other
way around.

After compiling and running, do /bsb reload to see the result.

This is a WIP and obviously not finished.
2018-01-04 19:58:04 -08:00
Florian CUNY
1430eda5ce ConfigAPI - Implementing the basic functionnalities
a lot of unused/useless Settings has been removed
Settings class has been moved to the main package, because the config package would then only contain it

I need feedback about it
2018-01-04 16:57:12 +01:00
Florian CUNY
b7f1d68bcf Store the locale files in their own "parent" folder, so it looks nicer, instead of having a prefix
also renamed BSBLocale#add() to BSBLocale#merge()
and renamed the locale files as well
2018-01-04 14:14:18 +01:00
Tastybento
4aaab9f69f Added a depth limit to the help command. 2018-01-03 21:37:37 -08:00
Florian CUNY
afa292986d Removed the cache from BSBLocale
because YAMLConfiguration is a cache itself.
2018-01-03 21:57:32 +01:00
Florian CUNY
62480d7249 Fixed NPE in User when doing #getTranslation(reference, ...variables)
it was due to the null value possibly returned by the LocalesManager#get(user, reference) method when nothing has been found, leading the variables replacement to cause a NPE.

User#getTranslation(reference, ...variables) now does the check and return the reference if the translation found equals null BEFORE trying to replace variables.
User#getTranslationOrNothing(reference, ...variables) works the same as before, it just checks if the returned translation is the same than the reference (therefore it returns the blank String), otherwise it sends the translation.
2018-01-03 21:41:30 +01:00
Florian CUNY
7acc8d5401 Minor changes in CompositeCommand
Notably improved the #isPlayer(user) condition
2018-01-03 21:15:01 +01:00
Florian CUNY
b8dcc98a0c Removed useless accessibility keywords in BSBCommand interface 2018-01-03 21:14:11 +01:00
Florian CUNY
34f291b17f Minor changes in User and IslandBuilder
Mainly spacing but also optimized the User#hasPermission() condition
2018-01-03 21:06:28 +01:00
Tastybento
7e9a287143 Added help text top and bottom
Fixed top-level-command weirdness. / is required in getUsage().
2018-01-03 08:21:49 -08:00
Tastybento
d86c763716 Fixed island multihome to match new syntax.
Renamed island multihome to start with "Custom" to make it clearer. This
class is as much an example as anything of how to override the default
help.

Renamed my author tag to be tastybento. :-)
2018-01-03 07:56:10 -08:00
Florian CUNY
44742d8946 Made use of "commands.help.syntax" for help
This is a more flexible and natural way to provide the display for the help, especially for the colors.

I had to remove the "/" from the usage though. If you think it should be there, re-add it but remove it from the locale then.
2018-01-03 16:11:45 +01:00
Florian CUNY
6536ff58cc Fixed user#getTranslation() not replacing variables 2018-01-03 16:09:54 +01:00
Tastybento
5aa3594f42 The color update!
Added colors to help text.
2018-01-02 19:36:53 -08:00
Tastybento
30fb087777 Implemented locales that include addons.
This is a first working version and can probably be improved.

Firstly, the plugin will save any BSkyBlock language files to the locale
folder from the BSkyBlock jar if and only if the locale folder does not
exist. It will then do the same for any addons as they are loaded. Addon
language files are prefixed with their addon name to keep them separate
and recongnizable.

Then the plugin loads the language files and merges common languages
together into a YAMLConfiguration that is held in memory. The combined
config is never saved out to the file system.

If a request is made for a particular reference to a language that does
not exist or if the reference does not exist, then the default language
is tried.
2018-01-01 18:32:59 -08:00
Tastybento
037bf04836 Added methods to allow shared classes across multiple addons.
The original code did not allow addons to talk to each other in any way.
After trying loads of things with class path I studied the bukkit code
and saw that they override the findClass method in URLClassLoader. This
enables addons to find classes in other addons. All that was then needed
was a map in the AddonsManager of classes that this manager knows about
and a getter and setter method for them. After all that (3 hours) it
works.
2018-01-01 11:40:25 -08:00
Florian CUNY
df5434930c Renamed SettingChangeEvent to FlagChangeEvent and removed references to SettingsFlag 2018-01-01 01:53:03 +01:00
Florian CUNY
ae0dc7c538 Implemented basic Flags API
Removed Island's SettingsFlags
Fixed Island#toggleFlag()
2018-01-01 01:41:19 +01:00
Tastybento
bfcbd44478 Minor changes around Optional. 2017-12-31 16:12:53 -08:00
Florian CUNY
131a8affca PanelsAPI - Fixed ambiguous logic with the cancellation of the clickevent 2018-01-01 00:55:53 +01:00
Florian CUNY
5ea46aea29 Removed useless accessibility keywords in Interfaces 2018-01-01 00:43:32 +01:00
Tastybento
002c54ef21 Fixed issues while implementing the warps addon. 2017-12-31 14:08:15 -08:00
Tastybento
109c0edca3 Panel additions or changes.
By working on the Warp addon I made changes to the Panel API.
2017-12-30 21:14:58 -08:00
Tastybento
06dec42029 Moved a method to use User instead of Player. 2017-12-30 17:28:25 -08:00
Tastybento
1f92c2b60e Added more around the Panel API. 2017-12-30 17:13:20 -08:00
Tastybento
1f57e1eb0b Fixed return type of getBSkyBlock() 2017-12-29 11:02:38 -08:00
Tastybento
4289a24c56 Improved the panel API.
I'm working on addons and realized it would be a better approach to be
able to register the listener for a panel explicitly for each panel.
This is optional. Also, added the ability to open the panel immediately
for a player.
2017-12-29 09:11:14 -08:00
Tastybento
452311fb69 Boom! NMS is gone! (Again) Will it come back?
Used reflection to get the command map from the server instead of using
the NMS call.

Also, more importantly, this commit enables CompositeCommands to
auto-register their top-level command in the constructor. No need to
separately obtain the command manager object. Yes, easy API. :-)
2017-12-28 20:36:04 -08:00
Tastybento
9b0992c30d Removed perm checks for console. 2017-12-28 17:20:33 -08:00
Tastybento
4d7b5374e5 Bolstered error reporting for malformed addon.yml files. 2017-12-28 17:11:49 -08:00
Tastybento
6e6165a301 Merge branch 'develop' of https://github.com/tastybento/bskyblock.git into develop 2017-12-28 11:56:55 -08:00
Tastybento
a15b1b2371 Added saveResource method to AddOn save to a specific folder. 2017-12-28 11:56:45 -08:00
Florian CUNY
cb2d24c779 Removed useless AddonStates and added MISSING_DEPENDENCY 2017-12-28 20:50:24 +01:00
Tastybento
d3490a6f24 Added comments to Addon. Added save config method. 2017-12-28 09:37:07 -08:00
Florian CUNY
c2271ae229 Removed TeamChatEvent, CoopJoinEvent and CoopLeaveEvent
because their related features won't be implemented in BSB
2017-12-28 15:30:18 +01:00
Florian CUNY
390d58cc8b AddonsAPI & Events changes
Moved PremadeEvent to api/events
Made use of PremadeEvent for all existing events
Renamed TeamReason to Reason in TeamEvent
Made the addon events follow the used builder pattern
Renamed #loadAddons() to #enableAddons() in AddonsManager
Added #disableAddons() in AddonsManager
2017-12-28 15:29:32 +01:00
Florian CUNY
40c59f2f7e AddonsAPI - Polishing the API
Renamed all the classes
2017-12-28 14:50:02 +01:00
Florian CUNY
86ad00acab AddonsAPI - Polishing the API
Temporarily remove api/addons folder to rename files
2017-12-28 14:49:27 +01:00
Tastybento
687a71876d Completed the addons additions.
Everything seems to work okay.
2017-12-27 19:16:13 -08:00
Tastybento
f80a933c34 Merge branch 'develop' into addons 2017-12-27 14:03:52 -08:00
Tastybento
fcaa3514ac Fixed NPE bug when getting plugin. 2017-12-27 14:03:00 -08:00
Tastybento
4fc33cb9f7 Mid-work. 2017-12-27 13:59:27 -08:00
Tastybento
2825f9535e Command API and Help done.
Commands now require a setup to define their permission, player/console
status, description and any parameters they have. This is also where any
subcommands are created if they exist.

Each command automatically has a help subcommand. This is used to
display help. This will also recursively go to any other sub commands
and get help from them. 

Note that getUsage() now *only* shows the command and any sub commands.
It turns out that Bukkit requires this to start with a / because it
actually uses this in its own help system and the server will not start
if it is not in the right format. Therefore I split off parameters into
their own string. This also enables them to be translatable. 

Everything should work at this point. It's just waiting on the locale
system to work to display the strings in the locale files.
2017-12-27 12:09:08 -08:00
Tastybento
f22065fd2c Fixed help and usage descriptions.
Known issue - the help shown when doing a parent help is not using the
child's custom help class for usage/description.
2017-12-26 11:09:00 -08:00
Tastybento
239cf50709 Switched to a getter for getPlugin() in CompositeCommand
Made internal variable protected.
2017-12-26 08:40:28 -08:00
Tastybento
97722b56d5 Switched plugin to bsb to avoid confusion with other plugins. 2017-12-24 10:35:36 -08:00
Tastybento
f5464347c6 rename comments. 2017-12-24 10:27:03 -08:00
Tastybento
866ac2f776 rename - list -> args 2017-12-24 10:26:41 -08:00
Tastybento
a198c1a44a Renamed some classes to BSB... 2017-12-24 09:51:41 -08:00
Florian CUNY
8144f80cfb Updated en_US with all the commands and made some minor changes to the CommandsAPI
Renamed BSBCommand to BSCommand
Renamed some commands
Put invites commands in team
Splited makeleader from promote -> setowner
2017-12-24 16:52:10 +01:00
Tastybento
9b5a7c887c Made parent Optional in CompositeCommand to avoid null checks. 2017-12-23 21:58:32 -08:00
Tastybento
00b71c6090 Added comments. 2017-12-23 21:45:49 -08:00
Tastybento
f8ac04a779 Implemented the auto command help.
The help command is a default subcommand of every command. It will
display the usage info for the command and any subcommands.
2017-12-23 21:35:10 -08:00
Tastybento
eeb4e2a9ee Lots of work done on the command API.
Sub commands work, tab complete works. See the TestIslandCommand.java
test command for how to use the API and unit tests.

Still need to do the auto-help.
2017-12-23 19:14:35 -08:00
Tastybento
c5262e8faa Commands API implemented. Still a WIP.
Commands work and tab complete works somewhat. 
Help still needs to be done. Added in NotSetup And PluginConfig to just
make the plugin work. It's fine to remove them when there is a working
alternative.
2017-12-22 17:26:05 -08:00
Florian CUNY
a3db6e9b5d AddonsAPI - Made overriden BSModule methods final, so they cannot be over-overriden 2017-12-22 13:39:00 +01:00
Florian CUNY
1c3b3a2c56 AddonsAPI - Added #getFolder() in BSModule 2017-12-22 13:37:28 +01:00
Florian CUNY
6178b768bb L10nAPI - Fixed compilation errors by...
...
- Removing NetherPortals listener
- Adding a #getTranslation(reference, ...variables) in User
2017-12-22 13:31:27 +01:00
Florian CUNY
29dfc313fc L10nAPI - Reworking API - WIP
Removed the old localization system
Started implementation of the new one

For build reasons, removed protection listeners - they were requiring too much work to update them, and they need to be reworked due to the boilerplate code.
2017-12-22 13:22:33 +01:00
Tastybento
b3e4eeebc2 Fixed main command setup.
Added comments.
2017-12-21 23:16:43 -08:00
Tastybento
c2e37ad2ae Fixed permission check. 2017-12-21 23:13:22 -08:00
Tastybento
f28936948a Reworked command API
Implemented a recursive composite command that can be extended with
subcommands to infinity (and beyond!).

Composite command also tries to create help text and a list of help
commands. These are not current used and need more work.

This has not been tested yet completely.
2017-12-21 23:03:39 -08:00
Tastybento
18ad604b7b Changed TeamEvent to fire off class-specific events. 2017-12-17 12:38:52 -08:00
Florian CUNY
ed6899c989 CommandsAPI - command now asks if the sender is a player (option) and if it has the right permission (option)
Added some methods in User class
CommandsAPI is still WIP
2017-12-17 11:02:49 +01:00
Florian CUNY
cd40405c30
Implemented User class
And also made use of it in commands
2017-12-17 10:26:25 +01:00
Tastybento
90f88b4425 Fully removed Vault
Added commands for /island.
2017-12-16 09:33:24 -08:00
Tastybento
c6e885a8de Added abstract class to handle the invite map. 2017-12-13 23:31:14 -08:00
Tastybento
4b9762fb81 Added a number of Island commands.
Note that the team invite/uninvite are not linked yet.
2017-12-13 18:35:39 -08:00
Florian CUNY
ca17cd1080 AddonsAPI - Documented AddonState & added ERROR state 2017-12-12 14:42:04 +01:00
Florian CUNY
40b56843e7 AddonsAPI - Added #isAddon() in BSModule 2017-12-12 14:14:38 +01:00
Florian CUNY
df35492de5 AddonsAPI - Added RELOADING state & #reload() method 2017-12-11 22:05:32 +01:00
Florian CUNY
b8a5b0151f Made use of BSModule and CommandsManager in BSAddon and BSkyBlock main class 2017-12-11 21:55:42 +01:00
Florian CUNY
2c8a36ed54 CommandsAPI - Implemented CommandsManager to manage registering of commands by both BSB and its addons 2017-12-11 21:55:05 +01:00
Florian CUNY
7effb541ba AddonsAPI - Created interface BSModule to allow easier identification 2017-12-11 21:52:10 +01:00
Florian CUNY
d278ac317f Moved AddonManager to the managers package 2017-12-11 21:02:36 +01:00
Florian CUNY
3196b0b962 Addons API - Added AddonState 2017-12-11 21:01:49 +01:00
Florian CUNY
d776f6a90b Addons API - Introducing foundations of this API. WIP 2017-12-10 21:42:04 +01:00
Florian CUNY
71bbde1687 Commands API - Removed old API 2017-12-10 17:38:27 +01:00
Florian CUNY
65999aa550 Commands API - execution is working. WIP 2017-12-10 17:35:15 +01:00
Florian CUNY
46910dd851 Introducing the new Commands API - WIP 2017-12-10 11:46:59 +01:00
Tastybento
01baad3eba Update to fix bugs. Still WIP. 2017-12-09 11:43:35 -08:00
Florian CUNY
1e4dd979ae Revert "New Locale system - it breaks everything"
This reverts commit 9a3c900ac5.
2017-12-03 17:34:31 +01:00
Florian CUNY
9a3c900ac5 New Locale system - it breaks everything
The locales are not being loaded
Needs a few more methods to have a convenient way of using it
Needs to be fixed
2017-12-03 17:19:22 +01:00
Tastybento
b21e6dbcb0 Small change to panel builder
Enables items to be added without a slot to the end of the inventory.
Also enables slots to be queried.
2017-12-02 10:09:45 -08:00
Florian CUNY
dd40faa3b6 Implemented Panels API - still need some work, but it is functionnal 2017-11-29 16:54:24 +01:00