Commit Graph

715 Commits

Author SHA1 Message Date
Florian CUNY
3ab2c46eed Reduced notification delay to 4 seconds 2018-06-03 10:08:50 +02:00
Florian CUNY
f5b5426327 Created TextVariables class that contains common text placeholders 2018-06-03 10:07:58 +02:00
tastybento
b87b00d887 Cleaned up some code smells. 2018-06-02 19:54:41 -07:00
tastybento
e69971d73c Cleaned up some config settings. 2018-06-02 19:21:59 -07:00
Florian CUNY
caa2501968 Removed the help item from the SettingsPanel 2018-06-02 22:01:05 +02:00
Florian CUNY
08e11e90fa Made CycleClick handle right click 2018-06-02 21:42:14 +02:00
Florian CUNY
d7b2c70b78 Fixed unaccurate logic in PanelBuilder#nextSlot() 2018-06-02 21:41:27 +02:00
tastybento
e7649f19d4 Added cycling click to protection flags. 2018-06-02 11:27:51 -07:00
tastybento
320c9a9f43 Fixes help permissions. 2018-06-02 08:39:45 -07:00
tastybento
d94477034a Performed code cleanup using Intellij. 2018-05-31 18:52:05 -07:00
tastybento
bcc0028671 Removed debug 2018-05-30 20:27:41 -07:00
tastybento
53bd51e2f5 Fixed issue with adapter serializer
Serialize and deserialize were opposite

In deserializing in flatfile db, there was an odd extra bit of code that
undid the deserialization. I'm not sure why I put that in there and so
I've commented it out for now.
2018-05-30 20:23:05 -07:00
tastybento
6b6ec4c697 Fixed bug where worlds were not existing when islands loaded.
If islands are loaded before the world exists the island's world becomes
null. If an addon is creating an island then it must be loaded before
islands.

Also refactored some of the addon loading code.
2018-05-29 16:59:52 -07:00
tastybento
3b7b7fa557 Fixed bug with saving to flat file.
Must remember to include blank constructor so Beans can create the
object!
2018-05-29 14:57:01 -07:00
tastybento
d34ad5dce3 Fix bug with sethome not replacing previous homes. 2018-05-28 20:23:15 -07:00
tastybento
8f469eb339 Updated to work with addons like warps. 2018-05-28 15:46:07 -07:00
tastybento
b402450253 Cleaned up some vulnerabilities and code smells. 2018-05-27 21:37:00 -07:00
tastybento
3404fac8f2 Arrays can stream directly. 2018-05-27 08:50:14 -07:00
tastybento
60eac8e54e Fixed bugs
Fixed issues where Settings were used instead of WorldSettings.
Added getWorld to the Admin team commands.
2018-05-27 00:05:36 -07:00
tastybento
66d9ef857d Removed constants that reference the island and admin commands.
Fixed bug where addon onLoad was being called twice.
2018-05-26 18:20:02 -07:00
tastybento
a5a75c6854 Fixed tests. 2018-05-26 15:50:10 -07:00
tastybento
4bf0d8ec0f Fixed bug with island command and island go 2018-05-26 15:35:02 -07:00
tastybento
007a9af025 Redid API for multiworld.
Now AcidIsland uses its own command instead of island.

Added a world element to commands so they can operate only in specific
worlds.
2018-05-26 13:08:35 -07:00
tastybento
6d17d48bde Removed AbstractIslandTeamCommand
This was using static data structure that would not work well when other
addons use the command.
2018-05-26 11:43:22 -07:00
tastybento
35b715ff80 Fixed tests. 2018-05-25 17:58:07 -07:00
tastybento
74c86901d0 Fixed issue with player name not being set correctly. 2018-05-25 17:15:56 -07:00
tastybento
682d34849a Small change to clarify /island use outside of island worlds 2018-05-25 15:11:17 -07:00
tastybento
6a18cc4ccc More multi-world work.
This handles multiworld operation. Test with AcidIsland addon.
2018-05-25 12:19:46 -07:00
tastybento
82ee6d746e Added an Island World Manager that handles worlds
Still a WIP but it's gradually coming along.
2018-05-20 16:09:57 -07:00
tastybento
576d9ff314 Merge remote-tracking branch 'origin/develop' into multigame 2018-05-20 14:18:38 -07:00
Florian CUNY
736ba10c53 Fixes https://github.com/tastybento/bskyblock/issues/166 2018-05-20 22:00:22 +02:00
tastybento
df696fb4a0 Reworked world checking.
Worlds are checked by the IslandWord class. Additional worlds can be
added to the list of worlds covered by BSB by Addons.
2018-05-18 23:08:18 -07:00
tastybento
9f6819bd3b WIP: Converted to a mutli-world/mutli-game type model
This branch adds a world aspect to almost all commands. Although the
Bukkit World class is used for reference, the world includes any nether
or end worlds too. By enabling multiworld, things like the protection
grid will operate independently in different world groups. The idea is
to enable one plugin to run mutliple worlds. For example run AcidIsland,
ASkyGrid and BSkyBlock at the same time.

In addition to this big change, I added an admin command to copy and
paste "simple" schematics that I called "schems". It does not work
completely correctly right now, especially for chest contents.
2018-05-17 21:25:12 -07:00
tastybento
21aa1691a5 Added Names database object to enable name->UUID lookup.
Added test classes for Players, Names and PlayersManager.
Debugged a number of issues with these classes.
2018-05-13 17:02:24 -07:00
tastybento
dd0770cf8c Added NetherPortalsTest class 2018-05-12 09:06:46 -07:00
tastybento
060549b5ec Switched to List from LinkedList for tab complete.
Added FlyingMobs test.
2018-05-11 21:05:19 -07:00
tastybento
366690116b Added test for Admin Info command 2018-05-09 16:37:12 -07:00
tastybento
a8cdce5d18 Added admin register command and test.
Unit tests pass, not tested in-game yet. Still no WiFi.

North Platte, Nebraska. 1856km to San Francisco. 800kph ground speed.
107kph headwind. -56C outside temperature. 12035m altitude.
2018-05-09 00:14:20 -04:00
tastybento
4f9c3e49df Added admin unregister island command and test.
Unit test passes. Not tested in-game yet.
2474km to San Francisco. 11552m high above Des Moines, Iowa.
2018-05-08 23:26:01 -04:00
tastybento
62d8249468 Added admin Make Leader command and test.
Unit test passes. Not tested in-game because I'm 9930m above Chicago,
it's 2858km to San Francisco, it's dark, I'm wearing sunglasses, and I
have no Wi-Fi!
2018-05-08 22:56:24 -04:00
tastybento
5eb6447f01 Added admin team add command
Unit tests pass, but not tested on real server yet.
2018-05-07 20:11:03 -07:00
tastybento
354aff14f4 Added team admin commands kick and disband. 2018-05-07 15:55:35 -07:00
Tastybento
ea089b5b7d Moved hasTeam and hasIsland from PlayersManager to IslandsManager
Added IslandTeamInviteCommandTest.
2018-05-06 16:26:40 -07:00
Tastybento
030e7e44ca Added test classes for Team Kick and Leave.
Fixed bugs in the team classes.

Completed the Island Info command.
2018-05-06 15:24:32 -07:00
Tastybento
c7d9fed400 Added a lot of tests to IslandManagerTest class. 2018-05-05 22:26:25 -07:00
Tastybento
0a17639529 WIP added some admin commands. Still not finished.
Get rank, set rank, info.
2018-05-02 21:23:02 -07:00
Tastybento
0eae384b97 Added DefaultHelpCommandTest
Changed CompositeCommand to use a StringBuilder for better efficiency.
2018-05-02 19:15:07 -07:00
Tastybento
fe26eeda2a Fixed copy and paste bug in previous commit.
Next time I'll remember to build before committing!
2018-05-01 23:25:49 -07:00
Tastybento
cccbf2d270 Removed code smells. 2018-05-01 23:20:13 -07:00
Tastybento
de85f85bbe Enabled settings flag clicks to work.
A listener can be added to a flag. This listener is the same as a panel
item listener. When the settings flag is clicked, it'll call the
listener. There is a default listener. Right now the default is called
UpDownClick.java. This makes the rank go up when you left click and down
when you right click. Another implementation may be to just have the
rank loop around with left clicks.

I added two more ranks - Admin and Mod. These are special ranks that
have a value above owner. If a player is given this rank, they can
bypass protections. This will avoid the need to use permissions and also
enable islands to be set up that for example, only Admins can edit, but
Mods cannot.

So, it's now possible for an owner to lock out team members from the
island as well as visitors. This is a bit weird and so more click
classes should be created. For example, one that just toggles between
Owner and Visitor.

Currently, only an island owner can change settings, but this could be
expanded to allow members. Also, it will need to be expanded to allow
Admins.
2018-05-01 22:56:10 -07:00
Tastybento
6e810747f4 Added island lock class and test class
Island lock is combined with island ban in terms of the Listener. It is
LockAndBanListener. It is a flag because after thinking about it, it
made sense to be just like any other island setting. Also, island owners
can now (in theory) lock out others by rank.

Although the test class says everything works, the Settings GUI needs to
enable toggling so that players can lock the island.

Enjoy banning players!
2018-04-30 01:12:32 -07:00
Tastybento
41631e8a18 Fixed a few code smells for tests. 2018-04-29 19:01:30 -07:00
Tastybento
3cbcf52319 Added ban enforcement class and test class.
This prevents players from entering islands when they are banned. In the
future, it should also be extended to enable island locking.

Still needs a bit of work around Ops and bypass perms.
2018-04-29 18:48:38 -07:00
Tastybento
76711f5d09 Added /island banlist command and test class.
Note that preventing players from entering banned islands must still be
implemented.
2018-04-29 11:17:12 -07:00
Tastybento
729974c1be Added unban command and test class
Added ban and unban to the island command.

Added class and tests for tabComplete for both commands.

Tested.
2018-04-28 23:05:49 -07:00
Tastybento
08023c6dbf Added Island Ban command and test classes. 2018-04-28 18:17:12 -07:00
Tastybento
673c404719 Finished up /island reset confirm 2018-04-28 16:32:34 -07:00
Tastybento
0bdc146da3 Added confirmation to IslandResetCommand
Added test class.
2018-04-28 12:50:07 -07:00
Tastybento
72306035f6 Added test for SafeSpotTeleport
It's not a great test.
2018-04-28 10:32:03 -07:00
Tastybento
26eb6c275e Added test for SafeTeleportBuilder. 2018-04-28 09:50:07 -07:00
Florian CUNY
d0a66299de Edited some references and manually updated REFERENCES.md 2018-04-28 12:31:53 +02:00
tastybento
1e50b9e4cf Added AdminCommand test.
Added "no such command" error message when trying a command that does
not exist.

Removed unnecessary imports.
2018-04-28 14:36:17 +09:00
tastybento
aad5239ba3 Added logging methods to BSkyBlock to avoid plugin.getLogger()
plugin.getLogger() is a final class and so cannot be mocked. It was
making development of tests very hard. By making three logging methods
in BSkyBlock.java, they default to do nothing when BSkyBlock is mocked.
Previously, every time there was a use of logger in testing it was
throwing NPE's because plugin.getLogger() was returning null and the
getLogger() method could not be made not null by mocking because it was
final (in JavaPlugin).
2018-04-28 13:02:15 +09:00
tastybento
b2e68c22d4 Added Addon class unit tests. 2018-04-27 16:34:17 +09:00
tastybento
5cc71c2a2f WIP AddonTest class 2018-04-27 11:29:15 +09:00
tastybento
8fb9512f16 Filled in a few more User class tests. 2018-04-27 10:26:50 +09:00
tastybento
a2a23d0771 Merge remote-tracking branch 'origin/develop' into develop 2018-04-27 09:21:03 +09:00
tastybento
ca5fdbd71d Implemented User class JUnit tests.
Fixed some bugs in User, Notifier.
2018-04-27 09:20:51 +09:00
Florian CUNY
9639872685
cleaned PVPListener from "us.tastybento.bskyblock.lists.Flags" 2018-04-26 16:06:47 +02:00
Florian CUNY
ecb630fac3 Fixed some code smells 2018-04-25 13:48:58 +02:00
tastybento
135f35131c Finished IslandCacheTest. 2018-04-24 14:22:33 -07:00
tastybento
bf5a30e7a1 Added IslandCacheTest WIP
Cleaned up IslandCache, IslandsManager and Island.
2018-04-24 13:18:22 -07:00
Florian CUNY
0e45aa664d Finished and polished the Language Panel 2018-04-24 18:02:29 +02:00
Florian CUNY
175f832f41 Removed the sanity check, which could lead to weird issues 2018-04-24 17:04:29 +02:00
tastybento
0fe453c163 https://github.com/tastybento/bskyblock/issues/161 2018-04-23 16:51:18 -07:00
Florian CUNY
5ebbc2e374 Created the language panel. It is currently not localized. 2018-04-23 21:16:08 +02:00
Tastybento
45101901bd Fixed loadObject for MySQL.
The uniqueKey needs to be enclosed in quotes "" to work.
2018-04-21 11:41:48 -07:00
Tastybento
6ff8c1a3d8 Added obsidian scooping.
In ordeer to test, I needed to change a few other classes.
2018-04-21 09:03:39 -07:00
Tastybento
e881a5bd2b Removal of code smells.
Removed a lot of debug code.

Refactored some loops into lambas.
2018-04-18 19:07:20 -07:00
Tastybento
01aef76eb5 Removed debug from util. 2018-04-18 11:18:07 -07:00
Tastybento
1fd2b93ce8 Improved serialization and deserialization for flatfile db. 2018-04-18 10:51:32 -07:00
Tastybento
f98c5527bc Improved accuracy of location - string conversion. 2018-04-18 10:47:20 -07:00
Tastybento
2e1c055cd7 Made BSBDatabase much easier to use for addons
Now obtaining the database handler is easy and understandable.
2018-04-15 17:30:42 -07:00
Tastybento
a5cc4c20ea Updates due to Challenges development. 2018-04-08 19:54:37 -07:00
Tastybento
a95e869cc9 Now reads addon.yml as a YAML file
Also imports level 1 permissions, i.e., does not handle children.
2018-04-05 18:56:48 -07:00
Tastybento
0a9e9c2916 Removed stack print and added a test. 2018-04-04 19:25:13 -07:00
Tastybento
c49e2b07d3 Fixed issues with panels not scaling in size correctly. 2018-04-02 18:20:54 -07:00
Tastybento
e09cb30cb5 Made head getting async for panels. 2018-03-31 18:34:49 -07:00
Tastybento
f0d3a9ab5f Added in requirement for BsbMongo Plugin
BSkyBlock will disable itself gracefully if this plugin does not exist
but the database is sent to MONGO.

Finishes up https://github.com/tastybento/bskyblock/issues/155
2018-03-31 15:33:48 -07:00
Tastybento
a19b8bf836 Fixes issue with saving documents.
MongoDB seems to work now.
2018-03-31 15:17:58 -07:00
Tastybento
db58e29ffb Removed MongoDb shading.
Mongo users will need the BsbMongo plugin.
2018-03-31 09:24:00 -07:00
Tastybento
4100edd279 Adds support for MongoDB.
Needs more testing, but seems to work. The main problem is that it pulls
in the MongoDB Java driver which boosts the size of the JAR to 2.3MB. It
may be better to put the Mongo driver into an addon so that only Mongo
users have to have the larger JAR.
2018-03-18 21:54:24 -07:00
Tastybento
17ecb1c0d4 Tweaks to improve code. 2018-03-17 09:24:17 -07:00
Florian CUNY
b662080ffa Changed the question mark head to an MHF_ 2018-03-17 11:40:30 +01:00
Tastybento
3bdf029b1d Added test for safe teleport. 2018-03-11 17:21:15 -07:00
Tastybento
b20fbd55a4 Cleaned up imports and unneeded exceptions 2018-03-11 15:59:03 -07:00
tastybento
8e97186caf Fixed merge conflicts. 2018-03-12 05:11:02 +09:00
tastybento
eb4e086482 Renamed variable. Removed logger. 2018-03-12 04:41:45 +09:00
tastybento
c10f413173 Added PotionEffectTypeAdapter for GSON 2018-03-12 04:09:05 +09:00
tastybento
cf792779f9 Now using JSON-based data for MySQL
Large number of changes to improve database functions.
2018-03-12 04:08:19 +09:00
tastybento
6626a9a4b0 Merge branch 'develop' into jsondb 2018-03-10 16:08:17 +09:00
Florian CUNY
e1f3da9449 Minor changes to existing Flags
Splited TRAPDOOR from DOOR
Splited HURT_VILLAGERS from HURT_ANIMALS
Renamed HURT_MOBS to HURT_ANIMALS
Renamed MOB_SPAWN to ANIMAL_SPAWN
Made FIRE_SPREAD a SETTING type Flag
Fixed MobSpawnListener with mishandling of ANIMAL/MONSTER spawn
2018-03-02 15:37:01 +01:00
Florian CUNY
f511e54429 Unit testing is working greatly, fixed CompositeCommand 2018-03-01 15:12:31 +01:00
Florian CUNY
97b9543f15 Fixed some code smells 2018-03-01 14:57:35 +01:00
Florian CUNY
e4cedb58d0 Removed useless constructor in CompositeCommand + updated unit tests 2018-03-01 14:43:33 +01:00
Florian CUNY
6ba27eef4e Moved User to its own package + added Notifier to avoid massive "Island protected" spam 2018-03-01 14:25:09 +01:00
Florian CUNY
1a233e3e83 Added test for glow() in PanelItemBuilder 2018-03-01 11:14:58 +01:00
Florian CUNY
4a86784535 Fixes bug with nextSlot() not taking care of size if it was set 2018-03-01 11:05:19 +01:00
Florian CUNY
c60f92b7b3 MAJOR changes to Panel API
All methods in PanelBuilder follow the Builder pattern (no more "set...")
nextSlot() now returns the first unoccupied slot
2018-03-01 11:02:11 +01:00
Tastybento
fcede01a11 WIP using JSON and GSON for database.
Causes stack overflow right now. In the middle of debugging, but I need
this in github so I can grab it elsewhere.
2018-02-28 08:38:56 -08:00
Florian CUNY
f648c936ad Continued working on the SettingsPanel. Did minor fixes in PanelItemBuilder 2018-02-26 20:18:09 +01:00
Florian CUNY
c6c7e0b4ee Removed FlagsManager#getFlagByIcon() as it is useless 2018-02-26 10:07:25 +01:00
Tastybento
e598fa7c93 Cleaned up a vunerability and some code smells. 2018-02-25 23:05:21 -08:00
Tastybento
bdca10636e Added Config comment capability.
See the challenges addon for examples.
2018-02-25 22:44:22 -08:00
Tastybento
1315dd990c user or listener can be null, so need to us ofNullable. 2018-02-25 20:46:13 -08:00
Tastybento
9db2602f78 Added FlagsManagerTest class to test the flags manager.
Added some code to the Flag, Flags and FlagManager classes to enable
passing the tests.
Realized that some flags had duplicate icons. This means that the
getFlagByIcon() method doesn't work because there could be more than
one. If we want to allow duplicate icons then we need to change the
manager. Also, do we need to getFlagByIcon method?
2018-02-25 19:48:01 -08:00
Tastybento
97491b1d89 Removed unused imports 2018-02-25 18:21:42 -08:00
Tastybento
7fa038bfce Merge branch 'develop' of https://github.com/tastybento/bskyblock.git into develop 2018-02-25 18:20:01 -08:00
Tastybento
00121e7e37 Added a specific config class to store objects as YAML 2018-02-25 18:19:52 -08:00
Florian CUNY
a885247c85 Implemented basic SettingsPanel + MAJOR changes in Panel/Flag API
It currently just displays a panel with all the flags in it. And throws exception when clicking on an item :P

Flag no longer have a PanelItem but Material instead as the icon.
Added a toPanelItem() method in Flag
Made the Panel(Builder) not using the Optional as fields anymore
2018-02-25 17:09:46 +01:00
Florian CUNY
6edc9555ad Renamed FlagType -> Flag and Flag -> Flags
Don't know when nor why it has been changed. Flag means the object, the flag itself, while Flags means the list of pre-defined Flag(s).
2018-02-25 16:01:30 +01:00
Tastybento
b043e641a1 Added equals to User class
Added null check for FlatFileDB Handler.
2018-02-24 21:29:51 -08:00
Tastybento
5a3a557cf2 Made improvements while writing challenges addon
Improved enum error handling in flat file.
2018-02-24 11:28:21 -08:00
Tastybento
84f10d6790 Removed debug. 2018-02-20 14:16:40 -08:00
Tastybento
a3200265d4 Including missing firelistener test. 2018-02-20 14:06:29 -08:00
Tastybento
b25d17fa78 Renamed flags to Flag because it was confusing.
Had to rename the class to FlagType as a result.

Rewrote FireListener to be simpler.

Wrote test case for fire listener.
2018-02-20 14:06:09 -08:00
Tastybento
57cb919ebf Cleaned up code for FlatFileDatabaseHandler 2018-02-19 22:45:53 -08:00
Tastybento
6c4a7d6f97 Added test case for MobSpawnListener
Rewrote MobSpawnListener to be testable and to improve the code.
2018-02-19 22:32:00 -08:00
Tastybento
81e8d7da67 Added Pair junit test 2018-02-19 20:10:39 -08:00
Tastybento
44ed33bb26 Tweaks due to work on Challenges addon.
Enabled the overall panel listener to work.
2018-02-19 19:49:21 -08:00
Tastybento
023a68546c Changes made due to addon development.
Added a method to easily get named addons from other addons.

Fixed bugs with addonclassloader.

Added ignores to some unavoidable line items

Added auto-cancel to panels so that items cannot be taken from them by
default.
2018-02-19 13:05:36 -08:00
Tastybento
49764c151d Reverted f3d7bf2af3
It breaks the addon class loading and using lamda functions doesn't end
up being neater because it must be able to throw a
ClassNotFoundExcepetion to the Bukkit code.
2018-02-19 12:05:59 -08:00
Tastybento
25b4f674bb Fixes infinite error with commit f14676f.
The lambdas were missing the input argument to the execute method so
were calling the parent's execute method.
2018-02-19 11:01:48 -08:00
Tastybento
382f195015 Added tests to PanelItemBuilder and fixed bugs.
Cleared up the description settings methods. Using these will add to the
description of the item.

Temporarily removed JavaDoc and Source jar creation from the POM to save
time when compiling. Will put it back when we need it.

Also, I worked out how to run the Bukkit server setup for tests. See the
setUp method in the tests. This works (at last).
2018-02-19 09:57:19 -08:00
Tastybento
7f0d71e25c Added support for player heads in PanelItemBuilder API 2018-02-19 07:55:57 -08:00
Florian CUNY
f14676f5c6 Minor code quality fixes in IslandCommand 2018-02-18 11:32:25 +01:00
Florian CUNY
43367300a4 Started working on the Settings Panel 2018-02-18 11:31:49 +01:00
Tastybento
f64dc0aaea Javadoc cleanup. 2018-02-17 17:01:25 -08:00
Tastybento
ca13f23918 Back ported SafeSpotTeleport from the ASkyBlock effort 2018-02-17 14:54:58 -08:00
Tastybento
9715811303 Removed @throws javadoc tag as it is not needed. 2018-02-17 14:54:36 -08:00
Tastybento
80c2f4178d Improved CommandsManager to use CompositeCommand
This removes the requirement for addons to cast to CompositeCommand when
getting commands from the CommandsManager.

Removed unused imports.
2018-02-14 22:38:43 -08:00
Florian CUNY
4aaf559704 Fixed some code smells 2018-02-13 21:38:19 +01:00
Florian CUNY
0b6da56e82 Fixed some code smells in FlatFileDatabaseHandler
These code smells were fixed according to sonarcloud analytics
2018-02-13 17:49:35 +01:00
Tastybento
effefae377 Updated readme
Removed unnecessary ; from RanksManager
2018-02-11 20:39:08 -08:00
Tastybento
5ac66edb6a Fixed teams.
Added test cases for RanksManager.
2018-02-11 20:26:09 -08:00
Tastybento
54dd9e87d4 Reduced the complexity of these commands.
By splitting up the methods, it makes it easier to understand and spot
bugs.
2018-02-11 15:22:03 -08:00
Tastybento
9f43f1e6fa Removed unneeded method. 2018-02-11 14:13:21 -08:00
Tastybento
f1ace6b242 Fixed bug with saving MySQL database table.
Issue was that the uniqueId was not being saved and the map table was
pointing to the wrong ?'s.
2018-02-11 12:26:25 -08:00
Tastybento
52b3f184db Fixed bug when creating new islands when there are islands in the world.
If there are unowned and unknown islands in the island spaces then
duplicate islands were being made when the search was done for new
islands.
2018-02-11 11:39:07 -08:00
Tastybento
c58fc0d07a Removed debug. 2018-02-11 11:24:51 -08:00
Tastybento
c07b649488 Completed nether portals
Also fixed some issues around admin commands and the teleport admin
commands in particular.
2018-02-11 11:12:56 -08:00
Tastybento
b9c262fd5c Fixed portals. Still has debug in it.
Need to add nether->overworld portal
2018-02-11 09:28:52 -08:00
Tastybento
5161de62db WIP adding Nether Portals 2018-02-11 08:18:50 -08:00
Tastybento
4b66811fb0 Removed debug 2018-02-10 14:50:52 -08:00
Tastybento
487328950b Fixed bug where new /island was doing /go as well. 2018-02-10 14:48:58 -08:00
Tastybento
921d25c2d5 Added private constructor because all methods are static. 2018-02-10 14:39:57 -08:00
Tastybento
d32a6f8ff1 Made code easier to understand 2018-02-10 14:32:13 -08:00
Tastybento
2b286ca58a Removed debug, cleaned up code 2018-02-10 14:10:25 -08:00
Tastybento
11c1ffc790 Removed unnecessary (int) 2018-02-10 14:06:20 -08:00
Tastybento
a9ea8e830d Code smells cleanup
Extract nested try block into a separate method.
2018-02-10 14:05:05 -08:00
Tastybento
180517cef3 Code smells cleanup 2018-02-10 14:00:40 -08:00
Tastybento
c76c854ed3 Code smells cleanup
Removed unnecessary cast in Island.
Combined if statement
Removed unnecessary {}
2018-02-10 13:56:44 -08:00
Tastybento
84e3ae3e8b Removed imports
Fixed vulnerability issue with Pair

Fixed database connection issue with MySQLDatabaseHandler
2018-02-10 13:51:11 -08:00
Tastybento
65d34f5842 Reverted change of coords to long because not needed.
Mincreaft max coords are +/- 30 million.
2018-02-10 13:19:54 -08:00
Tastybento
ed65aa421d Rewrote SafeSpotTeleport
Moved coords to longs instead of ints for island locations

Created a SafeTeleportBuilder class

Created a utility Pair class
2018-02-10 13:09:32 -08:00
Florian CUNY
4bd02a59ef Added description to /bsb (reload and version) + added some aliases 2018-02-10 17:03:57 +01:00
Florian CUNY
b04602302b Internal Placeholders are now working
It works, but it is more like a DIY patch thing. It has a few problems with the current implementation :
1. It doesn't suit our "code style" : it uses an Handler instead of a Manager, eg.
2. It is a bit laggy (I've got the feeling that it could be improved)
3. It doesn't hook to other Placeholder APIs for now
And a few other things.

I think this is more like a Proof of Concept : it will have to be improved in the next weeks.
2018-02-10 13:54:27 +01:00
Florian CUNY
65245a99f5 Fixes bug where the help could be seen even though not having the perms 2018-02-10 11:00:19 +01:00
tastybento
f8da3fbc61 Fixed bugs with MySQLDatabaseHandler
Code clean up, fixed bugs. Added automated tests.
2018-02-09 17:06:32 -08:00
Tastybento
aae4c6d0b2 Rewrote safe teleport.
Needs testing.
2018-02-08 23:47:11 -08:00
Tastybento
f3d7bf2af3 Refactored code to make it better to maintain and read. 2018-02-08 21:17:16 -08:00
Tastybento
80f0a78f08 Removed stack trace as exception already logged. 2018-02-08 20:12:23 -08:00
Tastybento
c916bbf827 Automated code cleanup.
Removes spaces, adds {} to if statements, etc.
2018-02-08 20:08:46 -08:00
Tastybento
98b49ea37a Fixed bug where if statement had a ; in it 2018-02-08 20:06:00 -08:00
Tastybento
5314f3618a Removed unused imports. 2018-02-07 21:33:55 -08:00
Tastybento
b253ff5c64 Code cleanup. 2018-02-07 21:33:36 -08:00
Tastybento
fc8876cf80 Fixed return values to match pass/fail. 2018-02-07 21:13:32 -08:00
Tastybento
2be005acb1 Removed vulnerabilities
Mainly leftover raw stacktrace prints in exceptions instead of propper
logging statements.
2018-02-07 21:11:23 -08:00
Tastybento
b833b17d22 Helped secure the prepared statement 2018-02-07 20:43:13 -08:00
Tastybento
41dd491f05 Code cleanup. 2018-02-07 19:44:10 -08:00
Tastybento
1d5086531d Removed performance hit of logging
Since Java 8, we can use Supplier for logger, which will be evaluated
lazily.

In general, the debug stuff should be removed when we have more
stability.
2018-02-07 19:39:00 -08:00
Tastybento
29d09922b9 Switched to use Files.delete
When File.delete fails, this boolean method simply returns false with no
indication of the cause. On the other hand, when Files.delete fails,
this void method returns one of a series of exception types to better
indicate the cause of the failure. More information is generally better
in a debugging situation, so I'll use this option.
2018-02-07 19:33:59 -08:00
Tastybento
08b2e2579b Reverted to using an explicit throw of all exceptions 2018-02-07 19:28:29 -08:00
Tastybento
e4fbc6fab1 Simplified code, no need for internal variable. 2018-02-07 19:16:05 -08:00
Tastybento
3f35afc76a Close is handled automatically. 2018-02-07 19:13:40 -08:00
Tastybento
7e7b259531 Converted Map to EnumMap
When all the keys of a Map are values from the same enum, the Map can be
replaced with an EnumMap, which can be much more efficient than other
sets because the underlying data structure is a simple array.
2018-02-07 19:12:23 -08:00
Florian CUNY
7b55ca70b2 Fixed some Flags and added a security check in FlagsManager
...to avoid duplicates of Listeners
2018-02-07 13:41:37 +01:00
Florian CUNY
f33fa2477a Use .equals() in #isBanned(UUID) in Island 2018-02-07 13:33:37 +01:00
Florian CUNY
12cac6b3aa Minor adjustments to ranks-related methods in Island 2018-02-07 13:29:19 +01:00
Florian CUNY
293ab2ccf9 Added default values to Settings 2018-02-07 13:16:09 +01:00
Tastybento
e5a87ccf7a Code cleanup and bug fixing.
This just cleans up a lot of code that could cause confusion or was
actually wrong.
2018-02-06 23:04:09 -08:00
Tastybento
1db21c10da Fixed bug with help that I introduced.
Added specific convenience showHelp() method to Composite command.
2018-02-06 22:45:21 -08:00
Tastybento
61f0a6f997 Made homeTeleport void because it does not return anything useful 2018-02-06 22:02:14 -08:00
Tastybento
ad50b04177 Removed unneeded method. 2018-02-06 21:59:15 -08:00
Tastybento
eefcd48c7c Fixed return values for execute. 2018-02-06 21:57:45 -08:00
Tastybento
af5c7e472e Fixed execute return values. 2018-02-06 21:48:59 -08:00
Tastybento
a9373a3eea Fixed return values - false = error 2018-02-06 21:46:59 -08:00
Tastybento
00470b1fc8 Return false if error. 2018-02-06 21:45:10 -08:00
Tastybento
3e2d2ec2d6 Return false if unsuccessful due to no island. 2018-02-06 21:44:40 -08:00
Tastybento
219d1e66ab Fixed brackets. 2018-02-06 21:43:31 -08:00
Tastybento
f4c7a3fe45 Made command return false if unsuccessful. 2018-02-06 21:40:29 -08:00
Tastybento
81b0543f25 Added missing break statement to switch. 2018-02-06 21:34:48 -08:00
Tastybento
574febb327 Added missing break statement in switch. 2018-02-06 21:34:20 -08:00
Tastybento
2e89a2654f Added more try-with-resource to auto-close prepared statement 2018-02-06 21:33:05 -08:00
Tastybento
fdc7a62990 Fixed issue where Optional was not being explicitly checked before get. 2018-02-06 21:31:59 -08:00
Tastybento
2d64070d3f Avoided setting static variable in non-static method. 2018-02-06 21:31:19 -08:00
Tastybento
5a5ae2d077 Used Java standard ordering of words 2018-02-06 21:30:56 -08:00
Tastybento
ed622dc9c0 Fixed switch break bug. 2018-02-06 21:30:35 -08:00
tastybento
bb404380f5 Replaced raw stack trace dumps with helpful error messages. 2018-02-06 16:37:34 -08:00
tastybento
aac17990bc Made description private. 2018-02-06 16:09:49 -08:00
tastybento
8b7d92d8e6 Added better error message for exception when loading addons. 2018-02-06 16:06:04 -08:00
tastybento
04a4394752 Make addon non-public and provide getter to address minor vulnerability. 2018-02-06 16:04:22 -08:00
tastybento
7e2f8052da Improved exception handling error messages. 2018-02-06 15:59:42 -08:00
tastybento
1e920825ef Added context to raw stack trace dump after exception. 2018-02-06 15:55:31 -08:00
tastybento
672d43fb67 Fixed unnecessary if statement and removed redundant code. 2018-02-06 14:11:10 -08:00
tastybento
56ff9f62e4 Used try-with-resources to ensure jar is closed. 2018-02-06 14:07:35 -08:00
tastybento
28b88763e6 Changed Optional map to ifPresent because return value is not needed. 2018-02-06 14:05:48 -08:00
tastybento
8743ac50ef Removed duplicate sub-expression in if statement. 2018-02-06 14:02:58 -08:00
tastybento
941d9d3dc5 Removed if/else change because it is not required. 2018-02-06 14:01:52 -08:00
tastybento
d2098c3dbe Check if Optional click handler exists before getting it. 2018-02-06 13:59:23 -08:00
tastybento
2c1d52761f Cast operand to double. 2018-02-06 13:54:23 -08:00
tastybento
06e61d858c Fixed a lot of unclosed prepared statements, connections and resultset 2018-02-06 13:52:25 -08:00
tastybento
84d36a1a24 Simplified some logic. 2018-02-06 13:35:17 -08:00
tastybento
f7c4e5a988 Added null checks. 2018-02-06 13:33:08 -08:00
tastybento
1ddf706c68 Bug fixes to avoid NPE's and Optional gets without isPresent 2018-02-06 13:21:08 -08:00
Tastybento
ace6294e23 Came full circle - kept Flags as final statics
This approach simulates an enum, but one that can be extended by others
to add custom flags. I added a handy values() method that uses
reflection to provide a list of all the flags in the class.

See TestBSkyBlock.java test classes for the tests of the default flag
registration and the custom flag registration.
2018-02-05 23:53:07 -08:00
tastybento
be5404e9c2 Added Setting type to flags.
Flags can be Protection type or Setting Type.

Still needs testing for PVP.
2018-02-05 17:39:04 -08:00
tastybento
645b4eb610 Implements flags as enum so flags are protected. 2018-02-05 14:51:03 -08:00
tastybento
ffbf938a32 WIP trying out moving flags into flag manager. 2018-02-05 14:30:35 -08:00
tastybento
812594783e Made Adapter its own annotation. 2018-02-05 11:35:50 -08:00
Tastybento
26956d8386 Fixed missing locale text for invites.
Fixed config settings for teams.
2018-02-04 21:48:34 -08:00
Tastybento
fa1ccd0c99 Fixed bugs with MySQL saving and loading.
Added the adapter annotation to MySQL and fixed issues with empty
hashmaps causing null errors.

Added a flag serializer adapter for the protection flags so that flags
are saved and loaded correctly.

Renamed the Adapter notation class to be clearer about what it is doing.
2018-02-04 12:53:17 -08:00
Tastybento
83d0848429 Fixed bugs with protection.
Added serializer adapter for the Flags hashmap in Island.

Teams don't work. Need to work out why.
PVP doesn't work correctly. It allows members to hit visitors anytime,
but visitors can only hit others if PVP is off. This isn't how it is
supposed to work!
2018-02-03 20:42:12 -08:00
Tastybento
6c2078fbec Added event tests.
Fixed bug with user being retained after a checkIsland.
2018-02-03 19:25:53 -08:00
Tastybento
c648409858 Reworked code so it can be tested using automated unit tests.
See TestBSkyBlock.java class for protection tests.

More to come!
2018-02-03 15:26:13 -08:00
Tastybento
df0ecca217 Added dependency injection (DI) for flag listeners for plugin.
This is required for automated testing (can't use static getInstance). I
really need automated testing of the protection classes, so even though
this adds a parameter to the classes, it's important to have it right
now.
2018-02-03 11:54:33 -08:00
Tastybento
1427f16bec Merge branch 'ranks' of https://github.com/tastybento/bskyblock.git into ranks 2018-02-02 08:22:00 -08:00
Tastybento
0d645600fc Fixed bugs with start up and flag registration.
Protection does not work yet. Still need more debugging.
2018-02-02 08:18:56 -08:00
Florian CUNY
3d7b1bc647 Renamed PVP and Item Drop/pickup related flags
Also assigned the ItemDropPickUpListener() to the related events
2018-02-02 15:29:24 +01:00
Florian CUNY
5293d647c0 Removed duplicate listeners in Flags 2018-02-02 15:22:37 +01:00
Tastybento
72c99656cc Added the protection listeners. Took all day!
Generally these are very easy to understand. They use an abstract class
for common code.

I have not tested these in-game. I would like to see if I can create
some test classes but it may not be possible because of the static
BSkyBlock calls.
2018-02-01 20:30:57 -08:00
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
5b087c83e7 Fixed comment. 2018-01-30 17:00:09 -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
ba62989788 Shifted some constants around. 2018-01-28 18:13:45 -08:00
Tastybento
417f767705 Added a Ranks Manager 2018-01-28 12:47:17 -08:00
Tastybento
eec4e99172 Added ranks to island members. More to do! 2018-01-28 11:48:54 -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