MGLib v0.4.0


  • Filename
  • Uploaded by
  • Uploaded
    Feb 27, 2015
  • Size
    150.53 KB
  • Downloads
  • MD5

Supported Bukkit Versions

  • 1.8.1


MGLib v0.4.0 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.

This version of the library should be fully compatible with plugins built for 0.3.0, but if you notice any issues, please create an issue.

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)
  • Potential memory leak on round end (may be vanilla Minecraft issue)
  • Players may become invisible to each other after a series of teleports