The 1.17 Caves and Cliffs Part 1 version of Minecraft came out for vanilla very recently but until now the Paper Minecraft server was not available for it. This means that my Raspberry Pi Minecraft script was unable to run this version until now.
Today I checked the Paper Minecraft API server available versions and sure enough 1.17 was finally in the version list so I updated the Raspberry Pi Minecraft server scripts and they are now available! Raspberry Pi not required, the script will work on most versions of Linux that have apt available.
Important Notes
- The minimum OpenJDK requirement has gone all the way up to OpenJDK 16 for this release. This presents a challenge because the Raspberry Pi OS repositories only contain up to OpenJDK 11! Fortunately the script will take care of this for you using a trick with snapd to install a newer OpenJDK. This does require a reboot so prepare beforehand!
- Back up your server first. Remember if you use 1.17 and it ends up being too laggy or unstable you can’t change back to the old version because the server files now contain data the old versions don’t understand and will crash on. You can go back by restoring a backup from before the first time you ran 1.17!
Installation
SSH into your Raspberry Pi and paste the following commands:
curl https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/master/SetupMinecraft.sh | bash
See the full installation post for more information here: Raspberry Pi Minecraft Server Setup Script w/ Startup Service
Full GitHub project repository available at: Official GitHub Raspberry Pi Minecraft Repository
Benchmarking / Testing Storage
If you want to verify your drive’s performance you may want to run my storage benchmark with:
sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
If you search for the model of your drive on Pi Benchmarks you can compare your score with others and make sure the drive is performing correctly!
Hi!
Thanks for the script! It is very useful! My kids will be very happy to have a Minecraft Server at home!!!
One question. I have just run your script for the first time and now, if I look at screen -r minecraft, the computer is only showing “Download vanilla jar…” and it takes forever… I hope it will finish downloading in some days… The Raspberry is downloading at a very low speed (5kb/s)…
Do you know how to speed this up?
Thanks!
Hey rjp,
Thanks for the kind words! I would honestly just start it again. The downloading and patching the jar is a normal part of the process but it shouldn’t be going at 5kb/s. If you restart it and it still goes at that speed after getting another connection it would maybe point to it being the whole Pi (is it on WiFi?).
It shouldn’t take more than I would say 10-20 seconds at the most so definitely give it a restart!
Now it works!!!! My Raspi is connected through LAN, but I just restarted and the server is up and running! Thanks very much for the help and the work done!
Excellent, I’m relieved it was that simple! That happens from time to time on Linux when you’re updating packages as well with something like sudo apt upgrade. Sometimes you just get a really really slow web link and if you restart it you will get a different server the next time at full speed.
Enjoy and have fun!
Hey,
Is it possible to enable Caves and Cliffs in an existing world, or will I have to start a new world? I see the behaviour pack is present in my current world, but i don’t see any of the updated caves etc.
How do I know if it is enabled on my server (installed on Ubuntu Server, using your script)?
Sorry for what is probably a simple question.
Keep up the good work!
Hey ZachFlem,
Great questions! So basically the way it works is that yes, your world will now generate 1.17 chunks but all of the existing chunks will continue to remain as they have always been. This is to protect your existing base/structures as they would be lost/destroyed so the existing chunks are left as-is in all upgrades but new chunks will use the new version and have copper, etc.
In other words, you will need to go to places nobody has ever gone before (new chunks that have never been written to the disk or seen) and then you will see the new features!
Sometimes people will “regenerate” chunks using plugins but keep in mind if you regenerate chunks that have buildings in it those would get destroyed. The terrain might also be completely different in the new version so definitely be careful around important stuff if you try this.
Usually on my server this will mean it’s time to go off in a direction to start a new base for a few hundred/thousand blocks (depending on how well-travelled your server is) and you will be completely in 1.17 chunks there.
The other thing to check is did you update your scripts by running:
curl https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/master/SetupMinecraft.sh | bash
If so, then you definitely should be in the new version. You also choose which version you are playing in the launcher when you launch the client so make sure it’s launching 1.17.1 (usually under the category “Latest Version” or something like that) and not 1.16.5. If you are then you are absolutely upgraded (otherwise you’d get a wrong version error) and just need to encounter some new chunks. Hopefully that helps!
wow, so fast on the replies there buddy! So if we have been finding copper, the caves and cliffs update should be active already? Does that mean we should we be seeing the new lush cave biomes?
I should have mentioned that this is a BEDROCK server, the link
curl https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/master/SetupMinecraft.sh | bash
looks like it’s the JAVA version?Yeah that definitely changes things for sure here, this would be 1.17 for Java instructions I’ve been giving so far haha. Bedrock uses totally different versions although it’s usually at more or less the same place technically.
For Bedrock I’m not sure you can enable this yet. It’s the “Experimental Gameplay” toggle options mentioned here.
There’s no option for this in the dedicated server configuration files and is embedded deep inside the level files themselves apparently. Supposedly the only way people have got this working is by creating a single player world in the client and then “exporting” it to a dedicated server with that option enabled. Apparently just copying the world folder doesn’t work and it’s embedded in there somehow even in core files like level.dat and others. Someone outlines how to do this with 7-Zip here.
You’ll probably just want to wait though. Bedrock doesn’t have updates that are really within your control like Java. You pretty much always need to be running the latest version of both the server or the client or you will have version errors and not be able to play at all. They don’t really give you control of the versions at all in Bedrock. If you wanted to stay on old ones you would not be able to.
It sounds like these are coming really soon and are available in single player with the experimental gameplay + caves and cliffs options apparently if you want to try the exporting world process!
Sorry for the double post there! Thanks for clarifying that, i had found some articles about the export/enable/import process, I just wanted to make sure I hadn’t missed anything. I might do some backup and see how I go. At the end of the day, we’re still only a week into this world and starting fresh wouldn’t be the worst thing to happen.
Thanks again, and keep up the good work.
No problem at all, that definitely gives you some options at least! I’m glad you posted that it was Bedrock. Microsoft is really bad at giving things distinguishable identities/names, just like the way the named the new Xbox Series X so similar to the Xbox One X etc. and undoubtedly that will clarify things for a lot of people.
Definitely stop back on by if you run into anything else! If it’s bedrock related then jamesachambers.com/bedrock is a handy shortlink I have that will take you to the main Bedrock article that people usually post technical questions/problems/etc.
Take care!
hey James, I should have mentioned that I’m running a Bedrock server. The link you posted in you reply, if I’m reading it correctly, is for a java server?
Hey ZachFlem,
Yeah that was super fast, I had just published a brand new article and saw your comment and jumped right on it!
Absolutely. If you guys are finding copper you have it. The new cave stuff is still not super common from what I can tell in 1.17 but I have found some of it. Listen for weird sounds and you’ll find caves with glowing squids as well as swimming Iguana things called Axolotl (as well as see some growthy stuff on the wall). I caught one of these for my wife (I won’t say how to avoid any further spoilery stuff if you don’t want to know) and she loves it.
I do not believe the super “lush caves” like this are in yet. It sounds like those are only enabled in the 1.18 snapshots and on Bedrock if you enable a “Caves and Cliffs” special option to make them generate. If those kind of things are not what you are seeing yet then yeah I have not seen those at all in 1.17 yet and don’t believe they are in. I have some seen of the new cave stuff I mentioned before though. Hopefully that helps as well and take care!
1.17.1 has been released. All you need to do is use a program like Filezilla and open the start.sh file and eddit the 2 lines from the Wget paperclip.jar to papermc.io
Hey Mark,
That will work but the script was updated with support for 1.17.1 all the way back on July 8th and released on GitHub. To save some time/effort you can always update by running update.sh in your server folder (if it doesn’t exist it means you have an old version, it will after you update) and you can update any time with:
curl https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/master/SetupMinecraft.sh | bash
and you’ll also get a whole bunch of other fixes as well since the script has had about a dozen updates in the past couple of weeks (including fixing broken backup rotation so it only keeps 10 backups) so that will get the latest version and all of the latest fixes too!
Just leave the folder as default (~) when it asks and it will detect there’s a server there already and update it!
Oh, didn’t knew, thanks for the info! updated the folder now I have the update.sh. at first, I didn’t. Anyway thanks for the quick response and for all ur time!
Hey Mark,
I’m glad you’re up and running! Don’t sweat not knowing, it’s actually good you asked because a lot of people installed it for the first time using this article and this gives me a chance to explain the updates a little bit if anyone else is looking in this thread for this info.
Enjoy and have fun!
I run into a similar problem because your script installed automaticlly the newer 17 version of java, but the minecraft server isnt able to run with this. To fix this i used your bigger minecraft server tutorial and run “sudo update-alternatives –config java” and selected the 16 version of java and violá now it works flawlessly! Perhaps you should remove the automatic version update function in your script for minecraft.
I just discoverd i made a typo: its “sudo update-alternatives –config java” not “sudo update-alternatives -config java” (with one – instead of two –)
Good stuff! I updated SetupMinecraft.sh to install OpenJDK whether the version of Java is less than or greater than 16. It should fix this automatically for you if you have a newer version.
Thanks a ton for the follow up, the command is really useful to fix/adjust versions whenever you want!
Works!. Sorry spamming a little.
Hey Mark,
That’s good news! I’m still going to download 21.04 and see what went wrong with your OpenJDK installation since I haven’t heard of anyone having to do it manually before (at least not forced to do so manually).
Thanks for the comments, don’t worry about the spam, I combined some of your early messages into one (I hope that’s okay) to make it more clear! I appreciate the heads up so I can get the installer issue resolved for 21.04!
I installed ubuntu 21.04 server on my raspberry, and also installed the 1.17 the way you did. But it doesnt seem to start the server itself. When using command ./start.sh it updates to newest version, says its starting a minecraft server but when i write screen -r minecraft. there was no such screen found.
Small correction, Using this guide I got the server up and running. Seems to be a problem with the Java 16 installer.
Smaller update. Server doesnt seem to be building a world. all world percentage’s start and end with 0%
Hey Mark,
This is the first time I’ve ever even heard of 21.04. I’m surprised it doesn’t work out of the box, it should only be newer and easier than any other OS to install. It sounds like it’s not installing but it uses snapd which is an Ubuntu original (and doesn’t even come with Raspberry Pi OS but does come with Ubuntu). I usually skip these kinds of builds because non-LTS versions go end of life in like 6-12 months (it says this build already expires January of 2022) but I’ll download and give this one a try just to make sure nothing extra strange is happening.
I’ll have to download that one to check it out as you’re probably the first person to ever try it on this new non-LTS temp release/version! It’s Java though, it should run exactly the same on every platform. Getting stuck at 0% sounds like maybe an incredibly bad SD card. (it will generate eventually if this is the case but take forever). What storage device are you using?
Well, after all the 21.04 is working fine. About the 0% world generating stuff it was just an incredibly fast load time. I’m using an NVME 980 pro 250GB with an enclosure through USB.
Al in al thanks for the tutorial and thanks for the reply! Also overclocked the pi to 2,1ghz for the extra speed (it has a tower fan on it but so far is has bin working great!)
Hey Mark,
Good stuff, thanks for confirming it is working! I know that people were having trouble with Java versions newer than 16 (Paper doesn’t seem to support OpenJDK 17 or higher yet) so I adjusted the script to account for this.
That is an amazing setup! I’m running a 980 Pro 2TB in my main workstation and it’s a fantastic drive. Very nice overclock as well!
I have also updated to 21.04 and had the same issues as Mark. Thank you Mark for the fix, it works perfectly after manually updating the openjdk. Thank you as always James for the the script and the post on how to update openJDK 😀
Hey The Bit,
Dang, I thought this was fixed! Did you happen to run an old copy of SetupMinecraft.sh? The new version should not continue if you have an OpenJDK greater than 16, in which case it will install the snap version (what the other article does). Did you update using an old local copy of SetupMinecraft.sh or did you use the new method which is:
curl https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/master/SetupMinecraft.sh | bash
If you used this method let me know so I can get out the Ubuntu Pi and do some more troubleshooting for sure but this sounds like potentially the older version that doesn’t check for if OpenJDK is higher than 16. This is how it should look here in the latest version:
CurrentJava=$(java -version 2>&1 | head -1 | cut -d '"' -f 2 | cut -d '.' -f 1)
if [[ $CurrentJava -lt 16 || $CurrentJava -gt 16 ]]; then
Print_Style "OpenJDK installation failed. Java version is still reporting as less or greater than OpenJDK 16!" "$RED"
exit 1
else
Print_Style "OpenJDK installation completed." "$GREEN"
fi
So basically if the script wasn’t able to install OpenJDK 16 (no less, and no higher) it should fail completely until you take manual action. Is that what happened when you ran the script or did it try to load and fail (that’s what should definitely already be fixed). Let me know and I’ll take care of this for sure!
Hey James,
Nope, I first ran it from your curl command, It said the install was successful but crashed every time I tried to start it. From there I downloaded the script and tried that with the same result. Manually installed java 16 and curled the script and everything installed perfectly.
Interesting, I agree that your script should’ve picked up the issue.
In future I will try to better document my installs in case I have a problem to try and help 🙂
Hey The Bit,
Don’t sweat it, thanks for testing it so comprehensively for me. I think someone else said that the check didn’t catch theirs either. Thanks for confirming this and I will take another look here, don’t sweat not documenting or anything like that, you’ve still helped a ton, cheers and thanks again!
Legend thank you!
Thanks a ton! It was definitely thanks to some of you guys in the comments here telling me about OpenJDK 16 and other things coming up that I was so prepared for this one. Enjoy and have fun!