Kirsle.net logo Kirsle.net

Limbo in Vanilla Minecraft

June 3, 2014 by Noah

Time for another Minecraft tutorial using command blocks to do something pretty neat using the vanilla version of the game (no plugins necessary). I used Minecraft version 1.7.9.

In this mini tutorial, I'm showing off how I created a "Limbo Dimension" that players are sent to after death, where they must remain for 60 minutes before being respawned in the overworld again.

Inspiration

There's a popular Minecraft server on Reddit called Flatcore, and they have a Limbo that works as I described. Their server runs lots of custom plugins, so this is my attempt at creating Limbo in vanilla Minecraft.

Their Limbo technically exists within the End Dimension. When you die in the overworld, you spawn in Limbo where you must remain for 60 minutes. You can log off and come back an hour later and skip Limbo entirely, or you can stick around and play mini games or try your luck at a parkour course--if you get to the end in parkour, you can leave Limbo early. Dying while inside Limbo respawns you in Limbo, but your 60 minute timer is not reset.

Limbo in Vanilla

In my version of Limbo, I didn't want to build it in the End Dimension for various reasons: you can't set a player's respawn point to the End Dimension (in vanilla Minecraft), I didn't wanna have to drop the player into the End Portal on their death in the overworld/nether, and the only way to exit The End cleanly is to go through the Exit Portal, which triggers the credits sequence and that's annoying. ;)

First, a high-level overview of how my Limbo works:

  • I have a couple of scoreboard teams set up: Limbo and LimboExit, and a scoreboard objective respawnCounter which holds the number of minutes remaining until respawn.

  • A rapid command block clock constantly uses /spawnpoint to set the respawn point of all players without teams to the Limbo Entrance Holding Cell

    • Players who are on the Limbo team, their spawn point is set to the Limbo Building instead. This way if they die inside Limbo, they reappear in Limbo, without their counter getting reset.
  • Upon spawning in the Limbo Entrance Holding Cell, the player falls on a pressure plate which runs a series of command blocks:

    • Assign the player to the Limbo team
    • Set the player's game mode to Adventure
    • Clear the player's inventory (just in case?)
    • Teleport the player into the Limbo Building.
  • A slow clock that pulses once every minute subtracts 1 from the respawnCounter for all players on the Limbo team. It also re-assigns players whose counter has reached 0 to the LimboExit team.

  • The same rapid clock that sets the spawn points of players, also teleports players on the LimboExit team into the Limbo Exit Holding Cell

  • The Limbo Exit Holding Cell is just like the Entrance one, but the pressure plate does the opposite:

    • Remove the player from all teams
    • Set the player's game mode to Survival
    • Resets the player's respawnCounter scoreboard.
    • Teleports the player back to the surface.

So, I created a superflat world in which the world height was set pretty high (above 100 blocks up), with a ton of void beneath the bedrock, so I could build out Limbo beneath the overworld.

The preset I used was:

2;100x0,10x7,2x3,1x2;3;decoration,lake,lava_lake
  • From the bottom:
    • 100 layers of air (void)
    • 10 layers of Bedrock
    • 2 layers of dirt
    • 1 layer of grass
  • Extreme Hills biome
  • Lakes, lava lakes, chance of ores (in the stone near lava lakes), tall grass, trees, etc.

The surface of the world is at Y=113. The first thing I did upon logging in was teleport to 0,113,0 and ran /setworldspawn to move the spawn point here. This made it easy to line everything up.

Here's the view from the world spawn point (taken after some snowfall had settled):

Click that and any other screenshots for a slightly larger version.

I marked the actual world spawn point with a gold block (well, 4 gold blocks here, but one of them is on 0,0).

Next, I set up the scoreboard teams and objectives:

  • /scoreboard teams add Limbo
  • /scoreboard teams option Limbo color light_purple
  • /scoreboard teams add LimboExit
  • /scoreboard objectives add respawnCounter dummy
  • /scoreboard objectives setdisplay respawnCounter list

This adds the Limbo and LimboExit teams. I made the Limbo team have a light purple color, so their names on the Tab menu will show up as light purple. It's an optional step.

I also set the respawnCounter objective to show up in the user list when you hold Tab. This way players stuck in Limbo can see their remaining time. You could also stick it to be belowName if you want.

Layer 1: The Clocks

Going down further, just below the bedrock floor is my rapid clock:

This is a simple hopper clock. The hoppers connect to each other and I placed one item inside, so as the item is passed back and forth, a redstone pulse comes out. There's a comparator and a repeater to boost the signal. The signal passes over three command blocks. From left to right:

  • /spawnpoint @a[team=] 0 89 0
  • /spawnpoint @a[team=Limbo] 0 62 0
  • /tp @a[team=LimboExit] 0 79 0

The first command sets the spawn point of all players without a team into the Limbo Entrance Holding Cell. The second command sets the spawn point of Limbo players into the lobby of the Limbo Building.

The last command block is behind another repeater to add a slight delay, and it teleports LimboExit team members into the Limbo Exit Holding Cell.

To the right of the rapid spawnpoint setting platform, I have my minute clock:

I found the layout for this clock on this page, so check that for reference. The hoppers contain 86 items that get passed back and forth (one stack of 64 plus 22). This generates a pulse about once every minute.

The command blocks that get executed from left to right:

  • /scoreboard players remove @a[team=Limbo] respawnCounter 1
  • /scoreboard teams join LimboExit @a[team=Limbo,score_respawnCounter=0]

The first one subtracts one point from the respawnCounter for all players on team Limbo. The second one checks for players on Limbo whose counter has reached 0, and transfers them to the LimboExit team. This should theoretically work even if the player is offline (untested).

Going further down the rabbit hole...

Layer 2: The Holding Cells

Beneath the clocks is the Limbo Entrance Holding Cell. Here, I've replaced two of the walls with glass blocks so you can see inside.

Players on the surface have their spawn points set so they'll land on the Golden Pressure Plate inside the cell. The signal from the pressure plate works its way to the top of the cell where it triggers a series of command blocks. In the order of the redstone signal (from right to left):

  • /scoreboard teams join Limbo @a[r=6]
  • /scoreboard players set @a[r=6] respawnCounter 60
  • /gamemode 2 @a[r=6]
  • /clear @a[r=6]
  • A repeater to slow the signal for a second
  • /tp @a[r=6] 0 62 0

This adds the player to the Limbo team, sets their respawnCounter to 60 (minutes), switches them to Adventure Mode, clears their inventory (this was mostly for testing; if they freshly died they probably don't have any inventory), and then finally teleports them into the lobby of the Limbo Building.

In Minecraft 1.7 and older, Adventure Mode only prohibits the player from destroying blocks that need a tool to destroy, unless the player uses that tool. Blocks that can be destroyed with bare hands (such as glass, ice, torches, flowers, etc.) can still be broken by the player. When Minecraft 1.8 is released, this won't be an issue: Adventure Mode players in 1.8 can't break anything without having a specially created tool that has NBT tags explicitly permitting it to break specific blocks. Your "Limbo Dimension" will be even safer in Minecraft 1.8!

Beneath the Limbo Entrance Holding Cell is the Exit Holding Cell, it looks and acts the same way except it runs these commands:

  • /gamemode 0 @a[r=6]
  • /scoreboard players reset @a[r=6] respawnCounter
  • /scoreboard teams leave @a[r=6]
  • Repeater for delay...
  • /tp @a[r=12] 0 113 0

So it switches them back to Survival Mode, resets their respawnCounter objective, removes them from their team, and then teleports them back to the surface of the overworld.

Layer 3: Limbo Building

So, after dying, respawning inside the Entrance Holding Cell, being enrolled into Team Limbo, the player is finally teleported into the Limbo Building.

I didn't flesh out Limbo on this map as it was more of a proof of concept. Holding down Tab shows the player list, those in Limbo show up in light purple, and have the number of minutes remaining on their sentence.

Every minute that passes subtracts one from that score, and when it reaches zero, the player is teleported into the Limbo Exit Holding Cell where they're reinserted into the Matrix. ;)

World download: minecraft-limbo-poc.tar.gz (847KB)

Tags:

Comments

There are 2 comments on this page. Add yours.

Avatar image
Kevin posted on December 10, 2014 @ 14:38 UTC

That's really neat. I might use that on my vanilla server. Have to talk to the crew first though. Thanks! :)

Avatar image
Pylo_2 posted on March 26, 2016 @ 15:36 UTC

Looks great. Also helps with my compact machine concept.

Add a Comment

Used for your Gravatar and optional thread subscription. Privacy policy.
You may format your message using GitHub Flavored Markdown syntax.