Every face looked up its neighbour in a HashMap keyed by BlockVector,
whose hash codes collide heavily; on the woodland mansion that took 1.8 s
of a 2.4 s build, so making a block see-through lagged by seconds. The
blocks now go into an array over the object's bounds, which brings the
build down to about 50-70 ms with the same faces. Opening an object gets
the same speed-up.
Model used: Claude Opus 5.5
Cutting layers no longer rebuilds the mesh: it is built once with the top
faces hidden by the block above kept aside, so a cut is a quick filter on
the UI thread and the view follows the slider while it is dragged. The
cut-away part stays as a faint ghost that only fills pixels the shown part
leaves empty, so the object's shape stays readable without hazing over
the floor being looked into.
Model used: Claude Opus 5.5
Folder headers stay pinned at the top of the object tree while scrolling,
one per nesting level; clicking one jumps to that folder. A faint slider
over the 3D view (or Page Up/Down) cuts away the top layers so floors of
large structures like the woodland mansion can be looked into. Clicking a
block in the overview list makes that block type see-through, so whatever
it hides shows behind it.
Model used: Claude Opus 5.5
The divider between the view list and an explorer's sidebar could sit
or be dragged above the end of the list, squeezing it into a small
scrolling area. The list's full height is now the divider's lowest
limit: it starts there and can only be dragged further down.
Model used: Claude Opus 5.5
The 3D object view guessed block shapes: stairs, gates, lanterns and
similar became full cubes, fences and walls showed only their post,
glass fell back to grey, and vines and ladders became crossed plants.
It now reads the real models: every matching multipart part, each box
with its own texture, UVs and face rotation, tilted and rescaled boxes,
blockstate turns with uvlock, cullfaces against covering neighbours, and
Minecraft's side shading.
Chests, heads, banners and the bell use their entity textures; fluids
and other code-drawn blocks get simple shapes. See-through textures like
water, ice and stained glass are blended back to front. Texture objects
with a "sprite" key (glass in 26.x) are read, which also fixes them in
the palette map, and grey PNGs such as stone are no longer brightened by
Java's colour conversion.
Model used: Claude Opus 5.5
Inspired by the Procedural Objects workbench, the map window gets an
Objects view (key O) to browse every object in the pack:
- The sidebar lists the objects as a folder tree, with a search that
matches every typed word anywhere in an object's path.
- The object is drawn in 3D with Minecraft's textures by a small
software renderer: an orthographic camera, a depth buffer and only
the block sides that can be seen. Drag orbits, shift-drag or the
middle button pans, scrolling zooms and R resets. Plants are drawn
as crossed sprites, single box models like slabs and carpets keep
their shape, grass and leaves get plains' colours, and the object
is centred beside the floating sidebar. A 150,000 block tree draws
in about 55 ms.
- The right panel shows the object's size, block count, block types
and how much of its box it fills, with a filterable list of its
blocks by share.
BlockTextures can now resolve a block's texture on every side through
its blockstate rotation, sharing the model reading with the top
texture lookup.
Model used: Claude Opus 5.5
The Objects, Decorators and Layers load views coloured each biome by a
rough count from its file: object density times chance, decorator
chance and the number of palette layers. They measured nothing and the
Palettes view shows the same contents in detail, so they go, together
with their render types, biome colours and the engine's per-biome
maximums that only they used.
Model used: Claude Opus 5.5
The divider between the map's view list and the palette or noise
sidebar was one pixel tall, too thin to grab. It is now a 7 px band
with a grip that can be dragged up or down. Palettes and Noise share
the one split, so the divider stays put when switching between them.
Its starting height is measured once the sidebar is laid out.
Model used: Claude Opus 5.5
/iris std noise now opens the map window on a new Noise view under
Generators (key N), next to Palettes. The noise sources sit below the
view list in the sidebar island, and the seed and colour controls join
the map toolbar. Reset view (R) resets whichever explorer is showing.
/iris std explore still opens its own noise window for one generator.
Model used: Claude Opus 5.5
The map now fills the whole window area and the sidebar island floats
over it, with the map showing through the gap around the island. Clicks
in that gap reach the map. Dragging the island's right edge resizes it,
always leaving the map some room.
Model used: Claude Opus 5.5
Long palette names were cut off by the sidebar's fixed width. The
sidebar is now a rounded island set apart from the window edges, and
dragging the gap beside it makes it wider or narrower.
Model used: Claude Opus 5.5
Squeezing both halves of tall grass into one block made it look like
short grass. The bottom half now fills its own block and the top half
covers the block above it on the map, so tall plants are two blocks tall
there too. The legend shows them by their top half, like Minecraft's
inventory icon.
Model used: Claude Opus 5.5
A decorator places a two-part plant like tall grass as a bottom half with
its top half above it, but the preview only drew the bottom half. It now
squeezes both halves into the one block, and the inspector says so.
Model used: Claude Opus 5.5
Bare ground under a decorator preview was dimmed, which made the block
under each decoration look lit up. It now shows at its own brightness;
the sprites alone mark where the decorator places.
Plants whose model stacks several sprites, like the firefly bush with
its glowing fireflies, now draw every layer in order instead of only
the particle texture.
Model used: Claude Opus 5.5
Decorator previews used the dark "nothing here" colour around and
between their sprites. They now show the biome's top surface layer
there: through the see-through parts of each sprite, and dimmed where
the decorator places nothing or places air. Hovering a bare spot says
the decorator places nothing there.
Model used: Claude Opus 5.5
Decorators now draw their plant sprite on each block instead of its
average colour, which only suits stacked ground layers.
The Overview tab lists every decorator and block palette snippet with
how often biomes use it. Picking one opens it where the first biome
places it; its rows open each other use. Snippet files no biome uses yet
are listed too. Snippet names keep their folders, so two snippets with
the same file name in different folders stay apart.
Model used: Claude Opus 5.5
Each decorator of a biome is now listed and previewed next to its layers,
walls and slabs. The preview shows where the decorator places, using the
same seed as the generator, and which block it picks there. Notes explain
what it leaves out: the part it decorates, competition with other
decorators, stacking and height.
Palettes that come from a snippet file show the snippet name, read from
the biome file since snippets are copied in when the pack loads.
Model used: Claude Opus 5.5
The Here tab listed palettes only for the biome you stand on. The other
biomes in your region, including child biomes nested under their parent,
showed just their name, so a child like Grassland Hills had no way to
reach its wall blocks from there. Every biome in the region now lists its
palettes under it, indented with the biome.
Model used: Claude Opus 5.5
Carving rock behind cliff faces with noise didn't give mountains the
look it was meant to, so it comes out again: the noiseCarving biome
setting, its mantle component and the NOISE_CARVED flag.
This reverts 8c39f9a01 and 8a1c7ac99.
Model used: Claude Opus 5.5
Noise carving ran inside the cave carving pass, which visits every
chunk within cave range of the chunk being generated, and it looked up
the biome and height of every column in all of them. Opening a studio
froze the server for about 35 seconds on its first chunk, even for
packs that don't use noise carving.
It now has its own mantle component that runs last and only for the
chunk being generated, and it does nothing when no biome in the pack
uses it. A fresh studio's spawn chunk is ready in about 1.4 seconds
again.
Model used: Claude Opus 5.5
Iris terrain is one height per column, so mountains could never lean
out over the ground below. Biomes can now set noiseCarving, which
removes rock behind cliff faces and slopes wherever a 3D noise drops
under a threshold. The hollows open up into overhangs, arches through
ridges and ragged cliffs instead of hiding inside the mountain.
Gentle ground keeps a crust of rock so trees and grass keep their
footing, carving fades out toward the biome's borders, and nothing is
carved at or below sea level. The carved blocks go through the normal
carve pass, so they get cave walls, floors, ceilings and decoration.
Model used: Claude Opus 5.5
The single before picture wasn't pulling its weight. The toolbar
buttons, the C shortcut and the swipe and changes overlays are gone
until there's a better way to compare pack versions.
Model used: Claude Opus 5.5
Palettes listed only a biome's surface layers. They now include sea
layers, cave ceiling layers, and wall and slab blocks, each previewed
with the noise and random source the generator uses for that kind.
Wall and slab blocks also change with height, so their preview is drawn
at sea level and says so.
The Here tab names the parent of a child biome and lists the region's
biomes with their children nested under them, marking where you stand.
Model used: Claude Opus 5.5
The height view spread its colours over the whole world height, so a
mountain range and the plains next to it got nearly the same colour.
The legend now measures the visible heights (1st to 99th percentile,
rounded to 8 blocks) and fits the gradient to that range, with sea level
kept as the water/land split.
The map also re-finds its own world after a reload instead of whichever
Iris world is active, now that the active world prefers the open studio.
Model used: Claude Opus 5.5
Long biome names now shorten instead of pushing the percentages out of
the legend, and biomes that share a display name show their key. The
highlight edge tints instead of drawing solid white, which turned
biomes scattered pixel by pixel into noise.
Model used: Claude Opus 5.5
/iris std noise listed the generators of whichever Iris world Bukkit
listed first. A normal Iris world runs on its own copy of the pack from
when it was created, so generators added to the pack since (like a new
generators/2026 folder) were missing while you worked in the studio.
The noise commands now use the world you stand in, and otherwise the
open studio before any other Iris world. After a hotload the explorer
stays on the world it was opened for.
Model used: Claude Opus 5.5
Highlight a biome or region (legend click, right-click, or H under the
cursor) to fade everything else and outline it; Esc clears it. A live
legend beside the map lists the biomes or regions in view with their
share of the screen.
The hover card now answers at once from the drawn tiles and then adds
height, sea level, land or sea, slope, cave biome and the Minecraft
biome; Shift adds keys and files.
After a refresh or hotload, C compares with the map from before: a
draggable before/now divider, or a view that fades out everything that
stayed the same and says how much changed.
Shading (S) adds hillshade relief to every view and Borders (B) outlines
the regions. Tiles now remember what each pixel shows, so all of this
restyles without rendering again.
Model used: Claude Opus 5.5
The map drew every visible tile to the window on its own, hundreds of
scaled images per paint, and since tiles are no longer cached in the
display server each of those was uploaded again on every frame, which
made dragging and zooming lag. The tiles are now put together in memory
once, only when tiles or the view change, and drawn as a single image
like the palette view does.
Model used: Claude Opus 5.5
Opening the map crashed Xwayland inside Mesa's Intel driver, which took
the server, the game client and every other X window down with it.
Map tiles and noise frames were left for Java2D to copy into textures
inside the display server, hundreds of them for one map. They are now
drawn straight from memory again, like before the render rework.
Model used: Claude Opus 5.5
FlatLaf grows fonts and its own controls to the screen's DPI, but the
sizes the studio set itself stayed fixed, so on a 192 DPI screen text
was cut off and overlapped. Every padding, row height, column, card and
legend now grows with the same scale or follows the font, the windows
open at a scaled size that still fits the screen, and the theme is
installed before any window builds its controls. Long status text now
shortens with an ellipsis instead of pushing the rest of the bar away.
Model used: Claude Opus 5.5
/iris std map now opens a single window with a grouped list of views
(world, biome layers, generation load and the new Palettes view), each
with a number or letter key. The palette explorer lives in that window
instead of its own: double-click or right-click a spot on the map to see
its palettes, and switching views keeps both looking at the same place.
/iris std pal still works and opens the map straight on its palettes.
The map draws much faster. Tiles are cached per power-of-two zoom level
so zooming reuses them, coarser and finer tiles already in the cache
stand in while new ones render, renders start the moment you drag or
zoom, and tiles that are still on screen keep rendering instead of being
thrown away. The noise explorer keeps one worker pool instead of making
threads for every frame and skips work for frames that were replaced.
Pointer coordinates now live in a status bar, so moving the mouse no
longer redraws the whole map.
Model used: Claude Opus 5.5
FlatLaf is loaded at runtime through slimjar like the other libraries.
Every studio window now opens with FlatLaf's dark look tuned to the
IntelliJ New UI colours, and shares a small kit of controls: a flat
toolbar, toolbar buttons and tabs, search boxes, a status bar and the
rounded cards drawn over maps.
Model used: Claude Opus 5.5