Modded worlds and vanilla worlds in multiverse?

Hey there fellow Sponge forumers! I know it’s early to start thinking about implementing Sponge on a server setting, but ever since it was announced that with Sponge, clients no longer need to download client mods, I’ve been toying with the idea of adding a modded world into our server’s multiverse once Sponge is released. However,I’m wondering if there is an simple way to limit the mod’s items and effects to only this one world? We don’t want, say, Mo’creatures animals and mobs running amok in our vanilla city center.

Just curious if this can be done.

You need these client mods installed for that to work. It’s just that you won’t need to install Forge on your server to run the mods server-side, as Sponge already runs on top of it.

I’m not sure what you mean, in this quote. :stuck_out_tongue: You’re contradicting yourself. “won’t need to install Forge”, “Sponge already runs on top of it”.

Sponge will be a coremod for Forge.

I meant that Sponge is only installed server side, as opposed to a client side mod, so you’d still need Forge and it’s mods to be installed client side.

Sounds like you are looking for a successor to MultiModWorld

I would be interested if someone is able to do this

This was never announced and it is also not true. Client will still need the mod if the server is running the mod.

What was announced that forge 1.8 will not require forge to be installed on the client if all the mods are purely server-side. Server-side only mods are restricted in what they can do. For example a server-side mod could not make a new block. Server-side mods do allow extra commands and such, and can control normal vanilla behaviour(e.g. protect against grieving) to a certain extend.

1 Like

There will be a server side sponge, and a client side. The client side will be optional, however, you will require it to play on servers that have mods like MoCreatures, that add an additional block/mob/function to the game. If you are playing on a server that has plugins like Bukkit, the client will be totally a choice, and will not be needed.

Oh, seems I was mistaken then :c
I shall have to take a look at MultiModWorld’s alternatives, that looks exactly the type of thing I’d love on our server! Would something like this be possible to accomplish with Sponge?

EDIT: Ps. Hi my non-Psycho cousin! :smiley:

There is another possibility to realize that: basically “disabling” different mods for different worlds. The client would still need to have all the mods installed, but depending on the world the player is in, only certain mods would be active.

True, but I don’t want our players to have to download a modpack before they can join the server. It should be completely optional and we also don’t want two separate servers. That didn’t work out so well before when we tried.

Although, perhaps it would be workable if we could have a common chat and player list between the two…

Well if you have 2 seperate servers running on the same vserver/rootserver, it would be possible to write a plugin that allows the two to share one chat (technically each server sends his chat-messages to the otehr server). It will however be difficult if not impossible to let the people switch between the 2 servers directly if they require different client mods.

As there is not MV for sponge yet… Also, that sounds like something Bungee could do. You can’t, however, have multiple sets of ods on one running instance at the same time.

Meaning what exactly? (Sorry, I’m not too familiar with all the technical terms)

That means, once you start a server, you have a single, fixed set of mods / plugins loaded. You can’t make an unique list of plugins / mods per world, only per server you have running.

I’m not sure about added items/blocks, but from experience I know that if all the entities and such from a mod the client doesn’t have are in a dimension the client doesn’t visit, it won’t cause any problems. With items/blocks, I’m guessing you’d have to make sure that their IDs and such don’t get sent to clients if they don’t have them, and that they either never get brought to a place where clients that don’t have it would have to load it, or make them seem like items/blocks that the player definitely has, like stone or stick. There’s probably more that would have to be done too, but there’s a chance it might be possible, if a forge mod was made for it. There are probably other ways than what I’ve said, I think the biggest difficulty will be dealing with item/blocks

It will simply be prevented. The server would end up sending unknown packets to the server. Also, if you were to use stones or sticks, no custom assets / rendering / guis etc., then you might as well make a plugin. Mods are loaded into the game, and may change completely how it works, add things, remove things etc. What happens if a client joins a server that doesn’t know what sticks are and uses twigs (a mod item) instead? The client requests a stick, the server doesn’t know that item. The server wants to tell the client about it’s amazing new twig, but the client doesn’t know it exists. Also, in minecraft, you can’t seperate ID lists (items, blocks, entitys, guis, … (almost everything in mc has an internal id)) between worlds.

Shortly: The way Minecraft and Forge are built don’t allow for a reasonable, sane implementation of such a feature.

Well removing items can just cause mod conflicts in general, and sticks were just a random thing I thought of and something certain like air could be chosen, but I was referring to a mod that would be just for making it possible to have a server with mods that the client might not have. It would need to do things drastic and unusual enough that a plugin wouldn’t work, it might even need to be a coremod. To change the item id list, it looks like something could be done with the netty event for the handshake package, I haven’t had a ton of experience with netty myself to know for sure, but that’d be the biggest issue. Entities would crash the client if spawned in the same dimension unless something handled that, but I know that if they only spawn in a modded world, clients without the mod won’t know or care about them (This is something I’ve actually done on a server I’ve run myself, they only spawned in a dimension that people without the mod wouldn’t be able to get to). I’m not sure about guis, but I’m pretty sure that unknown packets will be safely ignored, unless a mod does something weird with packets.

There’d probably be mods that do stuff weird that it wouldn’t work well with, but something could definitely be made that would allow modded worlds to some degree.

I don’t believe there is any way to solve it properly and keep all the mods functionality without the client having the mod and the mod being specifically built to support this Multiverse or whatever you may use to do so. Because, as a Forge mod, there are so many possibilities, that the frst non-trivial mod you load will break the game terribly, because it does some (maybe coremod) stuff that requires the client, but your mod doesn’t know about it.

I’d think more than anything, it prompts Sponge for a feature to enable us to do this. As it is built on Forge, and likely can do some simple interactions with mods, then we’d likely want a plugin or feature that could lock certain worlds if the client reports they don’t have the required mods, and in a nicer way. By that I mean that it would message them and prevent the teleport rather than crash their client or disconnect them with a warning.

Other than that, I’m doubtful that Sponge would be able to handle mod loading per world, that sounds like it’d be a pain. I’d almost rather have mod devs implement that per mod as I’m not sure how stable it would be otherwise.

That would be wonderful, indeed. I’m not as wise to the server architecture as some of you, but basically this would be the ideal situation:

  • Player can join the server without requiring the mods running in the mod world and can play normally in the vanilla world, but cannot join the mod world (but them trying won’t kill the server or their client) as explained above by OffLuffy.
  • There is a shared chat / player list between the vanilla and modded worlds, so communication works and mod/admin commands work regardless.
  • If possible, all mod changes are ignored in the vanilla worlds. Naturally, this would also require independent inventories.

How viable does this sound?