Minecraft Java Edition – How to Save the Scoreboard

minecraft-commandsminecraft-java-editionminecraft-java-edition-server

Due to my first post lacking basically everything I decided to rewrite my question.

Alright, so I'm making this spigot server for a local tournament I'm responsible for. The tournament takes place in a library, where kids from 9-14 must physically meet up to participate. It's also more than just Minecraft to be competed in. Last year, when we had the our first tournament, over 100 kids participated. To make it easy, smooth and fast to join in on my Minecraft competition I had 8 computers with 8 accounts already logged in and ready to play on.

The server will run a plugin called "Color Shuffle". The plugin adds 1 XP lvl for each round you survive, so therefore I used commands to hook up current XP level to the scoreboard.

The way I did this uses a set of command blocks for each level and each of the 8 players. (yes its way overcomplicated, but it worked) It worked like this; [CommandBlock]/testfor @a[l=22,lm=22,name=StormenGaming01] -> comparator -> [CommandBlock]/scoreboard players set StormenGaming01 Scoreboard 22

Since there are new players for each round, and over 100 players during the whole tournament, it takes time and is stressful to note down each players score, before I need to reset the scoreboard and start a new round.

My question is; Is there any way for me to save each round's scoreboard, perhaps even inserting it into a excel sheet?

Also, any improvements on my code are welcomed.

Best Answer

So, despite all my questions about this, (Why did you make a setup for each XP level, why so specific? Why 8 accounts all meeting at a physical location but being 100 people instead of a server? etc.) I'll try to answer as many things as I can.

Saving The Scoreboard

On the sidebar, you want to have the 8 people currently going displayed but no one else. To do this, just modify the current player's score:

/execute as @a at @s if block ~ ~-1 ~ red_concrete run scoreboard players add @s Point 1

This, of course, is assuming you're giving the point based off of red concrete so you could always have whatever method you're using to determine the right color also give players a tag and then execute the above command for people with the red tag and altar for each color. I'm not sure why you commented about XP, but if that's also going to be a measure of your points, you can run this twice in a chain with one instead saying "run xp @s add 1 level". You'd also only run these commands once the time ran out. (Either with an impulse command to start the chain or a timer scoreboard on everybody.)

Now, at the end of the match, use a scoreboard operator to move their scores over to a different objective:

/execute as @a run scoreboard players operation @s SavePoint = @s Point

Then reset their Point objective:

/scoreboard players reset @a Point

When you need the scores again at the end, you can either just run off of the SavePoint objective or transfer them back over using the operation command we used before (just with switched objectives).

This Other Stuff

Now, maybe I'm missing something, but I'm not sure how you're going to get 100 people to meet up in a library to play on 8 computers. Doesn't sound very quiet... If this was just a set up server, you could have people meeting online (and more than 8 at that!). If you're not sure how to set up a server, there's helpful info online either for buying from a server host or hosting from your own computer.

Also, from your comment about running a command for each level and player- you really don't have to do that. Besides the fact that redstone is clunky when dealing with commands, if you add the XP level when increasing the score (At least, that's what I think you're trying to do?) you don't need a bunch of command blocks for each player and level.

In the future, please provide more specifics about what you're trying to accomplish and what you've done so far.