Getting Malta's beaches right, beach by beach
How Malta's beaches in Minecraft got the right colour, depth, outline, pebbles and an edge you can walk out of the sea onto.
In short: A beach in Minecraft needs a colour, a depth, an outline, the right material and an edge you can climb out of the sea onto. My first beaches got most of those slightly wrong. This is how each one was put right, and what broke while I fixed it.
Sand on a map
My first beaches came from OpenStreetMap, the free map drawn by volunteers. Wherever it marked sand, I laid a few blocks of sand on top of the rock layers. The height survey couldn't help here, because to a laser a beach is just low, flat ground.
Flying over them, they looked fine. Walking on them, swimming up to them and digging into them told a different story, one beach at a time.
Ramla's colour
Ramla l-Ħamra, "the red beach", started out as Minecraft's red sand, a flat bright orange. The real sand is a golden ochre that no single block matches. I tried four mixes and kept the one closest to the photos: mostly red sand with about 30 % white sand in soft patches. Under the water the red fades out over about 40 m, so the sea floor turns back to white sand without a hard line.
The fix showed a mistake in my dune rule. It had turned all the low scrub within 180 m of the beach red, leaving about a dozen loose red patches on the slopes. Only sand that touches the beach stays now.
How deep the sand goes
Every beach was a skin of 3 to 4 blocks of sand. The geological map has no sand on it, so at Ramla the rock came up 6 to 25 m too high.
Two beaches have been measured properly. A 2024 study by Galone et al. mapped the sand thickness under Ramla and under the south beach of Mellieħa Bay, and I traced both maps into the world.
For the rest I needed a rule, and my first one failed. Filling the sand in smoothly from its edges got between 9 and 83 % of the real volume at Ramla, and less than nothing at Mellieħa, because sea walls and roads behind the beach pushed it the wrong way. The rule I kept lets the rock carry on sloping down from the ground around the beach, half a metre per metre, until it is 5 m below the sea. On the two measured beaches it gets 93 % and 97 % of the real volume.
Where the beaches are
Comparing OpenStreetMap with Gatt's list of 39 Maltese beaches turned up three missing ones: Xemxija, Buġibba's Bay Square and Mistra Bay. I drew them on the Planning Authority's 2018 aerial photo. The first versions came out as zigzags, because every edge in the world gets a random wobble of up to 6 m so outlines don't look ruler-straight, and on a 10 m beach that wobble tore it apart. Drawn beaches skip it now.
Then I traced 30 beaches on the photo. Picking out sand by colour worked at Golden Bay and failed on Pretty Bay's grey sand, so I traced by hand. My traces had too few points and came out as stiff polygons, worse than the map. Now the trace only marks roughly where the beach is, and the photo decides the edge, metre by metre.
Around the same time I noticed a thin line of mossy rock where every sandy beach met the water. My sea-floor rule had counted dry land as depth zero, so the first row of sea looked like a steep drop and turned to rock. Sandy beaches now get sand in front of them.
Pebbles
Some beaches on the map were never sand. I had ignored the map's note on what each is made of, so Daħlet Qorrot, a pebble beach in Gozo, was 77 % sand. Pebble beaches are now gravel with clumps of cobblestone, stone, andesite and diorite. Mixed beaches such as Ħondoq and Xlendi are sand with pebble patches.
Two odd faults showed up. At Ħondoq, a strip of grass was left between the beach and the sea, where my outline met the coast at an angle. And a dirt block appeared on the beach. Minecraft drops blobs of dirt and ore underground by replacing stone-type blocks, and pebbles count as stone-type blocks. At Fomm ir-Riħ, 12 ore blocks were lying on the beach. The pebbles are now put back after the ores are placed.
Climbing out of the sea
From the water, every beach was a two-block wall: the sand stood a block above the water, which was itself a block deep at the edge. Now the sand at the water's edge sits level with the surface and the beach rises one block at a time behind it. You can swim in and walk straight out.
San Blas and its boulders
San Blas in Gozo has orange sand too, so it got Ramla's mix. Beside it ran a strip of bare pale rock that looked like paving. On the aerial photo that strip is boulders and rubble, warm grey-beige and close to the colour of the sand.
No Minecraft block sits between red sand and grey stone, so I compared the photo's colours with the average colour of every block and tried mixes. Plain grey rubble was too cold, and terracotta came out pink. What worked was the mix itself: pale local rock with cobblestone, stone and andesite in clusters of different sizes, red sand between the stones near the beach, and a few larger boulders.
The last fixes, drawn by hand
Finally I printed a sheet for every beach with my coastline over the photo, drew corrections on them, and marked the piers so they are built as stone decks. A small script reads the drawings back in.
Lessons from the sand
- Dig, swim and walk. Most of these faults were invisible from the air.
- The photo knows the edges. My own careful tracing was worse than letting the photo decide.
- When no block has the right colour, a good mix of several gets close.
All of this was built in small test areas. It goes into the next full build of Gozo, and Malta later.
If you have photos of a Maltese beach, especially old ones that show how it has changed, I'd love to see them: [email protected].
Technical details
- Ramla mix: about 70/30 red/white sand in noise patches; red share on the sea floor falls with a smoothstep to zero 40 m out.
- Sand depth: grids traced from Galone et al. 2024 (Remote Sensing 16:40), figs 8a and 9a; Ramla trace 93,900 m³ against the paper's 88,440 m³. Elsewhere the rock continues the nearest non-sand ground (taken at most 3 m above sea level) down at 0.5 m/m, flat from 5 m below sea level, dunes at most 7 m; RMS 1.5 and 2.7 m per column on the measured beaches. Caps from Gatt 2021: Mellieħa and St Paul's Bay 5 m, St George's 1.5 m, Buġibba 0.6 m.
- Outlines: 30 traces on the Planning Authority 2018 orthophoto (25 cm); the edge is taken per 1 m cell from the photo near the trace, with a ±3 m wobble that never cuts the core.
- Pebbles: kind from the OpenStreetMap surface tag plus name overrides; pebble cover 3 blocks deep; pebbles restored after ore placement (0 wrong in 11,280 checked blocks).
- Walk-out edge: beach cells touching the sea, and beach ground under 0.5 m in the survey up to about 3 m from the water, top out at y 62; other beach cells at most one block above their lowest beach neighbour (221 edge cells at Golden Bay).
- San Blas: rubble 40 % local rock, 22 % cobblestone, 18 % stone, 15 % andesite, 5 % gravel by two-octave noise; red sand fading out over 26 m; colours compared in Lab against block texture averages (Minecraft 26.3).
- Pictures: all from test worlds. The numbered stage pictures are earlier test rounds without shaders, often with other fixes still missing. The shots marked "shaders" use Complementary Unbound and Faithful 64x.