LanteaCraft is a modern NeoForge rewrite of the classic Stargate-themed Minecraft mod. The current 0.1.x build targets Minecraft 1.21.1 and focuses on getting the core Stargate loop working again: build an assembled gate, discover its address, dial another gate, and travel through the event horizon.
This is still an early rewrite. The mod is playable enough to test the main systems, but several features are prototype-quality and the final balance, progression, visuals, and compatibility surface are still in progress.
Implemented in the current source tree:
- NeoForge Minecraft 1.21.1 project targeting Java 21.
- Buildable 7x7 Stargate multiblocks.
- Four Stargate/DHD visual variants:
- Milky Way
- Nox
- Wraith
- Pegasus
- Seven-symbol Stargate addresses using six location glyphs plus one dimension glyph.
- Persistent Stargate network saved data.
- Dial Home Device block and custom dialing screen.
- Cross-dimensional Stargate travel between active gates.
- One-way wormhole connections with timeout cleanup.
- Optional incoming-side travel through config.
- Opening kawoosh damage/death through config.
- Event horizon rendering, glyph ring rendering, chevron lighting, and dialing animation.
- Bottom-row camouflage for assembled Stargates.
- Transport Ring blocks for vertical transport.
- Naquadah and trinium ores, raw materials, ingots, and storage blocks.
- Worldgen JSON for naquadah and trinium ores.
- Crafting recipes for Stargate parts, DHDs, crystals, materials, variants, and transport rings.
- Optional CC:Tweaked peripheral support for assembled Stargates.
Not currently implemented or not considered complete:
- Power requirements.
- Iris/shield mechanics.
- Address books.
- Gate ownership or permissions.
- Destination busy/lockout rules beyond the current prototype behavior.
- Dedicated progression/balance pass.
- REI/JEI custom integration.
- Minecraft:
1.21.1 - Mod loader: NeoForge
21.1.234 - Java:
21 - Optional: CC:Tweaked
1.120.0+
From the project root:
./gradlew buildOn Windows:
gradlew.bat buildThe built mod jar is written to:
build/libs/
Common development runs:
./gradlew runClient
./gradlew runServer
./gradlew runDataA Stargate is a vertical 7x7 frame centered on a Stargate Base block at the bottom middle. All frame blocks must be from the same variant set. Mixed Milky Way/Nox/Wraith/Pegasus frames do not assemble.
Required blocks:
- 1 Stargate Base
- 14 Stargate Ring Segments
- 9 Stargate Chevrons
Frame layout:
Y=6 R C R C R C R
Y=5 R R
Y=4 C C
Y=3 R R
Y=2 R R
Y=1 C C
Y=0 R C R B R C R
Legend:
B= Stargate BaseR= Stargate Ring SegmentC= Stargate Chevron- blank spaces = air
When autoAssembleStargates is enabled, a complete frame assembles automatically after the final valid block is placed.
With an empty hand:
- Right-click an assembled Stargate to display its address in chat.
- The address message is clickable/copyable.
- Sneak + right-click an assembled Stargate to disassemble it.
With a block item:
- Right-click the assembled bottom row with a valid solid block to apply bottom-row camouflage.
Breaking an assembled Stargate block attempts to disassemble and unregister that gate from the saved network.
Gate addresses are seven glyphs long.
The current address format is:
6 location glyphs + 1 dimension glyph
The glyph alphabet is:
ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-+
Reserved dimension glyphs:
A= OverworldN= NetherE= End
Other dimensions are assigned available glyphs and persisted in the Stargate network saved data.
Place a DHD near an assembled Stargate and right-click it to open the dialing screen.
Current DHD behavior:
- The DHD searches for the nearest assembled Stargate within
dhdSearchRadius. - The default search radius is 8 blocks.
- Addresses can be typed, pasted, or entered with the on-screen glyph buttons.
- Press Enter or the center button to dial.
- Submitting a blank address disconnects the local outgoing connection.
Dialing rules in the current implementation:
- The destination address must exist in saved Stargate network data.
- Dialing the same local gate is rejected.
- The connection is stored as one-way: source address -> destination address.
- The outgoing gate controls disconnect.
- Incoming-side travel is rejected unless enabled in config.
When a wormhole is open, entities entering the outgoing event horizon are teleported to the destination gate. Travel preserves relative position and attempts to transform facing/velocity to match the destination gate orientation.
The current handler affects non-passenger entities. Players, mobs, and other entities may be moved if they can be teleported by Minecraft's normal entity/dimension rules.
By default:
- Wormholes time out after 60 seconds.
- Incoming-side travel is disabled.
- A teleport cooldown prevents immediate re-trigger loops.
- The kawoosh can kill entities caught in front of an opening gate.
Transport Rings are a separate prototype transport system.
Current behavior:
- Place at least two Transport Ring blocks at different positions in the same chunk.
- Right-click one ring to activate it.
- The source searches the same chunk column for the nearest non-busy Transport Ring.
- After the animation delay, entities in the beam area are moved to the destination ring.
- The source and destination enter a short cooldown.
Current limitations:
- Transport Rings do not search across chunks.
- There is no address, power, ownership, or controller system for rings yet.
LanteaCraft currently adds:
- Naquadah Ore
- Trinium Ore
- Naquadah
- Trinium
- Naquadah Ingot
- Trinium Ingot
- Block of Naquadah
- Block of Trinium
- Blank Crystal
- Control Crystal
- Core Crystal
Naquadah and trinium ore generation is provided through worldgen JSON and a NeoForge biome modifier.
The source includes vanilla crafting recipes for all current craftable items and blocks.
Naquadah Ingot, shapeless:
Iron Ingot + Naquadah -> Naquadah Ingot
Trinium Ingot, shapeless:
Iron Ingot + Trinium -> Trinium Ingot
Naquadah Block:
NNN
NNN
NNN
N = Naquadah Ingot
The block can be crafted back into 9 Naquadah Ingots.
Trinium Block:
TTT
TTT
TTT
T = Trinium Ingot
The block can be crafted back into 9 Trinium Ingots.
Blank Crystal:
GGG
GDG
GGG
G= Glass PaneD= Diamond
Control Crystal:
RRR
RBR
RRR
R= RedstoneB= Blank Crystal
Core Crystal:
LLL
LBL
LLL
L= Lapis LazuliB= Blank Crystal
Stargate Ring Segment:
ISI
NNN
III
I= Iron IngotS= Chiseled SandstoneN= Naquadah Ingot
Stargate Chevron:
SGS
NPN
IRI
S= Chiseled SandstoneG= Glowstone DustN= Naquadah IngotP= Ender PearlI= Iron IngotR= Redstone
Stargate Base:
SRS
NEN
ICI
S= Chiseled SandstoneR= RedstoneN= Naquadah IngotE= Eye of EnderI= Iron IngotC= Core Crystal
DHD:
SRS
NCN
III
S= Chiseled SandstoneR= RedstoneN= Naquadah IngotC= Control CrystalI= Iron Ingot
Variant Stargate parts and DHDs are shapeless dye conversions from the Milky Way versions:
Milky Way part + Green Dye -> Nox part
Milky Way part + Blue Dye -> Pegasus part
Milky Way part + Purple Dye -> Wraith part
This applies to:
- Stargate Ring Segment
- Stargate Chevron
- Stargate Base
- DHD
Transport Ring:
TGT
NCN
TET
T= Trinium IngotG= Gold IngotN= Naquadah IngotC= Control CrystalE= Ender Pearl
The common config currently exposes:
| Option | Default | Description |
|---|---|---|
debugLogging |
false |
Enables extra startup and system logging. |
allowIncomingWormholeTravel |
false |
Allows entities to travel back through the incoming side of a wormhole. |
kawooshDeath |
true |
Makes the opening kawoosh kill entities caught in front of an active gate. |
autoAssembleStargates |
true |
Automatically assembles complete Stargate multiblocks. |
gateTimeoutSeconds |
60 |
How long an open wormhole remains active. Set to 0 to disable automatic timeout. |
dhdSearchRadius |
8 |
Maximum block radius a DHD searches for a nearby assembled Stargate. |
gateTeleportCooldownTicks |
40 |
Cooldown before the same entity can trigger Stargate travel again. |
enableOreRetrogen |
false |
Generates LanteaCraft ores in already-existing chunks as they load. |
oreRetrogenChunksPerTick |
1 |
Maximum old chunks processed for ore retrogen per dimension tick. |
Stargate bases can accept FE into an internal buffer when power.enableFePower=true. Classic gate behavior remains available by default: power.requirePowerToDial=false and power.requirePowerToMaintainWormhole=false mean dialing and active wormholes do not require FE unless a pack enables those rules.
Powered dialing charges the origin gate by default. Active wormholes can draw sustain power from ORIGIN_ONLY, DESTINATION_ONLY, BOTH_SIDES, PREFER_ORIGIN, or PREFER_DESTINATION, and can use configurable same-dimension distance scaling and cross-dimension multipliers. Energy irises consume FE while closed when enabled and can fail open if unpowered.
The Naquadah Generator is LanteaCraft's native FE source. It uses the legacy 1.7.10 generator model, burns Naquadah fuel, stores FE internally, and outputs to adjacent FE handlers.
If CC:Tweaked is present, assembled Stargate blocks expose a stargate peripheral.
Current Lua-facing functions include:
getAddress()getStatus()isConnected()isDialing()getRemoteAddress()dial(address)disconnect()
Attached computers receive stargate_event events for gate activity such as dialing, opening, closing, timeout, disconnects, and entity transit/local gate interactions.
Active Stargate wormholes also act as CC:Tweaked wireless repeaters. A wireless modem within range of one connected gate can transmit a modem_message through the wormhole; the packet is re-broadcast as a fresh wireless hop from the remote gate, allowing interdimensional links or long-distance same-dimension links between computers near each gate.
ComputerCraft support is optional. LanteaCraft compiles against the CC:Tweaked API and declares the mod dependency as optional.
The following areas are expected to change:
- Destination busy handling is incomplete.
- Gate visual state and saved network state can drift if dimensions are unavailable during cleanup.
- Save/reload behavior for active wormholes needs more testing.
- Old rewrite snapshot address data is not migrated.
- Transport Rings are functional but very early.
- Multiplayer/dedicated-server behavior needs more broad testing.