PerWorldPlugins

PerWorldPlugins


PerWorldPlugins

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!

Configuration

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.

Developers

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:

Before: (incompatible)

SimplePluginManager spm = (SimplePluginManager)Bukkit.getServer().getPluginManager();
Field scmF = spm.getClass().getDeclaredField("commandMap");


After: (compatible!)

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

  1. Download PerWorldPlugins.
  2. Place PerWorldPlugins.jar into your plugin folder.
  3. Start up (or restart) your server.
  4. PerWorldPlugins should have created a folder, called "PerWorldPlugins". Go in there, and edit the configuration file. (server\plugins\PerWorldPlugins\config.yml)
  5. Type /pwp reload in-game, and enjoy the plugin!

Video Tutorials/Showcases

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!
  • USE JAVA 7 UPDATE 60 OR HIGHER WHEN USING PWP!
  • Because it injects a customized PluginManager into the Bukkit core, PerWorldPlugins will appear during errors. This does not mean that PWP is the issue. Make sure that you can read stack traces well enough to determine whether or not the issue is from my end.

Benefits

  • 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.

Downloading


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.

Commands


/pwp version - Displays the version of the plugin.

/pwp reload - Reloads the config.

Permissions


pwp.admin - Gives access to reload and view the plugin's version.

Developer's Server

Shameless self-advertising! If you want to join Incomprehendable's Minecraft server, you can do so below!


Sponsors


MylesC:
HostHorde.com

Incomprehendable:
GetNodeCraft.net

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of TheUntoldLyric TheUntoldLyric Feb 13, 2014 at 22:44 UTC - 0 likes
    @Incomprehendable: Not entirely sure where you're seeing 1.7 in that short log I sent you(Even Ctrl-F'ing "1.7" or 1_7).
    But here, here is a full bootup log with the 1.6.4 version.
    Keep in mind, PWP itself doesn't error out. The other plugins however do error out when PWP is enabled. If I take out PWP, the other plugins work fine.
    http://pastebin.com/BuKr316Q

    Those should be the exact same errors you saw earlier, as I stated before, I was already using the 1.6.4 version.

    And yes, I am aware SOME of my plugins are 1.7 versions, they seem to work anyway so I keep them that way.
    And no, those 1.7 plugins are not the only plugins that are erroring out. So it shouldn't be a problem that my other plugins are 1.7.
    In fact, roughly the same error happens when I download the 1.6 version of those plugins and yes, I've tested it.

    I repeat again, that I am, in fact, using the 1.6.4 version of PWP, as you can see here: v1.1.0, which is the 1.6.4 version.
    And I also repeat that PWP is infact causing the plugins to crash, because the plugins work fine without PWP, no errors or anything.
    If you believe it's version compatibility, tell me what you want me to do and I'll send you a log of that aswell.

    The plugins are probably just not compatible with PWP, this is why I'm asking if there is some way I can maybe decompile the plugins myself and make them compatible, and how I should go about doing this.


    Nevermind...
    I didn't realize I was using mcore, which conflicts horribly with PWP.
    It's all good now, thanks for your patience.
    Last edited Feb 13, 2014 by TheUntoldLyric
  • Avatar of Incomprehendable Incomprehendable Feb 13, 2014 at 21:50 UTC - 0 likes

    @TheGamer603: Go

    You can't limit PWP.

    @TheUntoldLyric: Go

    Your error log shows that it occurred on the 1.7.2 version. Please use the version appropriate for your server.

  • Avatar of TheUntoldLyric TheUntoldLyric Feb 13, 2014 at 12:47 UTC - 0 likes

    I have been using the 1.6.4 version, that's where the errors came from.
    I've also tried the 1.6.2 and 1.7 versions, just in case. In all cases the same error appears. I still haven't fixed it, any advice?

  • Avatar of TheGamer603 TheGamer603 Feb 13, 2014 at 05:49 UTC - 0 likes

    My AuthMe plugin doesn't work with this plugin. I cannot login when i join game. It says unknown command. It's because plugin is disabled in that world. But in config i've set that this plugin works in specific world. So plugin might have a glitch or something. Please let me know how to fix it. I would really like to use this plugin for my server. :)

  • Avatar of Incomprehendable Incomprehendable Feb 13, 2014 at 01:46 UTC - 0 likes

    @TheUntoldLyric: Go

    Use the 1.6.4 version of PWP.

  • Avatar of TheUntoldLyric TheUntoldLyric Feb 11, 2014 at 22:35 UTC - 0 likes

    It appears this breaks a small handful of plugins I am using.
    Is there any way to get compatibility with them?

    http://pastebin.com/dd0xPJk6

    If it's up to the plugin auther, then is there a hackish way to tinker with the code myself to make it compatible?
    I'm using 1.6.4, I really don't want to update and break a ton of plugins I am relying on, so if I need to make some changes myself, I'd be fine if someone just pointed me in the right direction on how to do it myself.

  • Avatar of Incomprehendable Incomprehendable Feb 11, 2014 at 22:28 UTC - 0 likes

    @AirstarAirliners: Go

    None, sorry.

  • Avatar of AirstarAirliners AirstarAirliners Feb 10, 2014 at 14:16 UTC - 0 likes

    @Incomprehendable: Go

    Any idea when there will be a release?

  • Avatar of Incomprehendable Incomprehendable Feb 09, 2014 at 16:17 UTC - 0 likes

    @NathanTheDragon: Go

    Already did. The developer of MCore is working on the issue.

  • Avatar of NathanTheDragon NathanTheDragon Feb 09, 2014 at 04:13 UTC - 0 likes

    So how about an update on the MCore compatibility thing? Would be nice to know things :)

Facts

Date created
Jun 12, 2013
Categories
Last update
Mar 01, 2014
Development stage
Release
Language
  • enUS
License
Public Domain
Curse link
PerWorldPlugins
Downloads
15,110
Recent files

Authors