NoItem
NoItem v3.1.0 - DERP.
What does it do?
NoItem aims to allow server admins to restrict almost any aspect of players actions via permissions. Things such as placing and breaking blocks, interacting with levers and buttons, opening chests and furnaces, even breeding animals can be controlled! There are of course other things that can be restricted as well. For a complete list, check the wiki!
Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk.
Downloads:
http://dev.bukkit.org/server-mods/noitem/files/
Beta/Development builds may contain bug fixes, but also may contain new bugs
So before you report a bug, check and see if a new build has fixed it!
Feature List
NoItem can restrict the following:
- Crafting certain items
- Holding certain items
- Having certain items
- Brewing certain potions
- Cooking certain items
- Picking up certain items
- Dropping certain items
- Placing certain blocks
- Breaking certain blocks
- Wearing certain armors
- Interacting with certain items / entities in general
- Left clicking certain items / entities
- Right clicking certain items / entities
- Using certain tools. (right click / left click / in general)
Commands
| Command | Permission | Description |
|---|---|---|
| /noitem | noitem.admin | Prints current NoItem version |
| /noitem reload | noitem.command.reload | Reloads the configuration |
| /noitem debug toggle | noitem.command.debug.toggle | Toggle debugging |
| /noitem debug dump | noitem.command.debug.dump | Write debug file to the servers base directory |
Videos
FAQ
Q: How do I...
A: Check the wiki! If you are still confused and have tried to figure it out, ask in the comments.
Q: There is an error in the console or something is not working as expected
A: Submit a bug report to github! (Link above) DO NOT post the error in the comments section! Also be sure to include the error in your report.
This plugin utilises Hidendra's plugin metrics system, which means that the following information is collected and sent to mcstats.org:
- A unique identifier
- The server's version of Java
- Whether the server is in offline or online mode
- The plugin's version
- The server's version
- The OS version/name and architecture
- The core count for the CPU
- The number of players online
- The Metrics version
Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true.
NoItem 4.X - It's Aliiiveeee!
NoItem 4.X is currently in development and is not finished. There will be bugs, there will be a lack of certain features, there will be questions.
Here is the link to the information page: https://github.com/nala3/Noitem4/wiki
Here is the link to the development builds: http://ci.worldoftomorrow.net/ (Also on the wiki page)
Submit bug reports to the github bug tracker.
Currently known issues are:
- None - Please report any found!
Currently Implemented Features (also their permissions)
- break
- place
- craft
- open
- cook
- pickup
- drop
- hold
- interact.object
- interact.entity
- use - is buggy and needs refinement
Permissions format:
- noitem.action.<action>.<object>[.secondaryValue]
- noitem.object.<object>[.secondaryValue].<action>
- Asterisk values are supported for specific actions and objects. not for all actions or objects at once. (e.g. noitem.action.* is not supported, but noitem.action.break.* is)
I am open to suggestions on what other action to implement on top of the ones I am currently working on.
A wild
button appears!
You use "CLICK". Its super effective!
-
View User Profile
-
Send Message
Posted Jan 6, 2013ok, i have the new buikld i have do all of the permissions but why does it still let players without the permissions place and break ?
-
View User Profile
-
Send Message
Posted Jan 5, 2013@nala3
Keep in mind, i run NoItem in whitelist mode, which isn't your suggested use. So my use case might be an outlier in your target market. That being said, you are correct when you say "it will only check them all if the player has none of them," since players only have the permissions explicitly granted in whitelist mode.
Re-adding allitems would be helpful as a matter of convenience for me, but if you're saying that it would be a performance benefit, than certainly do please.
I tend to use only the item ID for things in the config file, so I'm good with that. The only area i might use entities is for nointeract with farm animals. But to use nointeract in whitelist mode, i'd need to have all 3 nointeract nodes for EVERY item and entity in game. That's insane. I tried:
noitem.nointeract.*: true
noitem.nointeract.left.*: true
noitem.nointeract.right.*: true
noitem.nointeract.mushroomcow.*: false
noitem.nointeract.left.mushroomcow.*: false
noitem.nointeract.right.mushroomcow.*: false
noitem.nointeract.sheep.*: false
noitem.nointeract.left.sheep.*: false
noitem.nointeract.right.sheep.*: false
noitem.nointeract.pig.*: false
noitem.nointeract.left.pig.*: false
noitem.nointeract.right.pig.*: false
noitem.nointeract.chicken.*: false
noitem.nointeract.left.chicken.*: false
noitem.nointeract.right.chicken.*: false
noitem.nointeract.cow.*: false
noitem.nointeract.left.cow.*: false
noitem.nointeract.right.cow.*: false
But players were still able to kill the animals. I should note that this method works with
noitem.nointeract.96 false
noitem.nointeract.left.96.*: false
noitem.nointeract.right.96.*: false
So idk why it's not working with entities.
This post is long enough... lol ;)
-
View User Profile
-
Send Message
Posted Jan 5, 2013@lANTHONYl
I would think this would also be the case but I was using NoItem back in 1.2.5 and, while it had a few less features, the cpu load was pretty much non-existent. There's definitely something fishy going on in the code beyond redundancy, permissions checks don't seem to really eat up a lot of CPU cycles normally. I have a rather large list of general permissions as well as a large list of permissions for the Heroes plugin specific to individual classes. With NoItem in 1.2.5, there was no noticeable increase in CPU use even with 15-20 people on at once. Now, one person breaks a single block and the CPU skyrockets.
-
View User Profile
-
Send Message
Posted Jan 5, 2013@lANTHONYl
The new builds do not check another permission if one is found, it will only check them all if the player has none of them, which now that I think about it, is probably most of the time :P
With that said, If I were to re-add the noitem.allitems node, that way you could give that node, which would be checked for first to all the people who do not have any noitem restrictions. That would at least give admins the ability to lighten the load a bit I suppose.
I could also add a config option to check for only name based, id based, or both permissions. That would be useful if you say, only used id based permissions. Of course entities would still be named...
-
View User Profile
-
Send Message
Posted Jan 4, 2013I've posted a few issues to the github issue tracker, and will likely post a forth once i finish additional testing. It involves OP permissions while in whitelist mode.
- EDIT -
I'm going to go out on a limb here and suggest that the lag is caused by redundancy. Consider how many checks NoItem requires for a single action... Can the player use the item, can they interact with the item in hand and the one they are clicking on, can the user break/place the item.
A specific example: Harvesting wheat while holding a hoe.
noitem.nohold.290.*
noitem.nouse.290.*
noitem.nouse.left.290.*
noitem.nointeract.290.*
noitem.nointeract.left.290.*
noitem.nointeract.59.*
noitem.nointeract.left.59.*
noitem.nobreak.59.*
One person working a field can throttle the cpu upto ~50% while breaking wheat. Heck, walking around my test server just punching the dirt as i walked throttled the cpu at ~50%
The idea of right and left click support is nice in theory, but in practice... it triples the number of nodes required and the number of checks to be done.
I'm sure this sounds more harsh than i'm intending, so i'm sorry for that. Maybe an option in the config to disable left/right click checks?
-
View User Profile
-
Send Message
Posted Jan 4, 2013@nala3
My initial thoughts were that it might have something to do with the vault support, but 3.0.0 has the CPU load problems and that didn't have vault support. Maybe it's something to do with the added nointeract node? That was something you added in 3.0.0, correct?
And absolutely! I love helping to test. I don't know what I'd do without this plugin! I just want to see it alive and well! :D
-
View User Profile
-
Send Message
Posted Jan 3, 2013@Tehkiah
Well at least there is improvement. Pressure plates are being worked on, and hopefully I will have a solution for that soon.
Thanks to you and the others for all your help in finding and fixing problems :)
-
View User Profile
-
Send Message
Posted Jan 3, 2013@nala3
It seems like just breaking blocks is the major issue. I haven't tried messing with pressure plates yet so I can't speak on that. As soon as a player starts breaking blocks the CPU load jumps to 40% in the latest build. In the previous one it was about 80%. I'll keep testing when I can!
-
View User Profile
-
Send Message
Posted Jan 3, 2013@Tehkiah
Have you found that any one thing puts more load on the server than others?
-
View User Profile
-
Send Message
Posted Jan 3, 2013@nala3
Yeah the CPU load is definitely a little better in the dev build but still pretty insanely high overall! After doing some serious testing, it seems like this has been a problem since 3.0.0. I'm not sure if that helps you track down the issue!
-
View User Profile
-
Send Message
Posted Jan 3, 2013@lANTHONYl
Okay, well I will look into the issue, if you could create a support ticket on github that would be greatly appreciated :)
-
View User Profile
-
Send Message
Posted Jan 3, 2013@nala3
Having to specify .right and .left triples the number of nodes required. I'm using whitelist mode and my permissions.yml file is already over 1500 lines. It's kinda ridiculous. I need to figure out a more sane way to manage class restrictions... Maybe not use whitelist mode and deny things. Originally, using whitelist was more appropriate for my use case... I might need to reconsider that. I'll figure it out eventually. Just frustrated and ranting atm... Had to drop Heroes and switch to Jobs for our class system. That is causing a headache. And at the same time, NoItem changes. Just got hit with a 1 - 2 punch and am all out of sorts. </rant>
-
View User Profile
-
Send Message
Posted Jan 3, 2013@lANTHONYl
allitems node has been removed, I suppose noitem.nointeract.* should include right and left, but is it really that big of a deal that it doesn't? xD It's just 2 extra nodes, adding right and left would complicate things a lot more. NoUse also would have the same limitation.
As for the tool.yml question; that file is used solely for the nouse permissions nodes to avoid checking if a player is allowed to use a flower for instance xD So yes, I suppose you could add things to the "other" section that you wanted nouse to work with.
-
View User Profile
-
Send Message
Posted Jan 3, 2013I grabbed the dev build just to make sure. Did some additional testing. In order for someone to interact with something, they need noitem.nointeract.* noitem.nointeract.right.* noitem.nointeract.left.*
I assumed that noitem.nointeract.* would include both right and left. I wonder if the same is true for noitem.nouse i'll have to see.
-
View User Profile
-
Send Message
Posted Jan 3, 2013in the tools.yml file, are we able to add additional things under the Other node? Thinking maybe the dyes and some others.
- EDIT -
Has the noitem.allitems node been removed? Or maybe it's that running in whitelist mode is broken? idk i'm still testing so we'll see...
-
View User Profile
-
Send Message
Posted Jan 3, 2013@Tehkiah
Okay, try a new version from the bleeding development job. http://ci.worldoftomorrow.net/job/NoItem-Dev/37/ It may be slightly better, but I am still working on a fix for the pressure plate thing.
-
View User Profile
-
Send Message
Posted Jan 3, 2013@Tehkiah
I am trying some different things to optimize, but I suspect there is one main cause somewhere. I don't know if it is recent, but I would guess it could be anywhere in the 3.0.X line. @lANTHONYl
Ahh, well if only there were a way to safely move the player off of the pressure plate xD
-
View User Profile
-
Send Message
Posted Jan 2, 2013@nala3
Damn, I'm not really a programmer but I feel a bit of your pain working on a heavily modded and plugin filled server development. Finding the cause of these things is a nightmare.
Do you know if this is a recent development? I was going to try out 3.0.0 and 3.0.1 to see if they were okay but I figure you might know better. Problem is I can't go too far back because I need that vault support haha
-
View User Profile
-
Send Message
Posted Jan 2, 2013@nala3
Run that test while you stand on a pressure plate. Obviously deny permission to interact with pressure plates. I noticed this as well. That particular example will drive the cpu to full load.
-
View User Profile
-
Send Message
Posted Jan 2, 2013@Tehkiah
Yes, I am aware of the issue. I can not seem to find the problem though :/ It is very hard to do per-method profiling. So what I have been doing is timing methods one by one to see if I can pinpoint the problem, at first I thought it was permissions but then I tested how long it took to check permissions, and it was pretty good. Here are timings of the entire checking process for picking up, dropping, and interacting. http://pastebin.com/T83LXnaz As you can see, none of them take a ridiculous amount of time in my testing. However I will keep looking for the cause. Next thing to test is the messaging methods..