Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some way to add multiple spawn islands/trees for multiplayer servers #92

Open
mbwarn opened this issue Jan 3, 2025 · 15 comments
Open
Labels
Enhancement New feature or request

Comments

@mbwarn
Copy link

mbwarn commented Jan 3, 2025

Context

In Sky Factory 4, there was a command line you could use (due to use of the topography mod for world gen) that would allow a command block at spawn on a multiplayer server to create a new starting area (tree, island…) per player as they spawned in. SkyFactory 5 doesn’t use the topography mod and doesn’t seem to have similar multiplayer instructions.

Config/Script Details (if desired)

Ideally, a command that could be triggered by pressure plate or proximity of a player at spawn which would create a new starting tree for them and teleport them on top of it would be super useful! Thank you for reading this request!

@mbwarn mbwarn added the Enhancement New feature or request label Jan 3, 2025
@frogalo
Copy link

frogalo commented Jan 3, 2025

There is no built-in mod for creating islands or teams, but there are commands available to generate a tree and set a player's spawn point.

To generate a tree:

Go to the location where you want the tree to appear and run the command:
/place template minecraft:skyblock_spawn_structure/starting_tree ~ 64 ~ none none

To set the player's spawn point:

Stand on top of the tree and run:
/spawnpoint <player> ~ ~ ~

To teleport the player:

Run the command:
/tp <player> ~ ~ ~

It should be possible to automate this process now using command blocks or by inserting simple code, rather than waiting for future releases.

@mbwarn
Copy link
Author

mbwarn commented Jan 3, 2025

Thanks @frogalo I appreciate the guidance here! The only part I’m a little stuck on would be automating this to create trees in random locations with a command block. Or even scheduled locations? Maybe there’s a way for me to crawl a list of coordinates? Hmm.

This gives me something to think about, thank you very much!

@PyjamallamaAU
Copy link

PyjamallamaAU commented Jan 4, 2025

You be able to place down a command block with a pressure plate on top, then enter each of the above commands as separate lines in the GUI for it. That way if a player stands on the pressure plate they will execute the command block.

Maybe replace the <player> with @p (pretty sure that is player) though.

@LevyWilson
Copy link

LevyWilson commented Jan 4, 2025

Would be better if there was like a datapack or a script included with the modpack that did this.

@frogalo
Copy link

frogalo commented Jan 4, 2025

I think it's only a matter of time before it's implemented. Without it, creating a public server is almost impossible.

@mbwarn
Copy link
Author

mbwarn commented Jan 4, 2025

Right @PyjamallamaAU the only issue I’m stuck with is how to generate random coordinates, or choose them (and check them off from) a list.

I guess for my small server I could just set up a command block for each player and they could “claim” a location using them.

@LevyWilson
Copy link

Apparently Garden of Glass has the functionality of making the grid and assigning them to each player already built in. It's just a matter of figuring out how to make the commands work with Sky Factory 5 to make the tree island. I found a server that figured it out already, but they don't want to share their secrets.

@mbwarn
Copy link
Author

mbwarn commented Jan 4, 2025

Such a weird attitude for people playing free, open source content, but what are ya gonna do. That’s a shame they’re being childish about it.

@LevyWilson
Copy link

I've discovered a method of using the garden of glass mod to not only create a skyblock, but to create the specific skyblock tree structure that SF5 uses.

https://www.youtube.com/watch?v=KbtITyOolLg

What you have to do is go into the global_packs\required_data\sf5_worldgen\data\minecraft\dimension folder and edit the overworld.json file. On line 4 the type needs to be botania:skyblock. This makes it so the gog commands will function and also will, by default, generate the GOG island. What Botania does is it generates a skyblock structure when the world type is botania:skyblock. What we do now is replace that structure. In the sf5_worldgen\data folder, make a folder called botania and in that folder, make a folder called structures. Paste the starting_tree.nbt file from sf5_worldgen\data\minecraft\structures\skyblock_spawn_structure in the newly made botania\structures folder and rename it to gog_island.nbt.

@mryel00
Copy link

mryel00 commented Jan 5, 2025

Here is one of those childish server owners, with some reasoning behind our decision and some extra information, that you should consider with this method:
It took us quite some time to figure this out and we wanted at least a bit of a "headstart" as a small community. We already talked about publishing this, but not before the release of the next update or before at least one week has passed. Besides the "headstart", here are a few things why we didn't want to publish it yet and what everyone should consider, when doing this:

  1. Garden of Glass has no restriction on this command:
    1.1 Using /gog island <player_name> you can just input every name. This will teleport that player to his island. So basically people can troll others with it.
    1.2 Using /gog regen-island <player_name> is the same problem just a bit worse
    1.3 Using /gog visit <player_name> will let people visit every single island. As there is no chunk protection by default in this pack, people can just go to your island whenever they want, when you are online. If you got the UUID you might be able to visit offline people too
  2. If there will be an update with an integrated island generation, you have to work around it, as it might ruin the gog islands. The worst outcome would be, if an update will mess up the edited files.
  3. I would also have written the devs first too, before posting this publicly, that they don't have to "support" such stupid workaround, that gets posted on their GitHub. Doing opensource software myself, I know what a mess it can be with people posting workarounds and other persons trying them and messing them up. Then an issue might get into a troubleshooting post really fast instead of tracking a FR, like it's supposed to be. They most likely see every single one of these comments and most likely read them too, and getting an email for every single one of them. If people start troubleshooting something "pack unrelated" it can get pretty annoying.
  4. I just don't have time to put out some good tutorial. This tutorial above is good enough, but only half baked. Not mentioning even one of the drawbacks. I only played like 2-3 hours myself yet and put more time into just getting the server up for our community. So someone writing me asking for this, without me knowing what exactly his skill level is or if he even can apply it, is not really an option for me atm.

Such a weird attitude for people playing free, open source content, but what are ya gonna do. That’s a shame they’re being childish about it.

The pack is open source and free, just like our server is open and free, and we are not earning anything from it. Tbh I already thought about sending a small donation to the mod author, as he is doing really good work and I really like this pack, besides the absence of the FTB mods 😅. But in the end this topic got mentioned quite a lot on Discord and it looked like they didn't want to add island generation now. So I see no reason why it's called "childish" that we want to wait a bit before releasing a weird workaround that took us quite some time to figure out that hopefully get replaced with some better way later.

Writing this message to give some background and warnings for people implementing this took way too much time. "Supporting" people in troubleshooting might cost even more time. So forgive me, that I said, I will not reveal it. But you all now know the way to do it, the reasons why we didn't want to publish it and what you should consider when doing it.
I'm not the type of person "releasing" half baked things, just that others can setup servers like 1 day after release, without thinking about consequences and maybe creating more trouble in the end for themself, as it even helped them.
I didn't even need to write this message, or mention that I'm one of these childish people, but I bet there are more people just implementing this workaround and then having trouble with people abusing it, than people reading my warnings.

So always think twice and test stuff thoroughly before implementing such things.

@mbwarn
Copy link
Author

mbwarn commented Jan 5, 2025

Here is one of those childish server owners, with some reasoning behind our decision and some extra information, that you should consider with this method: It took us quite some time to figure this out and we wanted at least a bit of a "headstart" as a small community. We already talked about publishing this, but not before the release of the next update or before at least one week has passed. Besides the "headstart", here are a few things why we didn't want to publish it yet and what everyone should consider, when doing this:

  1. Garden of Glass has no restriction on this command:
    1.1 Using /gog island <player_name> you can just input every name. This will teleport that player to his island. So basically people can troll others with it.
    1.2 Using /gog regen-island <player_name> is the same problem just a bit worse
    1.3 Using /gog visit <player_name> will let people visit every single island. As there is no chunk protection by default in this pack, people can just go to your island whenever they want, when you are online. If you got the UUID you might be able to visit offline people too
  2. If there will be an update with an integrated island generation, you have to work around it, as it might ruin the gog islands. The worst outcome would be, if an update will mess up the edited files.
  3. I would also have written the devs first too, before posting this publicly, that they don't have to "support" such stupid workaround, that gets posted on their GitHub. Doing opensource software myself, I know what a mess it can be with people posting workarounds and other persons trying them and messing them up. Then an issue might get into a troubleshooting post really fast instead of tracking a FR, like it's supposed to be. They most likely see every single one of these comments and most likely read them too, and getting an email for every single one of them. If people start troubleshooting something "pack unrelated" it can get pretty annoying.
  4. I just don't have time to put out some good tutorial. This tutorial above is good enough, but only half baked. Not mentioning even one of the drawbacks. I only played like 2-3 hours myself yet and put more time into just getting the server up for our community. So someone writing me asking for this, without me knowing what exactly his skill level is or if he even can apply it, is not really an option for me atm.

Such a weird attitude for people playing free, open source content, but what are ya gonna do. That’s a shame they’re being childish about it.

The pack is open source and free, just like our server is open and free, and we are not earning anything from it. Tbh I already thought about sending a small donation to the mod author, as he is doing really good work and I really like this pack, besides the absence of the FTB mods 😅. But in the end this topic got mentioned quite a lot on Discord and it looked like they didn't want to add island generation now. So I see no reason why it's called "childish" that we want to wait a bit before releasing a weird workaround that took us quite some time to figure out that hopefully get replaced with some better way later.

Writing this message to give some background and warnings for people implementing this took way too much time. "Supporting" people in troubleshooting might cost even more time. So forgive me, that I said, I will not reveal it. But you all now know the way to do it, the reasons why we didn't want to publish it and what you should consider when doing it. I'm not the type of person "releasing" half baked things, just that others can setup servers like 1 day after release, without thinking about consequences and maybe creating more trouble in the end for themself, as it even helped them. I didn't even need to write this message, or mention that I'm one of these childish people, but I bet there are more people just implementing this workaround and then having trouble with people abusing it, than people reading my warnings.

So always think twice and test stuff thoroughly before implementing such things.

It seems weird that you identified with my remark so keenly then…? I guess I wasn’t talking about you!

“Our method has some security issues and so until/unless it’s patched we prefer not to share,” is something it doesn’t seem the fellow above was told, because I don’t think they’d have said “Server owners don’t want to share their secrets.” but would have offered more of a qualifier.

“We want to get a bit of a headstart on the community,” undermines much of the rest of what you said. Anyway, I certainly wasn’t trying to turn this into some kind of forum flame war or anything. Your detailed response is very interesting and worth reading, but yeah the presentation… it’s a little childish! :)

With that, I’m going to let my OP speak for itself and not get mired in this comment thread unless in the unlikeliest of all events, the devs want some kind of clarification from me. 😂

—— aside from that —-

@LevyWilson Thanks for taking the trouble to document that method!! This seems like a bit more work than I’d like to do for my server of like 8 players, but man if I was going to run a larger group this would definitely be worth the time and prep work! Appreciate you taking the time!!

@LevyWilson
Copy link

It's half-baked in that the commands are not locked behind perms. Anyone making a public server should know to test that stuff. I locked the commands behind FTB ranks in my server, but I'm sure someone smarter than me developing the modpack could add a file in the data packs to limit the command to OPs. I'd been trying to work this out for days since no one else was willing to post the process. That's on the server owners if they don't put in the safeguards. In the end of the day, all this does is hyjack botania's skyblock generator and replaces the island structure. A shocking simple solution that should have been posted as soon as someone discovered it. Monopolizing it shows your nature in that while you say you were eventually going to say something, I doubt you would have. To hide this is to relegate other servers to needing to use even more half-baked solutions to generating the islands.

@linkian209
Copy link

+1 on this issue. IMO, it is a little silly for a wildly popular modpack series to not release with a way to do this automatically on launch.

I want to thank darkosto for making this pack and I hope that he keeps this in mind for his future packs.

@Micaxs
Copy link

Micaxs commented Jan 7, 2025

Made a little serverside mod for public servers: https://www.curseforge.com/minecraft/mc-mods/island-command

@cosierwolf
Copy link

Made a little serverside mod for public servers: https://www.curseforge.com/minecraft/mc-mods/island-command

thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

8 participants