Blockbench Plugins Repository
repository·master·Indexed 41 days ago
https://github.com/jannisx11/blockbench-pluginsA central repository for hosting and developing extensions for the Blockbench 3D modeling tool. Includes documentation for various plugins such as GeckoLib Animation Utils, Baked Ambient Occlusion, Bone View, Easy Model Entities, and Farsight.
What's inside Blockbench Plugins
- Animated Platforms is a Blockbench plugin that provides an animated ground plane. This allows users to preview motion—such as walk cycles or vehicle movements—by scrolling a textured plane underneath their model. While it is particularly useful for Minecraft mob and entity animation, it is compatible with any animation workflow.
Use the Cosmic Reach Model Editor plugin
masterThe Cosmic Reach Model Editor is a simple plugin designed to allow users to edit models specifically created for the game Cosmic Reach within Blockbench.Hytale modeling and animation features
masterThe Hytale plugin extends Blockbench with specific capabilities for Hytale assets:
Modeling
- UV Consistency: UV sizes are automatically locked to face dimensions.
- Non-destructive Scaling: Use the stretch tool and sliders to adjust cube sizes without affecting UVs.
- Attachments: Built on collections, allowing for items like hairstyles, clothing, or weapons to be attached to characters.
Animation
- Keyframe Support: Includes visibility keyframes, UV Offset keyframes, and keyframe-wrapping for looping.
- Interpolation: Uses quaternion-based interpolation.
- Scale Animation: Scale keyframes animate the
stretchvalue of the attached cube.
Features of the Animated Platforms plugin
masterThe Animated Platforms plugin provides tools for creating moving platforms within Blockbench. Key capabilities include:
- Movement Control: Set scroll speed in blocks per second (blocks/sec) with access to quick presets.
- Transformations: Control size (width, length, height) and placement (rotation).
- Texture Management: Use optional custom textures with the ability to rotate or flip them. Includes a texture library for rapid reuse.
- Animation Presets: Save and auto-save specific settings per animation.
Important Note: Custom texture rotation is a visual-only effect; the actual movement direction of the platform remains consistent regardless of how the texture is rotated.
Use PAL Bend Player Tools for player animation conversion
masterPAL Bend Player Tools is a Blockbench plugin designed to create player animation projects and convert between different animation formats, specifically targeting PlayerAnimationLibrary, Emotecraft, and DragonCore.
Key Capabilities:
- Project Creation: Generates
player_model.geo.jsonhelper-bend projects with a defaultplayer_model.geo.pngtexture. It also supports creating DragonCore-compatible projects using either standard PAL bone names or specific DragonCore group names (e.g.,Body_Lower,Body,Left_Arm_Lower,Right_Hand). - Importing:
- Import traditional PAL bend
animationsJSON or EmotecraftemoteJSON. - Import legacy animations authored for DragonCore and convert them to the PAL format.
- Import flat PAL/emote animations into parented projects by unbaking them into local Blockbench bone tracks.
- Import traditional PAL bend
- Exporting:
- Export to traditional PAL bend
animationsJSON or EmotecraftemoteJSON. - Bend Conversion:
- If only X-axis rotation is present (
*_bend.rotation.x), it exports in the original scalar PAL format. - If Y/Z rotation is present, it exports as a vector bend compatible with
PlayerAnimationLibraryMoreRotation.
- If only X-axis rotation is present (
- Baking: Export DragonCore-friendly parented projects as flat PAL bone animations by baking the current Blockbench hierarchy and pivots.
- Export to traditional PAL bend
Important Notes:
- The plugin uses a preview model as a helper rig for editing bends within Blockbench.
- While exported PAL animations use native
bend, Emotecraft exports are limited to the single X-axis bend value supported by theemoteJSON format.
- Project Creation: Generates
Features of Structure to Model
masterThe Structure to Model plugin provides several automated processing features during the import of
.nbtfiles:- Model Resolution: Correctly handles large structure palettes, default block states, and resolves variant, multipart, and inherited block models.
- Optimization: Automatically culls hidden faces to reduce the complexity of the resulting Blockbench model.
- Organization: Groups and names generated cubes based on their block type.
- Texturing: Supports biome-tinted textures using either presets or custom colors.
- UX: Displays a progress indicator during the import of large structures.
Configure animation clips for Easy Model Entities
masterThe mod automatically triggers specific animations based on the entity's state. To ensure your model animates correctly, name your Blockbench animation clips using the following reserved names:
Clip Name Trigger Condition idleStanding still walkMoving on the ground swimMoving in water flyFlying attackAttacking sitSitting Other Clips:
hurtanddeathclips are loaded but are not automatically triggered by the mod.- Any other clip names are treated as custom clips. These can be played manually using the
/easy_model_entities animationcommand or via other mods. If no matching clip is found for a state, the model renders without animation.
Handle TypeScript errors in the plugin
masterThe plugin uses TypeScript with types provided by
blockbench-types. Because these types are hand-written, they may be incomplete or incorrect. TypeScript errors will be logged to the terminal but will not prevent the plugin from building.Strategies for fixing type errors
1. Update
blockbench-types(Recommended)If a type is genuinely missing or wrong, submit a PR to the
blockbench-typesrepository. You can test these changes locally usingnpm link:- Clone
blockbench-typesand use the same Node version as the plugin. - Run
npm linkinsideblockbench-types. - Run
npm link blockbench-typesinside the plugin'ssrcfolder. Note: You must re-runnpm link blockbench-typesafter everynpm install.
2. Workaround within the plugin
- Type Assertions (Casting): Use
asto cast to a target type. For insufficient overlap, useas unknown as <Target Type>.let easingBar: HTMLElement = document.createElement('div'); - Type Annotations: Explicitly annotate parameters or variables.
(kf: GeckolibKeyframe) => { } // Forces kf to be GeckolibKeyframe instead of Keyframe - Subclassing: Subclass a Blockbench type.
- Type Narrowing: Use standard TypeScript narrowing techniques.
3. The "Nuclear" Option
If all else fails, use
// @ts-ignoreabove the line to suppress all type checking for that specific line.// Example of type assertion const myVar = someValue as unknown as TargetType; // Example of type annotation let easingBar: HTMLElement = document.createElement('div');- Clone
How Animation Syncing works in Batch Rename
masterWhen the Also Update Animation Names option is enabled, the plugin ensures that renaming groups does not break existing animations.
It checks project animations and updates matching animator names if they are tied to:
- The renamed group's UUID.
- The group object.
- The old group name.
The model group rename and the animation-name update are committed in a single undo step, so Ctrl+Z will revert both simultaneously.
Handle TypeScript errors and type definitions
masterThe plugin uses TypeScript with types provided by the
blockbench-typespackage. Because these types are hand-written, you may encounter errors even if your code is correct.Strategies for resolving type errors:
- Fix the source types: Submit a PR to
blockbench-types. You can test local type changes usingnpm link(linkblockbench-typeslocally, then runnpm link blockbench-typesin the plugin'ssrcfolder). - Massage types locally:
- Type Assertions (Casting): Use
as <Target Type>oras unknown as <Target Type>. - Type Annotations: Explicitly annotate variables or parameters:
(kf: GeckolibKeyframe) => { }. - Subclassing: Subclass a Blockbench type.
- Type Narrowing: Use standard TypeScript narrowing techniques.
- Declaration Merging.
- Type Assertions (Casting): Use
- The Nuclear Option: Use
// @ts-ignoreabove the line to suppress all type checking for that specific line.
- Fix the source types: Submit a PR to
How the Java Block Sequencer export process works
masterWhen an animation is exported using the Java Block Sequence button in the Animate tab, the plugin processes each frame through the following six stages:
- Create undo state for model
- Resolve model tree into cubes
- Bake transforms into outliner
- Save model to zip archive under the selected animation name
- Undo changes
Use Header Color and Wrap Tabs tweaks
masterThe plugin includes two visual/navigation tweaks:
- Header Color: Displays your current profile color in the header for quick identification.
- Wrap Tabs: Automatically wraps project tabs to handle large workspaces more efficiently.