Adds 3 new BentoBox options:
- use-cache-server: option which allows to use mc-heads.net API for gathering player heads. It is a bit faster than Mojang API.
- heads-per-call: option which allows to specify how many heads will be requested at once per each API call.
- ticks-between-calls: option which allows to specify how many ticks should be waited until next API call.
All these options will allow much more faster player head gatherer.
Changes includes optimization for Mojang API too. For servers in online mode, HeadGetter will use Player UUID, instead of asking for UUID from API.
Panel API did not have this context so commands had to force players to
be in the world that the command used. These changes add the world
context to the PanelBuilder and changes the settings panels to use it.
Players and admins can now run settings commands in any world.
https://github.com/BentoBoxWorld/BentoBox/issues/1673
* Decouple island location from island center.
This enables the protection area to move anywhere within the island
boundaries
* Paste island at island location.
* Move visitors to the island location
* Added island location placeholders
* Use island location instead of island center
* Fix tests
* Allow radius 1 islands.
* Correct admin range set limit
* Debug in progress
* Fix island deletion.
The speed option was doing nothing except causing repeated actions on
the same chunks.
* Soft depend for WorldGeneratorApi for Boxed game mode
* Changed to "protectionCenter".
Added logic to expand the deletion area based on moving the island
protection location and range instead of just deleting everything. This
will keep deletion time to a minimum for BSkyBlock, etc.
* Fix tests.
* Add WorldSettings methods for portals
* Vanilla portals option added.
Currently defaulted on for testing. Ultimately, the game mode config can
decide if the vanilla portal is used or not.
Note that the end platform is just a set of obsidian blocks.
* Reduces search radius when close to island edge
* Adds and fixes tests
* Use EntityPortalEnterEvent instead of PlayerMoveEvent
* Removed duplication between nether and end portalling
* Code clean up
* Single event handler for nether and end.
* Created new PlayerEntityPortalEvent class to enable entity teleports
Unfortunately, PlayerPortalEvent and EntityPortalEvent are not fraternal
classes so there's no way to apply code to both except via this
abstraction class.
Tests fail.
* Places end portal always in the same place.
* Teleport entites to nether or end
Identify the teleport cause manually because there is no method.
Teleports to the End happen but seem to be slightly different locations.
Some entities will disappear, others will stick around. I don't know
why.
* Put defaults back to false.
* Create end spawn point to default point when not making end islands
* Fixed PortalTeleportationListener tests.
* Updated since tag
Put some fields as "final"
Made all abstract classes' constructors "protected" (them being public serves no purpose since they cannot be instantiated outside of child classes)
Did some minor code prettifying
The island will only be saved if isChanged() is true. It is set to true
if any setter is used or a field is changed.
This should help servers shutdown a lot faster and background database
saves go quicker. Only applies to Islands!
https://github.com/BentoBoxWorld/BentoBox/issues/1629
* Improves the meta data API for Island
* Unified API into MetaDataAble Interface
All classes now use the same interface and Optionals. Reduces code
duplication and makes the API the same across the board.
* Version 1.15.6
Fixed since JavaDocs
This is modeled after the Bukkit metadata API with the difference that
it is persistent, i.e., metadata is stored to the database. Metadata can
be placed on Islands or Users.
This API should be useful for addons that do not want or need to create
their own database tables and instead just want to tag the user with
some data, or tag the island with some data. It is intended for small
amounts of data, like boolean tags or other values.
* Break out events and add individual handlers
https://github.com/BentoBoxWorld/BentoBox/issues/1613
* Corrected AddonEvents to have proper static handlers
* Made constructors protected.
Abstract classes should not have public constructors. Constructors of
abstract classes can only be called in constructors of their subclasses.
So there is no point in making them public. The protected modifier
should be enough.
* Try loading adjacent chunks, but too slow.
* NMS void delete
* Revert the extra chunk in IslandDeletion.
That was for another deletion approach.
* Added NMS abstraction.
* Debug
* Clearer code.
* Clarify exceptions
* Persistent entities should never be removed.
There is no valid reason why BentoBox should remove the Persistent entity. Otherwise, what is the point of being persistent if someone can just remove it?
* Changes which mobs can be removed outside island
Protect renamed and persistent entities from being removed if they wander outside island bounds.
Except for animals, as they cannot be removed only if they are renamed.
There was not specific reason why this was being done and in testing, I
cannot find a reason why it is needed (yet) so I am removing it due to
the lag reported in
https://github.com/BentoBoxWorld/BentoBox/issues/1580
* Add getKey and getValue for Pair calls for nicer access.
* Fixes ConcurrentModificationException in HeadGetter.
Fixes an issue when elements with the same name were overwritten by HeadGetter.
* Added IslandExitEvent#getToIsland() and IslandEnterEvent#getFromIsland()
* Added IslandEventBuilder#rawEvent(Event) and IslandBaseEvent#getRawEvent()
BentoBox would refuse to start if islands from worlds unknown to the
server were in the database. e.g. a CaveBlock island where the CaveBlock
addon had been removed.
* Rework to see if player is online
* Maybe fix & disable tests
* Fix pom.xml
* Fix pom.xml
* Re-add lines to pom.xml
* Check if isn't trusted
* Possibly disable testing, disable last online for teams
* Actually disable testing now?
* Add back dependencies
* Added trusted-layout
* Added individual translation for Coop
* Rebase pom.xml
* Formatted code correctly
* Use correct methods
* Possible fix for always offline
* Another test
* Solved always offline issue
* Cleaned up code & adjusted locales
Previously only UUID was checked, but joining with a name and different
UUID is possible. This clears out the cache so commands that look up
names like ban do not use the old UUID.
https://github.com/BentoBoxWorld/BentoBox/issues/1468
Code analysis suggested this line could be simplified, but it resulted
in an infinite loop call to itself: spawnParticle(particle, dustOptions,
(double) x, (double) y, (double) z);
* Rework PlayerHead Getter.
Generate player head based on WebAPI (as it is faster) and GameProfile texture (require NMS).
Cache is suitable for storing into file format.
Add ability to add custom HeadCache object into local cache.
Add ability to modify cache keeping length.
Add ability to keep all, or just a single element into cache until server restart.
* Address issues/improvements suggested from review.
- config will store time in minutes.
- default value will be 1h.
The addition of a bottom control bar to the tab was covering up the
panel items so 9 items would be missing. This makes it so 36 items show
instead of 45.
* 1.16.1 changes
* Fixed failing tests in PhysicalInteractionListener
HOWEVER, the code somehow no longer protects the pressure plates... I'm investigating that.
* Implemented future-proof buttons, doors, fence gates, trapdoors protection
* Protected REDSTONE_WIREs under "REDSTONE" flag
Fixes https://github.com/BentoBoxWorld/BentoBox/issues/1421
* Fixed bug with pressure plates
* Fixed params order in assertEquals in PhysicalInteractionListenerTest
* Fixed EnderChestListenerTest errors
* Fixed most errors in BlockInteractionListenerTest
* Added 1.16.1 to ServerCompatibility
* Fixed BlockInteractionListenerTest
* Fixed backwards compatibility in BlockInteractionListener
Also made use of existing Tags (ANVIL, BEDS, SHULKER_BOXES)
* Fixed BlockInteractionListenerTest (again)
* Fixed backwards compatibility in PhysicalInteractionListener
Co-authored-by: Florian CUNY <poslovitch@bentobox.world>
It appears that heads are being "forgotten" by the server after a few
minutes (not sure how long) so caching forever doesn't help. This causes
blocking calls when the head is set.
https://github.com/BentoBoxWorld/Level/issues/159
The no permission error was being added, but thats wrong because it's
not lack of permission but lack of rank that is the issue. This adds a
new error and shows it in the various commands.
It was introduced in BentoBox 1.5.0 and bStats shows that all the servers are using BentoBox 1.5.3+. We can therefore safely remove this from BentoBox.