BKCommonLib
BKCommonLib is no longer being updated on dev.bukkit.org.
If you want to use the latest version, use spigot.
Latest version: 1.57
CraftBukkit/SportBukkit/Spigot/MCPC+ build: CB 1.6.4 R1.0 / CB 1.6.4 R2.1 / Spigot 1.7
Older builds available: CB 1.5.2-R1.0 / CB 1.6.2-R1.0
Tekkit: Untested and thus unsupported, some features may not work as expected
Description
This utility library shares all the common code needs for various plugins, and having them in one library heavily reduces the amount of duplicated code. The featured utilities are varied, and whenever something is missing in Bukkit, it is added in BKCommonLib. This is one of the reasons why it has become this large: there are simply a lot of things Bukkit doesn't (want to) offer.
BKCommonLib has versioning on a per-plugin basis, so when a certain plugin needs version 2, and version 1 is installed, the server owner is automatically notified and the plugin is not enabled. This prevents the common mishaps with outdated BKCommonLib versions.
Other than utilities and services, this library offers a wide variety of reflection and user-friendly ways of accessing net.minecraft.server. If your plugin requires the use of the internals, but do not want to risk changing field and method names, you can depend on BKCommonLib to provide them for you. This allows you to remain compatible between CraftBukkit versions automatically, and reduces silent failure hazards.
Reasons for you to depend on this library
- You need to access Minecraft internals in your plugin, and Bukkit has no API for it
- You are tired of re-uploading the same version over again because of the internals changing
- You want to work with Vector/math logic, or need to use other utility classes
- The YAML of Bukkit dislikes you, and you want this to be easier
- You want to easily read and write configuration/data files
- You want easy access to data conversion utilities to convert user input
- You want to work with inventories in an advanced fashion
- You want to work with unique server events
- You want to alter entity behaviour (such as handling block collisions, custom movement, etc.)
- You want plugin messages/permissions to be configurable
- You want to work with (async)tasks without storing IDs
- You want to send and manipulate packets
Features
- General
- PluginBase for easy access to metrics, permissions, localization and more
- Permission defaults for storing the permissions a plugin uses
- Localization for making the messages of a plugin configurable
- Utilities
- General utilities for String, Logic, BlockFace and Math operations
- Block utilities for Block-related operations (states, data, etc.)
- ItemUtil for Inventory, Items and Item Transfer utilities
- RecipeUtil to work with crafting and furnace recipes
- Various Collections for auto-filtering, converting and even interpolation
- Data storage
- Configuration API with nodes, headers and other goodies
- NBT API designed after the configuration API
- (Compressed)DataReader/DataWriter to read and write data from/to file
- Entities
- CommonEntity implementations with added utilities
- EntityController for altering entity behaviour
- EntityNetworkController for altering entity network logic
- Services
- Metrics for keeping track of plugin statistics
- Conversion for conversions between all types of data
- Events and Listeners to keep track of changes on the server
- Packet services and API to keep track of packets
- Task class for easier task scheduling
- Scoreboard services to setup scoreboards without criteria
- Tab View service to alter what is shown when players press tab
Getting started
To start using BKCommonLib, you have two options (after adding BKCommonLib as dependency in the plugin.yml):
Include the jar file as a dependency
Like any dependency, keep the jar file somewhere on your computer and add it to your classpath. Nothing special here.
Make a (new) maven project and include it
Add the following repository:
<repository> <id>dj-tcraft repository</id> <url>http://ci.dj-tcraft.nl/plugin/repository/everything/</url> </repository>
And the following dependency (may need to update version):
<dependency> <groupId>com.bergerkiller.bukkit</groupId> <artifactId>BKCommonLib</artifactId> <version>1.54-SNAPSHOT</version> <scope>provided</scope> </dependency>
Dependencies BKCommonLib uses
BKCommonLib supports various other plugins and projects. Below all of these are listed:
- Vault - for permission plugin support
- ProtocolLib - to avoid packet listening conflicts
- Showcase(Standalone) - to ignore showcased items
- HyperConomy - to ignore shop items
- BleedingMobs - to ignore particles
- CGLib - for generating nms.Entity classes on-the-fly to supply Entity Controllers
- Objenesis - for generating classes without calling constructors (needed for various fixes inside class constructors)
Plugins that require BKCommonLib to be installed:
Disclaimer
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.
License
This library uses an open license. Feel free to use whatever code you need from it, you do not have to ask me either. If you want me to add certain features, that is fine too. Everyone is allowed to use this Library as a dependency. I do recommend extending 'PluginBase' instead of 'JavaPlugin' then, as it allows you to automatically deal with the BKCommonLib versioning checks. See also: BKCommonLib license file
This product includes software developed by the Apache Software Foundation (http://www.apache.org/)
Links:
Compatibility
BKCommonLib supports ProtocolLib when it is enabled, but if it is not, the player connection is replaced resulting in several incompatibilities. To fix these incompatibility issues, install ProtocolLib next to BKCommonLib. This can not be stressed enough. When incompatibility occurs, BKCommonLib will notify you in the console and will disable itself. The following plugins are known to be incompatible when ProtocolLib is NOT installed:
Metrics
This plugin sends server count and dependency statistics to MCStats.org. You can (globally) opt out in the PluginMetrics/config.yml file.
Banner
I use a banner in my depending plugins. This banner is automatically updated when a new version of BKCommonLib is out. It is a quick and efficient way to keep track of updates for this library. This was needed, too, because a lot of people were using outdated BKCommonLib versions, which resulted in bug reports...too many of them. And I do not want to waste your time with invalid reports. You have a plugin that uses BKCommonLib? Feel free to use the banner on your download page.
[[http://dev.bukkit.org/bukkit-plugins/bkcommonlib/|{{http://ci.dj-tcraft.nl/job/BKCommonLib/lastSuccessfulBuild/artifact/target/BKCommonLibVersion.png|Go to the BKCommonLib Dev-bukkit page}}]]







-
View User Profile
-
Send Message
Posted Sep 16, 2014I made a pull request. For those with the protocol hack it SHOULD work i think. I havent tested it with train carts, it works for portalstick though.
-
View User Profile
-
Send Message
Posted Sep 14, 2014Yeah, please update the whole thing to Spigot 1.7.10 - I can't start the server with BKCommonLib - the error (with BKCommonLib as the only plugin) is http://pastebin.com/5Bp4TKCa
If i add TrainCarts, I get "[Train_Carts] Failed to synchronize a network controller" 1000 times and more.
And another question: Will you port your plugins to Sponge when it comes out? ;)
-
View User Profile
-
Send Message
Posted Sep 10, 2014I hope I'm wrong but given all that's going on at the moment, what with the likely demise of Bukkit, the apparent lack of interest and the possibility of M$ buying Mojang, I'm wondering if this plugin will ever get updated again. I really enjoyed running trains around my minecraft world too thanks to TrainCarts and BKCommonLib.
-
View User Profile
-
Send Message
Posted Sep 9, 2014@lenis0012
I didn't think it would be important to post that. Don't overlook that bug just because I didn't add it there. It's still persisting for me even on the latest build of both bukkit and the plugin. (But the plugin didn't update.) I really wish this would be updated by now, I don't understand what would be taking so long. 1.8 is going to be released soon, come on guys.
-
View User Profile
-
Send Message
Posted Sep 7, 2014All of you need to calm down and patiently wait for an update... especially after this whole Bukkit "dying" debacle. Who knows if it's even worth continuing development of this plugin until the whole situation of Bukkit and nextsteps is figured out. But even if development of this plugin continues, show some respect and gratitude for lennis, because updating this sort of library plugin is no easy feat.
-
View User Profile
-
Send Message
Posted Sep 6, 2014Hi
I tried it with your spinot variant... its definitely 1.7.10
The result is the plugin loads but Myworlds causes it to malfunction or the other way round. just see the log. its about inventories...
http://pastebin.com/WxGCWgby
-
View User Profile
-
Send Message
Posted Sep 6, 2014please update the releases to 1.7.10 spigot, the releases work but disable as youve made it 1.7.9, which the servers are multiplatform with 1.7.9 and 1.7.10 (even vanilla servers), so i need a version that wont disable on statup, and the snapshot arnt working and are not letting me join, and even with protocollib, it lets me join, but traincarts (why im using this plugin) wont let me do anything but place linked carts and make signs, and is now stoping carts being movable. I'm also getting the same error message as fsedarkalex, here is his pastebin link: http://www.pastebin.ca/2837819
Hope To See It Update Soon
-
View User Profile
-
Send Message
Posted Sep 4, 2014Well as I told: I tried with the last 1.7.10 and some versions before back to even 31st of July...
-
View User Profile
-
Send Message
Posted Sep 4, 2014Please update to 1.7.10. Doesnt work with My Worlds, bunch of errors.
-
View User Profile
-
Send Message
Posted Sep 3, 2014I could create a pull request, i updated most of BKCommonLib to the 1.8 Protocol Hack. (Besides the Player List, nobody can be bothered with that)
-
View User Profile
-
Send Message
Posted Sep 3, 2014Well I tried a bunch of builds now and ever single one has the same problem...
The Client says "Internal Server Error" or the following: Internal Exception: java.lang.ClassCastException: biz can not be cast to fv
In the Servers log I can see this (no loading error but that occures on player login): http://pastebin.com/GXgsaWDJ
This is now extraced from the last 1.7.10 only spigot... (Build #1627)
-
View User Profile
-
Send Message
Posted Sep 3, 2014@sanjay900
Yeah, I actually meant to write the build before 1.8 support- obviously BKCommonLib doesn't work with 1.8 yet. I'm interested in getting 1.7.10 to work :D
-
View User Profile
-
Send Message
Posted Sep 3, 2014@sanjay900
I actually did try with just 1.7.10 with no protocol hack. Exact same error...
-
View User Profile
-
Send Message
Posted Sep 3, 2014Great to see this plugin getting an update.
Trying it with the latest version of Cauldron that supports 1.7.10 I get a crash on startup. Despite the crash BKCommonLib and TrainCarts initialize. However when I try to spawn a minecart I get another crash.
I have raised a new issue to document this - see https://github.com/bergerkiller/BKCommonLib/issues/26 - I think issue #23 can be closed now given things have moved on from there.
-
View User Profile
-
Send Message
Posted Sep 3, 2014Sounds like your using a version of spigot designed to work with 1.8. BKCommonLib isn't updated for the 1.8 Protocol Hack as of yet, if you don't care about 1.8, the other option is downgrading to a version of 1.7.10 that doesn't require it, otherwise, you will have to wait, plugins like this that hook into lots of NMS take time to update to big releases like 1.8.
The main problem is the playerlist, that changed, lots.
-
View User Profile
-
Send Message
Posted Sep 2, 2014Confirming what the previous two commenters have said - cannot join the server upon updating to Spigot 1.7.10. Hope a fix comes soon =)
-
View User Profile
-
Send Message
Posted Sep 2, 2014Hi,
I was always running the sam plugins for months now. After latest update (mod spigot from tonight) it is no longer working. So it must be compatibility with 1.7.10 rather than plugin general incompatibility.
Here is my report: At Server startup I get the following messages: http://www.pastebin.ca/2837819 Those indicate that BKCommonLib is causing errors.
When I try to log in I get a error message. Sometimes it says transfer has ended, sometimes it tries to cast a class to another which cannot be done and so on. If you need more information just ask :)
-
View User Profile
-
Send Message
Posted Sep 1, 2014@lenis0012:
Getting the following error when a user tries to join, and it kicks them out. Using the latest snapshot of BKCommonLib with the latest build of Spigot for 1.7.10 (#1627):
http://pastebin.com/gxDSu5Qy
-
View User Profile
-
Send Message
Posted Aug 31, 2014@jacklollz2
Your plugin list doesnt even contain BKComonLib?
@woeterman94
Ill look into that next
-
View User Profile
-
Send Message
Posted Aug 31, 2014@lenis0012
Lenis, please take a look at the 'traincarts' plugin. It has a lot of bugs (reported under the tickets section)