Skip to content

Commit 2e0ffd1

Browse files
Version 0.4.0.
1 parent 6089946 commit 2e0ffd1

File tree

6 files changed

+79
-70
lines changed

6 files changed

+79
-70
lines changed

ADVANCED.md

+10
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ MCP: A set of mappings made by the MCP team, one of the oldest mapping teams.
5555
- Built Forge JARs use READABLE class names? Obfuscated method names? What about field names?
5656
- Original enum field names?
5757

58+
## Migration
59+
60+
```
61+
# Migrate from Yarn to MojMaps
62+
./gradlew.bat migrateMappings --mappings "net.minecraft:mappings:1.20.2"
63+
64+
# Then add this to build.gradle
65+
mappings loom.officialMojangMappings()
66+
```
67+
5868
## Additional Links
5969

6070
Fabric Intermediaries: Maps sourcenames->unique mappings common to all versions but not readable by humans

CHANGELOG.md

+54-65
Original file line numberDiff line numberDiff line change
@@ -4,78 +4,68 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
55

66
## Upcoming
7-
- [] Caused by: java.lang.NoSuchFieldError: displayName
8-
at net.pickhaxe.compat.world.item.CreativeModeTab$CreativeModeTab_Impl_.setId(E:\Programming\Game Modding\Minecraft Modding\PickHaxe\pickhaxe\src\net/pickhaxe/compat/world/item/CreativeModeTab.hx:66)
9-
at net.pickhaxe.compat.world.item.CreativeModeTab$CreativeModeTab_Impl_.register(E:\Programming\Game Modding\Minecraft Modding\PickHaxe\pickhaxe\src\net/pickhaxe/compat/world/item/CreativeModeTab.hx:30)
10-
at com.elitemastereric.madeinhaxe.items.ModItems.registerCreativeTab(./src/com/elitemastereric/madeinhaxe/items/ModItems.hx:38)
11-
at com.elitemastereric.madeinhaxe.MadeInHaxeMod.onCreativeModeTabRegister(./src/com/elitemastereric/madeinhaxe/MadeInHaxeMod.hx:13)
12-
at net.pickhaxe.core.CommonMod.onInitialize(E:\Programming\Game Modding\Minecraft Modding\PickHaxe\pickhaxe\src\net/pickhaxe/core/CommonMod.hx:196)
13-
at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:383)
14-
- [] Caused by 1: java.lang.NoClassDefFoundError: net/minecraftforge/event/RegistryEvent/Register
15-
at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?] {}
16-
at java.lang.Class.privateGetDeclaredMethods(Class.java:3402) ~[?:?] {}
17-
at java.lang.Class.privateGetPublicMethods(Class.java:3427) ~[?:?] {}
18-
at java.lang.Class.privateGetPublicMethods(Class.java:3433) ~[?:?] {}
19-
at java.lang.Class.getMethods(Class.java:2019) ~[?:?] {}
20-
at net.minecraftforge.eventbus.EventBus.registerObject(EventBus.java:92) ~[eventbus-5.0.3.jar%2336!/:?] {}
21-
at net.minecraftforge.eventbus.EventBus.register(EventBus.java:120) ~[eventbus-5.0.3.jar%2336!/:?] {}
22-
at net.pickhaxe.core.CommonMod.forge_registerListeners(E:\Programming\Game Modding\Minecraft Modding\PickHaxe\pickhaxe\src\net/pickhaxe/core/CommonMod.hx:95) ~[obsidianarmor-0.4.0.jar%2353!/:?] {re:classloading}
23-
- [] Forge (multiple mods): https://github.com/HaxeFoundation/haxe/issues/11361
24-
- [] Prompt to clean when switching versions, and save last version so we know when to do that
25-
- [] Add command line argument for shading
26-
- [] Option to auto-make when building
7+
### Enhancements
8+
- Support more versions of Forge
9+
- Support for Legacy Fabric
10+
- Support for Quilt
11+
- Support for NeoForge
12+
- Update documentation
13+
- Add feature in tooling that checks metadata and warns you if a specific loader/version commmbination is unsupported
14+
- Add more Bare samples for MadeInHaxe
15+
- Add more sample projects
16+
- Add more compat features
17+
- Dogfood PickHaxe (make some real mods)
18+
### Known Issues
19+
- Multiple PickHaxe mods for Forge will conflict: https://github.com/HaxeFoundation/haxe/issues/11361
20+
- Functional interfaces need to be fully qualified (i.e. if you're passing a function as an argument, add typing to all the arguments or it will break at runtime).
21+
- `pickhaxe runClient` doesn't work on Fabric (need to figure out a fix)
22+
### Versions to Fix
23+
- [] Fabric 1.16.5 (Bare): Just need to write it
24+
- [] Forge 1.19.4 (Bare): Just need to write it
25+
- [] Forge 1.20.2 (Bare): Just need to write it
26+
- [] Forge 1.16.5 (Bare): Something Gradle-related?
27+
- [] Forge 1.16.5: Something Gradle-related?
28+
- [] Forge 1.17.1: Something Gradle-related?
29+
- [] NeoForge 1.20.2: Haven't looked into it, will need Gradle work
30+
- [] Quilt 1.18.2: Haven't looked into it, will need Gradle work
31+
- [] Quilt 1.19.4: Haven't looked into it, will need Gradle work
32+
- [] Quilt 1.20.2: Haven't looked into it, will need Gradle work
2733

28-
## [0.4.0]
34+
35+
## [0.4.0] - 2023-11-10
36+
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.
2937
## Added
3038
- Updated JVM target to be functional, and to be the default mode (to allow for improved code generation from Haxe).
3139
- In this mode, Pickhaxe will now generate an unmapped "dev" JAR rather than a set of Java source files.
32-
- Fixes to mod metadata now add `authors` and `contributors`
40+
- Added the `pickhaxe runClient` commmand.
41+
- Specify a Minecraft mod loader and game version, and the game will
42+
- Added the `pickhaxe template` command.
43+
- This acts as an alternative to the `pickhaxe init` command, allowing you to download a sample project and get started with PickHaxe immediately.
44+
- Use `pickhaxe template --list` to peruse the list of official sample projects and `pickhaxe template <id>` to download one.
45+
- Added the `--shading` and `--no-shading` arguments to the Build command.
46+
- 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.
47+
- Added the `--make` argument to the Build command.
48+
- This will automatically call `pickhaxe make` with your chosen settings.
49+
- PickHaxe project files now have the `mod-authors` and `mod-contributors` tags.
50+
- Calling `trace` in Haxe now properly uses `slf4j` to output a debug log.
3351
## Changed
34-
- Haxe dependency updated to require `5.0.0-alpha` (unless they end up releasing a 4.3.3).
52+
- 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.
3553
- Easiest way to handle this is to modify `.vscode/settings.json` and change `terminal.integrated.env.windows` to add
54+
- The `pickhaxe build` command has been improved; it now cleanly handles multiple versions of Minecraft, and runs way faster on repeat builds for the same version.
55+
- The `pickhaxe init` command now includes the `.vscode/settings.json` and `.gitignore` files.
56+
- Call stacks for error messages now only display with `--verbose` turned on.
57+
- 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.
3658
## Fixed
37-
- Updates and bug fixes to fix Fabric 1.16.0-1.20.2, as well as Fabric on snapshot 23w44a.
59+
- A large range of fixes to ensure projects generate functioning builds for Fabric and Forge.
60+
- I am summarizing this in one line but really this is what took months of work, on-and-off.
3861
- Fixed an issue where mod icons were not displaying. Make sure the icon is located at `resources/assets/<modid>_icon.png` so it works.
39-
## To Fix
40-
- [] Fabric 1.16: Untested
41-
- [] Fabric 1.16.1: java.lang.NoSuchFieldError: displayName
42-
- [X] Fabric 1.16.2
43-
- [X] Fabric 1.16.3
44-
- [X] Fabric 1.16.4
45-
- [X] Fabric 1.16.5
46-
- [X] Fabric 1.17
47-
- [X] Fabric 1.17.1
48-
- [X] Fabric 1.18
49-
- [X] Fabric 1.18.1
50-
- [X] Fabric 1.18.2
51-
- [X] Fabric 1.19
52-
- [X] Fabric 1.19.1
53-
- [X] Fabric 1.19.2
54-
- [X] Fabric 1.19.3
55-
- [X] Fabric 1.19.4
56-
- [X] Fabric 1.20
57-
- [X] Fabric 1.20.1
58-
- [X] Fabric 1.20.2
59-
- [X] Fabric 1.20.3 (Snapshot)
60-
- [] Forge 1.16: Untested
61-
- [] Forge 1.16.1: Untested
62-
- [] Forge 1.16.2: Untested
63-
- [] Forge 1.16.3: Untested
64-
- [] Forge 1.16.4: Untested
65-
- [] Forge 1.16.5: Untested
66-
- [] Forge 1.17: Untested
67-
- [] Forge 1.17.1: ForgeGradle issues
68-
- [] Forge 1.18: Untested
69-
- [] Forge 1.18.1: Untested
70-
- [] Forge 1.18.2: java.lang.NoClassDefFoundError: net/minecraftforge/event/RegistryEvent/Register
71-
- [X] Forge 1.19
72-
- [X] Forge 1.19.1
73-
- [X] Forge 1.19.2
74-
- [X] Forge 1.19.3
75-
- [X] Forge 1.19.4
76-
- [] Forge 1.20: ForgeGradle issues
77-
- [] Forge 1.20.1
78-
- [] Forge 1.20.2
62+
- Fixed an issue where certain metadata wasn't getting put into the mod manifest.
63+
- Fixed a bug where the wrong Parchment version would be used when using `build --make`.
64+
- Fixed an issue where builds would fail if optional tags were not included in `project.xml`.
65+
## Removed
66+
- Removed the mapping macros, which were never used (Gradle is now used to obfuscate output instead).
67+
## Known Issues
68+
- 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.
7969

8070

8171
## [0.3.0] - 2023-07-10
@@ -180,4 +170,3 @@ Initial release.
180170
- Implemented basic support for Fabric 1.19.4
181171
- Added Made in Haxe sample project.
182172
- Added Obsidian Armor sample project.
183-

README.md

+8-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44

55
PickHaxe is a flexible, powerful Haxe framework to supercharge your Minecraft mod development. Build your mods in a high-level strictly-typed language and export to the Minecraft version and modding API of your choice.
66

7-
Getting started is simple. Install Haxe and PickHaxe, then create a new mod project and get developing. When you're ready to test, PickHaxe will compile your mod for the mod loader of your choice, for the Minecraft version of your choice.
8-
9-
PickHaxe currently supports exporting mods to Minecraft 1.19, with plans to gradually expand to other versions over time. PickHaxe currently supports exporting mods to Fabric and Forge.
7+
Getting started is simple. Install Haxe and PickHaxe, then create a new mod project (or download a sample project) and get developing. When you're ready to test, PickHaxe will compile your mod for any of several several versions of Minecraft on multiple different mod loaders. PickHaxe currently supports Fabric 1.16.5-1.20.2, as well as Forge 1.18.2-1.20.2, and all your code can be shared in a single project!
108

119
# Usage
1210

11+
Download PickHaxe via [haxelib](https://lib.haxe.org/p/PickHaxe/):
12+
13+
```
14+
haxelib install pickhaxe
15+
haxelib run pickhaxe help
16+
```
17+
1318
Please see the [tutorial](https://github.com/EliteMasterEric/PickHaxe/wiki/Tutorial%253A-Your-First-Mod) on the wiki for more information on basic usage.
1419

1520
Also see the available [sample projects](https://github.com/EliteMasterEric/PickHaxe-Samples/), available in their own repo.

TROUBLESHOOTING.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Troubleshooting Guide
2+
3+
## Unix.Unix_error(40, "recv", "")
4+
5+
Just keep running the command until it works, it's an issue with Haxe I think.

haxelib.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"classPath": "src",
77
"description": "A Haxe framework to build Minecraft mods. Fabric, Forge, and more.",
88
"contributors": ["MasterEric"],
9-
"releasenote": "Working JVM target (replaces Java target) for better code generation.",
9+
"releasenote": "template and runClient commands, working Forge and Fabric, and many bugfixes.",
1010
"version": "0.4.0",
1111
"dependencies": {
1212
"thx.semver": "",

src/net/pickhaxe/tools/schema/PickHaxeDefines.hx

+1-1
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ class Builder
597597
result.append(DEFINE, defines.pickhaxe.loader.current);
598598

599599
// Add a define for the current Minecraft version (#if minecraft == 1.19.3, #if minecraft >= 1.12.2)
600-
result.append(DEFINE, 'minecraft=${defines.pickhaxe.minecraft.version}');
600+
// result.append(DEFINE, 'minecraft=${defines.pickhaxe.minecraft.version}');
601601

602602
return result;
603603
}

0 commit comments

Comments
 (0)