Changelog
Below is a changelog for all past versions of the library.
0.4.0
This version adds a few small API features, addresses some minor issues found in version 0.3.0 of the library, and deprecates several methods which will be removed in the future.
New Features
- `MinigameRoundStageChangeEvent` is now cancellable - Changing a round's stage now resets its timer by default - Players in rounds now only see players in the same round in their tablist, and are removed from other players' tablists - Fully locallize German; partially localize Dutch and Korean
API Additions
- Add optional parameter to `Round#setStage()` to reset timer (true by default) - Add `Round#isTicking()` method - Add vararg parameter to `Locale#getMessage()`, used to automatically replace placeholder sequences (`%1`, `%2`, etc.)
API Changes
- Rename `ConfigManager#setBlockBurningAllowed(boolean)` to `ConfigManager#setBlockBurnAllowed(boolean)` - Rename `ConfigManager#isBlockPhysicsAllowed()` to `ConfigManager#areBlockPhysicsAllowed()` - Rename `ConfigManager#isEntityExplosionsAllowed()` to `ConfigManager#areEntityExplosionsAllowed()` - Locale API now expects `.properties` files (backwards compatibility for `.csv` files is still present) - `setDefaultExit()` methods now retain orientation
(Method refactors are non-breaking, albeit the old methods are now deprecated)
API Removals
- Deprecate `ConfigManager#setPlayerClass(Class)` in favor of metadata - Deprecate `ConfigManager#setRoundClass(Class)` in favor of metadata - Deprecate `Round#hasEnded()` in favor of `Round#getStage() == Stage.RESETTING` - Deprecate all API methods whose signatures include Bukkit classes (some have alternatives as denoted by the doc)
Bug Fixes
- Better integrate vanilla spectator support - Correct stage always being reset to `PLAYING` when a `MinigameRoundEndEvent` is cancelled - Correct player gamemode not being reset to its previous value upon round exit - Correct `Round#addPlayer(String, int)` ignoring the second parameter - Correct `Round#start()` throwing an `IllegalStateException` if the round's stage is `PREPARING`, contrary to its documentation - Correct messages not defined in configured locale not being loaded from the default - Fix packet manipulation when running against Minecraft 1.8 - `MGUtil#sendPlayerInfoPacket()` now gracefully fails
Internal Changes (kind of boring, feel free to skip)
- Use Gradle as a build system for the project - Protect `uninitialize()` methods from being called inappropriately - Optimize instantiation of `MGPlayer`/`Round` classes when not overridden - Optimize reflection code (death overrider and player list manipulator) - Remove unused methods in `MGUtil` - Move NMS utility methods to new NmsUtil class - Use native YAML for inventory serialization - Use .properties files internally in the locale implementation instead of pipe-separated .csv files - Move all hardcoded messages to locale file - Refactor locale keys to be more concise - Reformat documentation within code - Version suffix for snapshots now includes Git commit (if applicable)
0.3.0
New Features
- Add support for disabling "friendly fire" (team killing)
- Implement localization support for the library
- Allow override of vanilla
PlayerDeathEvent
with customMGPlayerDeathEvent
- Allow for sequential spawning as opposed to random
- Implement automatic rollback of physics events and explosions (only if triggered/placed by a player)
- Replace countdown with stopwatch-esque timer on lobby signs with infinite time (it counts up)
- Add option to use separate chat channels for arenas/teams
- Add /mglib command for informational purposes
- Add advance support for vanilla spectator gamemode (not guaranteed to work perfectly; a patch may be necessary)
- Make arena names case-insensitive when joining or creating lobby signs
- Add optional chat separation for spectators
API Additions
- Add metadata support for
MGPlayer
andRound
objects - Implement basic team support and API for
MGPlayer
objects - Add localization API
- Add
PlayerHitArenaBorderEvent
- Add
LobbyClickEvent
- Add
MGPlayerDeathEvent
- Add
JoinResult
enum as return value forPlayerJoinMinigameRoundEvent
- Add optional spawn argument to
Round#addPlayer()
so that a spawn number may be manually specified - Add a bunch of new config options (see Javadocs for more info)
- Add toggle for cleanly freezing players
- Add toggle for disabling
FoodLevelChangeEvents
- Add method to
ArenaFactory
for setting custom arena metadata (copied into round objects upon creation) - Add logging methods so that messages may be filtered by level as defined by MGLib's config.yml
- Add
Location2D
andLocation3D
classes - Add toggles for mob spawning/targeting in arena-containing worlds
- Add toggles for hanging entity and item frame breaking
- Add method spawning a player into a round
API Removals
- Remove
Minigame#log(String, int)
in favor ofMinigame#log(String, LogLevel)
Bug Fixes
- Fix a bunch of
NullPointerExceptions
- Fix
ArenaExistsException
never being thrown - Fix round being started if minimum player count is 0
- Modify exception handling while creating/fetching
ArenaFactories
- Fix events being sent to all minigame plugins instead of just the one they pertain to
- Fix
PlayerLeaveMinigameRoundEvent
firing after the player was already removed and reset - Fix lobby signs not always being properly updated
- Correct event priorities
- Fix worlds not being properly loaded upon round creation
- Fix metadata being set statically (same for all instances of implementing class)
- Fix entities targeting spectators
- Fix forced generation of normal level for worlds containing only a nether or end world
Internal Changes
- Minor refactoring of non-API classes
- Optimize of NMS utility methods
- Optimize backend
- Documentation fixes
- Replace arbitrary build number in snapshots with Jenkins build number (e.g. from
0.3.0-dev10
to0.3.0-SNAPSHOT-jnks77
) - Build against Bukkit
1.7.10-R0.1-SNAPSHOT
0.2.0
Additions
- Add option to set minimum players to start a round
- Add method for broadcasting to a single round
- Add config option to disable rollbacks entirely
- Add config option for displaying spectators on lobby signs
- Add config option to disable spectator flight
- Add a couple of convenience methods
- Add some new exception types
Bug fixes
- Fix config option "rollback-logging" not doing anything
- Fix PvP being disabled for all players (not just spectators)
- Fix Round#addSpawn() (it always throws an NPE in 0.1.0)
- Fix players being immediately removed from rounds upon joining from another world
- Fix armor not being removed after a player is removed from a round
- Fix ConfigManager#setAllowJoinRoundWhilePreparing(boolean)
- Fix rollbacks not always working as expected
- Fix maximum players per round being completely ignored
- Fix NPE while rolling back arena on server start
- Fix miscellaneous NPEs
- Refactor MGPlayerDeathEvent to a more appropriate MGPlayerSpectateEvent
Internal changes
- Documentation fixes
- Various optimizations
0.1.0
- Initial release!
Comments