LobbyAPI
What is LobbyAPI
LobbyAPI was created to manage multiple worlds and allow players to teleport to those worlds using user friendly menu, while being able to be fully configurable.Just by using the commands /lobby or /hub, the player has access to all worlds specified in the menu, where when they click on the block the represents a world they are teleported to location given to that world. LobbyAPI has tons of configurable methods to change the color of the block in the menu, the amount of that block, what spot it is located, and the description of the world, who can see or go to a world, along with the methods for how the world will interact with other worlds.
How to create and manage worlds
If you a re new to LobbyAPI, you can find a guide how to set up worlds at this link:
https://dev.bukkit.org/projects/lobbyapi/pages/events/basic-command-tutorial
Features
- Allows players to teleport from world to world.
- Menu is fully customizable
- Shows all players in given world
- Allows players to teleport from Server to Server (for bungee servers only).
- Allows other plugins to access when a player teleports to a new world or clicks on a new world in the menu.
- Works on all versions of Bukkit
- Plugin support LobbyAPI is just the back-bone for the plugins that will add the worlds. All that is needed to add a world to the menu will be under Developer Information.
Icon Customization is here!
Now you can easily customize the materials, description, and other attributes for each world registered!
Commands
/Lobby | Opens up the WorldMenu |
/Hub | Opens up the WorldMenu |
/LobbyApi | Allows you to change some properties of LobbyAPI |
/LobbyApi addWorld [world] [slot] [x][y][z]..... | Adds a world to the LobbyAPI menu |
/LobbyApi removeWorld [world] | Removes a world to the LobbyAPI menu |
/LobbyApi addServer [server-name] [slot] | Adds a server to the LobbyAPI menu |
/LobbyApi removeServer [server-name] | Removes a server to the LobbyAPI menu |
/LobbyApi listServers | Shows a list for all the servers |
/LobbyApi listWorlds |
Shows a list for all the worlds |
/LobbyApi setDefaultWeather [world] [weather] | Sets the default weather for a world. Choices are NORMAL, NO_RAIN, and ALWAYS_RAINING |
/LobbyApi addJoiningCommand [world] [command] | Adds a command that should be sent when a player joins that world. |
/LobbyApi removeJoiningCommand [world] [command id] | Removes a command that should be sent when a player joins that world. |
/LobbyApi listJoiningCommands [world] | Lists all the commands that are sent when a player joins that world. |
/LobbyApi listJoiningCommands [world] | Lists all the commands that are sent when a player joins that world. |
(There are a few more commands, but I've had issues recreating the table :p):
/LobbyAPI generateNetherAndEndFor", "Generates a nether and end world for the world"
/LobbyAPI setMainLobby", "Changes the default spawn world"
/LobbyAPI removeMainLobby", "Removes default spawn world"
/LobbyAPI setMaterial", "Sets the material icon for a world"
/LobbyAPI setDisplayName", "Changes a display name for a world."
/LobbyAPI setDescription", "Sets the description for a world"
/LobbyAPI hideWorld", "Hides a world from the menu."
/LobbyAPI showWorld", "Shows the world from the menu, if previously hidden"
/LobbyAPI setWorldSelector", "Sets the word selector to be the item in the sender's hand"
/LobbyAPI removeWorldSelector", "removes word selector"
/LobbyAPI setGamemode", "Sets the description for a world"
/LobbyAPI changeSpawn", "Changes the spawn location for a world"
/LobbyAPI version", "Gets the version of the plugin"
/LobbyAPI setvoidlooping", "Enables or disables teleporting players to spawn if they are in the void"
/LobbyAPI setdisablehealthandhunger", "Enables or disables health or hunger changes for worlds"
/LobbyAPI setlocationsaving", "Enables or disables location saving when a player leaves the world"
/LobbyAPI setcanuseportals", "Enables or disables portals for certain worlds."
/LobbyAPI addDefaultItem", "Adds the item in your hand to the list of default items."
/LobbyAPI removeDefaultItem", "Adds the item in your hand to the list of default items."
/LobbyAPI listDefaultItems", "Adds the item in your hand to the list of default items."
/LobbyAPI addDecor", "Adds a decor item to the hub menu"
/LobbyAPI removeDecor", "Removes a decor item."
/LobbyAPI toggleWhitelist", "Toggles whether the world is restricted to only certain players"
/LobbyAPI addToWhitelist", "Adds a player to a world's whitelist"
/LobbyAPI removeFromWhitelist", "Adds a player to a world's whitelist"
/LobbyAPI listWhitelist", "Adds a player to a world's whitelist"
/LobbyAPI goto", "Teleports the player to the spawn of a world"
Permissions:
- lobbyapi.*
- ---Gives access to all lobbyapi features
- lobbyapi.user
- --Gives all commands that users should have. If you do not know what permissions to give to your players, just give them this.
- lobbyapi.commands
- --Only gives access to commands
- lobbyapi.hub
- --Gives access to the /hub commands.
- lobbyapi.bypassworldlimits
- --Gives players the ability to join worlds that are private, or have gone over the player limit
Dependencies and Compatibility
LobbyAPI does not depend on any other plugin, and should work with all other plugins. If you receive any errors from my plugin or features or not enabled for you, please make a comment or ticket of this page.
Developer Information
If you want to register a world through a plugin, use the guide HERE . Call this method in onEnable method to register worlds when the plugin loads.
To add a BungeeServer to the menu, all you need is this line: LobbyAPI.registerBungeeServer(String bungeeServersName, Description, WoolColor);
How to Install
- Drop this plugin into you plugins folder
- Find/Create a plugin that will allow you get to your world
- Restart your server
This plugin uses bStats:
bStats is a metrics service that allows me to to see how many servers use my plugins, how many players they have, and which countries use my plugin the most. All information is anonymized, so no information can be directly linked to you, and instead is added to the average of all severs that use the plugin.
In reply to Forge_User_60891557:
When i try to add my current world to lobbyapi as "hub" it says The config already has registered this world though LobbyAPI has not. any help???
In reply to joshuas6758:
I am currently experiencing the same problem.
Also with just adding a world using the 'addworld" command
In reply to joshuas6758:
I also have this exact same issue, it is present whenever I try to create a new world. When I try to create a new world it is present in the hub, but doesn't allow me to join, etc and rather acts like the world doesn't exist.
In reply to goatinatxr:
Never mind, due to my arrogance I didn't know that LobbyAPI looks for the world name in the folder, since my main worlds name was simply "World", creating a world using the command /lobbyapi addworld World ~ ~ ~ worked. So if you're having this issue, make sure you're naming your world correctly (corresponding to its file name). Thanks for the awesome plugin!
In our server, when someone goes from the end to the overworld through the bedrock portal in the end, their inventory gets wiped without the console reporting an error. It also says that the home bed is not found. We are using the latest version of lobby API, and removing lobby API fixes the problem.
In reply to reekermie:
Is the overworld registered with LobbyAPI? If so, does this happen every time a player goes through the portal?
In reply to Zombie_Striker_bukkit:
Yes, the overworld is registered with LobbyAPI, and sometimes there is a very small chance that the inventory is saved; however, for the most part the inventory is always cleared. Another thing is, if we have a plugin like multiverse inventories, should we leave Enable_Per_World_Inventories on true.
In reply to reekermie:
In reply to Zombie_Striker_bukkit:
Hi, sorry to hijack, but I have the same problem. And it's not just with going through the portal, if you die in the end your inventory gets wiped when you respawn in the overworld as well. In addition, ender chests don't save their contents when we put stuff while in the end. When we return to the overworld they 'reset' to their contents before we went to the End.
There are no other inventory/world management plugins installed. The worlds are the default worlds generated by the server and the other dimensions have been linked in the config.
I don't know how to fix this bug. I made a world in my panel and it worked just fine until, I restarted my server. I don't know what happened but the world is gone from my panel. After that I try to recreated it and it says "This config has already registered to this world, even though LobbyAPI has not. This should not happen, but if it did, report this to Zombie_Striker on the bukkitdev page: https://dev.bukkit.org/projects/lobbyapi" I have tried recreating it many times but after I restart the server it gets deleted. How can I fix this?
In reply to sophiadipz:
Are there any errors in the console when the server first startsup? If so, could you post them?
In reply to Zombie_Striker_bukkit:
There are no errors in the console, although when I was checking if there were it said that the world that I was talking about had loaded in, so I went into the server to check and it still wasn't there.
In reply to sophiadipz:
Could you post the config.yml?
In reply to Zombie_Striker_bukkit:
Here's the config for the plugin:
disallowHubCommandNoPerm: true
Settings:
Enable_Per_World_Inventories: true
worldselector:
==: org.bukkit.inventory.ItemStack
v: 1968
type: COMPASS
auto-update: true
Version: 3.7.93
Worlds:
survival:
name: survival
spawnLoc:
x: 378.557772105922
y: 74.0
z: 2355.4133334905423
yaw: 0.93652344
pitch: 63.730877
w: survival
weatherstate: NORMAL
i: 3
gamemode: SURVIVAL
color: 0
hidden: false
canuseportals: true
Seeds: -8883703160404249908
displayname: Survival
material: GRASS_BLOCK
desc:
- 'Minecraft Survival with a bit of extra bosses '
Linked_nether: survival_nether
Linked_End: survival_the_end
joincommands:
- /survival
shouldsavelocation: true
creative:
name: creative
spawnLoc:
x: 1.0
y: 80.0
z: 1.0
yaw: 271.1271
pitch: 5.965448
w: creative
weatherstate: NO_RAIN
i: 5
save: 'false'
gamemode: CREATIVE
color: 0
hidden: false
canuseportals: true
Seeds: 6461405491153984111
displayname: Creative
desc:
- 'Creative fun for everyone! '
material: BRAIN_CORAL_BLOCK
shouldsavelocation: true
Linked_nether: creative_nether
Linked_End: creative_the_end
lobby:
Seeds: -6434252102066650050
displayname: WeebCraft Lobby
gamemode: ADVENTURE
material: BELL
weatherstate: NO_RAIN
desc:
- 'The Lobby '
disablehealthandhunger: true
hasBungee: true
Decor: {}
I've been trying for a while to fix this bug. I try to save the world and it gets to 100% and then crashes and I get this "A internal error has occured when........"
[21:36:47] [Server thread/INFO]: ThatGuyJacobee issued server command: /lobbyapi addWorld Elite Gaming ~ ~ ~ 0
[21:36:47] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'lobbyapi' in plugin LobbyAPI v3.7.91
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[craftbukkit.jar:git-Bukkit-2349feb]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:148) ~[craftbukkit.jar:git-Bukkit-2349feb]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchCommand(CraftServer.java:689) ~[craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.PlayerConnection.handleCommand(PlayerConnection.java:1619) ~[craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1473) ~[craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(SourceFile:37) ~[craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(SourceFile:9) ~[craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:13) ~[craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:135) [craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:114) [craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:856) [craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:849) [craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeAll(SourceFile:99) [craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:832) [craftbukkit.jar:git-Bukkit-2349feb]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:773) [craftbukkit.jar:git-Bukkit-2349feb]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_211]
Caused by: java.lang.NumberFormatException: For input string: "Gaming"
at java.lang.NumberFormatException.forInputString(Unknown Source) ~[?:1.8.0_211]
at java.lang.Integer.parseInt(Unknown Source) ~[?:1.8.0_211]
at java.lang.Integer.parseInt(Unknown Source) ~[?:1.8.0_211]
at me.zombie_striker.lobbyapi.LobbyCommands.onCommand(LobbyCommands.java:747) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[craftbukkit.jar:git-Bukkit-2349feb]
... 17 more
In reply to Forge_User_89177392:
Spaces are not allowed in world names. Either combine "EliteGaming" or replace the space with an "_"
Hi, when ever i make a new server no one is able to do /hub or /lobby the console shows
[Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'lobby' in plugin LobbyAPI v3.7.92
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchCommand(CraftServer.java:710) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.PlayerConnection.handleCommand(PlayerConnection.java:1670) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1510) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:13) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:135) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:114) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:898) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:891) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(SourceFile:123) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:875) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:808) [spigot.jar:git-Spigot-5e4e7f3-5f88938]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_211]
Caused by: org.bukkit.plugin.messaging.ChannelNotRegisteredException: Attempted to send a plugin message through the unregistered channel `BungeeCord'.
at org.bukkit.plugin.messaging.StandardMessenger.validatePluginMessage(StandardMessenger.java:544) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer.sendPluginMessage(CraftPlayer.java:1225) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
at me.zombie_striker.lobbyapi.LobbyAPI.updateServerCount(LobbyAPI.java:53) ~[?:?]
at me.zombie_striker.lobbyapi.LobbyCommands.onCommand(LobbyCommands.java:1435) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot.jar:git-Spigot-5e4e7f3-5f88938]
... 17 more
When a world is set to private, it seems that its world selector entry is hidden for everyone. Shouldn't it appear to those on the whitelist, or at least appear to everyone but show like an error message when non-whitelisted players try to join?
In reply to dmblc:
Correction: The entry only appears when you are already in that world. I think there should be a config option so that private worlds remain visible in the selector in other worlds, but accessible only to those who are whitelisted.