mirror of
https://github.com/GameServerManagers/LinuxGSM.git
synced 2026-04-25 14:15:59 +03:00
[GH-ISSUE #333] [Server Request] Minecraft #278
Labels
No labels
Atomic
Epic
cannot reproduce
command: backup
command: console
command: debug
command: details
command: fast-dl
command: install
command: mods
command: monitor
command: post-details
command: restart
command: send
command: start
command: stop
command: update
command: update-lgsm
command: validate
command: wipe
distro: AlmaLinux
distro: Arch Linux
distro: CentOS
distro: Debian
distro: Fedora
distro: RedHat
distro: Rocky Linux
distro: Ubuntu
distro: openSUSE
engine: goldsrc
engine: source
game: 7 Days to Die
game: ARMA 3
game: Ark: Survival Evolved
game: Assetto Corsa
game: Avorion
game: BATTALION: Legacy
game: Barotrauma
game: Battalion 1944
game: Battlefield 1942
game: Black Mesa: Deathmatch
game: Blade Symphony
game: Call of Duty 2
game: Call of Duty 4
game: Call of Duty: United Offensive
game: Counter-Strike 1.6
game: Counter-Strike 2
game: Counter-Strike: Global Offensive
game: Counter-Strike: Source
game: Day of Infamy
game: Dayz
game: Death Match Classic
game: Don't Starve Together
game: ET: Legacy
game: Eco
game: Factorio
game: Factorio
game: Garry's Mod
game: Half-Life
game: Hurtword
game: Insurgecy
game: Insurgecy
game: Insurgency: Sandstorm
game: Just Cause 3
game: Killing Floor
game: Killing Floor 2
game: Left 4 Dead 2
game: Minecraft
game: Minecraft Bedrock
game: Mordhau
game: Multi Theft Auto
game: Mumble
game: Natural Selection 2
game: No More Room in Hell
game: Pavlov VR
game: Post Scriptum
game: Project Zomboid
game: Quake 3
game: QuakeWorld
game: Red Orchestra: Ostfront 41-45
game: Return to Castle Wolfenstein
game: Rising World
game: Rust
game: San Andreas Multiplayer
game: Satisfactory
game: Soldat
game: Soldier of Fortune 2
game: Squad
game: Squad 44
game: Starbound
game: Stationeers
game: Sven Co-op
game: Team Fortress 2
game: Teamspeak 3
game: Teeworlds
game: Terraria
game: The Front
game: Unreal Tournament 2004
game: Unreal Tournament 3
game: Unreal Tournament 99
game: Unturned
game: Valheim
game: Wurm Unlimited
game: Zombie Master Reborn
game: label missing
good first issue
help wanted
info: alerts
info: dependency
info: docker
info: docs
info: email
info: query
info: steamcmd
info: systemd
info: tmux
info: website
info: website
needs more info
outcome: duplicate
outcome: issue resolved
outcome: issue resolved
outcome: issue unresolved
outcome: pr accepted
outcome: pr rejected
outcome: unconfirmed
outcome: wontfix
outcome: wrong forum
potential-duplicate
priority
pull-request
type: bug
type: feature
type: feature
type: feature request
type: game server request
type: refactor
waiting response
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/LinuxGSM#278
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Zer0t3ch on GitHub (Apr 10, 2015).
Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/333
Originally assigned to: @dgibbs64 on GitHub.
Are there plans to add a minecraft server? If not already in motion, I might try to implement it myself and just submit a pull request.
@Scarsz commented on GitHub (Apr 10, 2015):
It's hard to considering the pain it is to get the latest spigot version.
@Zer0t3ch commented on GitHub (Apr 10, 2015):
Why Spigot, specifically? We could do just a vanilla server, fetching from minecraft.net shouldn't be hard, and configuration is a breeze.
@Zer0t3ch commented on GitHub (Apr 10, 2015):
Though Spigot would also be cool to have.
@Scarsz commented on GitHub (Apr 10, 2015):
Truth is, nobody nor their mother uses the default MC server for running a public server, no plugins and minimal management options.
I'll see if I can get something for Minecraft for LGSM sometime tonight or tomorrow, either or.
@Zer0t3ch commented on GitHub (Apr 10, 2015):
Oh, I totally understand this. Frankly, I was using this tool to quick-deploy stuff for me and my friends to play on. Thought vanilla minecraft might be a good fit, and considering the simplicity, there's really no good reason not you add it. Though, adding a spigot server would be cool. My understanding of how the newer versions work (which is minimal) makes it seem as if adding it would actually be pretty easy.
@Scarsz commented on GitHub (Apr 10, 2015):
The script will have an option to install the vanilla Minecraft server from Mojang or to compile & build the latest Spigot release, might add an option for Cauldron, undetermined
@dgibbs64 commented on GitHub (Apr 10, 2015):
You are welcome to create a minecraft server script if you like. I don't know enough about minecraft to implement one myself. :)
@Roversword commented on GitHub (Apr 12, 2015):
personally I do not think that is easily possible unless you aim for the absolute vanilla server with no mods.
The very fact it needs a tremendous amount of tweaking once you have more than two or three mods (usually the known modpacks have about 100) is impossible to handle with a script...and the updates...even worse.
So, having a "simple" script like for insurgency or cs:go for minecraft (other than maybe vanilla) is very improbable. But that is just IMHO.
@Zer0t3ch commented on GitHub (Apr 14, 2015):
@Roversword Well with spigot, they have switched to a system as simple as executing a
.jarfile to download and compile the Spigot source. Should be easy for an installer/updater script. I think there's a system on mojang's server to detect what version is the newest and to download any version you want, so should be just as easy-ish as any other server, it's just not as easy as things like SteamCMD make it.@Zer0t3ch commented on GitHub (Apr 15, 2015):
@Scarsz Are you actively working on adding the script right now? If not, I'll probably take a shot at it, though I have a very very _very_ limited understanding of the existing codebase.
@ghost commented on GitHub (Jun 21, 2015):
I'd like to see a minecraft server too :p
@GeenoMC commented on GitHub (Oct 27, 2015):
@Scarsz wow
@UltimateByte commented on GitHub (Jan 6, 2016):
I already made a standalone server once.
Wasn't that hard !
Somebody just talked to me about MC.
Thought it'd be a good idea to add support for it ! I'm adding this to my checklist, i'll figure out how to make this possible !
@Zer0t3ch commented on GitHub (Jan 6, 2016):
@UltimateByte Yeah, initial setup is super easy. I'm just not sure how/if updates and whatnot should be handled. In the case of vanilla, the worst thing that comes out of a server update is that the clients can't play until they update as well.
In the case of modded, you have to deal with all kinds of potential things breaking.
@UltimateByte commented on GitHub (Jan 7, 2016):
Well, that can be a huge deal... Do some mods actually replace game files ?
Can you update this game just by replacing older files ? Or do you have to cleanup the whole thing every time ? As long as you keep the server save, i guess it's OK... You'd have to deal with those problems using LGSM or not anyways...
@JimTR commented on GitHub (Jan 7, 2016):
why not leave it to https://github.com/sandain/MinecraftServerControlScript
@UltimateByte commented on GitHub (Jan 7, 2016):
I didn't know about that script.
The good thing about LGSM is that it's a centralized and unified script.
I'm gonna try contact him to see if we could port his script.
Otherwise i'll go from scratch.
@UltimateByte commented on GitHub (Jan 7, 2016):
OK, the discussion evolved quite well, i think i'll be able to make a mix between his script and a whole new one integrated to LGSM.
Note to myself : Watchout the update process
Manage autobackup to autoremove some, otherwise a small space server can get full quite fast (experienced this issue when i had an MC server).
@sandain commented on GitHub (Jan 9, 2016):
I didn't write the code in mscs that handles backups, but we have been using rdiff-backup for quite a while to help avoid filling a small server space. Unless LGSM has some built-in mechanism for backups already, I would suggest just using the mscs code.
@UltimateByte commented on GitHub (Jan 9, 2016):
LGSM has some functions to manage older scripts already, i can get some inspiration from that and use google to find more ideas.
I won't hide such functions are quite new to me, but it's doable. I feel ready now i gave birth to my new baby, the zip updater. :o)) This is relevant to mention that, because i want to make a function to keep a specified amount of backups in it, so it will have to remove older ones... And once i know how to do that, i'll be able to remove older backups from mcserver. ^^
I prefer not using external programs though, unless they are in bash open source already, so we can use some of their code and integrate it to LGSM. ^^
@Zer0t3ch commented on GitHub (Jan 9, 2016):
@UltimateByte The issue with mods and updating isn't so much that the mods modify any server files, (although basically anything that can load mods is run as a special JARs, not the vanilla one) the problem is that if you have MC 1.7 with a bunch of mods and you update to 1.8, none of those mods will work.
@UltimateByte commented on GitHub (Jan 10, 2016):
@Zer0t3ch Thanks for the info. Well, it's the same as Rust, Hurtworld, and some updates of source games that breaks addons... Maybe a warning about that should be printed when updating, i don't know what else we could do. I made a script to update zip addons though, it could help. ^^
@Zer0t3ch commented on GitHub (Jan 21, 2016):
@UltimateByte What I would suggest is something like this:
Upon installation, it would prompt for server type and manage accordingly:
@jaredballou commented on GitHub (Jan 21, 2016):
This is a ball of snakes. From my experience running servers back in the 1.2 to 1.7.2 days, applying mods meant editing JAR files, and every update had the potential to break mods. So anything that supports mods then has to have a way to determine if the mods will break the server, so we have to figure that out. Whether it queries an API that it downloads mods from to see if it supports the new version, or just creating a new install and adding the mods and then doing some tests to validate that it works before updating the main server, it's going to need to be pretty complex.
I'd go so far as to say that we skip that altogether, just focus on install and control of the server, and then handle the updating and mods separately (or just support updating vanilla). It might not even work to merge to lgsm, since the games are so radically different and they need very different support structures to install and run. I'm not sure that bringing something this large into LGSM is the right move, my guess would be that you guys work on mscs separately and lift LGSM stuff that's useful to that. With all the flux in the roadmap of LGSM, it'd be a shame to integrate it into the tool and then have a major rewrite waste that effort.
@Zer0t3ch commented on GitHub (Jan 22, 2016):
You don't have to edit the vanilla server JAR, (at least not by hand) you just download the installer from here which IIRC will download the vanilla server as well as its own files and then patch it automatically. While you're right, the API can change and break mods on minor version changes, (1.7.2 to 1.7.10) I haven't seen that happen in a long time. Every minor version update I've seen was adding features or bugfixes. Updates between major versions (1.7.10 to 1.8) will basically break all mods.
I'm not saying we need to implement updating now or anything, I was just proposing things for the future. In its current state, minor version updates with Forge are absolutely doable without issue, but I agree that it should be avoided for the most part, at least until we've got the installing and controlling working. Also, the whole possible move to Python is why I haven't written anything for this yet.
@sandain commented on GitHub (Jan 22, 2016):
MSCS uses a file stored in each world's directory called 'mscs.properties' to allow each world controlled by the script to be custom configured (see the README file for the options available). This is how MSCS is able to support running one world using Spigot, another with BungeeCord, another with Forge, a version 1.6.4 vanilla server, and a 1.8.4 vanilla server, all at the same time. All the script needs to know is what .jar file to use and the URL to use when the update command is called. Since the command to start a world server can also be placed in the .properties file, it should be technically possible to start any type of program (including a C based binary or a shell script), not just .jar based servers. Of course, if the 'mscs.properties' file is missing, the script has default values that it uses to download and run the latest version of the vanilla server.
What MSCS does not attempt to do is deal with addons. Since the setup process for addons can be so varied, I figured that it was simply not worth trying to add that capability to MSCS (and I don't recommend it for whatever comes out of this discussion either).
@Zer0t3ch commented on GitHub (Jan 22, 2016):
@sandain I agree completely on your comment about addons/mods.
Put simply, it would be completely impractical to manage/update mods without some kind of central database existing first. (Something similar that comes to mind is CKAN for KSP) Without a database like that, adding any support for mods would simply be masochistic.
All that said, I think it's best to avoid implementing anything for MC in this project until the wave of big potential changes (i.e. the move to Python) settles down.
@Scarsz commented on GitHub (Jul 23, 2016):
Now that we're on the topic of Minecraft servers again
More or less, all the script needs to do is
eula.txtfile with contentseula=true/falsefrom user input or not deal witheula.txtfile at all, see http://www.strawpoll.me/10819979For starting it, it would just be running the jar with normal Java, specify a command line variable in the script, default to something along the lines of
java -Xmx8G -jar spigot.jar nogui8G- Amount of memory in gigabytes for Java to be allowed to usespigot.jar- Server jar to run, will allow people to use custom jars like KCauldron if those aren't added to the scriptnogui- Force server to run headlessAll other files/folders needed by the server will automatically generate
@dgibbs64 commented on GitHub (Jul 23, 2016):
Im happy to create a minecraft server that just installs vanilla for now as a base to get started. Then we can look at adding any custom servers later. After speaking with @Scarsz earlier I can see its definitely possible to use Spigot etc and there may be methods that can be used for supporting custom servers without having to manage a big database.
@Scarsz commented on GitHub (Jul 24, 2016):
Went ahead and made a strawpoll so you lot could vote on which system of EULA acceptance would be better for the script http://www.strawpoll.me/10819979
@UltimateByte commented on GitHub (Jul 24, 2016):
https://www.youtube.com/watch?v=He82NBjJqf8
Calm down guyz, it's sunday :)
@Scarsz commented on GitHub (Jul 24, 2016):
Me personally, I don't care how it's handled; would be @dgibbs64's decision really.
If we're still recommending classics, how about https://www.youtube.com/watch?v=XsZKrctSDaw back from the ATV Offroad Fury days on the PS2
@dgibbs64 commented on GitHub (Jul 25, 2016):
Yes it's my decision ultimately so don't worry about it :-)
@dgibbs64 commented on GitHub (Aug 8, 2016):
IM=m currently playing around with vanilla. Once this is up and running I will look at Spigot etc. Should make is easier for me once I have vanilla up and running to implement modded servers.
@dgibbs64 commented on GitHub (Aug 8, 2016):
made some progress with mcserver this evening. Im looking at creating the updater for mc vanilla. I can get the version from a json file https://launchermeta.mojang.com/mc/game/version_manifest.json
anyone here know of the best way to get the latest version number from it using curl?
edit looks like http://s3.amazonaws.com/Minecraft.Download/versions/versions.json might be a better choice
edit 2: "__comment": "This URL is being phased out! Please update your scripts to check https://launchermeta.mojang.com/mc/game/version_manifest.json instead. Thanks <3
edit 3: I got this so far
curl -s "https://launchermeta.mojang.com/mc/game/version_manifest.json" | sed -e 's/^.*"release":"\([^"]*\)".*$/\1/'@UltimateByte commented on GitHub (Aug 8, 2016):
Found this to be working as well
curl -s https://launchermeta.mojang.com/mc/game/version_manifest.json | awk -F 'versions' '{print $1}' | awk -F '"' '{print $10}'@sandain commented on GitHub (Aug 10, 2016):
For MSCS, I went ahead and imported a real JSON package to do the work after the file format change:
If you need to compare versions, it is also helpful to know its release date:
Compare dates:
Compare versions:
Feel free to take any MSCS code you want.
@dgibbs64 commented on GitHub (Aug 10, 2016):
@sandain thanks I will take a look. It shoudl help me with my own implementation :D
@dgibbs64 commented on GitHub (Aug 19, 2016):
@sandain why is it important to compare the dates as well as the version?
@sandain commented on GitHub (Aug 19, 2016):
You could just as easily write a comparison routine that works with the version id, or if the list is sorted maybe you can rely on that. Since release and snapshot version ids use different patterns and I wasn't sure the list was sorted, I went with releaseTime to do version comparisons. Using releaseTime makes it easy to do comparisons between release and snapshot version ids if needed without relying a separate lookup table or a sorted list.
@marvinlehmann commented on GitHub (Aug 24, 2016):
#1024 added vanilla Mincraft support.
@UltimateByte commented on GitHub (Aug 24, 2016):
Fluently added vanilla support ! GG !
@dgibbs64 commented on GitHub (Aug 24, 2016):
Its working bitches #1024. Custom servers will come in the future. Until then manually replace your jars you crazy kids!
@lock[bot] commented on GitHub (Jul 19, 2018):
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.