7

For a minigame map I am making, I have a large (320*320*116) destructible arena. Players get explosives, blocks, etc. and the entire area can change. At the end of the match, I would like to restore the entire arena to its starting state, so another match can occur.

My old plan was simply to have a backup arena adjacent to the normal one, and then after a match had finished an ArmorStand would be teleported around, executing a /clone command with relative coordinates. The problem is that the clone command can only select a relatively tiny area, and takes quite a while for each execution. I estimated that I would need to /clone 400 times, and each time was taking 10 or so seconds.

Other than having the server reinstall the map each time, are there any more efficient ways I could regenerate the arena? Perhaps detecting only the chunk segments that need to be changed, or undoing each explosion somehow.

14
  • Destructible arenas are tricky, especially at that scale. You could do it with just... 363 command blocks with its own /clone command, which would be slightly more straightforward than teleporting an armor stand around to fix things. This is a huge arena; on a server with default settings, if you were standing in one corner, you would not be able to see the center of it. You might want to reconsider your scale, unless this is intended to be more of a survival gametype like Survival Games.
    – Unionhawk
    Oct 28, 2014 at 16:36
  • @Unionhawk It is meant to be a huge scale, and will have a lot of buildings and running around. 363 clone commands could work, but (at ~10 seconds each) take almost an hour to complete. I'm now thinking of perhaps using WitherSkulls (which don't block projectiles like ArmorStands) to keep track of the locations where explosions have occurred (should be possible), then having each of them do a smaller relative clone. Need to work out something for placing blocks, and work out if it's actually going to be any faster.
    – SirBenet
    Oct 28, 2014 at 16:41
  • Just to confirm, vanilla right? Bukkit plugins are not a option?
    – user271360
    Oct 29, 2014 at 0:36
  • 1
    why not have multiple arenas that you teleport the players to and rebuild the previous ones while they are having fun elsewhere Oct 29, 2014 at 10:41
  • 1
    @Sebie I'd like ideally for pretty much any server to be able to play the map. I think I've got a solution which I'll write up an answer for if it works. I'm basically keeping a backup of the map in spawn chunks. Below each column of the map I have a command block with the command to clone relatively the column above it to the corresponding column to the map actually in play. When a block is placed, a filtered clone also puts the block below the command block of the column that was altered. Then, at the end, all the stone is replaced with redstone blocks to regenerate only the columns altered.
    – SirBenet
    Nov 3, 2014 at 17:22

4 Answers 4

3

You could use the /clone command, with one clever difference: You have two arenas, and while one is /cloneing, the other would be used.

This may cause major lag, though. I don't know; try it.

2
  • That is exactly what I was thinking. It should work fine aswell I can't see a reason other than some lag for smaller servers. Jun 26, 2015 at 9:56
  • Then go for it!
    – Quelklef
    Jun 26, 2015 at 18:04
2

If you would like to actually reset the map in-game, you could use the /fill command (Preferably in command blocks) to set all the blocks back to normal and get rid of any fires, etc. and use the /kill @e to kill all mobs (Do /kill @e[type=creeper,Zombie,Skeleton] and etc. to kill only the mobs you spawn and not actually you). You could use additional /setblock commands for any areas not on the certain y-axis (1 strange block on the 105 y-axis, while the rest of the arena is on the 104 y-axis).

The fill command: /fill x1 x2 x3 y1 y2 y3 BlockType

If, though, you would like to use the hidden files (%appdata%) and create backup files of the arena you could do that too, but that would probably not be possible in your situation.

Hope this helped! If you need further information make sure to comment and I will answer it! :D

1
  • Unfortunately this doesn't solve the original problem that these commands can only select a relatively tiny area. Using /fill rather than /clone I'd probably need thousands of commands to get all of the buildings and details, plus I'd also need some way to set up all of the commands.
    – SirBenet
    Mar 30, 2015 at 12:39
1

Using scoreboards, you can track the placement of blocks and do a local clone of that area, but I don't know the command itself; the only reason I know it exists is because a Youtuber used it to make Zelda bombs here, but really with a space that big the only good way to replace that many blocks is to do it with individual command blocks, if the games lasts a while I would build 3 instances, 1 that you use for the cloning, and two for playing on, like ratchet freak said, that way you can continue playing another game while the command blocks work on repairing the first game you played, other than that you could always save a world file with the intact map and reload it after every game, although that might not be a viable option in your situation.

-1

/clone it somewhere first, and when player leaves area, /clone it back. Check for player is done by

/testfor @a[x,y,z,r=rad]

runned into comparator out of commandblock, to inverter and to /clone commandblock for cloning back. replace x,y,z are coords of area center, and rad is how big is area as a circle.

5
  • I only want the map to reset at the end of a game (I want damage and bases to persist during the game). Plus, this way, there'd even more cloning for the server to do, so it doesn't really solve the initial problem unfortunately.
    – SirBenet
    Mar 30, 2015 at 16:24
  • Oh sorry, at end, some scoreboarding to decect the end and clone, but too big?? /gamerule mobGriefing false to stop tnt, creepers and stuff.
    – ArsenArsen
    Mar 31, 2015 at 17:12
  • The arena is too big to clone, that's the issue I'm having.
    – SirBenet
    Mar 31, 2015 at 17:12
  • colorfusion i accidantly pressed return.
    – ArsenArsen
    Mar 31, 2015 at 17:13
  • I want to reset the area, not just stop it being damaged.
    – SirBenet
    Mar 31, 2015 at 17:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .