Limited Creative
Limited Creative
prevents any way of creative player to pass items to survival-mode, without need of a separate creative-world.
Overview
Scenario: You're starting your first survival server, just finished the spawn, the first players join and one asks: "hey sup, g1v3 me cr3at1v3. i made u teh imba *whatever*-building"
. Well, if you really decide to say okay to that, 5 minutes later, that players has stacks of diamondblocks, -armor and -tools in there bags. Next step? Reset your world and completely start over, which is never fun!
But Limited Creative is here to save you.
So how does Limited Creative prevents players from abusing creative-mode within your world:
- Switching back to survival? previous survival-inventory restored
- Trying to put items in a chest? denied
- Trying to drop something on the ground or hopper? denied
- Trying to put items into storage-carts or sell to villagers or similar? denied
- Using commands not intended for creative players? denied
- Using economy to sell for plugins? denied
- Wants to go anywhere in creative mode? denied
- Trying to place expensive blocks somewhere? allowed, for sure, that's what creative is for, but the block won't drop anything if destroyed in survival!
The restrictions aren't only for restricted players. I also like to have some of them as the owner. For example separated inventories: No need to rearrange your quick-bar after switching back to survival mode. No more bother because you thrown away a stack of grilled steaks for a single wool-block on switching back ;)
Or building a minecart track as op. While breaking blocks often carts, rails torches, redstone and much more fall to ground... no longer! LC prevents all that drops, or just removes them when you walk over.
Features
- Inventories-Module
- Display configured armor on creative players for visual distinction
- Remember creative inventory or not
- Separate adventure from survival or not
- Limit-Module
- prevent dropping of items in creative mode (even on death)
- prevent access to all types of chests in creative mode
- prevent usage of interactive signs (to stop economy in creative)
- prevent dealing or retrieving damage to/from other players (that means: no PvP between creative and survival player)
- blacklisting the use/create of items/blocks as well as breaking blocks
- blacklisting the interaction with selected entities
- optional prevent pick up of items in creative mode or remove items on pick up
- WorldGuard Region-Module
- that means: enable automatic creative-mode for selected players in regions you want
- blocks in creative regions never drop anything (independent who placed it or which game mode the destroyer is in)
- prevents pistons from getting blocks out of creative areas
- optional: let player switch game mode in creative-area (/lc creative/survival) without permission
- Command Blocker-Module
- While in creative mode, certain commands can blocked for users via configuration
- Either blocks simple strings or complex regular expressions
- Bypass certain parameter commands via permission
- GameMode-Permissions-Module
- Adds players to a configured permission-group as long as they are in creative
- This allows you to negate all permissions that creative players shouldn't use, like economic features
- Requires Vault and a Permission-Plugin supported by Vault
- BlockState-Module Disabled by default in config.yml
- Remembers if blocks are set by creative players
- Prevents the drop of blocks created by creative players, even if it is not in a region
- Works with pistons, tnt, item frames, falling sand/gravel and attached items like redstone/torches
- Supports MySQL and SQLite (definition form bukkit.yml)
- A tool (wood pickaxe by default; right-click) tells an op who created the block in which gamemode.
- A command (/lc bs) to modify the saved state in the database, via WorldEdit-Selections
All features are optional and can be independent disabled in config.
Utilizing the only for LC developed library plib, LC provides easy usability for admins:
- Self explaining config.yml, with every setting documented
- Full configurable from commandline/ingame commands
- Detailed command explanation for every (sub-)command (
/lc help
) - On the fly module enable- and disabling via configuration-commands
Documentation
While most of the plugin (config and commands) are self explaining, you can click on the features above for further description (incomplete). Also following some more references:
Commands
Configuration
Permissions
FAQ (Frequently Asked Questions)
Miscellaneous
Translation / Supporting the Plugin
Please help translating the plugin, by clicking on your Language at the Translation-Page. You can then enter the localized strings for you language. It should be easy to you to add some strings of your mother language. Improvements to English language is also welcome.
Also I would like to add some new Screenshots, maybe a Video. So feel free to send me what you imagine represents this Plugin.
Collecting Statistics
This plugin collects some basic statistics about the amount of servers using this plugin, as well as MCStats.
What is send: Server-Name, -Address and -Version, List of installed Plugins, LimitedCreative-Version, Count of players online. These Information aren't published and can only be seen by me, the Author (Possible).
The MCStats are complete anonymous and can be seen by everyone here.
You can disable all collection with /lc config metrics false
and /lc config save
Before doing that I please you to read further about the Metrics.
Known Problems/Bypasses/Incompatibilities
Attention: WorldGuard has its own "game-mode" flag. That flag doesn't relate to LC in any way! Be sure to use "//
region flag <id> gamemode creative
" instead of /region ...; Otherwise the LC restrictions won't affect that region.
Currently no ways to bypass restrictions as a creative player are known
as of Nov 2, 2013 (some reports are currently under evaluation)
Links/Contact/Donation
- PayPal-Donation
- Free-of-cost-Donation: Register on Dropbox and unlock me additional storage
- IRC-Chat: #[email protected]
- E-Mail / Jabber: [email protected]
- Skype: [email protected] / jascha.starke
- Suggestions/Bugs - How to Use debug for additional information
- Source on GitHub
- 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.
http://ci.ja-s.de:8080/
Special thanks to all Donators:
90$ zeshan321
50$ http://www.cosmicmc.com/ (MinecraftAllen)
25$ Suzy
5$ Punkred
<sub>Timerange: Jan. 2012 till Dec. 2013</sub>
How to handle errors/problems
I will no longer bearing huge error msgs in the comments. Make a ticket for that if you want me to react on that. If there is an error message in the comments i may delete the comment without annotation.
@GauntletBE
Inside the Config there is a section like this. http://pastebin.com/ZdVXqAGu
I have also disabled the monster eggs Just add the IDs to the list and afterward it should look like this. http://pastebin.com/enZYH4Zv
Hi is it possible to disable monster eggs from using at all? Some players van throw them from inside the creative zone to outside the creative zone and thus spamming the server.
Thanks!
@FallenWarrior03
limitedcreative.nolimit.*
permissions? :D
Limited Creative does not block people from putting items into item frames in creative, then taking the items in survival. Please fix!
Carpet on Carpet (and destroying lower carpet) this Trick works. It there trick to disable all spawn eggs? Or I have to set each one? Putting multi Hopper-Minecrafts and let them go off road. After going in GM 0 you can destroy them. (And get hundreds of hoppers). Water + Carpet does give you all carpets. Actually Carpet is not protected in any type of advanced destructions. SilverFish blocks does spawn Silvers after destruction (Even in GM1). Piston + FlowerPot / Torch / Redstone / Door / Heads give you drop of Pot/torch/redstone/doors/heads (Infinity free pots, torches, redstones, doors and heads). Put 100 sugar canes and destroy block below will give you all sugarcanes drops. This is all that I found in first try of your plugin. That seems like a lot of Missing fixes?
I'm having a slight issue getting the WorldGuard regions to work as they should with this. I tried with both just flag "gamemode creative" and "gamemode -g owners creative" but in both cases it gives anyone entering the region creative, not just the owners.
The players have no worldguard or limited-creative permissions specified, the region has no other flags besides the gamemode one, the region does have owners specified, wich also gets creative upon entering, but the problem is, everyone entering the region are set to creative.
I have likely configured something wrong, so if anyone has encountered this and found a solution, some guidance would be greatly appreciated.
I always get this message spamming my console, anyone know what it is or how to prevent it?
21.02 05:31:37 [Server] INFO [05:31:37 WARN]: [LimitedCreative] <BlockState> Extrem large DB-Queue in LC BlockState DB-Thread: 3531
Hi, I got a question. My admins on my server have the ability to use gamemode. I want them to be able to break blocks placed in any gamemode. I have groupmanager permissions. I have gave them the permission limitedcreative.blockstate.bypass. It is also set to true in my configs. But they still don't get the block they break. Any ideas?
Uploaded the message on pastebin, in the message it says something about blockstate...
http://pastebin.com/xyf65tZm
I just installed the new spigot version to my server (1.7.2 one) and my server's CPU USage went to 0% with message: OR]: net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) 8:21:48 PM CONSOLE: ERROR]:
------8:21:48 PM CONSOLE: ERROR]: Entire Thread Dump: 8:21:48 PM CONSOLE: ERROR]:------8:21:48 PM CONSOLE: ERROR]: Current Thread: Async Chat Thread - #9 8:21:48 PM CONSOLE: ERROR]: PID: 1426 | Suspended: false | Native: false | State: TIMED_WAITING 8:21:48 PM CONSOLE: ERROR]: Stack: 8:21:48 PM CONSOLE: ERROR]: sun.misc.Unsafe.park(Native Method) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.SynchronousQueue$TransferStack.transfer(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.SynchronousQueue.poll(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.lang.Thread.run(Unknown Source) 8:21:48 PM CONSOLE: ERROR]:------8:21:48 PM CONSOLE: ERROR]: Current Thread: LC BlockState DB-Thread 8:21:48 PM CONSOLE: ERROR]: PID: 114 | Suspended: false | Native: false | State: WAITING 8:21:48 PM CONSOLE: ERROR]: Stack: 8:21:48 PM CONSOLE: ERROR]: java.lang.Object.wait(Native Method) 8:21:48 PM CONSOLE: ERROR]: java.lang.Object.wait(Object.java:504) 8:21:48 PM CONSOLE: ERROR]: de.jaschastarke.minecraft.limitedcreative.blockstate.thread.ThreadLink$DBThread.run(ThreadLink.java:68) 8:21:48 PM CONSOLE: ERROR]:------8:21:48 PM CONSOLE: ERROR]: Current Thread: File IO Thread 8:21:48 PM CONSOLE: ERROR]: PID: 86 | Suspended: false | Native: false | State: TIMED_WAITING 8:21:48 PM CONSOLE: ERROR]: Stack: 8:21:48 PM CONSOLE: ERROR]: java.lang.Thread.sleep(Native Method) 8:21:48 PM CONSOLE: ERROR]: net.minecraft.server.v1_7_R1.FileIOThread.b(SourceFile:44) 8:21:48 PM CONSOLE: ERROR]: net.minecraft.server.v1_7_R1.FileIOThread.run(SourceFile:23) 8:21:48 PM CONSOLE: ERROR]: java.lang.Thread.run(Unknown Source) 8:21:48 PM CONSOLE: ERROR]:------8:21:48 PM CONSOLE: ERROR]: Current Thread: pool-10-thread-1 8:21:48 PM CONSOLE: ERROR]: PID: 82 | Suspended: false | Native: false | State: WAITING 8:21:48 PM CONSOLE: ERROR]: Stack: 8:21:48 PM CONSOLE: ERROR]: sun.misc.Unsafe.park(Native Method) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.locks.LockSupport.park(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.lang.Thread.run(Unknown Source) 8:21:48 PM CONSOLE: ERROR]:------8:21:48 PM CONSOLE: ERROR]: Current Thread: Chunk I/O Executor Thread-1 8:21:48 PM CONSOLE: ERROR]: PID: 81 | Suspended: false | Native: false | State: WAITING 8:21:48 PM CONSOLE: ERROR]: Stack: 8:21:48 PM CONSOLE: ERROR]: sun.misc.Unsafe.park(Native Method) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.locks.LockSupport.park(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 8:21:48 PM CONSOLE: ERROR]: java.lang.Thread.run(Unknown Source) 8:21:48 PM CONSOLE: ERROR]:------8:21:48 PM CONSOLE: ERROR]: Current Thread: ServerSignsQueue 8:21:48 PM CONSOLE: ERROR]: PID: 53 | Suspended: false | Native: false | State: WAITING 8:21:48 PM CONSOLE: ERROR]: Stack: 8:21:48 PM CONSOLE: ERROR]: java.lang.Object.wait(Native Method) 8:21:48 PM CONSOLE: ERROR]: java.lang.Object.wait(Object.java:504) 8:21:48 PM CONSOLE: ERROR]: de.czymm.serversigns.queueSystem.QueueHandler.run(QueueHandler.java:82) 8:21:48 PM CONSOLE: ERROR]: java.lang.Thread.run(Unknown Source)Is it possible to disable it per world? I've got creative in one world, and factions in another. I've given creative (using this plugin) to my donors in the factions world, however I don't want the abilities to be used in the creative only world. I want players to be able to open chests, pickup items and whatnot while in the creative only world.
Error in console:
[Limited Creative] <BlockState> statement is not executing.
[Limited Creative] <BlockState> Failed to update BlockState in D at Location{World=CraftWorld{name=plotworld}
This is being spammed in console every time a player places a block. It was not happening a few days ago. Not sure what the problem is.
Joke
This is BROKEN!
I installed this plugin to make a WorldGuard based region where my players could go on creative but not get special inventory! I added the region and none of the limitations were in effect! Therefore this plugin must be broken! I mean, sure I could go to your FAQ page to find out my EXACT issue has been answered, and clearly states I used the wrong /region command instead of the special region command which solves everything! But no, I am a typical commenter and must tell you your plugin is broken even though no one else has this issue!
End Joke
In all seriousness, thanks so much for this plugin. I had creative on the server before we went survival and I caught a bunch of people trying to hide diamonds (thank god for log block) but I really wanted help with the main town. This plugin saved my precious time by allowing me to expect my players to build the town :)
Is there a way to enable/disable this per world? I have things such as creative, factions, skyblock etc on my server, and donors have creative in factions (using this plugin), however all the features still apply to those in the creative part of the server, which is why I want to disable it in creative.
@Triss13
Thanks, I agree fully with what you said but I like to give my players the benefit of the doubt. There is no doubt that I tested this fully will all groups, and had no problems.
@MCTylerPVP
We caught Zackman1999 and how he was doing this....He was going to creative world, stacking all the high-end items, then going to spawn and doing a quick disconnect. When he returned he had inventory full of stuff which he quickly took to his base and stored. Gonna try to make world isolated so nobody can leave that world an disconnect....I'll let you know if solution can be made.
Just what i was looking for!
Thanks!!
Can't you do that in World Guard Regions?
Actually just make yourself the owner and no one else, that will do it.
Am I missing something? My Op did a test on this plugin and was able to place items on ground on teleporting back to survival world from creative. Is there any way to fix this? I have Faction users now that have 100 g's in their accounts. Please Help
Is there a way to disable players from being able to place any blocks at all? I'm trying to do this using this and modifyworld and despite not having the modifyworld.* node in the group, lc creative bypasses that and lets players place blocks.