Methods getValue and setValue on Items now grants access to some underlying metadata. As of now this probably only works for potion types.
The console now displays thread priority for Haxe plugins aside from thread count.
Added a timeout of 2 minutes to all threads that are run from the loader (from Haxe plugins).
Better error logging: the stacktrace of anything Throwable is now printed from anything executed in the thread pool (including plugin code). Previously, anything thrown that was not an Exception would just be ignored.
Better handling of plugin enable/disable error logs.
Bug fixes
Fixed SpawningItemFactory not able to spawn items that also exist as entity (reported by Frizzus).
Small bug fixes in version checking.
Fixed ShapedRecipe not registering correctly (reported by Frizzus).
Miscellaneous
Updated Reflections API from 0.9.12 to 0.10.2 (latest) and refactored related deprecated code.
API changes Compatibility
Changed Recipe.getResult function signature (from collection of items to a single item) since the game does not allow recipe result amounts more than 1. This unfortunately can not be backwards compatible since the method name is the same and Haxe does not support this kind of overloading.
Updated to Haxe 4.3.1.
Additions
Expanded the ItemFactory: aside from just the material name, it now allows you give it the same input that Minecraft's /give command accepts to create items, allowing you to create much more detailed items.
Added executeCommand(command, arguments) to Game. This allows you to let the console execute any command (both vanilla and plugin commands) from your plugin's code.
Using key "meta" in Item's getValue and setValue functions, you can access the item's MetaData. However, this only works for potion types, as deserializing items is hardly possible in Spigot. Below is an example on how to change a potion's type to invisibility of 8 minutes:
a0.21 is a bugfix update with no changes to the API
- This update improves the initial loading of plugins. The loader will no longer attempt to load every single jar file in your plugins folder. Instead it will first try to recognize it as a Haxe plugin and load it when it has detected it as one.
Some plugins would cause the loader to crash because it tried to load the plugin. This bug was reported to me on Discord, feel free to report bugs!
- To help developers, the loader now gives a warning when a supposed Haxe plugin does not implement the Gate interface.
- Events that should get cancelled are now cancelled before the "occurrence" logic is called.
- The PlayerMoveEvent now runs synchronously by default and it won't log to the console when it's called, both to improve performance.
- The 'new update available' message is now just yellow and does not use underline.
The loader is now compiled in Java 8 instead of 17 to increase backwards compatibility
New features
Implemented IniFiction (in Haxe) to support ini files
Haxe plugins can now be loaded and unloaded at runtime (without server reload) with commands /hxp load <name> and /hxp unload <name>
Added shared plugin memory access to Java plugins running on the same server. Plugins need to add the HaxePluginLoader as a dependency and can then use HaxePluginHolder.getInstance().getSharedPluginMemoryForSpigotPlugin(yourPluginInstance);
The loader now checks for new available updates (every time it enables)
Minor changes
Fixed setGameMode not working
Fixed getDataFolderPath ignoring given sub folders
Fixed DisplayableMessage not being displayed to players
Fixed async error when setting a potion effect
Fixed async error when spawning a tree
Spawning a tree now returns the block at the location the tree was generated on
Exceptions on opening inventories that cannot be opened are now caught
Exceptions that happen within a response to a shared memory value change are now caught, printing the stacktrace
API changes Compatibility The API is backwards compatible with the a0.1 loader, however, the behaviour of damage() is now different!
Changed Scale and Inventory API to match 'get' and 'set' naming convention
Scale now has getCurrent() instead of multiplier() making it easier and more intuitive to use
Renamed Breakable interface to Damageable and changed semantics of damage()
damage() now takes an actual damage value instead of a scaled (0 to 1) value
Added backwards compatibility for API changes (deprecated functions)
getOtherLoadedPlugins now returns instances of the Bukkit Plugin objects, accessible as Dynamics in Haxe
Additions / new features
Added heal() to Damageable
Added setMax to encounter condition to set max health
Added getIniFile to FileSystemManager
Added getOtherLoadedHaxePlugins which returns Plugin instances of other Haxe plugins loaded on this server
Added interface for SemanticVersion
Added getLoaderVersion() to Plugin, which returns the SemanticVersion of the HaxePluginLoader the plugin is loaded by
Added asDynamic() to EventData for potentially more access to specific event methods/fields