WorldSystem ● The one world per player solution ● GUI ● Highly Configurable ● [1.8 - 1.16] icon

WorldSystem ● The one world per player solution ● GUI ● Highly Configurable ● [1.8 - 1.16] -----

The one world per player solution you have always dreamed of. Now in over 10 languages



Warning Use Version 2.4.12 for 1.12 and Below
Use Version 2.4.20 for 1.13 and above

Worldsystemlogo_V24X.png
Hello there,
I'm sure you're asking what WorldSystem is.
WorldSystem is a plugin where every player can get a world. There they can build, play and do anything they want without creating stress in a single world. The world owner can also add other players and manage their permissions on his world like is he allowed to build, teleport or changing his gamemode.

When a player creates a new world you can also set a template which will then be cloned.

Features:

- Fully customizable messages
- Event driven and easy to use API
- Supports English, German, Hungarian, Spanish, Russion, Finnish, Chinese and Dutch
- GUI (100% configurable)
- Many Permissions
- Removing worlds when they are empty
- Low CPU/Ram usage
- Lag detection
- AutoUpdater
- Create worlds async and incredibly fast (only 1.8 - 1.12.x)
- PlaceholderAPI support
- Permission system for the world owners
- Customize the worldborder and all gamerules
- Generator settings for also paid generators
- Automatic deletion of worlds that have not been loaded for a long time

[​IMG] [​IMG]


Some screenshots:
javaw_2018-04-22_14-48-56.png
javaw_2018-05-08_21-18-00.png

TODO:

  • Support more languages: You can send us translated messages and we will implement them
  • More and more worldoptions
Still not convinced?
  • Over 7000 lines of code
  • 4.81 stars (18 5-star reviews)
  • Over 600 worlds managed by WorldSystem


Here are the JavaDocs.
Here are the stats of my plugin.

!!! Warning !!!
It is not recommended to use this plugin on version 1.13 or 1.14, as the performance of these versions are pretty bad, especially when it comes to world generation. Altough these versions are supported, it won't work very well. Consider using another version such as 1.12 or 1.15.



Commands:

/ws get - Gives you a world
/ws home - Teleports you to your world
/ws sethome - Sets a specific home
/ws gui - Opens the GUI menu
/ws tp <Player> - Teleports you to the specific world
/ws addmember <Player> - Add a player to your world
/ws delmember <Player> - Remove a player from your world
/ws leave - Leave the world you are currently on
/ws fire - Enables/Disables fire in your world
/ws tnt - Enables/Disables tnt in your world
/ws info - Show information about the world you are currently on
/ws reset - Reset your world
/ws togglegm <player> - Allows/Denys a player changing its gamemode
/ws toggletp <player> - Allows/Denys a player teleporting
/ws togglewe <player> - Allows/Denys a player using WorldEdit
/ws togglebuild <player> - Allows/Denys a player building

Just for admins:
/ws delete <Player> - Delete the specific world
/ws confirm - Confirm if necessary an autoupdate

- Creating worlds async
Just install FastAsyncWorldEdit and WorldEdit on your server - done.

- How to set a template

https://github.com/Butzlabben/worldsystem/wiki/How-to-set-a-template-World%3F

- Will not all worlds consume a lot of memory?
No, it will not. Every world gets unloaded and moved to a specific folder when they are empty. The RAM usage depends on how much chunks are loaded. So if you have one world with many chunks loaded against 5 worlds with not so much chunks loaded, the RAM usage will be equal.

- Will not all worlds consume a lot of disk space?
About 1000 worlds will consume ~38 GB of space. If you want you can enable auto-deleting for old worlds if their use was a long time ago.

- Why should I use WorldSystem? I have PlotMe.
WorldSystem gives the player a world where they can fully live out their creativity and they are not limited to a 20x20 plot. You can also enable the survival mode so players can't change their gamemode or teleport.

Code (Text):
- Forged in Fire (fifmc.com)
- UnknownCity (unknowncity.de)
- CorbaCraft (corbacraftmc.com)
- MagmaCube (magmacube.cz)
- MineCraft-Universe (mc-universe.de)
- world4every1.servegame.com
- AppleMC (AppleMC.pl)
- Ertha Network (play.ertha.network)
You can contact me and I will put your server on the list too.

- ws.*: Gives access to all permissions from WorldSystem
- ws.get: With this permission you can get a world via /ws get
- ws.sethome: With this permission, you can seta specific home for your world
- ws.tp.*: Gives access to all teleport permissions from WorldSystem
- ws.build: You can build even without the permission of the world owner
- ws.delete: You can delete worlds
- ws.gamemode: You can change your gamemode without the permission of the world owner
- ws.lag: You can see the lag notifications
- ws.tp.world: You can teleport to a world without being a member of that world
- ws.tp.other: You can teleport other players across worlds
- ws.tp.toother: You can teleport to other players across worlds
- ws.big: Gives you a bigger world if configured
- ws.large: Gives you an even bigger world if configured
- ws.confirm: You can confirm an auto update

Code (Text):

# Path where the worlds will be saved
worldfolder: 'plugins/WorldSystem/Worlds'

# Name of the template world
worldsource: ''

# If a confirm is needed before auto-update
need_confirm: true

# When nobody is on a world time until it get unloaded
unloadingtime: 20

# If true nobody can teleport or change their gamemode a WorldSystem world
# Except for players with the permissions: ws.gamemode | ws.tp.*
survival: false

# If true players will teleport to the spawn on join
spawn_teleportation: true

# Time in seconds until a request expires
request_expires: 20

# Name of the languagefile in plugins/WorldSystem/messages/
language: en

# Prefix which will be shown before each message
prefix: '&8[&3WorldSystem&8] &6'

# Time in days after a not used world will be deleted
# Set to -1 to disable
delete_after: -1

# Whether WorldSystem should contact the Mojang authserver
# If not, some unknown playernames will not be displayed
# eg. in the gui or in /ws info
contact_authserver: true

# Options for the LagSystem:
# period_in_seconds - how often will be checked for entities in seconds
# entities_per_world - maximal allowed entities per world
# garbagecollector - how often will be unused ram be cleared
lagsystem:
  period_in_seconds: 10
  entities_per_world: 350
  garbagecollector:
    use: false
    period_in_minutes: 5
 
# Options for random world generation
worldgeneration:
  # A seed for worldgeneration
  # Set it to 0 for no seed-useage
  seed: 0
  # Environment for the world
  # Valid inputs are 'NORMAL', 'NETHER' and 'THE_END'
  environment: NORMAL
  # Type of the world eg. flat, amplified, ...
  # Valid types are 'NORMAL', 'VERSION_1_1', 'FLAT', 'AMPLIFIED', 'CUSTOMIZED' or 'LARGE_BIOMES'
  type: NORMAL
  # Put in here the name of a generator
  # If you have one from one plugin
  generator: ''

# Location where you will be teleported when you leave you world
spawn:
  gamemode: 2
  spawnpoint:
    world: world
    x: 0
    y: 20
    z: 0
    yaw: 0
    pitch: 0

# Location where you spawn when you join a world
worldspawn:
  use: false
  spawnpoint:
    x: 0
    y: 20
    z: 0
    yaw: 0
    pitch: 0
 
A "/ws reload" command will not be necessary, because the config will be automatically read.


Before you are asking me with a problem, have a look at the docs.

The class SystemWorld is for world loading, creating, ...
Code (Java):
// Retrieving a instance of a systemworld
SystemWorld world = SystemWorld. getSystemWorld ( "worldname" ) ;

// Load a SystemWorld
if ( !world. isLoaded ( ) ) {
  // Load a world, the player will be notified and teleporter when finished
  world. load (Player player ) ;
}

// Unload a world
// Is world loaded
if (world. isLoaded ( ) ) {
  // Unloads a world with a wait timer
  // World w is the actual world object of the systemworld
  world. directUnload (World w ) ;
  // Or unload it with the given time in the config
  world. unloadLater (World w ) ;
}

// Teleport a player to the spawn of this world
world. teleportToWorldSpawn (Player p ) ;

// Automatically checks if World w is a SystemWorld
// If so unload its with the given delay in the config
SystemWorld. tryUnloadLater (World w ) ;
 
You can also use the PlaceholderAPI to get some information. Have a look for this on the GitHub Wiki



This work is licensed under a GPL-3.0 license

Want to encourage and motivate me? Donate something and buy me with this donation a coffee.

[​IMG]


Convinced by my work and my support?
Please leave an honest review down below or donate something. But if you post an issue in the review section it will be ignored instead go here.
Resource Information
Author:
----------
Total Downloads: 16,554
First Release: Nov 19, 2017
Last Update: Dec 13, 2021
Category: ---------------
All-Time Rating:
49 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings