Universes 3.0

A multi-world plugin for 1.14+

  1. WhispTheFox
    Native Minecraft Version:
    Tested Minecraft Versions:
    • 1.14
    • 1.15
    Source Code:
    WhispTheFox, Wyros
    Interdimensional Travel Made Possible

    THE 3.0 Update Has Arrived!


    Yup, that's right! More stuff for Universes! So, why the big jump from 2.1 to 3.0? Well, there are some bigger changes in this version, so I decided it warranted a bigger change. So, what's in store? Probably the biggest new thing is the Universe-Ends add-on. That's right. It is now possible to have individual end worlds for each overworld world. There is also a first join spawn system in place as well as the ability to use a seed in world creation. As the Universes 2.0 video is somewhat outdated now, I will be adding a new video soon to cover the new features in this update.

    (This video is now a tiny bit outdated)

    Here's a timelapse video I put together of the creation of the Universe-Nethers plugin. I thought some people might find it interesting.

    There may very well still be some bugs in the transition between versions, so I encourage all server owners to have their players store all their items in chests before per world inventories is turned on or modified. This will ensure no items are lost.

    Hello all, and welcome. Today I am finally releasing the 3.0 update to my biggest plugin. As the title suggests, it is a plugin for multi-world management. It is a fairly extensive plugin, so please be sure to read through everything so you know how it works. Also, please note that while this may work to an extent on 1.13 servers, changing allowAnimals and allowMonsters will produce errors. Now then, let's get into it.

    First, the commands:
    Alias: /uh

    This command will show the plugin help page, aka a list of all available commands.

    Alias: /ul

    This command will show a list of all available worlds.
    /universecreate <world name> <environment> <type> <difficulty> <seed>
    Alias: /uc

    This is the command used for the creation of worlds. When creating a world, you must give a name, environment (normal, nether, or end), type (for example, normal, amplified, or large_biomes), and the world difficulty (peaceful, easy, normal, hard). If you experience any crashes while creating worlds, please go to your spigot.yml file and find the line that says "timeout-time" Increase it from 60 to somewhere around 300 (1 minute to 5 minutes) and it should resolve the issue. This will require restarting the server.

    The /universescreate command can now accept a seed argument. If you have a seed you want to generate with, simply add it on to the end. If you don't have a seed, you can run the command the same way you always have.

    /universeimport <world name> <environment> <type> <difficulty>
    Alias: /ui

    This is the import command. Use this if you have a preexisting world that you want to import. The plugin verifies that the world is of the correct format before importing. All of the fields are the same as for the creation command.

    /universeunload <world name>
    Alias: /uu

    This command will unload a world from the server without deleting it. Use this if you want to remove a map from the server to use it somewhere else.

    /universedelete <world name>
    Alias: /ud

    This command is the delete command. Use this to remove a world from the server and delete it from the files. This will require running a confirmation command.

    Alias: none

    When deleting a world, you will be prompted to run this command. Once this command is executed, the deletion process will begin. If you did not already run the /ud command, this will not do anything.

    Alias: none

    This is similar to the /confirm command. Use this to cancel a world delete. If you have not run the /ud command prior, this will do nothing. After running /cancel, /confirm will no longer work.

    /universemodiy <world> <item to modify> <new data>
    Alias: /um

    This is the modify command. Use this to modify world data. You will find all modifiable fields in the world-settings.yml file. The currently modifiable items are as follows: pvp, spawn, allowMonsters, allowAnimals, gameMode, respawnWorld, playerLimit, and allowFlight. There will be more about each setting below.

    In universes 2.0 and later, running the command with no arguments (just typing /um or /universemodify) will open up a GUI from which all the settings can be changed.

    /universeoverride <override type>
    Alias: /uo

    This command allows users with appropriate permissions to override various world settings. The current overrides are: gameModeOverride, canJoinFullWorlds, and flightOverride. In the command you can fully type each of those out or use their aliases, which are gmo, fwo, and flo respectively. More about these overrides below.

    In universes 2.0 and later, running the command with no arguments (just typing /uo or /universeoverride) will open up a GUI from which all the settings can be changed. This GUI will only show options a player has access to. If they have access to none of the overrides, they will be told so and the GUI will not open.

    /universeteleport <world name>
    Alias: /ut

    This is the teleport command, users with the proper permission can use it to teleport between worlds.

    Alias: /usp

    This is the command used to set the spawn point for first time players. (Please note that by default players will just go to the regular spawn if no first join spawn has been set.)

    Settings and Overrides
    First, the world settings. They are all fairly self explanatory. PvP allows or disallows player versus player in that world. Spawn changes the world's spawn location. allowMonsters will allow or disallow all hostile mobs. When this is set to false, all hostile mobs are instantly cleared from the world. allowAnimals is the same as allowMonsters, but for passive mobs. When this is set to false, all passive mobs will instantly be cleared from the world. Any tamed mobs will NOT be deleted. So don't worry about losing your precious puppies and kitties. gameMode is the game mode of the world. When a player teleports into the given world, their game mode will be updated to whatever the world's game mode is set to. respawnWorld determines which world the player will respawn in when they die. playerLimit limits the amount of players permitted to enter a world. Once a world has reached it's limit, other players will be denied from entering. To disabled the limit, simply set the playerLimit to -1. Currently, -1 is the default for this setting. And finally, allowFlight. This allows or disallows flying in a world. When a user tries to toggle into flying (via double tapping space bar), while allowFlight is false, whether it be in creative mode or with /fly enabled, they will be denied flight. If a user is already flying when this setting is changed to false, they will be told that flying is no longer allowed, and they will be toggled out of flying.

    Overrides. These are important for admins. First, there is gameModeOverride. With this enabled, the user's game mode will not be changed upon switching worlds. With canJoinFullWorlds enabled, the user will be able to join a world even if the playerLimit has been reached. And finally, flightOverride. With this enabled, users will be able to toggle flying even if it is not permitted in a given world. Users with this enabled will also not be toggled out of flying when the allowFlight setting is updated.

    In Universes 2.0 and later, there is a new override: perWorldInventoriesOverride. Enabling this will override per world inventories if they are enabled. This means users with this enabled will have their inventory shared across all worlds.

    The config.yml
    I meant to actually add this section earlier, but I forgot. Here we'll cover everything in the config.yml file. While I try to make everything as self explanatory as possible, there are a few things that aren't obviously clear. So, let's dive it.

    First, there is the per-world-inventories option. This allows you to turn on or off per-world-inventories.

    Second, is per-world-stats. This allows you to turn on or off per-world-stats. If per-world-inventories is off, this should have no effect. If it does, let me know because that means I did something wrong. The stats that are held per world are health, hunger, and experience.

    Third, is per-world-inventory-grouping. If per world inventories are on, this setting can be turned on to allow the use of world groups via the groups.yml file. What this means is worlds can be grouped together to share the same inventories and stats.

    Fourth, is per-world-kit-grouping. This allows the per world kits to use the groups as well. The kits function will always be enabled, but if no kits are made, none will appear in the GUI when the command is used. The kits command also uses a unique command (/universekits or /uk) so as not to cause issues with any other kits plugins you may be using.

    Fifth, is save-inventory-on-death. This option only has an effect is the gamerule keepInventory is set to true. Normally, the inventory doesn't save when you die, so if keepInventory is on and the respawn point is in another world, a player's items won't drop when they die, and the saved inventory will be cleared. Thus, when they go back, all their stuff would be lost. Turning this option on will save the player's inventory when they die so that doesn't happen. If you don't have keepInventory on, this will have no effect at all because the player's items will drop before the inventory saves anyway.

    Sixth, is use-respawnWorld. In the world settings there is a respawnWorld option that allows you to define a world to respawn the player in when they die. For example, you have a world called Survival, a world called Survival Spawn, and a world called Lobby; and your spawn point is in the lobby. If you want players to respawn in Survival Spawn when they die, set the respawnWorld for Survival to Survival Spawn, and turn this option on. Then, when a player dies in Survival, they will be taken to Survival Spawn.

    Seventh, is use-first-join-spawn. This allows you to enable or disable the first time join spawn.

    Any changes made to the config.yml, and any other .yml file will have an immediate effect. This means when you change settings or groups or any other pieces of data, those changes are instantly applied and you don't need to reload or restart.

    If you have the Universe-Nethers add-on plugin installed as well, two items will be added to the config under 'Universe-Nethers." They are as follows.

    Turning this on will allow each overworld world to have its own nether. For worlds that already exist, a nether will have to be manually generated and it must have the same name as the overworld world with _nether added on. For example, if you have an overworld called Survival, the associated nether must be called Survival_nether. If you create a new world with this option enabled, it will automatically generate the associated nether for you.

    This has no effect if nether-per-world is turned on. If nether-per-world is turned off however, it will. If this option is turned on, players will be sent back to the world from which they entered the nether from. For example, if the default worlds are world, world_nether, and world_the_end, and a player enters a nether portal from Survival, they will be taken to world_nether. When they use a portal to leave the nether, they will be taken back to Survival. If this option is disabled, the player will be taken to world upon exiting the nether.

    If you have the Universe-Ends add-on plugin installed, one item will be added to the config.yml under Unverse-Ends.

    Enabling this will allow each overworld world to have its own end. For worlds that already exist, an end world will have to be manually generated and it must have the same name as the overworld world with _the_end added on. For example, if you have an overworld called Survival, the associated end must be called Survival_the_end. If you create a new world with this option enabled, it will automatically generate the associated end for you. Because of the way End portals work, exiting the end will take players back to the main spawn point instead of the world they entered from.

    Extra Information
    This is some important extra information that you need to know before we get into permissions.
    - In most plugins, like Essentials, that handle warps and homes, they can be set in any world and teleported to from any world. Inventories will be updated if the player is taken to any other world or world group.
    - Changing the name or type in the settings will cause the world to generate with the wrong environment or configuration. For example, changing a nether world's type to normal will cause the world to regenerate as a normal world on startup.
    - Removing a world from the world-list.yml will cause it to not load when the server starts up.
    - There is no timer or timeout with the /confirm and /cancel commands. So be wary of that and don't forget about any world deletes you've started lest you do something you didn't want to do. (I do plan on adding expiration timers for this. I'm just trying to figure out how.)


    Grants the player access to the gameMode override

    Grants the player access to the canJoinFullWorld override

    Grants the player access to the flightOverride override

    Grants the player access to the perWorldInventoriesOverride override

    Grants the player access to all overrides

    Grants the player permission to create new worlds

    Grants the player permission to list worlds

    Grants the player permission to import worlds

    Grants the player permission to unload worlds

    Grants the player permission to delete worlds and use /confirm and /cancel

    Grants the player permission to modify world settings

    Grants the player permission to teleport between worlds

    Grants the player permission to set the first join spawn point.

    Grants the player permission for every command

    Closing Notes:
    I know it's sorta a lot, but I thought it was all mostly necessary and useful. I hope you all enjoy this plugin. And please, if you have any feedback or suggestions, please let me know in the discussion section here, or on Discord via Whisp Reedwell#5879.

    - A legacy version?

Recent Updates

  1. Uiverse-Ends and More
  2. Permission Bug Fix
  3. Whoops

Recent Reviews

  1. base4
    Version: 2.1.2
    Great plugin. Works exactly as needed. No hassle, no fuss, just learn the commands and go nuts. Unlike the previous reviewer mentioned, the plugin does provide you with the syntax...

    Lightweight, doesn't seem to cause any lag. I appreciate the option to have multiple or one inventory between worlds.

    I should not be using this on 1.12.2. I am. It works anyways.
    In 1.12.2, I can't modify settings for each universe (I have no expectation that this should be fixed). However, I can still load, unload, import, delete, join, leave, whatever. Just goes to show that the plugin has surprising amounts of backwards compatibility.

    I actually didn't read what version the plugin was for... given that I didn't even question that it might not be for 1.12 until I CHECKED, I think that's rather funny.

    Perfect experience. I'll stick with this plugin.
  2. lavaflowglow
    Version: 2.1.1
    this plugin is ass, its confusing and stupid, if you get a command wrong it just listed the fucking command instead of helping you, its lazy programming
    1. WhispTheFox
      Author's Response
      If you type a command wrong it shows you what items are supposed to be in the command so you can type it correctly. I believe in my documentation I wrote what each command can do. If you need help with something specific or need clarification please reach out to me. I'd be more than happy to help. It would be more useful if you told me what you think the plugin should display when something is typed wrong. Then I can work in what you are working for. As for your comment on it being confusing or stupid, the documentation clearly explains how each command works and what they do as well as all of the permissions. There is even a forty minute video that covers everything to assist with the more confusing parts of the plugin. I spent half of last summer developing the plugin and have worked on it intermittently throughout the fall and winter. I would not classify over 300 hours of work "lazy".

      Again, if you need help, contact me either through a message here on SpigotMC or on my Discord which is provided in the documentation. If you message me here the response time will be a few hours, whereas on discord it most likely won't be more than half an hour so long as I am awake.
  3. pigvader
    Version: Universes 2.0
    great plugin, but is it possible to get an update for 1.15 ?
    bc in 1.15 it doesn't work
    1. WhispTheFox
      Author's Response
      I just finished up my final exams for the first semester. I plan to do some work on it over my Christmas break to fix a few issues and support version 1.15. It may be a week or two, but there will be a 1.15 update for sure.
  4. grondinm
    Version: Universes 2.0
    So far loving this plugin. Thank you. Just starting out making my server and this was the easiest plugin to setup/use for world generation. Only thing i wish it would be able to do is remember where a player was when he left the world and bring him back there when he comes back. This could be a per-world option and could also maybe be a different command or overridden somehow to force a player back to map spawn point if wanted. Either way will keep using this plugin. Thank you again.
    1. WhispTheFox
      Author's Response
      Thanks for the review. Remembering where a player was in a world is definitely something I can look into. How exactly it will end up working really depends on how I can confirm the code for the rest of the teleport event to work with it. Also, a world spawn command is definitely something I will add in. Honestly not sure why I didn't think of that myself.
  5. DonTron
    Version: Universes 2.0
    Can i retroactively connect a end world to another world and vice verse?
    And can i make portals with this plugin?

    I need a simple way for my kids to jump between worlds :D
    1. WhispTheFox
      Author's Response
      I haven't integrated the end worlds like I did with the Nethers. As for portals, unfortunately no. While I'd like to implement some type of portals, my attempts thus far at portal frame detection have been utter failures. So, until I figure out something that works, you'll have to use a different plugin for them. I reccomend Ancient Gates.
  6. xorgone
    Version: 1.2.2
    Excellent plugin for Survival worlds trying to add an extra layer of fun via creative, minigames, etc. Great developer as well!
    1. WhispTheFox
      Author's Response
      Thank you very much.
  7. AzurieWolf
    Version: 1.2.2
    Great plugin! Works as it should running on Paper 1.14.4! Hopefully you can add per world inventory's eventually.
    1. WhispTheFox
      Author's Response
      Thanks! Actually, I just finished up adding the feature in earlier this afternoon. I have a few other things I am working on adding before I release the update though. But hopefully I can have it all done in the next week or so.
  8. Zombrocrusher
    Version: 1.2.1
    Great plugin that helps with multiple worlds. Just wish there was one inventory per world.
    1. WhispTheFox
      Author's Response
      I'm working on that now actually. I'm doing some practice work with inventories to make sure I know what I'm doing before I tried to implement the feature.
  9. kuz
    Version: 1.2.1
    amazing plugin, works very well as an alternate to multiverse or multiworld, recommend to anyone!
    1. WhispTheFox
  10. DaringShepard
    Version: 1.2.1
    Great and lightweight alternative to plugins like Multiverse.

    Being able to set gamerules per world is fantastic, and the /um command is pretty sweet, too. The documentation is also very well done. Would highly recommend! Only thing that would make it better is a "per-world inventory" system!
    1. WhispTheFox
      Author's Response
      Thanks! I could try adding something of the sort in a future update.