Voxel IRL Simulator
A custom Java voxel survival/life-sim engine with crafting, weather, humans, babies, Hell, LAN world downloads, boss fights, blocky menus, a theme song section, and a downloadable extension pack pipeline.
Custom 3D RendererLAN MultiplayerModsTheme SongWeatherHell DimensionBaby SpawnsBiggest Update #1
LAN Multiplayer: hosting, joining, world ZIP download, extraction, and remote player sync.
Biggest Update #2
Mods: store UI, ui.store, downloadable pack zips, pack manifests, optional data, integration categories, menus, actions, custom model entities, and loader hooks.
Engine Direction
New engine systems can grow normally. The mod loader only needs careful updates when the pack format or supported safe actions change.
Startup + Title
Startup Cinematic
Voxel blocks fly into place to form ALARICHOLT677, then transition through a mountain intro into the main menu.
Window Title
The title can include player name, version, and random splash sayings.
Arguments
--PathToClasses, --Name, --skinDir, and --version can control startup setup.
Controls
Movement
WASD to move, mouse drag to look, number keys 1–9 to select hotbar slots.
Interaction
B breaks, P places, right-click interacts, T opens chat, ESC pauses, F5 saves, F6 toggles follower, F7 switches dimension.
F7 Safety
F7 should use a held-key guard so holding it does not spam dimension swaps.
Chat System
Chat is opened with T. Built-in commands are part of ChatOverlay. Mod commands are read from loaded packs.
Block List
Interactive Block Viewer
Biomes
Interactive Biome Preview
| Biome | Features |
|---|---|
| Plains | Grass and rolling terrain |
| Forest | Trees and grass |
| Desert | Sand and cacti |
| Ocean | Water and ocean stone |
| Tundra | Snow and ice |
| Jungle | Jungle wood and palm leaves |
| Snowy Mountains | Tall ridges and snow |
Structures
Interactive Structure Preview
Cave Biomes
Interactive Cave Preview
Hell Biomes
Interactive Hell Preview
Crafting
Interactive 3×3 Crafting Preview
Tap an ingredient to switch ingredients, then tap any grid slot.
Crafting
3x3 Table
Right-click a crafting table to open 3x3 crafting.
Pause Crafting
The pause menu can include a smaller 2x2 crafting UI.
Known Recipes
3 Ash creates Bed. 3 Ash plus Torch creates Boss Spawner.
Boss Spawner
Recipe
3+ Ash and 1+ Torch creates Boss Spawner ID 15.
Use
Place it, look at it, and right-click it to summon the harmful boss.
Magenta Lore
The harmful boss/spawner being magenta became accidental debug-lore energy.
Day / Night
Time Values
0 sunrise, 6000 day, 12000 sunset, 18000 night, 24000 wraps.
Command
/time 6000 or /time set noon.
Sky Slider
Weather
Clear
Normal sky, no particles.
Rain
Rain particles and darker sky.
Snow
Snow particles and icy/pinkish sky.
Thunder
Rain, dark sky, and lightning-style flashes.
Weather Preview
Hell Dimension
Blocks
Hellstone, Bloodrock, Ash, and Fire.
Visuals
Red sky, dark red terrain, ash hills, fire light, and spawner danger.
Switch
F7 or /dim.
Humans + Babies
Humans
Dynamic NPC entities rendered in the world.
Holograms
/summon holographic human creates a holographic human variant.
Babies
Babies get random gender and random names.
Baby Preview
Water + Pee
Water
Water increases when drinking/interacting and drains over time.
Pee
Pee rises naturally and can overflow.
Overflow
Overflow can spawn a pee block and push a system message.
Saving
Manual Save
F5 or /save.
Saved Core Data
Player position, hotbar, water/pee, time, blocks, humans, and baby data.
Downloaded Packs
Downloaded extension packs live in expansion_packs/ and are separate from world saves.
LAN Multiplayer
LAN Flow
Host picks world folder, server zips it, client downloads it, extracts it, and loads the world.
Synced Player State
LAN sends player ID, X, Y, Z, yaw, and pitch so remote players can appear and move.
Theme Song
Official IRL Simulator Soundtrack
The wiki includes a theme song section. Your original page used magenta_stone.mp4 as the audio/video source.
NEW song
Theme Packs
A future pack can provide soundtrack metadata through theme.json.
Mods / Extension Packs
The second biggest update after LAN Multiplayer. Mods create a downloadable content pipeline inspired by mod browsers/shops, while keeping engine features separate.
ui.storepack_manifest.jsonexpansion_packs/Custom MenusCustom ModelsWhat Mods Add
Store browsing, downloadable ZIP packs, metadata, optional JSON data, commands, recipes, custom menus, block/entity actions, custom AI, and custom model entities.
What Mods Do Not Do Automatically
They do not execute random Java classes. They provide data. The loader and engine decide what that data means.
Stable Boundary
The loader only needs surgical changes when the pack format or supported safe actions change.
Full Pipeline
Mod Store / Inbox
The Mod Store fetches ui.store, shows a block spinner while loading, and displays downloadable extension packs.
Store UI Demo
Trailer
Click here to see the trailer for IRL SIMULATOR
Full Extension Pack README
This is the full copy-paste guide. Use the other guide pages for shorter focused sections.
IRL Simulator Extension Pack Creation Guide
==========================================
This README explains how to make an IRL Simulator extension pack / mod pack.
IRL Simulator expansion packs are ZIP files placed in:
expansion_packs/
Each pack contains a required:
pack_manifest.json
and optional JSON files for blocks, entities, commands, recipes, menus, block actions, entity actions, custom AI, and future data.
The mod system is data-driven. Packs do not need Java files. You create JSON data, zip it, and the engine loads it.
BASIC PACK STRUCTURE
--------------------
My_Extension_Pack/
pack_manifest.json
README.txt
content/
blocks.json
entities.json
commands.json
recipes.json
menus.json
block_actions.json
entity_actions.json
custom_ai.json
robots.json
lights.json
science.json
data/
blocks.json
entities.json
commands.json
recipes.json
menus.json
block_actions.json
entity_actions.json
custom_ai.json
robots.json
lights.json
science.json
info.json
pack_id.txt
IMPORTANT ZIP RULE
------------------
Correct:
my_pack.zip
pack_manifest.json
content/blocks.json
Wrong:
my_pack.zip
my_pack/pack_manifest.json
pack_manifest.json must be at the root of the ZIP.
SUPPORTED SYSTEMS
-----------------
blocks
commands
entities
custom cube models
recipes
menus
block right-click actions
entity right-click actions
custom AI
future robots/lights/science data
CUSTOM MODEL COMPATIBILITY TIP
------------------------------
Put "custom" before "template".
Use "template": "blocky_humanoid".
The entity still uses the custom mesh when customCubes is non-empty.
SUPPORTED ACTIONS
-----------------
message
say
giveBlock
spawnEntity
openMenu
closeMenu
placeBlock
FINAL CHECKLIST
---------------
[ ] pack_manifest.json is at the ZIP root.
[ ] JSON files are inside content/.
[ ] Optional copies are inside data/.
[ ] Block IDs are 0-255.
[ ] Blocks use color arrays like [255, 0, 0].
[ ] Commands start with /.
[ ] Entity type IDs use lowercase_with_underscores.
[ ] Custom entities put custom before template.
[ ] Menus have IDs.
[ ] Button actions use supported actions.
[ ] Right-click block IDs match registered block IDs.
[ ] The ZIP is placed in expansion_packs/.
[ ] Old duplicate versions are removed.
[ ] Console shows objects registering.
Manifest
Every pack needs a root pack_manifest.json.
{
"packId": "my_first_pack",
"name": "My First Pack",
"version": "1.0.0",
"author": "YourName",
"description": "Adds test blocks, entities, commands, menus, and recipes.",
"safeMode": true,
"entryType": "data-pack",
"entries": {
"blocks": "content/blocks.json",
"entities": "content/entities.json",
"commands": "content/commands.json",
"recipes": "content/recipes.json",
"menus": "content/menus.json",
"blockActions": "content/block_actions.json",
"entityActions": "content/entity_actions.json",
"customAI": "content/custom_ai.json",
"robots": "content/robots.json",
"lights": "content/lights.json",
"science": "content/science.json"
}
}Blocks Guide
Blocks go in content/blocks.json.
{
"blocks": [
{
"id": 140,
"name": "Ruby Block",
"solid": true,
"color": [190, 30, 55],
"emission": 0,
"tags": ["gem", "decorative"]
},
{
"id": 141,
"name": "Neon Blue Block",
"solid": true,
"color": [40, 180, 255],
"emission": 14,
"tags": ["light", "neon"]
}
]
}Commands Guide
Commands go in content/commands.json.
{
"commands": [
{
"name": "/ruby",
"usage": "/ruby",
"description": "Gives Ruby Block.",
"action": "giveBlock",
"target": "Ruby Block"
},
{
"name": "/testmenu",
"usage": "/testmenu",
"description": "Opens the test menu.",
"action": "openMenu",
"target": "test_menu"
}
]
}Entities Guide
Entities go in content/entities.json.
{
"entities": [
{
"type": "crystal_sheep",
"template": "blocky_animal",
"displayName": "Crystal Sheep",
"description": "A glowing sheep from an extension pack.",
"animalType": "sheep",
"bodyColor": [145, 235, 255],
"headColor": [45, 45, 60],
"legColor": [35, 35, 45],
"glowColor": [120, 255, 255],
"preferredBlock": 68,
"health": 20,
"speed": 0.025,
"friendly": true,
"autoSpawn": true,
"autoSpawnChance": 0.015,
"autoSpawnIntervalTicks": 200,
"maxAlive": 4,
"ai": "wander"
}
]
}Custom Models
Custom models are cube arrays. Put custom before template for current compatibility.
{
"entities": [
{
"type": "test_bot",
"custom": [
{"name":"body","pos":[-0.35,0.6,-0.25],"size":[0.7,0.8,0.5],"colorKey":"bodyColor"},
{"name":"head","pos":[-0.25,1.35,-0.25],"size":[0.5,0.5,0.5],"colorKey":"headColor"},
{"name":"eye","pos":[-0.08,1.52,-0.30],"size":[0.16,0.08,0.05],"colorKey":"glowColor"}
],
"template": "blocky_humanoid",
"displayName": "Test Bot",
"bodyColor": [120,130,145],
"headColor": [170,190,210],
"legColor": [80,90,105],
"glowColor": [80,220,255],
"health": 30,
"speed": 0.025,
"friendly": true,
"autoSpawn": true,
"maxAlive": 3,
"ai": "wander"
}
]
}AI + Custom AI
Built-in AI presets: none, idle, wander, follow_player, chase_player, orbit_player.
{
"customAI": [
{
"entityType": "test_bot",
"steps": [
{"when":"always","action":"wander","speedMultiplier":1.0},
{"when":"timer","ticks":160,"action":"say","message":"<Test Bot> Beep."}
]
}
]
}Recipes Guide
{
"recipes": [
{"type":"shapeless","inputs":["Copper Wire","Battery Cell"],"output":"Powered Copper Wire","outputBlockId":111,"count":1},
{"type":"3x3","pattern":["CCC","CMC","CCC"],"keys":{"C":"Circuit Board","M":"Memory Block"},"output":"Server Rack","outputBlockId":116,"count":1}
]
}Action Objects
Actions are used by commands, menus, block actions, entity actions, and custom AI.
{"action":"message","message":"<Mod> Hello!"}
{"action":"giveBlock","target":"Ruby Block"}
{"action":"spawnEntity","target":"test_bot"}
{"action":"openMenu","target":"test_menu"}
{"action":"closeMenu"}
{"action":"placeBlock","target":"Ruby Block"}Right Click Actions
Block actions
{
"blockActions": [
{"blockId":141,"onRightClick":[{"action":"openMenu","target":"test_menu"}]}
]
}Entity actions
{
"entityActions": [
{"entityType":"test_bot","onRightClick":[{"action":"openMenu","target":"test_menu"}]}
]
}Future Data Files
{"robots":[{"type":"worker_bot","role":"worker","futureBehavior":"utility"}]}{"lights":[{"block":"Electric Lamp","id":122,"emission":15,"color":[255,245,180]}]}{"science":{"themes":["computer","electricity","robotics"],"notes":["Future science progression data."]}}Publish + ui.store
Upload packs to modUI/packs/ and list them in modUI/ui.store.
{
"title": "IRL Simulator Mod Store",
"message": "Download expansion packs for IRL Simulator.",
"packs": [
{
"name": "My First Pack",
"description": "Adds test blocks and commands.",
"url": "https://yourname.github.io/modUI/packs/my_first_pack.zip"
}
]
}Troubleshooting
Pack does not load
Check that pack_manifest.json is at the ZIP root.
Blocks show 0
Check content/blocks.json and the top-level blocks array.
Block skipped
Check id 0-255 and color [r,g,b].
customCubes=0
Put custom before template and use template blocky_humanoid.
Menu does not show
Check runModAction openMenu support and modMenuOverlay.draw in paintComponent.
Right click does nothing
Check block ID and engine right-click action hook.
Complete Mini Pack
My_Test_Pack/
pack_manifest.json
content/
blocks.json
entities.json
commands.json
menus.json
block_actions.json{
"packId":"my_test_pack",
"name":"My Test Pack",
"version":"1.0.0",
"author":"YourName",
"description":"A simple test pack.",
"safeMode":true,
"entryType":"data-pack",
"entries":{
"blocks":"content/blocks.json",
"entities":"content/entities.json",
"commands":"content/commands.json",
"menus":"content/menus.json",
"blockActions":"content/block_actions.json"
}
}Interactive Examples
Mini Block Playground
Command Registry Demo
Animal Data Preview
All Old + New Wiki Map
This version keeps the old/core wiki pages and adds a large developer-focused extension-pack guide. Use the left sidebar sections for old gameplay docs, then the deep pages for complete pack creation.
Old Wiki Pages
Overview, startup, controls, chat, blocks, crafting, boss, day/night, weather, Hell, humans, babies, survival, saving, menus, LAN, theme song, and old mod store pages.
New Wiki Pages
Deep manifest, blocks, commands, actions, entities, custom models, AI, menus, right-click actions, audio/theme, biomes, animals, ui.store, publishing, testing, and troubleshooting.
Deep Pack Structure
Full pack layout with optional compatibility copies.
my_pack.zip
pack_manifest.json
README.txt
content/
blocks.json
entities.json
commands.json
recipes.json
menus.json
block_actions.json
entity_actions.json
custom_ai.json
robots.json
lights.json
science.json
theme.json
worldgen.json
biomes.json
data/
compatibility copies
info.json
pack_id.txtDeep Manifest Guide
{
"packId": "my_full_pack",
"name": "My Full Pack",
"version": "1.0.0",
"author": "YourName",
"description": "Adds blocks, entities, commands, recipes, menus, actions, custom AI, and future data.",
"safeMode": true,
"entryType": "data-pack",
"entries": {
"blocks": "content/blocks.json",
"entities": "content/entities.json",
"commands": "content/commands.json",
"recipes": "content/recipes.json",
"menus": "content/menus.json",
"blockActions": "content/block_actions.json",
"entityActions": "content/entity_actions.json",
"customAI": "content/custom_ai.json",
"robots": "content/robots.json",
"lights": "content/lights.json",
"science": "content/science.json"
}
}Deep Blocks Guide
Blocks are available to commands, recipes, menus, and actions by name or numeric ID.
{
"blocks": [
{"id": 140, "name": "Ruby Block", "solid": true, "color": [190, 30, 55], "emission": 0, "tags": ["gem", "decorative"]},
{"id": 141, "name": "Neon Console", "solid": true, "color": [40, 180, 255], "emission": 14, "tags": ["computer", "menu", "light"]},
{"id": 142, "name": "Powered Console", "solid": true, "color": [90, 255, 160], "emission": 12, "tags": ["computer", "powered"]}
]
}Deep Commands Guide
Commands should call safe actions. That keeps command behavior pack-driven instead of hardcoded.
{
"commands": [
{"name": "/mypack", "usage": "/mypack", "description": "Shows that this pack loaded.", "action": "message", "target": "My Full Pack loaded."},
{"name": "/ruby", "usage": "/ruby", "description": "Gives Ruby Block.", "action": "giveBlock", "target": "Ruby Block"},
{"name": "/testbot", "usage": "/testbot", "description": "Spawns Test Bot.", "action": "spawnEntity", "target": "test_bot"},
{"name": "/consolemenu", "usage": "/consolemenu", "description": "Opens Console Menu.", "action": "openMenu", "target": "console_menu"}
]
}Deep Action System
Actions are shared by commands, menu buttons, block actions, entity actions, and AI scripts.
{"action":"message","message":"<Mod> Hello"}
{"action":"giveBlock","target":"Ruby Block"}
{"action":"spawnEntity","target":"test_bot"}
{"action":"openMenu","target":"console_menu"}
{"action":"closeMenu"}
{"action":"placeBlock","target":"Powered Console"}Deep Entities Guide
Entities are safe data profiles interpreted by the engine.
{
"entities": [
{
"type": "test_bot",
"custom": [
{"name":"body", "pos":[-0.35,0.60,-0.25], "size":[0.70,0.80,0.50], "colorKey":"bodyColor"},
{"name":"head", "pos":[-0.25,1.35,-0.25], "size":[0.50,0.50,0.50], "colorKey":"headColor"},
{"name":"visor", "pos":[-0.16,1.53,-0.31], "size":[0.32,0.08,0.06], "colorKey":"glowColor"},
{"name":"left_arm", "pos":[-0.55,0.72,-0.15], "size":[0.18,0.56,0.30], "colorKey":"bodyColor"},
{"name":"right_arm", "pos":[0.37,0.72,-0.15], "size":[0.18,0.56,0.30], "colorKey":"bodyColor"},
{"name":"left_leg", "pos":[-0.25,0.00,-0.14], "size":[0.20,0.60,0.28], "colorKey":"legColor"},
{"name":"right_leg", "pos":[0.05,0.00,-0.14], "size":[0.20,0.60,0.28], "colorKey":"legColor"},
{"name":"red_hat", "pos":[-0.20,1.85,-0.20], "size":[0.40,0.18,0.40], "color":[255,60,60]}
],
"template": "blocky_humanoid",
"displayName": "Test Bot",
"description": "A custom cube model robot.",
"animalType": "robot",
"bodyColor": [120, 130, 145],
"headColor": [170, 190, 210],
"legColor": [80, 90, 105],
"glowColor": [80, 220, 255],
"preferredBlock": 141,
"health": 30,
"speed": 0.025,
"friendly": true,
"autoSpawn": true,
"autoSpawnChance": 0.02,
"autoSpawnIntervalTicks": 180,
"maxAlive": 3,
"ai": "wander"
}
]
}Deep Custom Model Guide
Custom entities use cube arrays. Put custom before template and use blocky_humanoid for current compatibility.
{
"entities": [
{
"type": "test_bot",
"custom": [
{"name":"body", "pos":[-0.35,0.60,-0.25], "size":[0.70,0.80,0.50], "colorKey":"bodyColor"},
{"name":"head", "pos":[-0.25,1.35,-0.25], "size":[0.50,0.50,0.50], "colorKey":"headColor"},
{"name":"visor", "pos":[-0.16,1.53,-0.31], "size":[0.32,0.08,0.06], "colorKey":"glowColor"},
{"name":"left_arm", "pos":[-0.55,0.72,-0.15], "size":[0.18,0.56,0.30], "colorKey":"bodyColor"},
{"name":"right_arm", "pos":[0.37,0.72,-0.15], "size":[0.18,0.56,0.30], "colorKey":"bodyColor"},
{"name":"left_leg", "pos":[-0.25,0.00,-0.14], "size":[0.20,0.60,0.28], "colorKey":"legColor"},
{"name":"right_leg", "pos":[0.05,0.00,-0.14], "size":[0.20,0.60,0.28], "colorKey":"legColor"},
{"name":"red_hat", "pos":[-0.20,1.85,-0.20], "size":[0.40,0.18,0.40], "color":[255,60,60]}
],
"template": "blocky_humanoid",
"displayName": "Test Bot",
"description": "A custom cube model robot.",
"animalType": "robot",
"bodyColor": [120, 130, 145],
"headColor": [170, 190, 210],
"legColor": [80, 90, 105],
"glowColor": [80, 220, 255],
"preferredBlock": 141,
"health": 30,
"speed": 0.025,
"friendly": true,
"autoSpawn": true,
"autoSpawnChance": 0.02,
"autoSpawnIntervalTicks": 180,
"maxAlive": 3,
"ai": "wander"
}
]
}Deep AI + Custom AI
Custom AI uses conditions like always, timer, near_player, and far_from_player.
{
"customAI": [
{
"entityType": "test_bot",
"steps": [
{"when":"always", "action":"wander", "speedMultiplier":1.0},
{"when":"timer", "ticks":160, "action":"say", "message":"<Test Bot> Systems online."},
{"when":"near_player", "range":8, "action":"move_to_player", "speedMultiplier":1.3}
]
}
]
}Deep Recipes Guide
{
"recipes": [
{"type":"shapeless", "inputs":["Ruby Block", "Neon Console"], "output":"Powered Console", "outputBlockId":142, "count":1},
{"type":"3x3", "pattern":["RRR", "RCR", "RRR"], "keys":{"R":"Ruby Block", "C":"Neon Console"}, "output":"Powered Console", "outputBlockId":142, "count":1}
]
}Deep Right-Click Actions
Block Actions
{
"blockActions": [
{"blockId":141, "onRightClick":[{"action":"openMenu", "target":"console_menu"}]},
{"blockId":142, "onRightClick":[{"action":"message", "message":"<Console> Powered and online."}]}
]
}Entity Actions
{
"entityActions": [
{"entityType":"test_bot", "onRightClick":[{"action":"openMenu", "target":"console_menu"}]}
]
}Audio + Theme Packs
{
"theme": {
"menuMusic": "assets/music/magenta_stone.mp4",
"bossMusic": "assets/music/boss_theme.mp4",
"clickSound": "assets/sounds/click.wav",
"packAccentColor": [217, 67, 255]
}
}World + Biome Data
{
"biomes": [
{"name":"Blue Forest", "grassColor":[80,180,255], "skyColor":[100,190,255], "animals":["sheep"], "structures":["small_house"]}
]
}Animal Data
{
"animals": [
{"type":"sheep", "names":["Wooly","BaaBaa","Cloud"], "colors":[[235,235,235],[255,230,240],[210,240,255]]}
]
}Deep ui.store Guide
{
"title": "IRL Simulator Mod Store",
"message": "Download expansion packs for IRL Simulator.",
"packs": [
{"name":"My Full Pack", "description":"Adds everything.", "url":"https://yourname.github.io/modUI/packs/my_full_pack.zip"}
]
}Upload / Publish Workflow
modUI/
ui.store
packs/
my_full_pack.zip
robot_entities_custom_model_pack.zip
computer_electricity_science_extension_pack_refixed.zipComplete Everything Pack
pack_manifest.json
{
"packId": "my_full_pack",
"name": "My Full Pack",
"version": "1.0.0",
"author": "YourName",
"description": "Adds blocks, entities, commands, recipes, menus, actions, custom AI, and future data.",
"safeMode": true,
"entryType": "data-pack",
"entries": {
"blocks": "content/blocks.json",
"entities": "content/entities.json",
"commands": "content/commands.json",
"recipes": "content/recipes.json",
"menus": "content/menus.json",
"blockActions": "content/block_actions.json",
"entityActions": "content/entity_actions.json",
"customAI": "content/custom_ai.json",
"robots": "content/robots.json",
"lights": "content/lights.json",
"science": "content/science.json"
}
}blocks.json
{
"blocks": [
{"id": 140, "name": "Ruby Block", "solid": true, "color": [190, 30, 55], "emission": 0, "tags": ["gem", "decorative"]},
{"id": 141, "name": "Neon Console", "solid": true, "color": [40, 180, 255], "emission": 14, "tags": ["computer", "menu", "light"]},
{"id": 142, "name": "Powered Console", "solid": true, "color": [90, 255, 160], "emission": 12, "tags": ["computer", "powered"]}
]
}commands.json
{
"commands": [
{"name": "/mypack", "usage": "/mypack", "description": "Shows that this pack loaded.", "action": "message", "target": "My Full Pack loaded."},
{"name": "/ruby", "usage": "/ruby", "description": "Gives Ruby Block.", "action": "giveBlock", "target": "Ruby Block"},
{"name": "/testbot", "usage": "/testbot", "description": "Spawns Test Bot.", "action": "spawnEntity", "target": "test_bot"},
{"name": "/consolemenu", "usage": "/consolemenu", "description": "Opens Console Menu.", "action": "openMenu", "target": "console_menu"}
]
}entities.json
{
"entities": [
{
"type": "test_bot",
"custom": [
{"name":"body", "pos":[-0.35,0.60,-0.25], "size":[0.70,0.80,0.50], "colorKey":"bodyColor"},
{"name":"head", "pos":[-0.25,1.35,-0.25], "size":[0.50,0.50,0.50], "colorKey":"headColor"},
{"name":"visor", "pos":[-0.16,1.53,-0.31], "size":[0.32,0.08,0.06], "colorKey":"glowColor"},
{"name":"left_arm", "pos":[-0.55,0.72,-0.15], "size":[0.18,0.56,0.30], "colorKey":"bodyColor"},
{"name":"right_arm", "pos":[0.37,0.72,-0.15], "size":[0.18,0.56,0.30], "colorKey":"bodyColor"},
{"name":"left_leg", "pos":[-0.25,0.00,-0.14], "size":[0.20,0.60,0.28], "colorKey":"legColor"},
{"name":"right_leg", "pos":[0.05,0.00,-0.14], "size":[0.20,0.60,0.28], "colorKey":"legColor"},
{"name":"red_hat", "pos":[-0.20,1.85,-0.20], "size":[0.40,0.18,0.40], "color":[255,60,60]}
],
"template": "blocky_humanoid",
"displayName": "Test Bot",
"description": "A custom cube model robot.",
"animalType": "robot",
"bodyColor": [120, 130, 145],
"headColor": [170, 190, 210],
"legColor": [80, 90, 105],
"glowColor": [80, 220, 255],
"preferredBlock": 141,
"health": 30,
"speed": 0.025,
"friendly": true,
"autoSpawn": true,
"autoSpawnChance": 0.02,
"autoSpawnIntervalTicks": 180,
"maxAlive": 3,
"ai": "wander"
}
]
}recipes.json
{
"recipes": [
{"type":"shapeless", "inputs":["Ruby Block", "Neon Console"], "output":"Powered Console", "outputBlockId":142, "count":1},
{"type":"3x3", "pattern":["RRR", "RCR", "RRR"], "keys":{"R":"Ruby Block", "C":"Neon Console"}, "output":"Powered Console", "outputBlockId":142, "count":1}
]
}menus.json
{
"menus": [
{
"id": "console_menu",
"title": "Neon Console",
"lines": ["This menu came from a pack.", "Buttons run safe engine actions."],
"buttons": [
{"text":"Give Ruby Block", "action":{"action":"giveBlock", "target":"Ruby Block"}},
{"text":"Spawn Test Bot", "action":{"action":"spawnEntity", "target":"test_bot"}},
{"text":"Place Powered Console", "action":{"action":"placeBlock", "target":"Powered Console"}},
{"text":"Close", "action":{"action":"closeMenu"}}
]
}
]
}block_actions.json
{
"blockActions": [
{"blockId":141, "onRightClick":[{"action":"openMenu", "target":"console_menu"}]},
{"blockId":142, "onRightClick":[{"action":"message", "message":"<Console> Powered and online."}]}
]
}entity_actions.json
{
"entityActions": [
{"entityType":"test_bot", "onRightClick":[{"action":"openMenu", "target":"console_menu"}]}
]
}custom_ai.json
{
"customAI": [
{
"entityType": "test_bot",
"steps": [
{"when":"always", "action":"wander", "speedMultiplier":1.0},
{"when":"timer", "ticks":160, "action":"say", "message":"<Test Bot> Systems online."},
{"when":"near_player", "range":8, "action":"move_to_player", "speedMultiplier":1.3}
]
}
]
}Deep Testing Logs
[Mods] Loading pack: my_full_pack.zip [Mods] Found block objects: 3 [Mods] Registered block 140 = Ruby Block [Mods] Found entity objects: 1 [Mods] Registered entity test_bot template=blocky_humanoid ai=wander customCubes=8 autoSpawn=true [Mods] Found command objects: 4 [Mods] Found menu objects: 1 [Mods] Registered menu console_menu buttons=4 [Mods] Found block action objects: 2 [Mods] Found custom AI objects: 1
Deep Troubleshooting
Pack skipped
pack_manifest.json is missing or not at ZIP root.
Blocks = 0
Check blocks.json path and top-level blocks array.
customCubes = 0
Put custom before template and use blocky_humanoid.
Menu does not show
Check openMenu support and modMenuOverlay.draw.
Command does nothing
Check chatRunModCommand routes into runModAction.
Right click does nothing
Check blockId/entityType and engine hooks.
Final Boss: One Million HP
A new endgame boss page with a live, clickable voxel preview. The demo battle lasts exactly ten seconds, drains a 1,000,000 HP bar, and triggers a bright victory flash when the boss reaches zero.
1,000,000 HP10 Second BattleInteractive PreviewFinal Boss Arena
Victory Flash + Ten-Second Sequence
Battle Timing
The preview reduces the boss from 1,000,000 HP to zero across ten seconds.
Defeat Effect
At zero HP, a full-screen white pixel flash and short screen shake mark the victory.
Replayable
Open the Final Boss page and use Reset Boss or Start 10s Battle whenever you want.
Flash Test
Infinite World Generation
An interactive voxel-style preview that keeps generating terrain chunks as you travel. Move in any direction, change generation speed, randomize the seed, or enable automatic exploration.
Endless ChunksSeeded TerrainInteractive CameraInfinite Generator Preview
Chunk Streaming
The preview rebuilds the visible chunk grid around your changing coordinates.
Seed Variation
New Seed changes the terrain pattern while keeping generation deterministic inside the preview.
Dynamic Depth
The sidebar and content gain stronger perspective, shadow, and shading as the page is scrolled farther.
Three.js IRL Simulator Browser Edition
Entering this tab initializes a WebGL Three.js world, custom GLSL terrain shader, atmospheric lighting, water reflections, dynamic sky, weather, and the complete browser-simulation menu system.
Three.js WebGLCustom GLSLLocal WorldsMenus + Chat