Tekkit Customizer
Use this plugin to ban items and blocks for Bukkit, Tekkit, and FTB servers using the Bukkit API. TekkitCustomizer removes banned items from the world and player inventories. It is easy to configure, can be applied retroactively, and automatically logs confiscated items. It requires no permissions plugin unless exceptions are need for certain players. The plugin settings default to commonly-banned Tekkit items.
Because every story that starts with "We decided to start up a Server..." shouldn't end with "...so we had to reset the world."
Installation
Copy the .jar file into your plugins folder to install the plugin. Then restart the server or use a plugin manager to load the plugin.
Configuration
An entry in the config file (config.yml) to ban ALL wool looks like this:
35:*:wool:because pink wool is for girls
- The first part is the material ID.
- The second part is the data value. Some blocks have the same ID, but a different data value. For instance, white wool is 35:0, while pink wool is 35:6. If you put an asterisk, that means ban ALL data values for the given material ID.
- The third part is for your reference. It will appear in the logs to shorthand what the various IDs and data values mean.
- The fourth part is the reason for the ban. It will be shown to players at useful times such as when a player tries to craft a banned item. If you don't fill in the reasons for your bans, you will be constantly asked why various items are banned.
After you edit your ban list, use /ReloadBannedItems to update the bans in-game. If your config.yml file "resets itself", that means you made a formatting mistake while editing the file. NotepadPlusPlus is a free file editor perfect for editing YAML files
A full list of Block IDs will help you add banned items. You can also get the block IDs and Data Values by using /blockinfo (requires /op or tekkitcustomizer.blockinfo permission). This tells you the information about the item you're holding and the one you're pointing at in the world. Some items have a different values in your inventory as opposed to ones place in the world (eg. a door item in the inv vs a placed door in the world).
Making Ban Exceptions
A player who has /op automatically ignores bans as with any player with permission:
tekkitcustomizer.*
You can make individual ban exceptions to give some players to generally banned items through permission nodes. Here are various examples, which should help you understand without further explanation.
- tekkitcustomizer.35.*.use - tekkitcustomizer.35.6.place - tekkitcustomizer.35.*.craft - tekkitcustomizer.35.6.own - tekkitcustomizer.35.6.* - tekkitcustomizer.35.*.*
You can't prevent a specific player's placed block from being removed from the world as this plugin does not track who owns placed blocks in the world.
Types of Bans
Usage Bans
This ban prevents players from using an item, which means left-click or right-click while the item is in-hand. This works well for items like the Mining Laser, but won't stop players from using items which benefit from passive use (eg. modded armors, Talisman of Repair, etc.). You will need a crafting ban or ownership ban to prevent players from getting those items at all.
It's not possible for any plugin to prevent a player from using an item when it is activated by a keystroke (eg. R, G, C, etc.), which are common especially for Equivalent Exchange items. This is why many EE items are on the default ownership bans list even though their functions are not all really ban-worthy.
Crafting Bans
This ban prevents players from crafting an item. When the player tries to craft the item, they get a message that they can't. This is the most player-friendly approach to preventing players from getting banned items. Forge mods don't always hook into Bukkit, meaning its possible for players to get banned items through some automatic or non-crafting approach (eg. alchemy). When you crafting-ban an item, test for workarounds, which may lead you to ban additional items to prevent those workarounds. The contraband scanner will help you identify the existence of workarounds by creating log messages each time it takes an item out of a player's inventory.
Ownership Bans
This ban prevents player from picking up an item from the ground or from a container (eg. a chest). If a player doesn't have permission to own an item, they won't be able to craft it. The contraband scanner will search each player's inventory for ownership-banned items and actually remove them without warning, notification, or compensation. Any items which are actually found in a player's inventory which the player doesn't have permission for will trigger a log entry, so you can follow-up with an investigation to find out how the player managed to get the item in the first place.
Placement Bans
This ban prevents a player from building a block in the world. A player that already has an item which is later placement-banned can still trade it with another player or break it down into energy (EE mod) to get some value out of it.
It is recommend to place most or all placement ban items to your crafting ban list. This will prevent your players from unknowingly spending their resources to craft a block which they then can't place in the world like they planned leading to them feeling cheated and likely complaining. The only exception you might make to this rule is for an item which can't be placed, but is still useful because it's an ingredient in another recipe for an item you haven't banned.
World Bans
This ban will retroactively remove the placed block from the world through the contraband scanner. This is great if you need to ban an item, but also know it's in the world (eg. energy collectors and world anchors). This will help clean up newly-banned items without having to search your entire world for them. There are exceptions to this removal as the scanner can't determine who owns the block.
Similar to the ownership ban, this ban will trigger a log message when a contraband block is removed, along with its location so that you may investigate to find out how the block got there in the first place.
Notes
Download the correct CraftBukkit version for your server as labelled on the uploaded files as major Bukkit API changes occurred between 1.2.5 to 1.4.7.
The default ban list is made for Classic Tekkit based on hands on testing done by BigScary. Before deciding to remove items from this list, be sure to read the reasons for default bans to understand why it was originally removed. If you are running FTB, Tekkit Lite, or other mod packs, do your own research for what you want banned and change the config file accordingly.
Save yourself some time! Check our Frequently Asked Questions page for the answer to your question. If you found a bug, make a ticket and include your config file.
The following features are planned for the next release:
- Vastly improved performance (Confirmed)
- Add configurable scanner settings (Confirmed, in progress)
- Change in config file structure (Confirmed, in progress)
- Change in permission nodes (Tentative, investigating)
- Consolidate Usage Bans and Placement Bans (Tentative, investigating)
- Consolidate Ownership Bans and Crafting Bans (Tentative, investigating)
- Dropped 1.2.5 support (Tentative)
- Dropped explosion prevention support (Confirmed)
Donations
Unlike other players who have a choice to play the game, my commitment to development and administration usually means I cannot and I'm fine with that choice. A lot of my free time is actually spent designing, developing, testing, and fixing plugins like this one to make Minecraft more enjoyful for all players. If you like this plugin, please consider sending me a donation by clicking the button below :) Thanks!
@JPTech234
Def keeping the world bans but I'm improving performance. The current code I "inherited" isn't optimized :3
It's already compatible with 1.5.2. Just use the 1.4.7 version. I will try to discontinue the 1.2.5 version and test each version with the latest bukkit version. I was also wondering if it would make sense to consolidate the two pairs of config sections I labelled above though haha. Any input?
Yea! @krisdestruction! you the man! :D something compatible with 1.5.2 maybe? New FTB/Tekkit/Voltz :D and also keep the banned-world feature? where it removes items from the world?
I made the description more concise with the current functionality and added a poll (please vote :D)! This should be the last change to the description before the next release.
I'm still working on these, but please note that the config may look something like this in the next release: https://bitbucket.org/krisdestruction/tekkitcustomizer/raw/9d7f8f7bb9ab53f7b2c36f0f132c7b9cbca19e9a/config.yml
Please also note that permissions will likely change to something as follows for the placement exclusion of ID 35, Data Value 6:
@astroninja21
I get what you mean. I'll take a look at grouping permissions into nodes, but I prefer to keep it in one config file for simplicity. It is also possible to do the "tekkitcustomizer.default" permission node using bukkit's permissions.yml or just set them into separate groups in your permissions plugin.
If you don't mind me suggesting something, may I suggest you add separate files or sections inside the config file, and have the plugin refer to these files in permission nodes? For example, say you want to use this plugin to make a ranking system. You make a file called "default.yml" with all the item ID's that you want this class to not have. Then you give the permission node "tekkitcustomizer.default" to the default group in your permissions plugin. Then make another file named "admin.yml" and put in all the banned items for admins. Giving the permission node "tekkitcustomizer.admin" to the admin group will then ban the items specified in "admin.yml" for the admin group.
If you don't understand what I am saying, PM me and I might be able to clear up your confusion. If you understand and don't think it would be possible, or too hard to try, thank you for considering it anyways. I am sorry for the little circles I talk in, too. Bit of a bad habit
Please make the comment on devbukkit
http://dev.bukkit.org/bukkit-plugins/tekkitcustomizer/
Pastebin your config and pastebin your error.
Oh wow there are comments on Curse...
@alicheek
I'm looking at the code and I see lots of points to improve on. There aren't any issues preventing this plugin from working properly so hopefully you guys look forward to a great update :)
It seems this plugin causes armor to dupe in tekkit 1.5.1 galacticraft. Could we possible get a fix for this?
@krisdestruction
Looking forward to this , this plugin is a great one to continue !
Good Luck :) This is a grate plugin . I hope you have fun with it
Hey Guys, this is a long winded post but a good one. As a new maintainer (and possible future author) of the plugin, I am working to re-factor and fix any issues with TekkitCustomizer. I have already forked the code and am working on newer development builds for the plugin.
As you may know, this plugin (and related ones like GriefPrevention, AntiXRay, and PopulationDensity) were originally made by BigScary. Not everyone knows this and I noticed this months before I offered to help, but any plugin left by BigScary's wake of useful plugins have been on a bumpy ride. Personally I see his code as a mess. Ahmet094 has already stated that he has no intention to maintain the code.
I am here to tell you that I am committed to maintain TekkitCustomizer in hopes to make it more powerful and simpler to use than ever. The most updated version of TekkitCustomizer work and I don't see reasons for why it would break. My road-plan starts at the descriptions and enabling the ticket module (which was disabled by BigScary). As I work to transition myself to become the author, I will work to make it simpler to maintain replacing useless and redundant lines of code with better versions making issues less prominent. I want to give you this heads up as this process will require that the config needs to be regenerated.
I hope you all appreciate the progress that TekkitCustomizer has achieved. I look forward to what it has to achieve moving forward.
@HaoSs
Not at the moment. I think it's classified all under "Usage Bans" if I understand what you mean. I guess technically it should be Interact Bans. I will consider it as a future feature though once I refactor it..
Is there any way to ban a item right click usage but not left click ? This would help allot on modpack servers. as some items have different left/right click usages. and you may not want to ban the whole item
@Garrash
That's strange. Please make a ticket and post your config. I will take a look at it after a ticket has been created.
When someone interactis with a MK2 Table within a Grief Prevention Claim they aren't trusted in/don't own. On Tekkit Lite 1.4.7 with that version of Grief Prevention. This seems to be the ONLY item that it does it with (Yes I have grief prevention configured to include this item for protection, I've tried it both with and without it being protected and it doesn't matter.)
@HaoSs
Make sure to remove the world in the config.yml in EnforcementWorlds.
seems there is a problem with unloaded worlds, other then that it works PERFECT on ftb unleashed pack
[SEVERE] Could not pass event PlayerInteractEvent to TekkitCustomizer v1.6
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:363)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:47)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java)
at org.bukkit.craftbukkit.v1_5_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:189)
at net.minecraft.item.ItemInWorldManager.func_73074_a(ItemInWorldManager.java:164)
at net.minecraft.network.NetServerHandler.func_72510_a(NetServerHandler.java:752)
at net.minecraft.network.packet.Packet14BlockDig.func_73279_a(SourceFile:46)
at net.minecraft.network.TcpConnection.func_74447_i(TcpConnection.java:323)
at net.minecraft.network.TcpConnection.readNetworkPacket(TcpConnection.java:74)
at net.minecraft.network.TcpReaderThread.run(ReplaceTcpReaderThread.java:22)
Caused by: java.lang.NullPointerException
at org.bukkit.craftbukkit.v1_5_R3.CraftWorld.getUID(CraftWorld.java:539)
at org.bukkit.craftbukkit.v1_5_R3.CraftWorld.equals(CraftWorld.java:1208)
at java.util.ArrayList.indexOf(ArrayList.java:269)
at java.util.ArrayList.contains(ArrayList.java:252)
at me.ryanhamshire.TekkitCustomizer.TekkitCustomizer.isBanned(TekkitCustomizer.java:475)
at me.ryanhamshire.TekkitCustomizer.PlayerEventHandler.onPlayerInteract(PlayerEventHandler.java:108)
at sun.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:361) [WARNING] [TekkitCustomizer] Task #12 for TekkitCustomizer v1.6 generated an exception
java.lang.NullPointerException
at net.minecraft.world.WorldServer.getChunks(WorldServer.java:116)
at org.bukkit.craftbukkit.v1_5_R3.CraftWorld.getLoadedChunks(CraftWorld.java)
at me.ryanhamshire.TekkitCustomizer.ContrabandScannerTask.run(ContrabandScannerTask.java:49)
at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftTask.run(CraftTask.java:67)
at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:344)
at net.minecraft.server.MinecraftServer.spigotTLETick(MinecraftServer.java)
at net.minecraft.server.MinecraftServer.runQueuedTasks_net_minecraft_server_MinecraftServer_runQueuedTasks_p0(MinecraftServer.java:441)
at net.minecraft.server.MinecraftServer.runQueuedTasks(MinecraftServer.java)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:371)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:320)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:307)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:199)
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)
I will be starting more in-depth tests for 1.5.2 this week.
@groveham
I tested Direwolf20 with the default settings and it's working without errors. If you are still having the issue make a ticket, include the config files, and post the error logs that you have there (please use pastebin).
@ajay01281990
To my knowledge, the plugin works for 1.5.2. If you are having any more issues, please ticket them.
I will try to test this against 1.5.2. Currently it works with 1.4.7.