The first MCreator Minecraft mod maker release of the year is here! It is packed with big and refreshing changes so make sure to check it out. You won't regret it!
Minecraft 1.20.4 and NeoForge
One of the biggest changes in this release is support for a new modding API - NeoForge. This support comes together with support for Minecraft 1.20.4.
Why the change to NeoForge? In the past few months, a significant part of the Minecraft Forge team forked into a NeoForged project and they are now working on a new system that we have decided to adopt based on the public pointers regarding future adoption plans of other modders and Minecraft mod users, and on the improvements the project aims to introduce into the API. Support for Minecraft Forge for 1.20.1 remains. In the future, we will go with the modding API that will show more promising development and adoption, while other modding APIs are still fully supported as plugins.
UI refresh
It has been a while since the last UI refresh of MCreator, so it was about time to make one. We are presenting the new look and feel of MCreator, which is now flatter, more modern, accessible, and performant. The new UI greatly improves compatibility with HiDPI screens (especially with screen scales such as 125% and 175%) and macOS/Apple Retina screens. The new UI also supports SVG vector icons that scale in a non-pixelated way on higher pixel density screens.
Below you can see another screenshot of the new UI in action with the new refreshed main workspace window and panels. You can also see the new unified title bar and menubar of the FlatLaf in action.
Themes can now use SVG or PNG for their icons. They can now specify all properties of the FlatLaf such as border style, font sizes, component spacing, and more. This allows for customization beyond the current color scheme options present in the old system. Additionally, themes can import IntelliJ-based JSON themes too.
Improved tag management
Minecraft is putting more and more importance on the Minecraft tags system. Therefore, we concluded tags no longer fit as a mod element, but more as a separate panel. Existing tag mod elements will be converted for you. This new workspace tab allows you to add, edit, and delete tags and tag entries in a centralized way with an easy way of having an overview of all tags present in the mod.
Additionally, MCreator will now generate certain tags for your convenience and automatically add them to the list of tags.
In the image below, you can see a detailed look at how editing of entries of a certain tag looks like. When clicking on the entry list of the selected tag, the editor will open and you can quickly add elements or sub-tags to it, as well as delete selected or all entries. In case you want to delete a managed tag entry, MCreator will warn you, but still allow deletion if needed.
Debugger system
This update introduces a system that allows a mod developer to monitor the execution of the mod, stop it on breakpoints, check how many times something executed, see running threads, and more. One component of the debugger is procedure markers. This system helps one to determine if, where, and how many times a certain procedure section is executed.
This update also adds a standard Java debugger that utilizes Java DBI to function. Debugger allows Minecraft mod developer to view threads of the JVM and their status, put breakpoints, view stack frames on a breakpoint hit, and step into/out/over when stepping execution in a breakpoint mode.
Jigsaw structures support
Another big addition to this update is support for Minecraft jigsaw structures. With this system, one can specify structure generation that generates structures that grow from the main centerpiece into all directions based on the definition of the user. This allows one to generate large randomized structures, similar to e.g. how villages are generated in vanilla Minecraft.
In the picture below, you can see how the jigsaw structures are defined in the interface of MCreator. One can define as many pools and pool entries as they want and make structure as randomized as needed.
User code blocks
This is a big one for people who code manually using MCreator. Alongside new debugger functionality, this update also adds user code blocks, that replace the old system for locking base mod files. Instead of locking base mod files, one can now add code within those custom user blocks and the code between those placeholder sections in the code will persist across builds, and if another generator specifies the same user code blocks, even across Minecraft versions, and even across modding APIs when possible.
Multiple advancement triggers/criteria
In this version of MCreator, you can specify multiple advancement triggers/criteria that all need to be matched before an advancement is granted. You can see in the screenshot below how this looks in practice.
Missing plugin or generator features detection
This update introduces a system to detect when there are mod elements, variables, or APIs in use that a given version of MCreator, plugin, and generator combination are not supported. In case, for example, you update the MCreator version and the plugin that adds a certain mod element type does not support this version yet, and you then open a workspace requiring this mod element type, instead of this workspace breaking, MCreator will detect missing features and warn the user about the requirements that need to be met for the workspace to be safely opened.
More tree features
We are introducing even more tree types in this update, including azalea, cherry, and mangrove tree feature types, mangrove root placer, and attached-to-leaves tree decorator. See them in action in the picture below!
In the screenshot below, you can also see some of the new tree feature blocks in the Blockly editor for the feature mod element.
Procedure improvements
Typed procedure blocks such as return, get, and set variable procedure blocks and "call procedure with return type" got type strings alongside the current color indicator, which should help with accessibility and ease of use of those blocks.
Datapack features
Feature mod element type is now also supported for data packs, meaning you can now make custom data packs that don't require any mod loader and work with vanilla Minecraft systems that add new worldgen features.
macOS native file chooser
This is great news for all macOS users. MCreator will now use the native system file chooser by default. If you prefer the old file chooser, you can still opt out and use the old style file chooser by going to the preferences.
Gradle console improvements
The Gradle console has been improved to better parse the output of different modding APIs and Gradle versions. Color highlighting has been improved and streamlined. The performance of the Gradle console, when a lot of text is being printed consecutively, has also been improved.
UX improvements
This update does not only come with UI refresh, but also with many small but great UX improvements that fall under the QOL category, but are nevertheless very important.
One of them is an option where one can now change the target folder of newly created or duplicated mod element right from the creation dialog using a small breadcrumb component included in the interface.
Another one that we wanted to showcase explicitly is an improved entity list selector, such as the block/item list selector. One can now middle-click entries to quickly delete them from the list, or double-click the entry to open its editor.
Improved performance
This one is not something you will notice visually when looking at the newly updated software, but something you will notice with time. We have done significant amounts of work to improve performance when generating the code of the workspaces and when saving mod elements. Those changes can in some cases improve the speed of the generator for multiple folds of the current performance, so this is a big one, especially for large projects made with MCreator Minecraft mod maker.
Release notes
- MCreator now uses FlatLaf for its look and feel. Themes can now specify all properties of the FlatLaf such as border style, font sizes, component spacing, and more. Themes can also import IntelliJ-based JSON themes.
- Mod base files locking system was replaced with custom user code blocks. Existing code will have to be manually migrated to code blocks.
- Themes can now define images in either SVG (recommended for HiDPI and Retina screens) or PNG format. GIF format is no longer supported. Some icons were renamed and/or removed.
- Tags are now managed in a workspace tab. Existing tag mod elements will be converted to tag entries automatically.
- Deal custom damage procedure block was removed. Existing procedures will be converted to deal a generic-type damage. Custom damage types should be now used to provide custom damage messages.
- MCreator now requires plugins to specify the exact versions of the software they work with. Plugins need to specify the array of versions they support.
- Attack damage value was adjusted so UI and in-game values match for item and tool (sword, hoe, special, multitool) mod elements. Manual adjustments may be needed.
- [Plugins] Generators can now exclude specific folders from an imported generator
Important bug fixes
Many bugs were fixed in this update. All the bug fixes are listed in the list below, but more notable bug fixes are:
- [Bugfix] "When ranged item used" procedure trigger provided incorrect itemstack dependency
- [Bugfix] Certain procedure blocks did not work correctly with the additional placement condition of the feature mod element
- [Bugfix] Custom biome mod element trees did not rotate vines and fruits properly
- [Bugfix] Some slot manipulation procedure blocks altered value of the original item stack passed when they shouldn't
- [Bugfix] Wait procedure block executed twice if present in a procedure triggered from both the server-side and client-side
- [Bugfix] Attack damage value could be offset in some cases for item and tool mod elements
- [Bugfix] Changes to the workspace settings do not apply to the mod files until the workspace is re-opened
- [Bugfix] Server-side only mod workspace setting did not work
- [Bugfix] Opening mod element editor that contains Blockly editor crashed MCreator on macOS 11
- [Bugfix] Using world or itemstack dependency in the block special info text provider procedure caused build errors
- [Bugfix] Using ranged item built-in item model caused models and textures of item properties not to work
Other improvements
You can see the full list in the full changelog of this release here (some more notable features not mentioned before are highlighted with bold text):
- Updated bundled Java to version OpenJDK 17.0.10
- Added support for native file chooser on macOS
- Refreshed UI with a new look and feel and new theme plugin features
- Improved HiDPI and macOS Retina screen support
- Improved UX, usability, and accessibility of many UI components across the software
- Added type strings to more procedure blocks for better accessibility
- Added an option to change the target folder when creating or duplicating a mod element
- Added support for Java Debug Interface with thread view, breakpoints, and stack frames view
- Added a system to put breakpoints in the code editor and run code execution in steps
- Added a system to debug procedure assemblies using debug markers
- Added custom user code blocks system that persists custom code in workspace files between code regenerations
- Added a new workspace tab for improved managing of Minecraft tags
- Added a new system for generating tags automatically when mod elements need them
- Significantly improved the performance of the code generation system
- MCreator now detects if a workspace and/or generator requires features or plugins that are not present/installed or failed to load and warns the user when opening the workspace
- Minecraft Java Edition data pack generators now support feature mod element
- Added support for handling ZIP files created on Windows on some non-English locales
- Build errors dialog now takes significantly less time to parse build errors and become visible in large workspaces
- The code editor for mod files now opens much faster in large workspaces
- Added support for requiring multiple triggers for the advancement to be granted
- Added base support for NeoForge 1.20.4
- Added Minecraft data pack generator for 1.20.4
- [NF 1.20.4] Added support for: custom code, key binding, sounds, variables, damage types, functions, potion items, commands, paintings, tags, structures, recipes, enchantments, GUIs, loot tables, particles, potion effects, game rules, music discs, creative tabs, JSON models, Java models, OBJ models, armor, villager trades, biomes, dimensions, advancements, features, item extensions, items, projectiles, villager professions, global triggers, blocks, tools, fluids, overlays, plants, living entities, procedures, AI tasks
- [DP 1.20.4] Added support for: damage types, functions, structures, recipes, loot tables, biomes, dimensions, advancements, features
- Added support for jigsaw pools to the structure mod element
- Improved generated code for block and plant drops logic to use vanilla loot tables
- Added custom dimension portal igniter item rarity parameter
- Added tree features: azalea tree, cherry tree, mangrove tree
- Added tree feature decorators: attached to leaves decorator
- Added tree root placers: mangrove roots
- [Bugfix] Loop flow control procedure block could be used within the wait procedure block
- [Bugfix] Jump to class declaration ctrl+click tool did not work when clicking on class names in imports
- [Bugfix] "When ranged item used" procedure trigger provided incorrect itemstack dependency
- [Bugfix] Certain procedure blocks did not work correctly with the additional placement condition of the feature mod element
- [Bugfix] Custom biome mod element trees did not rotate vines and fruits properly
- [Bugfix] Mod element generated code viewer would not update the code in real-time in some cases
- [Bugfix] "Player uses hoe" global trigger crashed the game when non-player entities used the hoe
- [Bugfix] Importing of animated GIF files in animation maker imported only the first frame or frames merged in some cases
- [Bugfix] Saving procedure that is called by other procedures could freeze the interface in some recursive-call cases
- [Bugfix] Some slot manipulation procedure blocks altered value of the original item stack passed when they shouldn't
- [Bugfix] Wait procedure block executed twice if present in a procedure triggered from both the server-side and client-side
- [Bugfix] Some tool and armor values were incorrect relative to the iron material pack in pack maker tools
- [Bugfix] Running test server could fail with file access errors in some cases
- [Bugfix] In some cases, items that were not enabled were shown in the tab element order editor
- [Bugfix] Projectile mod element could not be properly used in entity tags
- [Bugfix] Attack damage value could be offset in some cases for item and tool mod elements
- [Bugfix] Changes to the workspace settings do not apply to the mod files until the workspace is re-opened
- [Bugfix] Server-side only mod workspace setting did not work
- [Bugfix] Opening mod element editor that contains Blockly editor crashed MCreator on macOS 11
- [Bugfix] Living entity model layers were not affected by surrounding lighting
- [Bugfix] Tag entries with the same name as the registry name of the tag were not present in the generated tag JSON code
- [Bugfix] Using world or itemstack dependency in the block special info text provider procedure caused build errors
- [Bugfix] Using ranged item built-in item model caused models and textures of item properties not to work
- [Bugfix] Shoot arrow projectile procedure block could get broken if vanilla arrows were used
- [Bugfix] Some other minor fixes and improvements
Patch update 1
We have released a patch update to fix some bugs found in the 2024.1 release:
2024.1.15821:
- [Bugfix, NF 1.20.4] Pressing the E key when a text field in custom GUI is focused closes it
- [Bugfix] Tag namespace "mod" was not converted to mod ID in cases such as recipes
- [Bugfix] Certain startup notifications could appear behind the splash screen
- [Bugfix] Some other minor fixes and improvements
To install the patch, re-download 2024.1 and install it again. Make sure to uninstall the current version first.
Patch update 2
We have released another patch update to fix some more bugs found in the 2024.1 release:
2024.1.17319:
- Plugins can now omit patch number on the supported versions list if the plugin targets full release and its patches
- [Bugfix, NF 1.20.4] The "Get a copy of item from slot of itemstack" procedure block always returned empty itemstack
- [Bugfix, NF 1.20.4] Custom living entity inventory slots did not work correctly and were linked to a wrong inventory
- [Bugfix] World, biome, and feature generation did not work or froze in some cases
- [Bugfix] Custom block harvest level and tool type settings did not work well with certain non-MCreator mods
- [Bugfix] Custom item melee attack did not deal damage to the itemstack correctly
- [Bugfix] Ranged item use animation was shown even if no ammo was available
- [Bugfix] Ranged item use animation was shown even if the additional use condition procedure was false
- [Bugfix] The "Get team of entity" procedure block did not work properly for players
- [Bugfix] Progress dialog flickered in some cases on Linux
- [Bugfix] Some other minor fixes and improvements
To install the patch, re-download 2024.1 and install it again. Make sure to uninstall the current version first.
Patch update 3
We have released another patch update to fix some more bugs found in the 2024.1 release:
2024.1.18518:
- [Bugfix] Custom biomes in overworld or nether slowed down world gen progressively every time a save was opened
- [Bugfix, NF 1.20.4] Certain inventory/slot management procedure blocks caused build errors in rare cases
- [Bugfix] Some other minor fixes and improvements
To install the patch, re-download 2024.1 and install it again. Make sure to uninstall the current version first.
Let us know what is your favorite feature of the update in the comments! All other feedback is very welcome too. We are already looking forward to all the new creative mods using all the new features :) If you like what we do, consider donating to help us keep this project up.
Comments
To answer your original question on how to use it. I just went through the steps and here is what happens. :-)
Click on the Procedure you want to add the User Code on (don't open it)
Click on the Edit code of selected mode element in the left navigation
Change the code you need it for that procedure
Close the code editor
When prompted choose the option to Save without locking
Done - procedure isn't locked, but user code is added and should persist going forward.
However - if you open the procedure and save it in the normal view, it will overwrite your code again. You'll need to use the edit code option again going forward. So it works the same way as locking the procedure but without locking it.
Understood, but there are no examples of how to do this exactly. I provided only one example that I could find that may be used. I think that's the point being raised is, it would be great to know exactly how this is done. There are no procedures or anything I could find that allows a "User Code Block" to be added to a project and couldn't find it searching docs. :-)
User code blocks are not meant to be used with procedures. User code blocks are pre-positioned in needed mod base files. For example, check main mod file and try adding something between user code block comments, save file and build project to see how they operate/persist
Thanks - this is the problem "For example, check main mod file and try adding something between user code block comments". Where are we clicking to check the main mod file? :-) Sorry, I'm looking at this from a UI perspective and what do I click first to get to your step 2. If it isn't obvious on what to click, that will cause confusion. Hope that helps. :-)
We have released a patch update to fix some bugs found in the 2024.1 release:
2024.1.15821:
- [Bugfix, NF 1.20.4] Pressing the E key when a text field in custom GUI is focused closes it
- [Bugfix] Tag namespace "mod" was not converted to mod ID in cases such as recipes
- [Bugfix] Certain startup notifications could appear behind the splash screen
- [Bugfix] Some other minor fixes and improvements
To install the patch, re-download 2024.1 and install it again. Make sure to uninstall the current version first.
What about adding it a new Procedure Block that creates a "User Code Block" so you can edit it manually without locking the Procedure.