Releases: EliteMasterEric/PickHaxe
Releases · EliteMasterEric/PickHaxe
Version 0.4.0
This version was a long time in the making, in part due to issues with the Haxe compiler itself; now, most of those are resolved. Fabric 1.16.5-1.20.2 (+ snapshots!) as well as Forge 1.18.2-1.20.2 are now fully supported and have working builds, and the tools for developing for both have greatly improved.
Added
- Updated JVM target to be functional, and to be the default mode (to allow for improved code generation from Haxe).
- In this mode, Pickhaxe will now generate an unmapped "dev" JAR rather than a set of Java source files.
- Added the
pickhaxe runClientcommmand.- Specify a Minecraft mod loader and game version, and the game will
- Added the
pickhaxe templatecommand.- This acts as an alternative to the
pickhaxe initcommand, allowing you to download a sample project and get started with PickHaxe immediately. - Use
pickhaxe template --listto peruse the list of official sample projects andpickhaxe template <id>to download one.
- This acts as an alternative to the
- Added the
--shadingand--no-shadingarguments to the Build command.- These are used to enable and disable Shading, which is a tool to relocate core classes which would otherwise have shared classpaths. Without Shading, two PickHaxe mods for Forge would conflict with each other.
- Added the
--makeargument to the Build command.- This will automatically call
pickhaxe makewith your chosen settings.
- This will automatically call
- PickHaxe project files now have the
mod-authorsandmod-contributorstags. - Calling
tracein Haxe now properly usesslf4jto output a debug log.
Changed
- PickHaxe is now dependant on Haxe
5.0.0-alpha. This is due to a long list of recent fixes made to the JVM target that enable PickHaxe to function.- Easiest way to handle this is to modify
.vscode/settings.jsonand changeterminal.integrated.env.windowsto add
- Easiest way to handle this is to modify
- The
pickhaxe buildcommand has been improved; it now cleanly handles multiple versions of Minecraft, and runs way faster on repeat builds for the same version. - The
pickhaxe initcommand now includes the.vscode/settings.jsonand.gitignorefiles. - Call stacks for error messages now only display with
--verboseturned on. - Error messages for the PickHaxe tool now display an error code (
[EXCEPTION ###]) to assist with diagnosis, and for the most part better convey the issue.
Fixed
- A large range of fixes to ensure projects generate functioning builds for Fabric and Forge.
- I am summarizing this in one line but really this is what took months of work, on-and-off.
- Fixed an issue where mod icons were not displaying. Make sure the icon is located at
resources/assets/<modid>_icon.pngso it works. - Fixed an issue where certain metadata wasn't getting put into the mod manifest.
- Fixed a bug where the wrong Parchment version would be used when using
build --make. - Fixed an issue where builds would fail if optional tags were not included in
project.xml.
Removed
- Removed the mapping macros, which were never used (Gradle is now used to obfuscate output instead).
Known Issues
- Any time you use a functional interface (i.e. you pass a function as an argument to another function), all parameters must be properly typed or Java will crash.
Version 0.3.0
Added
- Implemented basic support for these versions:
1.18.2fabric1.17.1fabric1.16.5fabric
- Added improved error handling to the PickHaxe tool.
- In the event of an error, specific non-zero exit codes will be used for each problem.
- You can now use
latestorlatest-snapshotwhen defining a target version forpickhaxe buildandpickhaxe make.
Changed
- Moved sample projects to their own repository.
- This repo supports Github Actions for automated validation.
- Mod icon now located in the root of the assets folder, to fix an issue with old versions of Forge Modloader.
- Modified
pickhaxe setupto use a script rather than an executable. You should not longer have to rerun it every update.
Fixed
- Fixed an issue where the
pickhaxe cleancommand would not work on Windows. - Fixed various issues which caused problems with certain versions of Forge.
- Fixed an issue where the
initcommand said dashes were valid in mod IDs. pickhaxe buildnow properly ends if one of the Gradle tasks fails.- Fixed various build issues.
Version 0.2.0
One word: Forge.
Added
- Implemented basic support for Forge 1.19.3.
Modhas been moved toCommonMod, and is now a class rather than an interface.onInitializehas been renamed toonModInitialize.- New functions you can override:
onCreativeModeTabRegisterto register Creative Mode tabs andonRegisterto register anything else (blocks, items, fluids).
- Added incomplete implementations of
ClientModandServerMod, for eventual use for side-only mod events. - Added the
--mappingsargument topickhaxe make. - Added several classes to the
net.pickhaxe.compatpackage to assist with compatiblity.- Newly created classes, as well as abstracts wrapping Minecraft classes, are placed in this package to avoid generating new classes in the
net.minecraftpackage. - Added the
net.pickhaxe.compat.world.item.Itemclass.- This class is an abstract wrapper for
net.minecraft.world.item.Item, adding new functionality and cross-loader/cross-version convenience functions.- Use it in place of
Itemwhere you can.
- Use it in place of
- Added the
item.register(resourceLocation)method to correctly add the item to theITEMSregistry.- Make sure this function is called from the
CommonMod.onRegisterfunction to ensure the item is registered in time.
- Make sure this function is called from the
- This class is an abstract wrapper for
- Replaced the
net.minecraft.world.item.CreativeModeTabclass with an abstract wrapper.- This abstract wrapper automatically adds new functionality and cross-loader/cross-version convenience functions.
- You do not need to change the class you are importing to take advantage of this functionality.
- Added the static
CreativeModeTab.builder()method to generate a proper CreativeModeTab Builder class. - Added the
creativeModeTab.register(resourceLocation)method to correctly add the item to the list of Creative Mode tabs.- Make sure this function is called from the
CommonMod.onRegisterfunction to ensure the item is registered in time. - Also assigns a proper display name for the tab as necessary.
- Make sure this function is called from the
- This abstract wrapper automatically adds new functionality and cross-loader/cross-version convenience functions.
- Newly created classes, as well as abstracts wrapping Minecraft classes, are placed in this package to avoid generating new classes in the
Changes
- Refactored the Made in Haxe sample project to use the new
CommonModlifecycle functions. - Refactored the Obsidian Armor sample project to use the new
CommonModlifecycle functions. - PickHaxe and Haxe are now shaded properly in the mod JAR.
- This prevents a crash error caused by including two Forge mods that both used PickHaxe.
- The
pickhaxe buildandpickhaxe makecommands now properly report and exit early if one or more Gradle tasks fails, instead of continuing to perform more Gradle tasks.
Fixes
- Fixed a bug where the build script would attempt to access the
generated/generateddirectory.
Verison 0.1.1
A day 1 patch to resolve a couple of issues people were having.
Added
- Added the
makecommand to convert the generated Java code into a valid mod JAR.- This was previously done through manually calling the
gradle buildcommand.
- This was previously done through manually calling the
- Added a new set of Minecraft version compile defines, which is more compatible with snapshot versions.
- Each version should have defines for
eq,neq,gt,gteq,lt, andlteq, for each comparison operation. - Instead of
#if (minecraft >= "1.19.3"), it is recommended to use#if minecraft_gteq_1_19_3if compatibility with snapshots is needed.
- Each version should have defines for
- Added the
<haxelib name="pickhaxe-tmi">tag for use inproject.xmlfiles.- This adds Haxelibs to the build dependencies for the library.
- Specify
version="1.0.0"to set the version orgit="gitrepourl"to use a Git repository version. - Feel free to create your own plugins for PickHaxe as standalone Haxelibs!
- Added externs for several Minecraft classes:
net.minecraft.network.chat.Componentnet.minecraft.util.StringRepresentable
Changed
- Improved handling of version checks.
- Previous version is now calculated based on Mojang's version manifest rather than trying to parse the Semantic Version as a string.
- Added function to calculate next version.
- Slightly improved handling of snapshot versions.
- PickHaxe relies on official Mojang mappings, so you might have no trouble or might have a broken mod (depending on whether the given snapshot refactored the code you are using), but some snapshots can be targeted properly now.
- This mainly applies to Fabric, since Forge generally doesn't support snapshot versions.
- Added more print calls to some areas of the tool, when
--verboseis used. - Added a version check for Haxe; if the Haxe version is not 4.3.0 (or greater), builds will fail.
- Improved the error message when no loader is specified when performing the
buildcommand. - Improved the error message when Maven API parser fails.
- Cleaned up externs for
BuiltInRegistriesandSoundEvents.
Fixed
- Fixed an issue with
DisplayItemsGeneratorHaxethat would cause crashes on1.19.4. - Fixed an issue where the
cleancommand would be unable to delete child directories before parent directories. - Fixed an issue where certain network requests would fail during the build step.
- Fixed an issue where the build script would spam the Mojang servers with web requests.
- Fixed an issue with Parchment version strings not being built correctly.
- Fixed an issue where the Haxe installation directory was hard-coded.
- Fixed an issue with passing Parchment versions to the gradle script.
- Fixed an issue where
-vand-hwould not be recognized properly. - Fixed an issue where the wrong template path for
project.xmlwould be used. - Fixed an issue where the
cleancommand actually called thebuildcommand.
Verison 0.1.0
[1.0.0] - 2023-03-30
Initial release.
Added
- Created new PickHaxe tool and libraries.
- Implemented basic support for Fabric 1.19.3
- Implemented basic support for Fabric 1.19.4
- Added Made in Haxe sample project.
- Added Obsidian Armor sample project.