Open-source project
MovingBlocks/Terasology avatar
MovingBlocks/Terasology

Terasology: a Java voxel engine you build from modules, not a finished game

Terasology - open source voxel world

3,900 stars1,377 forksJavaApache-2.0

At a glance

What is it?
Terasology is an Apache-2.0 voxel world engine from MovingBlocks, written in Java and assembled from separately cloned module repositories. It is closer to a platform for voxel gameplay than to a shipped title, and its build requirements are the first thing to check.
Who is it for?
Adopt Terasology if you want a Java, Apache-2.0 voxel platform to build gameplay on and you are willing to run a multi-repo Gradle workspace on JDK 17. Do not adopt it if you want a finished game with a stable release cadence: the most recent listed release is v5.4.0-rc.1 from 2024-06-16, and the previous stable v5.3.0 dates to 2022.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The gap Terasology fills: a voxel engine with gameplay modules bolted on, not baked in

Most voxel projects pick a game and ship it. Terasology picks the engine and leaves the game to modules. The README describes the project as having been "born from a Minecraft-inspired tech demo" and as "becoming a stable platform for various types of gameplay settings in a voxel world". That framing is the whole pitch and the whole constraint.

The intended audience is not players looking for a finished sandbox. It is developers, designers, testers, artists and musicians, which is the mix the README lists among the creators and maintainers. If you are a Java developer who wants to add a block type, a world generator or a gameplay system and see it running in a voxel world without writing a renderer, this is the target use case. If you want to install something and play, the launcher path works, but you are playing whatever the current module set assembles into.

The engine code and the artwork carry different licences, which matters if you plan to redistribute anything. The README badges mark the code as Apache 2.0 and the art as CC BY 4.0, and the repository root contains separate LICENSE and LICENSE_ARTWORK files. Treat those as two distinct obligations rather than one.

How the engine, modules and multi-repo workspace fit together

The repository layout tells you more about the architecture than the README does. Alongside the usual Gradle files there are engine/, engine-tests/, facades/, subsystems/, libs/, metas/, templates/ and modules/. That is a modular engine split into named subsystems, with a separate directory reserved for content modules that live in their own repositories.

The README is explicit that a Terasology workspace is a multi-repo workspace: your workspace is a clone of MovingBlocks/Terasology, but every subdirectory under ./modules/ is a clone of a separate Terasology module repo. Modules are therefore not vendored into the engine. They are fetched into place, which is why the repository ships a groovyw script and a groovyw.bat alongside gradlew and gradlew.bat. Those two scripts are the tooling for pulling modules into the workspace.

The practical consequence is a data flow where the engine provides the voxel world, rendering and subsystem plumbing, and gameplay arrives as module content loaded at runtime. A world in Terasology is the sum of the engine plus whichever modules are present. That makes swapping gameplay cheap and makes reproducing someone else's setup dependent on knowing which modules they had.

There is a second consequence that the README states plainly: the develop branch is the cutting edge, and its builds are published as artifacts from the project's Jenkins, separate from the stable builds uploaded to the GitHub releases section. Two distribution channels, two stability expectations.

Installing Terasology: launcher, direct download, or JDK 17

The README recommends the launcher for easy game setup and links a downloads page. Requirements are listed as a 64-bit Windows, macOS or Linux system, a dual-core CPU, 4 GB of RAM, 1 GB of storage, and a GPU with OpenGL 3.3 (Intel HD Graphics Gen 7, GeForce 8xxx or Radeon HD 2000 or higher). The README also warns that on machines with both integrated and dedicated graphics you should confirm the dedicated card is the one being used. Internet access is needed to download through the launcher; after that, offline play is possible.

The alternative path is a direct download release, which the README says requires an installed JDK, specifically Java version 17. Stable builds are on the GitHub releases page, and the develop build is published from Jenkins as a zip artifact.

For source work the requirements section is stricter: JDK 17 is the baseline the CI verifies against, and the README warns that newer Java versions may cause issues, citing issue #3976. Git is required to clone and commit, and the README expects familiarity with Git and with GitHub forks before you start.

The workspace setup is where most first attempts stall. The README points to a Contributor Quick Start Guide written for IntelliJ IDEA (the free community edition is acceptable) and repeats that the workspace is multi-repo. Cloning the engine alone gives you an engine with an empty modules directory. The repository ships groovyw and groovyw.bat for module work, and the README defers to the Contributor Quick Start Guide for the exact commands rather than spelling them out. What you should see after a successful module fetch is a populated directory under ./modules/ rather than an empty one. For hot keys and server hosting the README defers to docs/Playing.md, and for modules to docs/Modules.md.

Where Terasology is the wrong choice

The release history is the clearest limitation. The most recent listed release is v5.4.0-rc.1, a release candidate dated 2024-06-16. Before it, v5.3.0 shipped on 2022-09-03, with v5.3.0-rc.2 on 2022-08-23. A release candidate that has not been followed by a final release in the listed history means anyone who needs a versioned, supported artifact is working from a candidate or from an older stable.

The Java version pin is a second real constraint. JDK 17 is the CI baseline, and the README explicitly warns that newer Java versions may cause issues. If your organisation standardises on a newer LTS JDK, you are outside the tested configuration for source builds.

The multi-repo workspace is the third. It is not a packaging detail you can ignore. A contributor has to understand forks, module repositories and the groovyw tooling before writing a line of gameplay code. For a solo developer who wants to modify a voxel engine in an afternoon, that setup cost is disproportionate.

Finally, the graphics floor is real. OpenGL 3.3 is the stated requirement. Machines on integrated graphics older than the listed generations, or on drivers that do not expose 3.3, are not supported targets regardless of how much RAM they have.

Terasology compared with Minetest and Minecraft

The comparison people search for is Terasology against Minetest and Minecraft, and the difference is architectural rather than cosmetic.

Minecraft is a finished commercial game. You install it and play a specific game with a specific progression, and mods are additions layered onto a shipped product. Terasology inverts that: the engine is the product, and the game is assembled from modules. That is why the README can describe the project as a platform for "various types of gameplay settings" rather than as one setting.

Minetest is the closer comparison, because it is also an open source voxel engine with content loaded separately. The distinguishing detail in this repository is the language and the build model. Terasology is Java with Gradle, and its content lives in separate Git repositories pulled into a ./modules/ directory of a multi-repo workspace. If your team is a Java team, or if you want to reuse JVM libraries inside a voxel world, that is the axis on which Terasology differs from a Lua-centric engine. If your team is not a Java team, the same fact is the reason to look elsewhere.

The licence split is another concrete difference worth checking against whatever you are comparing to: Apache 2.0 for code and CC BY 4.0 for art, kept in separate files at the repository root.

Maintenance, upgrade cost and the licence split

The repository is not archived, and the last push was on 2026-09-21. Code is moving even though releases are sparse, which is a common shape for a project whose stable channel lags its develop channel. The README supports that reading by pointing at Jenkins for the develop build and at GitHub releases for stable builds.

Upgrade cost is dominated by the JDK pin and the module graph. Because modules are separate repositories, upgrading the engine does not automatically upgrade the gameplay content you depend on, and a module that has not been updated against the current engine is a compatibility question you have to answer yourself. The README does not document a rollback procedure for engine or module versions, so plan your own version pinning before you build anything on top.

On licensing: the code is Apache 2.0 and the artwork is CC BY 4.0, per the README badges and the separate LICENSE and LICENSE_ARTWORK files in the repository root. Those are different sets of conditions, and CC BY 4.0 carries an attribution requirement that Apache 2.0 does not. If you plan to redistribute a build, read both files and get your own legal advice; nothing here is legal advice.

Editorial conclusion

Adopt Terasology if you want a Java, Apache-2.0 voxel platform to build gameplay on and you are willing to run a multi-repo Gradle workspace on JDK 17. Do not adopt it if you want a finished game with a stable release cadence: the most recent listed release is v5.4.0-rc.1 from 2024-06-16, and the previous stable v5.3.0 dates to 2022. Before committing, verify three things: that your GPU reports OpenGL 3.3, that your JDK is exactly 17, and that the modules your design depends on actually exist as repositories under the Terasology organisation.

Frequently asked questions

How do I install Terasology?

The README recommends the launcher from the project's downloads page for easy setup; internet access is required for that download, and offline play works afterwards. Alternatively, if you have a JDK installed (Java version 17 is required), you can use a direct download release from the GitHub releases section.

Is Terasology free?

The code is licensed under Apache 2.0 and the art under CC BY 4.0, as shown by the README badges and the separate LICENSE and LICENSE_ARTWORK files. The README gives no pricing information, so treat the licences as the terms that apply.

Is Terasology safe?

The README does not make security claims either way. What it does document is the distribution path: the launcher from the project's downloads page, stable builds from the GitHub releases section, and develop builds from the project's Jenkins. Use those sources rather than third-party mirrors.

How does Terasology compare with Minetest?

Both are open source voxel engines that load content separately rather than shipping one fixed game. The difference visible in this repository is the stack: Terasology is Java with Gradle and a multi-repo workspace where each directory under ./modules/ is a clone of a separate module repository, with a groovyw script for fetching modules.

How does Terasology compare with Minecraft?

The README states the project was born from a Minecraft-inspired tech demo and is becoming a platform for various types of gameplay settings in a voxel world. So Minecraft is a finished game with mods layered on, while Terasology is an engine whose gameplay is assembled from modules.

Official sources

  1. License: Apache-2.0
  2. MovingBlocks/Terasology on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/movingblocks-terasology.svg)](https://hysenlabs.com/projects/movingblocks-terasology)