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 custom MGPlayerDeathEvent
  • 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 and Round 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 for PlayerJoinMinigameRoundEvent
  • 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 and Location3D 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 of Minigame#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 to 0.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

Posts Quoted:
Reply
Clear All Quotes