Inactive [MECH] MobRepellent v0.7.2 - Build a structure that stops mobs from spawning in an area [1.2.3-R0.2]

Discussion in 'Inactive/Unsupported Plugins' started by WillPall, Aug 27, 2011.

  1. Offline

    WillPall

    MobRepellent allows players to construct "repellers" that will prevent hostile mobs from spawning within a certain distance. This is useful for cities and other settlements where mass amounts of torches are not aesthetically pleasing and cannot guarantee that mobs won't spawn.
    Get it!

    Download v0.7.2 for CB-1.2.3-R0.2 - Source (github)
    Download the sample config.yml file (place it in your plugins/MobRepellent directory)

    How do I use MobRepellent?

    Simply drag the MobRepellent plugin .jar file into your Bukkit /plugins directory. MobRepellent will automatically create all the necessary files.
    Once the plugin is loaded, to create a repeller you'll need 7 iron, gold, or diamond blocks. First, using five blocks, construct a shape that looks like a plus sign (+) parallel with the ground. Next, place the remaining two blocks directly above the block in the center of the plus sign. See these:
    How to Construct the Base
    [​IMG]
    Completed Structure
    [​IMG]
    After the repeller is constructed, no hostile mobs will spawn within a cuboid radius of the base of the repeller. For instance, if the radius is 50 blocks, it will repel in a 100x100x100 cube centered at the base of the repeller. Neutral mobs are not blocked by default, but this can be configured in the config.yml. MobRepellent does not affect mob spawners, hostile nor passive. To remove the repeller, simply remove one of the blocks that is part of the repeller.
    Default repeller types and radii:
    • Small - Iron block - 20 block radius
    • Medium - Gold block - 30 block radius
    • Large - Diamond block - 50 block radius
    Console and Admin Commands

    All console commands default to OP-only.
    /mrlist - Lists all currently loaded repellers
    /mrreload - Reloads the configuration file
    /mrremove [repellerNumber] - Removes the selected number
    as found in the list given by /mrlist. Does
    not remove the repeller structure.
    /mrremoveall - Removes all currently loaded repellers. Does
    not remove the repeller structure.

    Permissions

    MobRepellent now contains support for Bukkit permissions. Using a plugin such as PermissionsBukkit will allow you to take full advantage of the new functionality.
    mobrepellent.* - Access to all permissions

    mobrepellent.list
    Default: OP-only
    Allows use of /mrlist command

    mobrepellent.reload
    Default: OP-only
    Allows use of /mrreload command

    mobrepellent.remove
    Default: OP-only
    Allows use of /mrremove command

    mobrepellent.removeall
    Default: OP-only
    Allows use of /mrremoveall command

    mobrepellent.create
    Default: all players
    Allows player to create a repeller

    mobrepellent.destroy
    Default: all players
    Allows player to destroy a repeller

    Configuring MobRepellent

    You can configure MobRepellent to use almost any block type instead of the default blocks. You can also configure MobRepellent to use any radius to repel mobs, and select which mobs to repel and which to ignore.. On the first run of the plugin, MobRepellent will automatically create a config.yml file with the default values. See this sample config.yml file for more information.
    Todo list

    • Custom repeller shapes (admin defined structures)
    • Possibly add visual cue that repeller is working. Possibly with the top block on fire (as suggested by darklust ). This will be configurable and probably default to off.
    • Possibly add configuration option to make repellers require fuel.
    Known Issues

    • TNT and creeper explosions can destroy repeller structures without destroying the actual repeller functionality
    • Permissions allow players to "construct" an inactive repeller, but not destroy it
    Changelog

    Version 0.7.2
    • Added configuration option to allow spawning below a repeller, regardless of its radius
    Version 0.7.1
    • Configuration files are now fully functional, although the format has changed (old format config files will automatically update to the new format). See the sample config.yml on GitHub for more info.
    • Reloading config file while in-game is now fixed
    • Damage values for blocks (e.g. orange wool) now works using '@' in the config file
    • Many fixes to spawn-blocking (squid, villagers, golems, snowmen, spawner eggs, etc)
    Version 0.7.0
    • Basic functionality restored for CraftBukkit 1.2.3-R0.2 (#2060)
    • Removed glowstone from restricted blocks, added mycelium, end stone
    • Introduced small configuration file bugs (must stop server, edit file, restart server for changes to take effect)
    • Introduced (re-introduced?) bug with squid being blocked from spawning, regardless of configuration options
    For previous versions, see the README file.

    Notify me of any bugs or suggestions you have. I'd like to make this as useful as possible.
     
    columb, mps1969 and FuturaEX like this.
  2. Offline

    Floyd79

    Well it seems that normal members (people not in op.txt) can destroy the repellents even though I have only given them permission to create them.
     
  3. Offline

    WillPall

    Ah yes, I can see how a combined repeller/attracter could be useful. In that case, I may add it to this plugin. No reason to have two plugins that provide the same functionality with only slight differences.

    Which permissions plugin are you using? The permissions default to allowing all members to create and destroy. You'd need to explicitly remove the ability to destroy repellers from non-admins.
     
  4. Offline

    AlexBrahhh

    im using permissionsEx
     
  5. Offline

    Floyd79

    I'm using bukkit perms and I only added the create node to non admins.
     
  6. Offline

    WillPall

    Bukkit permissions requires a plugin to use. You'll have to remove the permissions for destroying. It should go something like:

    Code:
    default:
        mobrepellent.destroy: false
    Sorry, I was replying to Floyd79.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 19, 2016
  7. Offline

    AlexBrahhh

    ohk thats cool
     
  8. Offline

    stan_fear

    I'm was thinking about one thing :
    if you make (by any way) your repeller only act on Mobs movement when they are in the repellent zone, you might easyally prevent mobs from beeing in the repellent zone.
    Then no big CPU uses on the serveurs, because you only change mob's moves when they are in the repellent zone

    for short : you don't prevent them(the mobs) from beeing in the repellent zone, you make them left this one when they are in !

    this might work, doesn't it ?
     
  9. Offline

    WillPall

    Unfortunately, to check if a mob is in the repeller zone, I still have to go through all the mobs currently loaded on the server every tick. This is what I meant by huge CPU usage.

    Also note: to get a quicker response, comment on BukkitDev. I will not be keeping up with this thread in the future.
     
  10. Offline

    rtcabooservb

    :l Guess the developer went AWOL. I wanted this plugin updated too.
     
    Phil3004 likes this.
  11. Offline

    DonDav

    Are you still working on it and is there an ETA for the new version?
     
  12. Offline

    WillPall

    Just checking in over here. As I said before, I'm not really checking this thread.

    Sorry about my absence. I've released a development build which is mostly stable (a few bugs with the configuration file), and will release a completely stable version soon. You can get it and more information on the BukkitDev page: http://dev.bukkit.org/server-mods/mobrepellent/

    Thanks for hanging in there,
    WillPall
     
  13. Offline

    WillPall

    New Version 0.7.1!

    Changelog
    • Configuration files are now fully functional, although the format has changed (old format config files will automatically update to the new format). See the sample config.yml on GitHub for more info.
    • Reloading config file while in-game is now fixed
    • Damage values for blocks (e.g. orange wool) now works using '@' in the config file
    • Many fixes to spawn-blocking (squid, villagers, golems, snowmen, spawner eggs, etc)
    And I guess I will start checking this thread for the foreseeable future. I'm wondering if we're ever going to fully switch to BukkitDev or if plugin authors will constantly need to update in multiple places.

    As always, let me know of any bugs or feature suggestions. The TODO list is still very much where I want to take this plugin now that it's up-to-date.
     
  14. Offline

    eminem457

    I Got an error while trying to do the perrmison.yml
    19:38:31 [WARNING] Server permissions file permissions.yml is not valid YAML: mapping values are not allowed here
    in "<reader>", line 2, column 12:
    Default: OP-only
    ^
     
  15. Offline

    WillPall

    I'm not totally sure that is an error with my plugin. Can you post your permissions.yml (or at least a subset of it)? I let Bukkit handle the permissions, so I don't know what could be wrong. Unfortunately, I can't test anything at this moment since I'm not near my development computer.
     
  16. Offline

    eminem457

    I already got it fixed
     
  17. Offline

    WillPall

    Great! What was the problem, if you don't mind?
     
  18. Offline

    Riakage

    will it still work if i place it in the ground and cover it with dirt? just so its not seen, but right below the surface?
     
  19. Offline

    WillPall

    Yep! As long as the structure is built (it has to be upright, like in the images), you can put it anywhere. You can bury it 20 blocks underground and cover it in dirt if you want.
     
  20. Offline

    Riakage

    AWSOOOME!! GETTING IT RIGHT NOW!! :cool:
     
  21. Offline

    Dracasis

    May I add the suggestion to add a setting to allow the radius to be from the base up?
    Currently it prevents mobs in all directions, I'd like an option not to have it effect mobs in negative Y direction. Basically I'd like to put the structure on the ground and have it only block mobs at its base up and out without preventing all mobs underground and in caves from spawning. As it is right now all my spawn structures are being placed 50 blocks in the air so people dont get a free ride exploring all the tunnels below the town areas =P

    Also, I have it set so only admins can create and destroy the structures because I dont want greedy people to steal diamond blocks but if the blocks are placed in this structure by someone else they get locked as an inactive mob repellant that can only be destroyed by an admin. If theres a way to allow users to destroy these structures if they are not being used as mob replants but prevent them from destroying them if they are, that would be helpful ^_^

    Awesome mod either way =D

    Oh, also, I found a bit of a bug. Through TNT or creeper explosions you can destroy the blocks indirectly while leaving the field intact. Certainly a way to grief the system D=

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 19, 2016
  22. Offline

    WillPall

    Thanks a lot for the suggestion and bug reports. Adding a "ground-up" option shouldn't be too difficult, and those are bugs that should definitely be fixed. I'll work on those tomorrow and try to get a new version up soon.

    Alright, I've added a configuration option for the ground-up repellers. I didn't get a scientific chance to test it, but from what I can tell, it works fine. Let me know if you see any problems.

    As for the bugs, those will take a bit longer. Expect something later tomorrow.

    And thanks for the help,
    WillPall

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 19, 2016
  23. Offline

    JewSanta

    Glad to see the updates will!
     
  24. Offline

    columb

    Weird error spammed my console
    Show Spoiler
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:163)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:163)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:163)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:163)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:163)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:178)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:168)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:153)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:178)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)
    at mobrepellent.MobRepellentBlockListener.addToSet(MobRepellentBlockListener.java:158)

    Also, any way of multiworld support? To disalbe it in worlds like creative...
     
  25. Offline

    WillPall

    I've fixed creepers, endermen, ghasts, etc. not correctly destroying repellers and am adding a configuration option to stop them from destroying the blocks at all. I'm going to wait to release this until I fix the other greifing bugs. Still working on the permissions problem and trying to find a good way to block griefing with TNT. I was thinking just a configuration option to make repellers immune to TNT. What do you think?

    I haven't been able to replicate your bug. It's a Java exception, but without more info I don't know what is causing it. I'm currently working on a complete rewrite of the plugin though, so unless it's causing you major headaches I'm not going to devote too much time to it. As for multiworld support, I assume you mean per-world configuration options? That is a good idea. I'll add it to the list.
     
  26. Offline

    Dracasis

    Im totally fine with having the structures be completely immune to everything but being mined with a pickaxe. If anything permissions to make them immune to everything but the owner/admin's destruction would be preferred =D
     
  27. Offline

    columb

    This error appears when someone in my creative world playing around with big creations made of diamond/iron/gold blocks with WorldEdit. It's spams console and make massive lag.
     
  28. Offline

    cobrasvt1999

    I have also been experiencing this issue... It has cause some headache. but none that cant be lived with....

    But one thing I have noticed, and i have no idea whats causing it, is that sometimes the repellers just don't seem to be working at all. i have armys of mobs spawning in the very room that the repellers is placed in.
     
  29. Offline

    WillPall

    Alright, thanks for the info. I understand now about the creative structures built out of repeller blocks. I imagined this would happen, and that's why I usually restrict certain types of blocks (stone, for example, will create huge lag if an entire mountain is turned into a repeller). Since I originally created this plugin before "Creative" was introduced, I ignored the possibilty that someone could create a massive gold block structure, or something to that effect. I'm working on a solution.

    As for the repellers not working at all, this reminds me a lot of a bug that creeped up when I first created the plugin. At the time it was a bug in Bukkit, and I'm not sure that bug was ever fixed. I'll do some extensive testing and try to figure out your problem. If you have any specific info (like the problem only happens when you run far away from the repeller and then come back?), let me know here.

    And as has been said before, I'm working on a rewrite of the plugin. A lot of these issues are caused by the fact that the plugin has been duct-taped to match the new BukkitAPI. Hopefully with the new rewrite (look for version 1.0), these bugs won't be an issue anymore.
     
  30. Offline

    cobrasvt1999

    Well.... The only time i seem to be having the problem is when I move away from the area and return... so that may just be it
     
  31. Offline

    Dracasis

    Any chance you could give me a list of monster entities (or add them to your example config)? I need to allow enderdragons to spawn for another plugin and its giving me an error for things like magma cube, spider jockey and pig zombie. Alternatively you could add a setting to 'use as whitelist' that a lot of other mods do so it blocks all hostile mobs except those on the list.

    Thankies!
     

Share This Page