Wiki + Game Options

Settings are unchanged.

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 Spawns

Biggest 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.

/help — Show built-in commands and loaded modpack commands
/mods — Show modpack commands registered by loaded packs
/pos — Show position
/tp x y z — Teleport
/give id — Give block/item ID
/dim or /dimension — Switch dimension
/time 6000 or /time set noon — Set time
/summon baby | human | holographic human | boss — Built-in summon commands
/weather clear|rain|snow|thunder|random — Change weather
Pack commands only appear after that pack registers them.

Block List

Interactive Block Viewer

Biomes

Interactive Biome Preview

BiomeFeatures
PlainsGrass and rolling terrain
ForestTrees and grass
DesertSand and cacti
OceanWater and ocean stone
TundraSnow and ice
JungleJungle wood and palm leaves
Snowy MountainsTall ridges and snow

Structures

Interactive Structure Preview

Spawn Ritual
Village
Abandoned Boss House
TNT Ruins
Jungle Monkey House
Boss Temple
Underwater Guardian Temple

Cave Biomes

Interactive Cave Preview

Stone Caves
Moss Caves
Crystal Caves
Ice Caves
Fire Caves

Hell Biomes

Interactive Hell Preview

Ash Wastes
Bloodrock Fields
Firelands
Bosslands
Blood Caves
Fire Caves
Boss Caves

Crafting

Interactive 3×3 Crafting Preview

Tap an ingredient to switch ingredients, then tap any grid slot.

→
Select an ingredient.

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

Weather: Clear

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

Ready.

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.

Host world
→
ZIP
→
Download
→
Extract
→
Load

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 Models

What 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

Upload ui.store
→
Upload pack zips
→
Game fetches store
→
Player downloads
→
Pack saved locally
→
Loader reads data

Mod Store / Inbox

The Mod Store fetches ui.store, shows a block spinner while loading, and displays downloadable extension packs.

Store UI Demo

IRL Simulator Mod Store / Inbox
Click Refresh to simulate fetching ui.store.

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"]
    }
  ]
}
Block IDs must be 0-255. Color must be an RGB array.

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"
    }
  ]
}
Use plain URL strings. Do not paste HTML anchor code into ui.store.

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

No demo mod commands loaded.

Animal Data Preview

Click preview to pick a random name and color.

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.txt

Deep 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 Menus Guide

Menus create pack-driven UI with buttons.

{
  "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"}}
      ]
    }
  ]
}

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"}
  ]
}
Use plain URLs only. Do not paste HTML anchor tags into ui.store.

Upload / Publish Workflow

modUI/
  ui.store
  packs/
    my_full_pack.zip
    robot_entities_custom_model_pack.zip
    computer_electricity_science_extension_pack_refixed.zip

Complete 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 Preview

Final Boss Arena

FINAL BOSS HP: 1,000,000 / 1,000,000
Click the boss or begin the timed battle.

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

This visual-only test does not change boss HP.

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 Camera

Infinite Generator Preview

X 0 · Z 0
Seed 677 · Chunks 0
Click the controls, use WASD/arrow keys, or switch on Auto Explore. New terrain is generated from the current seed.

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

Hi, sample!

Click or press any key to skip
Preparing Three.js renderer and GLSL shaders...
FPS 0
X 0 Y 0 Z 0
FLIGHT ON
Chunks 0 · Biome Plains
Hold left mouse and drag to look
KEYBINDS
WASD: Move · Shift: Sprint
Space: Jump / Fly up · Shift: Sprint or Fly down
F: Toggle flight · B: Break selected
P: Place on selected face · 1–9: Hotbar
T: Chat · ESC: Pause
F5: Save · F7: Dimension
Left-drag: Look around
Day · 6000
Outer Space
HP
Water
Pee
TOUCH READY
CONTROL CUSTOMIZATION
Drag the world to look
Three.js is loaded from a CDN when this tab opens, so the 3D edition needs an internet connection the first time. The browser edition simulates the documented systems and does not replace the original Java build.