Create multiple website for your PocketMine server fully free !

This plugin is under the BoxOfDevs LICENSE v1.0

Create your first website


To create a website, go to the config.yml -> plugins/Online/config.yml
Then add a new website in the "Domains" array (by default, there is localhost) with your website name so it looks like this (for this whole example, we will use but local servers are already here by default. It's if you want to add a new one):

yaml Domains: - localhost -

Restart your server and a new folder in the Online folder will be generated! It will be your new website path.

By default, there will be an index.html, a 404.html and a 403.html.

You can modify them, add more files, ect....

If you're using an external domain, portforward your machine (later on the lesson) , then go to your registar CPanel and go to records -> add new record and then put it to CName to your portforwarded machine. All of this isn't required localy.

After have done this, connect yourself to the website by your browser: port (by default 80).

To make everyone able to see your website, you need to port forward your website (if you have port forwared your server, you will also need to do this) . Note that the port forward should be automatized on windows devices using UPnP.

There are tons of tutorials on how to portforward something (google it !) but there are some specific config to do.

And there you go ! You've created your first website with online ! Good job !

Config of the port foreward:
Name: HTTP
Start port: Your port (by default 80)
End port: Your port (by default 80)
Protocol: TPC

Start your server and profit of your new website !

Add a parked domain

You've created a website but you want to broadcast it on multiple websites? No problem ! Look at the tutorial below and see how to do this !

  1. You need first to have done you're first website

  2. Go to your config (still the same and add a new element: parked domain: current domain (there is by default and that points to localhost) So it looks like this (for this example, is the parked domain and is the existing one): yaml Parked domains: localhost localhost

  3. Then, go to your parked domain registar CPanel and add a new CName record pointing to the machine IP.

  4. There you go, you created a parked domain !

Tips & tricks:

You might have seen that the tutorials above haven't covered the whole configs and stuff ! Here are some tips & tricks that what are they here for !

  1. Changing port: Yes, it's not always easy to use port 80 ! It's often binded... CHange the value of "port" in the config and set it to your new port and it will work fine !

  2. Errors and index: Change index, 404 and 403 to customize even more you're website ! Change them to customisze even more your website ! 404 is when a page is not found, 403 is when the user is not allowed to view this page. You can change them to make it even more customisable !

  3. Denied pages: Sometimes, you don't want the user to see some pages so add them to the denied page array to block them from being viewed ! Example: ```yaml denied-pages:
    • website/path/to/file ```

  4. Set the server still open even if the server's stop: Set the KillOnShutdown to false. What does that mean? Simply that the websites and domains will still remain even if the server is offline. BUT remember that those issues can happend: Server got stuck on disable: Problem at starting. Unable to stop it on hoster. So DON'T MODIFY IT IF YOU'RE NOT USING A VPS OR LOCALLY. Command to stop it :
    Windows: batch FOR /F "tokens=5" %P IN (\'netstat -a -n -o ^| findstr<PORT>') DO TaskKill.exe /F /PID %P MACOSX and LINUX: bash kill -kill `lsof -t -i tcp:<port`


With 1.6, API has been introduced with many ways to customize and filter requests to your website and interaction with your server.

Pocketmine, players, plugins, and levels variables with infos

First feature of the API is to get default infos about pocketmine or any plugin, players, or levels.
This allow recognition from the webserver of the server.
- Pocketmine infos are located at $POCKETMINE["info"] - Players infos are located at $PLAYERS["name of the player"]["info"] - Levels infos are located at $LEVELS["name of the level"]["info"]; - Plugins infos are located at $PLUGINS["name of the plugin"]["info"]

That being said, take a look at saved variables:

# Pocketmine:
# Plugins:
# Players:
# Levels:
Passing and getting "arguments" to the thread.

Second API features are variables that you can pass to the webserver. Variables will be passed as $_PLUGINS["name"]["id of the variable"].
To pass an argument, add this line to your code. php $this->getServer()->getPluginManager()->getPlugin("Online")->setArgument($this, "id of the var", $varToPass); You can see them by adding this line. php $args = $this->getServer()->getPluginManager()->getPlugin("Online")->getArguments($this); This gives you the ability to show custom things related to the server on the files.

Please note that all variables passed (default & customs) are refreshed every 10 seconfs.

Custom handlers.

This is the most powerfull way to customize your webserver.
Custom handlers are PHP files that are executed each time a request to the server is done.
To add a custom handler, create a new PHP file into your plugin src and add this line of code to your main file: php $this->getServer()->getPluginManager()->getPlugin("Online")->addHandler(&#95;&#95;DIR&#95;&#95; . "/handler.php"); You can also see all the handlers by doing: ```php $handlers = $this->getServer()->getPluginManager()->getPlugin("Online")->getHandlers();


That's it so I hoope you will enjoy my plugin !

(I know that @Falk created a plugin called Volt that does same but this plugin works in a completly different way (that make a lot less laggy and a lot less heavier in space !) and it's fully coded by myself in PHP7)

Name: Online
Author: Ad5001
Version: 1.6
Api: 2.0.0, 3.0.0, 3.0.0-ALPHA1, 3.0.0-ALPHA2, 3.0.0-ALPHA3
Description: You're own website, on PocketMine.'
Main: Ad5001\Online\Main
Téléchargements: 22

Veuillez noter que nous comptons le nombre de téléchargements anonymement :).

UnexpectedValueException: Cannot change stub, phar is read-only in /var/www/ Stack trace: #0 /var/www/ Phar->setStub() #1 /var/www/ build_phar() #2 {main}