Technical changelog

When we work on an update, we often need to make technical changes to improve the code or allow impossible features, such as plugin features. This page lists most of those changes for each version since MCreator 2021.2.

MCreator 2023.2

  • Faster workspace preload
  • Added Ingredient helper FTL functions
  • Several minor optimizations to the generated code and generator systems
  • Added several new workspace methods for FTL templates
  • Added an import  list parameter for generator.yaml to import use files from another generator
  • Collapsible panel optimizations
  • Plugins can now define new preferences dialog sections and entries
  • Plugins can now define recent changes when using a plugin update data file
  • Plugins can now properly add actions to the main toolbar
  • Plugins can now add custom vertical tabs to a workspace
  • Plugins can now add buttons to the workspace selector
  • Blockly panel holder type is now visible from JavaScript files
  • Major VCS refactoring (backend and frontend)

MCreator 2023.1

  • Updated bundled Java to version OpenJDK 17.0.5
  • Updated to Gradle 8
  • Improved creation of new procedure retval types and retval procedure selectors
  • Minor MCItem refactoring
  • Added a new Toolbox Type for Blockly editors for AI tasks
  • Removed tokens system
  • Added procedure blocks list inputs/statements support
  • Add MCREATOR_HOME system environment variable
  • Automagically determine GUI component names
  • Added a new LogicProcedureSelector component
  • Add proper support for disabled Blockly blocks
  • Added list templates support
  • Generator template parameter exclude has been removed and should be replaced with conditions, deleteWhenConditionFalse parameter is now ignored and handled automatically instead
  • Added support for list inputs. statements and fields, making custom Blockly mutators possible
  • Java plugins can now declare and use custom Blockly editors
  • Custom template sections for the preferences dialog can now be added using Java plugins
  • Refactored some generators-related classes to be more clear
  • Added recursive exclusions/inclusions support to mod element GUI
  • Changes to analytics (Google Analytics)
  • Improved handling of broken workspaces with missing GE definitions
  • Improved repeating inputs/fields value checks

MCreator 2022.3

  • Updated JFX and some dependencies
  • Added new condition methods for mod element templates
  • Add a new unmodifiable AI base system
  • Renamed BlockItemTextureSelector  to TypedTextureSelectorDialog 

MCreator 2022.2

  • Updated Blockly to 2022 Q1 Patch 2
  • Updated bundled Java to version OpenJDK 17.0.3
  • Changes and optimizations to template condition parser
  • Replaced several custom extensions with a new custom argument type for Blockly block definition files (JSON)
  • Entity data list now has a spawnable field
  • Added a new Blockly editor type: Command arguments
  • Added a new template file type (command arguments): .ctpl
  • Added a new API to make custom Java plugins
  • Added new events for java plugins: ApplicationLoadedEvent, MCreatorLoadedEvent, WorkspaceBuildEvent
  • Added a unique name validator
  • Allow custom data list entries to have multiple mappings

MCreator 2022.1

  • Updated the bundled JDK to Java 17
  • Updated Blockly to 2022 Q1
  • UTF-8 is now used by default
  • Merged together similar compare procedure blocks
  • Added a preference to use the macOS menu bar
  • The start time of a Gradle task is now printed into the console
  • Refactor Blockly editors for easier implementations
  • Help context classes structure overhaul
  • Added support for localizing Blockly toolbox category descriptions
  • Renamed the "returnTypeOnly" field to "ignoredByCoverage" in variable files
  • Added a converter for legacy element types system
  • Removed some base types that should not be base types
  • Better preferences dialog
  • Windows now uses a better File chooser
  • Added datalist for projectiles
  • Added more methods for mod element templates

MCreator 2021.3

Miscellaneous

  • Updated the bundled JDK to Java 16
  • MCreator now scales to 2.7k screens
  • Removed following base types: KEYBIND, OVERLAY, PROCEDURE, STRUCTURE
  • Added new base type: BLOCKENTITY, FEATURE
  • Changed the base type of the key binding, overlay and procedure to the OTHER Base type
  • Changed the structure mod element base type for FEATURE
  • Mod elements can now have more than one base type
  • Blocks and plants now have the FEATURE (if generated in the world) and the BLOCKENTITY (it has an inventory) base types
  • Added new parameters for custom variables: returnTypeOnly
  • Added option to use hex colors for procedure categories and variables
  • Print block can now use a code template
  • Added the mob spawn types data list
  • Each inner class is now an independent class
  • Improved code format using Eclipse code formatter
  • Plugins can now register custom Blockly JavaScript files
  • Data list code has been updated to support custom data lists.
  • Moved RSTA icons to themes

Generators

  • MCreator now automatically detects the mod element coverage using excludes/includes lists
  • Removed the `partial_support` field inside the generator.yaml
  • Added a new parameter to check the Java model type
  • New general conditions: hasCreativeTabs(), hasVariables(), hasJavaModels(), hasSounds(), ${FTL EXPRESSION}, isCustomModel()
  • New general methods: getResourceLocationForModElement(mod element.getModElement())
  • Using "@REGISTRYNAME" and "@NAME" now returns the registry name and the name of the mod element lowercased.
  • Support for global templates
  • Support for common definition files using base types
  • Possibility to get all elements using the mod element id + s (e.g. "blocks")
  • New FreeMarker methods: getRegistryNameUpper(), w.hasElementsOfType(modElementId), w.hasToolsOfType('tooltype'), w.hasBlocksMineableWith('toolType')
  • New code optimizer for procedure blocks: "opt." + removeParentheses, toInt(value), toFloat(value)
  • Armor: hasCustomArmorModel()
  • Biome: hasFruits(), hasVines()
  • Block, fluid and plant: doesGenerateInWorld()
  • GUI: hasButtonEvents(), hasSlotEvents()
  • Item: hasInventory()
  • Potion effect: hasCustomRenderer()
  • Improved code format using Eclipse code formatter

MCreator 2021.2

  • Updated the bundled JDK to Java 11
  • Updated Blockly to 2021 Q2
  • Removed support for 32 bits computers
  • Taskbar support
  • JavaDoc support
  • Plugin update checker using an external JSON file
  • Move default entity animations to plugins
  • Removed hardcoded yes/no option dialogs
  • (Forge 1.15.2) Code no longer use mod element system
  • (Forge 1.16.5) Code, structure, painting, particle, and potion mod elements no longer use the mod element system
  • Parallelized some parts of generators
  • New resource loading system allowing themes in plugins
  • New color scheme system to allow custom schemes in themes
  • Added field exclusions for definition files
  • New (optimized) variable system allowing custom local and global variables
  • Added 2 procedure block extensions: the variable list (type + _variables), the procedure list of the procedure return value (procedure_retval_ +type )
  • Help tips arguments
  • Improved import formatter performance drastically
  • New procedure selector system
  • Dynamic variable block loading for procedures
  • Changed the way code is regenerated
  • "Is custom loop" extension for procedure blocks
  • Added "side" field for global triggers
  • New mod element type system (first step for custom mod elements)
  • Refactor mob to livingentity internally
  • Refactor gun to rangeditem internally


Donate to MCreator

By donating to developers you can speed up development, as with more resources, we can dedicate more time to MCreator. It is a free project made by developers working on it in their free time.