Skip to content
Ported MultiWorld to PocketMine-MP
Branch: PocketMine-MP
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Create ISSUE_TEMPLATE.md May 13, 2017
MultiWorld Deep Ocean, Swamp, River biomes Jun 16, 2019
stubs Year++, fixes, added soulsand to nether Jan 1, 2019
.poggit.yml Update .poggit.yml Nov 24, 2018
LICENSE Initial commit Apr 7, 2017
README.md 1.5.1 Jun 3, 2019

README.md



✔️ Simple world management commands
✔️New generators (Ender, Nether, Void, SkyBlock)
✔️ Fast, without lags
✔️ Supports last PocketMine API version
✔️ Multi language sytem
✔️ Implemented Game Rules
✔️ Simple API for other plugins

👍 1.5.1 Update:

  • Plugin cleanup
  • Bug fixes
  • New /mw rename command
  • New /mw manage command with form world manager
  • New API methods
  • New Chinese language

⬇️ Downloads:

Version Phar Download Zip Download API Stable Pre release
1.5.0 Poggit GitHub 3.0.0, 3.1.0 ✔️
1.5.0-beta2 GitHub GitHub 3.0.0, 3.1.0 ✔️ ✔️
1.5.0-beta1 GitHub GitHub 3.0.0, 3.1.0 ✔️
1.4.3 Poggit Releases GitHub 3.0.0-ALPHA7 - 3.0.0 ✔️
1.4.2 Poggit Releases GitHub 3.0.0-ALPHA7 - 3.0.0-ALPHA12 ✔️
1.4.1 Poggit-CI Downloads GitHub 3.0.0-ALPHA7 - 3.0.0-ALPHA12 ✔️
1.4.0 Poggit Releases GitHub 3.0.0-ALPHA7 - 3.0.0-ALPHA11 ✔️
1.3.2 Poggit-CI Downloads GitHub 3.0.0-ALPHA7
1.3.1 GitHub GitHub 3.0.0-ALPHA7 ✔️
1.3.0 Poggit-CI Downloads GitHub 3.0.0-ALPHA7

Download latest version here

All released versions here All development builds on Poggit Latest released version on Poggit Other plugins by CzechPMDevs here


📁 Supported software:

This plugin works only on PocketMine-MP. You can download MultiWorld by Creeperface for Nukkit or MultiWorld by ferrybig for Bukkit. PMMP Spoons are NOT supported.

🔧 How to install MultiWorld?

  1. Download latest stable released version from poggit
  2. Move dowloaded file to your server /plugins/ folder
  3. Restart the server

🌎 World management commands:

  • All MultiWorld commands starts with /mw (/multiworld) except for the /gamerule command that was added as an alias to change game rules from settings.
  • In game, you can get list of all commands using commands /mw help

All MultiWorld Commands:

Command Description
/mw help Displays list of all MultiWorld commands

Alias: /mw ?
Usage: /mw help <page: 0-1>
/mw create Generate new world using seed and generator

Aliases: /mw new, /mw generate
Usage: /mw create <levelName> [seed] [generator]

Seed is value seed is the initial value by which the world is generated, when you set it empty, world will be generated by random number. You can use 6 generators (Normal, Nether, End, Void, SkyBock and Nether_Old = Nether generator without glowstone and quartz ore)
/mw teleport Teleports you or seleced player to world spawn

Aliases: /mw tp, /tp move
Usage: /mw tp <levelName> [player]

If you are using Slapper plugin and after you click on the npc you want to move the player to another world, you can use /slapper edit <id> addcommand mw tp <world> {player} command
/mw list Displays list of all levels

Alias: /mw ls
Usage: /mw list
/mw info Displays level information

Alias: /mw i
Usage: /mw info

This command can be used only in game
/mw delete Remove level

Aliases: /mw del, /mw dl, /mw remove, /mw rm
Usage: /mw remove <level>

Default level can not be deleted
/mw update Change spawn, lobby or default level

Aliases: /mw ue
Usage: `/mw update <spawn
/mw load Loads level

Aliases: /mw ld
Usage: /mw load <level>
/mw unload Unloads level

Aliases: /mw unld
Usage: /mw unload <level>
/mw gamerule Manages with level game rules

Aliases: /gamerule, /mw gr, /mw gamer, /mw grule
Usage: `/gamerule <list
/mw manage Opens form world manager

Aliases: /mw mg, /mw mng,
Usage: `/mw manage <list
/mw rename Renames world

Aliases:/mw rnm, /mw re
Usage:/mw rename <oldName> <newName>

📃 Premissions:

  • You can use permission mw.cmd for all commands

All MultiWorlds Permissions:

Permission Command Opertor
mw.cmd.help /mw help ✔️
mw.cmd.create /mw create ✔️
mw.cmd.teleport /mw teleport ✔️
mw.cmd.list /mw list ✔️
mw.cmd.info /mw info ✔️
mw.cmd.delete /mw delete ✔️
mw.cmd.update /mw update ✔️
mw.cmd.load /mw load ✔️
mw.cmd.unload /mw unload ✔️
mw.cmd.gamerule /mw gamerule ✔️
mw.cmd.manage /mw manage ✔️
mw.cmd.rename /mw rename ✔️

🗺️ World Management API

  • World management api was added in MultiWorld v1.5.0, you can download stubs on release page, there are all WorldManagementAPI methods

Some example:

/**  
 * @param string $levelName  
 *
 * @return bool  
 */
 public function reloadWorld(string $levelName): bool {  
   if(!WorldManagementAPI::isLevelGenerated($levelName)) {  
     return false;  
   }

   if(!WorldManagementAPI::isLevelLoaded($levelName)) {  
     WorldManagementAPI::loadLevel($levelName);  
   }

   WorldManagementAPI::removeLevel($levelName);  
   WorldManagementAPI::generateLevel($levelName, rand(0, 100), WorldManagementAPI::GENERATOR_SKYBLOCK);  
   return true;  
}

🖊️ World Game Rules API

  • World game rules api was added in MultiWorld v1.5.0, you can download stubs on release page, there are all WorldGameRulesAPI methods

  • All implemented GameRules: doDaylightCycle, doMobLoot, doTileDrops, keepInventory, naturalRegeneration, pvp, showcoordinatesand tntexplodes

  • GameRules are stored in level.dat in CompoundTag GameRules, you can look at it using NBTEditor.

Some example:

<?php  
  
declare(strict_types=1);  
  
namespace xyz;  
  
use multiworld\api\WorldGameRulesAPI;  
use pocketmine\command\Command;  
use pocketmine\command\CommandSender;  
use pocketmine\event\level\LevelLoadEvent;  
use pocketmine\event\Listener;  
use pocketmine\plugin\PluginBase;  
  
/**  
 * Class XYZPlugin
 * @package xyz  
 */
class XYZPlugin extends PluginBase implements Listener {
 
  /** @var bool $enabled */  
  private $enabled = false;  
  
  public function onEnable() {  
    $this->getServer()->getPluginManager()->registerEvents($this, $this);  
    $this->update();  
  }
    
  /**  
    * @param CommandSender $sender  
    * @param Command $command  
    * @param string $label  
    * @param array $args
    *   
    * @return bool  
    */
   public function onCommand(CommandSender $sender, Command $command, string $label, array $args): bool {
     if($command->getName() !== "xyz") {
       return false;
     }
     $bool = $this->enabled ? "off" : "on";
     $sender->sendMessage("§a> Coordinates turned $bool!");
     $this->enabled = !$this->enabled;
     $this->update();
     return true;
   }  
   
 /**  
   * @param LevelLoadEvent $event  
   */
  public function onLevelLoad(LevelLoadEvent $event) {
    WorldGameRulesAPI::updateLevelGameRule($event->getLevel(), "showcoordinates", $this->enabled);  
  }
  
  private function update() {
    foreach ($this->getServer()->getLevels() as $level) {  
      WorldGameRulesAPI::updateLevelGameRule($level, "showcoordinates", $this->enabled);  
    }
  }
}  

🌐Add your language!

  • Do you want to help with the development of MultiWorld? Add your native language!
  1. Open lanuage resource file
  2. Click create new file
  3. Transalte e.g. language from English file https://github.com/CzechPMDevs/MultiWorld/blob/PocketMine-MP/MultiWorld/resources/languages/en_US.yml
  4. Click Propose new file

💰 Credits

💡 License

MultiWorld - PocketMine plugin that manages worlds.
Copyright (C) 2018 CzechPMDevs

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

Full license here.

You can’t perform that action at this time.