github JannisX11/blockbench v5.1.0
5.1.0 - The Workflow Update

6 hours ago

Welcome to Blockbench 5.1 - The Workflow Update!

Highlights of this update:

  • Mirror Animating!
  • Native support for image formats, including Jpeg, TGA, and WebP
  • Bounding Boxes
  • Better pen tablet support
  • Preserve World Transform option
  • UV Size Editor
  • Texture wrap mode / Texture tiling
  • Editing of Minecraft: Bedrock Edition attachables

Update Video: https://youtu.be/OH82WjNwriE

Painting

  • Improved pen tablet support (#3214)
    • If you are having trouble getting pressure sensitivity to work, ensure Windows Ink is enabled in your pen tablet software, and set a modifier in the Blockbench paint settings (for example "Brush Size Modifier") to "Pressure".
  • Added mouse drag gestures to adjust sliders such as brush size, which can be enabled in keybindings (#3235)
  • The Layers panel is now always visible (#2904)
  • Added automatic tool switch when using color picker (#3369, thanks @Kannoma!)
    • When holding alt to color-pick, if the picked pixel was transparent, it will switch back to the eraser when releasing the button
    • When using the eraser and using Alt to color pick, picking a colored pixel will switch back to the brush tool
    • Added setting "Color Picker Tool Switch" to toggle this behavior (on by default)
  • Added new layer blend mode "Alpha Mask"
  • Line tool length and angle are now displayed in status bar
  • Added Set Opacity option in the Adjust Opacity tool (#3374)
  • Added a Brightness slider to the Adjust Hue/Saturation tool
  • The Opacity Slider is now visible while using the Color Picker (#3300)
  • The Hold keybinding for the Color Picker can now be customized in the keybindings menu (JannisX11/hytale-blockbench-plugin#140)

Textures

  • Textures now support multiple formats natively! The following formats can be loaded into Blockbench, refresh in real time, and can be saved:
  • Added a TGA texture workflow that supports retaining color accuracy at low opacity pixels. To use this, click Split Alpha Channel into Layer and keep the alpha channel as a separate layer
  • "Split RGB channels into Layer" now support the alpha channel (#3302)
  • Added setting for individual FPS per flipbook texture (#2851)
  • Flipbook texture animations now play in sync with the animation timeline, can be turned off in setings (#2850)

Modeling

  • Added "Preserve World Transform" option when reparenting outliner nodes. This lets you keep the global position of an element when adding it to another group, even if the parent groups have different rotations
  • Added setting to transform cubes from the center in the transform panel
  • Added setting to display positions in local space (JannisX11/hytale-blockbench-plugin#130)
  • New armature bones now inherits dimensions from parent bones (#3279)

Animation

  • Added Mirror Animating (#2321)
    • Similar to Mirror Modeling and Mirror Painting, this live-flips your keyframe changes to the other side. Useful for symmetrical animations such as walk cycles!
    • Bones need to follow a left/right naming schema (e. g. L/R, left/right etc.) to be mirrored
    • The mirror phase offset can be configured (#2375)
  • Added Copy Animation Pose action
  • Added action to Add All to Timeline (#3150)
  • Added Round Keyframe Values action (#3363)
  • Created Keyframe Column variation to create keyframes on all channels. This is activated by holding Shift, but can be configured in Keybindings (#1457)
  • Timeline markers can now be named
  • Added timeline marker properties dialog
  • Timeline markers can now be dragged by holding control (#1483)
  • Option to clear opposite when flipping animation
  • Display timeline scrub tooltip in frames if setting is enabled
  • Support custom channels in Filter Channels menu in timeline

UV

  • Added new "Edit UV Size" tool. This makes changing or adjusting UV sizes much more intuitive by providing a live preview and offering options to adjust UV values on elements accordingly.
    • This tool can be accessed by clicking the UV size number at the top of the UV editor, or by editing the UV size value in the project or texture properties, depending on format.
  • Added new tool "Move UV to cursor" to simplify moving UVs on large texture maps (#2852)
  • Added Texture Wrap setting for textures (#1391)
    • This setting is available in supported formats and lets you select how the texture behaves in regards to UV faces being outside of the texture
      • "Restricted" restricts UV to only exist on the texture
      • "Repeat" tiles the texture infinitely
      • "Clamp Edge" lets you add UVs outside the texture, but the texture value is clamped to the edge, so only the pixels on the edge repeat forever
    • Repeat displays a 3x3 tiled area in the UV editor.
    • Based on #3072, thanks @nklbdev!
  • "Move Texture with UV" support for UV rotation and flip operations (#3319, thanks @Kannoma!)
  • Simplified Display UV setting and UV overlay toggles, they are now global instead of per-project.
  • Display UV and UV overlay options are now saved between restarts (JannisX11/hytale-blockbench-plugin#55)
  • Improved rectangle select in UV editor when showing all faces
  • Changed style of UV editor face selector bar

Bounding Boxes

Added a new type of element, the Bounding Box!
This represents an axis-aligned bounding box that can be used by various formats and games/engines for anything ranging from hitbox to collision and culling shape.

  • Each bounding box can be assigned one or multiple Functions in the element panel, these determine if the bounding box gets exported for a specific purpose.
  • Bounding Boxes for the current model can be auto-generated from Tools > Generate Bounding Boxes
  • Please note that bounding boxes are not part of most model formats and need to be exported separately, they are not part of the file. You can, however, save your model as a project file (.bbmodel) to keep bounding boxes in your project.

Bounding Box uses for Minecraft: Bedrock Edition

  • Block collision and selection components can be generated from bounding boxes in your model via Tools > Copy Collision/Selection Component
  • Entity Collision and custom hit test components can be generated from bounding boxes in your model via Tools > Copy Collision/Hitbox Component
  • The new Bedrock voxel shape file type can be imported, edited, and saved
  • Bedrock block collision and selection components are auto-loaded from the behavior pack block file if available
  • Pasting or drag-and-dropping the JSON code for a collision or selection component into Blockbench will load it as bounding boxes

Collections & Multi file editing

Blockbench has been expanded with a system to allow different formats to enable multi file editing workflows. Multi file means multiple files can be open in one project, but still save to separate files.
This is implemented with the help of object scopes and collections. This is an ongoing project, but Blockbench 5.1 has the first built-in use-cases for this with Minecraft Bedrock attachable and multi block editing.

  • Added scopes as an integer property on outliner nodes, collections, textures, animations. Scopes cannot be set by the user directly in most cases but are used by multi file editing workflows to identify which file an object belongs to.
  • If a scope is set to a value higher than 0, it is displayed as a scope color on the left edge of the object in the respective list
  • Collections, if they point to an export file, will now get marked as having unsaved changes.
  • Unsaved changes are displayed as a floppy disk icon in the collection list. Clicking it will save the collection to file.
  • Added "Offset" option, which will display if the collection exports to a codec with the support_offset field set to true.
  • Added Show in File Explorer option to collections

Minecraft

  • Added baby mobs from the "Minecraft: Tiny Takeover" update as skin presets, and updated existing presets
  • Added embedded/flowerpot display slot for bedrock (#3361)
  • Added toggle in display mode to pause ground item animation
  • Added missing support for reading inflate value per bone in bedrock geometry (#3318)
  • Added texture mesh texture name property to element panel (#2996)
  • Added query.get_default_bone_pivot preview support
  • Added support for cross referencing texture keys in java block model (#330)

Player and Attachable Editing

Based on multi file editing, viewing Minecraft Bedrock Edition attachables alongside an entity and animating both in the same project is now possible.

  • Added "Bedrock Player Model", a new model loader that can be accessed via File > New and will generate a new player model.
  • Added File > Import > Import Bedrock Attachable to import a .geo.json file into the current project as an attachable.
  • When editing an attachable model separately, you can use Load with Bedrock Player from the top toolbar to load it into a project alongside a player model for reference.
  • When editing an attachable alongside a player, attachable bones attach to and move with base model bones if they have the same name, or their binding property is set.
  • The automatic rule to make each group name unique now only applies within one file. Groups from different files can have the same name.
  • Colletions are created for each imported attachable. If unsaved, the floppy disk icon in the collection can be pressed to save the changes to file.
  • In Animate mode, the Bedrock Animation Mode select can be used to preview player and attachables along with animations in first person view.
  • Animations are locked to one scope
    • Bones from another scope cannot be animated in this animation
    • When importing an animation, the scope will automatically be figured out based on the bones that are used in it
    • When creating a new animation, the scope will be set based on the selected bone
    • The animation scope can be set in the animation properties
  • In first person view, the main viewport is automatically locked to the correct FOV and a 16 / 9 aspect ratio. The camera can be moved, and can be reset via the button at the bottom
  • A crosshair marks the center of the screen
  • In first person view, transform gizmos are displayed at the center of the screen for convenience
  • In both first and third person, the default pose animation that you will see in game will be used for the preview. For third person, you can turn on or off the hold item pose from the Placeholder Variables panel. To use a different pose, play an animation that changes the pose and set it to Override.
  • In first person, other bones including the left arm can be animated as well, however the logic to display them in first person needs to be implenented in the respective render controller.

Bedrock Multi-block Workflow

Added a new workflow for creating multi-block models for Minecraft Bedrock Edition!
At the time of release, this feature is experimental in Minecraft and only supports multi-block structures that are 1 block wide and up to 4 blocks tall.

Here is a short step-by-step guide:

  1. Toggle on the setting "Deactivate Size Limit" in the settings to get around the size limtiations in the block format
  2. Create a new Bedrock Block project
  3. Create your model for a multi-block in one workspace as usual
  4. Once you are done, press Tools > Slice Bedrock Multiblock
  5. Adjust the settings in the dialog as desired and select an export directory for the spliced model files, then confirm
  6. Blockbench will split the model and put the model for each block into a separate Collection. Press the Save icon next to each collection to save it into a separate .geo.json file.
  7. Follow this guide to set it up in your bedrock add-on: Create a Multi-Block

Input & Controls

  • Added customizable Zoom View keybind, renamed existing keybind to "Drag-to-Zoom View" (#2292)
  • Added keybinding "Zoom UV/2D Editor" to zoom in the UV Editor, 2D image editor, and 2D views such as the timeline and animation controller editor
  • Added increase and decrease sub keybinds for UV Rotation slider
  • Added Shift + Tab shortcut to cycle backwards through inputs
  • Context menu now closes when clicking or navigating in UV editor
  • Decrease drag sensitivity for multi-selecting cube faces (#3322)
  • Made Backspace default keybind for Delete on Mac (#3120)
  • Display Alt key as "Option" on Mac in the keybindings menu

Miscellaneous

  • Added option to copy list of installed plugins
  • Added option to install multiple plugins from a list of IDs (#1700)
  • File extensions of open models are now displayed in tabs and other places
  • Reordering textures now works with multi-selection
  • When trying to open an unsupported file type, Blockbench will now display a message and offer to open the file in the system-default program (#2812)
  • When opening file with an unsupported extension, show plugin hint and suggest plugins that can add support for the file type.
  • Extrude Image import size is no longer scaled down in formats without size restriction
  • When pressing Recover Models after an unexpected close, you can now select individual recovery backups to recover
  • Show layered texture option in single-texture-default formats (such as Optifine Entity) too
  • Display side view direction at the bottom of the viewport
  • Reduced Reference Image edge clamping (#2521)
  • Updated labels for language options (#3344)
  • Added warning when installing too many plugins at once
  • Made validator warning/error text user selectable
  • Enabled text-select in plugin changelogs
  • Improved UI performance

Technical changes

API Changes

  • Added Outliner node display rules API
  • Added AnimationCodec API to allow plugins to add their own animation codecs
  • Added Transformer module API: This allows various systems to make use of the transform gizmo and makes it more modular internally
  • Added temp_data for outliner nodes where developers can store temporary data. This data is set per element and is not persistent when saving, using undo, etc.
  • Added MenuBar option to insert Menu at specific position
  • Added texture wrap format flags texture_wrap_default and per_texture_wrap_mode
  • Exposed MolangJS class constructor (#3241)
  • Added plugin install events (#3248, thanks SnaveSutit!)
  • Added get_face_texture event hook to provide custom texture apply logic
  • Added support for fov property in Preview angle presets
  • Added support for aspect_ratio property in Preview angle presets, which if set restricts the viewport to a specific aspect ratio
  • Added save_on_restart option for toggles
  • Added shell to native modules

As always, look up the API documentation on web.blockbench.net/docs for more details on individual changes.

Multi File Editing

This update introduces a new initiative to make multi file editing more powerful, more intuitive, and more stable in Blockbench.

Multi file editing is currently available experimentally for Minecraft Bedrock Edition attachables and multi-block models, but the idea is to utilise the underlying system for more use-cases in the future, such as:

  • Minecraft Bedrock render controllers
  • Hytale Attachments
  • Systems in custom plugins

Multi file editing relies on a new property scope that can be set on each object, such as element, animation, texture, etc. to tell everything which file it belongs to.
This is combined with a MultiFileRuleset that defines how objects of different scopes interact with each other, which ones can be edited, etc.
Along with that, collections can be used to track models and export them out again to different files.
From an API perspective, all of this is experimental and subject to change, if you are implementing this in a plugin be aware of that or wait until it is more stable.

Documentation & Typescript types

  • The latest types for the next branch are now automatically published under the next tag on NPM (#3273, thanks @SnaveSutit!)
  • API docs are now generated also for internal types
  • Improved types for event system (#3250, thanks @SnaveSutit!)
  • Fixed molang types (#3241)
  • Various improvements to Typescript types (thanks @SnaveSutit!)
  • General improvements to typescript types

Development workflow

  • Added reload button when running in dev mode
  • Command line options to specify host and port on dev server (#3337) - Example: npm run serve -- --port=300
  • Added minimum required node.js version (#2480)
  • Fallback to English lang strings in prereleases
  • Disabled some esbuild warnings to clean up log
  • Added internal method to build preview models from the current project: PreviewModel.generateModelFromProject()

Dependencies

  • Upgraded to Electron 40
  • Upgraded electron-builder to 26.0.18

Fixes

  • Fixed #3272 local plugins never load if API request for plugin metadata does not respond
  • Improved Variable Placeholder panel overflow (#2997)
  • Fixed keyframe move action icons
  • Fixed issue with share_text buttons in forms not using updated text
  • Fixed #623 dialogs are not draggable with pen
  • Fixed #3237 electron-builder 26.0.16 broke providing custom electronDist
  • Fixed bedrock block import not supporting complex geometry components
  • Improved UI update performance
  • Improved date displays in plugins
  • Fixed mirror painting brush size if the UV is slightly offset
  • Fixed brush interval when using dynamic brush size
  • Fixed issues with pen compatibility on touch screens
  • Fixed pressure and angle sensitivity (#1286)
  • Fixed paint with stylus only setting
  • Fixed grid offset issue in custom block size formats
  • Improved reference image toolbar style
  • Fixed #1677 Android can't select faces, vertices, or edges when using a mouse
  • Fixed how meta key is displayed in keybindings when not used as modifier
  • Fixed bedrock block being instantly marked as unsaved when opened
  • Fixed #3320 Color wheel panel clips into other panels
  • Improved aspect ratio of mesh UV generated by template generator on small, higher resolution meshes
  • Fixed skin pose issues (#3270) (#3161)
  • Fix condition check in animator channel bar (#3338, thanks @SIsilicon!)
  • Add channel condition types
  • Fix #3225 Reference image toolbar has no action tooltips
  • Fix #3328 Vertical aspect ratio reference images open very large
  • Fix keyframe sliding interval edge case
  • Make Transform > Rotate adjust stretch values (JannisX11/hytale-blockbench-plugin#82)
  • Fixed bedrock block import not supporting complex geometry components
  • Fixed grid offset issue in custom block size formats
  • Fixed #3379 Moving Group Pivot while using Mirror Modeling not undo-able for mirrored side
  • Fixed host panel console error message
  • Fixed undo not tracking all affected groups in outliner drag-toggle
  • Fixed group mesh visibility not syncing in Canvas.updateVisibility
  • Fixed rotation gizmo glitching in Hytale formats
  • Fixed navigate-drag keybinding not working for UV editor
  • Fixed #3362 issue inverting complex molang expressions
  • Fixed group visibility not updating in viewport after undo/redo (#3335) (#3359, thanks @phatgolo!)
  • Fixed opening multiple images into single project (#3340)
  • Fixed dropping files not working correctly if file extension is uppercase
  • Added fallback to ensure limbo layer can always be placed
  • Fixed #3371 flipbook timeline issues on touch UI
  • Fixed only enabling "Fit to Frame" in gui slot not causing the slot to export (#3361)
  • Fixed #3322 Cannot deselect UV faces when multiple are selected
  • Disabled UV size validator check in skin format
  • Fixed #3237 electron-builder 26.0.16 broke providing custom electronDist
  • Fixed incorrect texture in UV editor when painting mesh with multiple textures
  • Fixed macOS Rectangle Select Always Extends Selection (#3294, thanks @h8ku!)
  • Fixed #3297 scaling layer does not update texture URL
  • Fixed quaternion interpolation issue (JannisX11/hytale-blockbench-plugin#126)
  • Fixed auto UV adjustment on certain faces when resizing cubes
  • Fixed #3390 armature deformed mesh unrenders due to frustum culling
  • Fixed #3322 Unable to unselect faces from UV cube face list via Ctrl
  • Fixed trackpad gesture zoom and pan
  • Fixed color banding on start screen gradient
  • Fixed #3384 Can't multi-select Box UV
  • Fixed #3353 sub keybinds are not supported in keymaps
  • Fixed #3284 Pick Combined Color disabled still picks combined color when the picked pixel is black
  • Fixed texture template generator issues when mirror modeling is active

Don't miss a new blockbench release

NewReleases is sending notifications on new releases.