← Back to list

LastEra Devlog #0 — Why Rebuild Everything

Building a Minecraft educational server from scratch: lore, pedagogy, and the chaos that made it worth it.

K-OS · 2026-06-04 08:54 · 5 claps · 4.6 min read
#education #minecraft #programming #lua #game-based-learning
Open on Medium ↗
Wiki topics: EDU · Education & Learning 💻 · Programming 🎙️ · Creator Economy 🛠️ · Crafts & DIY

LastEra Devlog #0 — Why Rebuild Everything

Building a Minecraft educational server from scratch: lore, pedagogy, and the chaos that made it worth it.

The Spark: One Server, Three Teams, One War

The last session ended like this: three teams, a scoreboard, and students aged 7 to 16 fighting over first place with an intensity I had not anticipated.

District Y in the lead with 80 points. District S at 35. District C at 20. And in the room, kids negotiating alliances, accusing teammates of sabotage, filing official complaints about rules I had invented the day before.

That moment convinced me to rebuild everything.

Why This Server Exists

I teach coding and robotics at a youth center in Brussels. Scratch, Python, Godot, micro:bit, LEGO Spike Prime, students aged 7 to 16. The recurring problem with this age range is entry-level motivation: how do you make a 9-year-old understand that learning to code is useful before they have written a single line?

Minecraft solves this sideways. The students already know the game. The world belongs to them. If I build the course inside it, I am not starting from zero in terms of engagement.

The original server was a first iteration, built fast for a final session. Minimal lore, improvised missions, manual point tracking. It worked far beyond my expectations, which means the foundations deserve a real build.

How Missions Are Adapted by Age

Main constraint: 7-year-olds and 16-year-olds in the same game space. That is not the same relationship to play, reading, frustration, or competition.

The solution: multi-entry missions. The same quest can be completed in different ways depending on level. Younger students follow visual and spatial instructions in-game. Older students access missions involving logic, CC:Tweaked Lua scripts, or more complex resource constraints.

The district points system creates collective rather than individual competition. An 8-year-old completing a basic mission contributes to the same total as their 14-year-old teammate who solved a redstone puzzle. No one is dead weight.

Concrete Results

What surprised me most: engagement lasted beyond the session. Students kept discussing strategies between classes. Some asked whether the server would stay accessible during holidays. One group spontaneously created a coordination channel outside class hours.

For kids who were rolling their eyes when I opened a code editor two months earlier, that is a meaningful signal.

The final ranking was not the objective. But it revealed something useful: inter-district competition generated more intra-district collaboration than any cooperative activity I had explicitly designed for that purpose.

Deep Dive: What the Server Was Technically

The modpack

Deliberately lightweight stack: CC:Tweaked for Lua scripting, Create for industrial mechanics, Easy NPC for quest characters, Cadmus for district territory management. Nothing heavy. The server had to run on a modest VPS without latency becoming a pedagogical problem.

Infrastructure

The server runs as a systemd service with Restart=on-failure and a 10-second RestartSec, which handles crash recovery automatically. Stop and start from the VPS terminal go through screen, so the server process survives SSH disconnections.

[Service]
Restart=on-failure
RestartSec=10
ExecStart=/usr/bin/screen -dmS boompala java -Xmx3G -Xms1G -jar fabric-server-launch.jar nogui
ExecStop=/usr/bin/screen -S boompala -X stuff "stop\n"

In a live classroom context, a server that crashes without automatic recovery means a minimum of ten minutes lost. This setup saved multiple sessions.

Missions and backend in Lua

All missions were coded in Lua via CC:Tweaked. The points system, the resource bank, the in-game shop: entirely implemented inside CC. No external mod for business logic, everything runs within the CC ecosystem.

One problem: CC’s built-in editor is unusable for real development. I worked around it with a vim pipeline: edit code outside CC, sync to the server, test. It works but it is a workaround. Finding a proper Lua editing workflow with a real LSP is one of the explicit items on the refactor list.

Sample structure for the points system:

-- bank.lua
local DISTRICT = "DISTRICT_NAME"
local EMERALD = "minecraft:emerald"
local SCAN_INTERVAL = 30

local modemSide = nil
for _, side in ipairs({"left","right","top","bottom","front","back"}) do
  local ptype = peripheral.getType(side)
  if ptype == "modem" or ptype == "wireless_modem" then
    modemSide = side
    break
  end
end
if modemSide then rednet.open(modemSide) end

local function compterEmeralds(chest)
  local total = 0
  local inv = peripheral.wrap(chest)
  if inv then
    for slot = 1, inv.size() do
      local item = inv.getItemDetail(slot)
      if item and item.name == EMERALD then
        total = total + item.count
      end
    end
  end
  return total
end

local function scannerTousLesChests()
  local total = 0
  local chests = {}

  -- turtle check the chest around it
  for _, side in ipairs({"left","right","front","back","top","bottom"}) do
    local ptype = peripheral.getType(side)
    if ptype == "minecraft:chest" or ptype == "chest" then
      table.insert(chests, side)
    end
  end

  for _, chest in ipairs(chests) do
    total = total + compterEmeralds(chest)
  end

  return total
end

local function envoyerScore(total)
  rednet.broadcast({
    cmd = "SCORE",
    district = DISTRICT,
    value = total
  }, "boompala")
end

-- Main Loop
while true do
  local total = scannerTousLesChests()
  envoyerScore(total)
  sleep(SCAN_INTERVAL)
end

When You Cannot Use the Server

Not all my classes have access to Minecraft. I also teach at a partner school where the machines are under strict contract and nothing can be installed.

Rather than abandoning the system, I transposed it. I rebuilt the same logic in Scratch: districts, tiered missions, collective points, live leaderboard. A Scratch Championship, currently in its last two sessions with those students.

The mechanics work independently of the technical stack. That is proof the pedagogical design holds without the original game, and that LastEra is not just a Minecraft server. It is a system.

What LastEra Will Be

The rebuild is called LastEra. The lore: a post-collapse world where two factions fight for control. Irony Corp, the megacorporation that owns the resources. ECHO, the resistance. Students pick a side.

Technical targets:

  • Custom modpack on Modrinth
  • FTB Quests for structured mission delivery
  • LuckPerms for faction-based permission management
  • CC:Tweaked for Lua scripting missions
  • Companion website for out-of-game lore and progression

Approximately 20 missions per difficulty tier, two playable factions, visible progression system. The next devlogs will document the build week by week: modpack architecture, quest design, pedagogical integration, and the moments where it does not work as planned.

Next week: modpack selection and first architecture decisions.


메타데이터
post_id
969906f5d80f
slug
lastera-devlog-0-why-rebuild-everything-969906f5d80f
url
https://medium.com/@wolfinncybersec/lastera-devlog-0-why-rebuild-everything-969906f5d80f
canonical_url
https://medium.com/@wolfinncybersec/lastera-devlog-0-why-rebuild-everything-969906f5d80f
author_url
https://medium.com/@wolfinncybersec
status
ok
fetched_at
2026-06-11 22:20:54