Limit plugins to certain worlds!
Plugin Creator: MylesC
Plugin Maintainer: Incomprehendable
What does this plugin do, and how does it work?
PerWorldPlugins will inject the Bukkit core with its own PluginManager and CommandMap, allowing you to control which plugins receive the events needed to function, and more importantly, where they receive those events. Using this plugin, you can block plugins in certain worlds. If you're hosting a hybrid server, you're probably overflowing with excitement. Sick of people using mcMMO in your minigames? Block mcMMO in the minigames world! Don't like LWC in your hardcore world? Block that, too!
This is an example of the config
limit: WorldEdit: - world - world_nether ModReq: 
The configuration of PerWorldPlugins is simple and easy. Referring to the example above, WorldEdit would only work in the worlds 'world' and 'world_nether'. However, ModReq will work in any world.
REMEMBER: If a plugin has no world list, it will work in every world.
exempt-login-events is a self-explanatory feature. This controls whether or not PerWorldPlugins will allow login events to work in every world, no matter the limits. This is highly recommended to be true. It will cause some memory leaks. For example, most minigames plugins will save a player's inventory, so when they log out and log in, their inventory will be returned. If they return to a world that blocks the minigames plugin and this boolean is set to false, their inventory will be lost. Forever.
blocked-msg is also self-explanatory. This is just the string that is sent to players when they try a command from a plugin that is blocked in their current world. And no, there was no way to explain that easier.
You can also use these variables in the string:
- %player% - The name of the player receiving the message
- %world% - The name of the world that the player is currently in
- %plugin% - The name of the plugin that is blocked in the world.
API: Currently we don't support one. If you want one, suggest the features you want!
If your plugin is incompatible, it is mainly because the plugin might extend to SimplePluginManager. PerWorldPlugins will not extend to that class due to its protection; how can you expect us to do so without some more l33t hacky code manipulation?
Here's an example on how to fix it:
SimplePluginManager spm = (SimplePluginManager)Bukkit.getServer().getPluginManager(); Field scmF = spm.getClass().getDeclaredField("commandMap");
PluginManager pm = Bukkit.getServer().getPluginManager(); Field scmF = pm.getClass().getDeclaredField("commandMap");
Done! That's it. Even as a bonus, if someone decides to make another PluginManager, your plugin will already work with it.
Installation and Use
- Download PerWorldPlugins.
- Place PerWorldPlugins.jar into your plugin folder.
- Start up (or restart) your server.
- PerWorldPlugins should have created a folder, called "PerWorldPlugins". Go in there, and edit the configuration file. (server\plugins\PerWorldPlugins\config.yml)
- Type /pwp reload in-game, and enjoy the plugin!
Bugs and Issues
- PerWorldPlugins may break another plugin on reload. We haven't found any yet, but the cause of this is due to strange event registering. If it happens, just restart the server.
- Some plugins may require a server reboot to limit. As above, this is caused by how that plugin handles its events.
- We will probably never support plugins that use methods such as getAllPlayers() because we can't necessarily control that. Plugins that rename items may also be incompatible.
- World-management plugins, like Multiworld or Multiverse, will cease to function properly if you limit them. If they do, do not limit them!
- Fix up and prevent certain exploits and unfair tactics in places. (like the mcMMO/Minigames example)
- Cut down on server lag; some plugins like SurvivalGames check player movement, which fires everywhere, costing you RAM and CPU usage.
- Add more features and plugins into your server.
You can find the GitHub source here - https:github.com/MylesIsCool/PerWorldPlugins
You can download stable builds by looking at the Files tab at the top.
/pwp version - Displays the version of the plugin.
/pwp reload - Reloads the config.
pwp.admin - Gives access to reload and view the plugin's version.
- Date created
- Jun 12, 2013
- Last update
- Mar 01, 2014
- Development stage
- Public Domain
- Curse link
- Recent files
- R: PerWorldPlugins v1.1.2 (fixed) for CB 1.7.2-R0.3 Mar 01, 2014
- R: PerWorldPlugins v1.1.2 for CB 1.7.2-R0.3 Feb 22, 2014
- R: PerWorldPlugins v1.1.1-(wow-i'm-not-smart) for CB 1.7.2-R0.2 Jan 25, 2014
- R: PerWorldPlugins v1.1.1 for CB 1.7.2-R0.2 Jan 24, 2014
- R: PerWorldPlugins v1.1.0 for 1.6.4 Sep 14, 2013