MCCore
MCCore
MC Core is an attempt to provide a foundation for several aspects of bukkit plugin development to help new coders get started more easily, provide a framework for new plugins (or old ones that decide to convert) to be more compatible, and just in general provide many tools to speed up the development process. This plugin acts as a library for many different functions so that people can avoid coding the same things over again, and possibly do some things they didn't think were possible. Without further ado, here are the tools that MC Core has to offer:
Scoreboard
- Many scoreboards can be registered at once
- Scoreboards can optionally cycle through all registered ones or be chosen via a command (controlled by players)
- There are new types of scoreboards provided that give easy functionality:
StatBoard
- Automatically updating stats
- A one-method interface provided allows you to turn your player data into something that can be used with this scoreboard!
TextBoard
- Easily display lines of text on the scoreboard (You don't need to worry about length requirements, it wraps it automatically)
- Option to automatically divide up messages
This is the TextBoard in-game with the "separateMessages" option as true. This was created and displayed in only 6 lines of code (4 of them were just simply adding the text!)
Chat Management
- Ability to have many plugins providing prefixes without conflict
- Can have colorful display names and many prefixes
Plugin Prefixes
- Applied in code only
- One prefix per plugin name
- Great way to apply important prefixes without conflicting with other plugins
Unlockable Prefixes
- Can have an unlimited amount (more or less)
- Players get to choose which one they want showing and change whenever
Display Names
- Color support via the ampersand character '&'
- Command requiring permissions so you control who uses it
Command Tools
- Simple, flexible system for setting up commands
- Can make as many levels to your commands as you want (e.g. /root, sub1 sub2 sub3 args)
- Commands using ConfigurableCommand are automatically configurable for users
- Configuration includes enabling/disabling commands, changing the command names, and changing the descriptions
- Commands are automatically arranged into pages for command usage
- Text buttons for switching between pages is included for versions 1.7.9 and later!
Config
- Has the basic implementation from the Bukkit tutorial included
- Added the ability to create configs in new folders
- Added the ability to add savable objects to them for easy saving
- Configs obtained through the MCCore method automatically save on disable!
Name Translations
- Mob, enchantment, and item conversions between bukkit and vanilla names
- Mobs have the option of detailed names with attributes like sheep color or villager profession!
Text Manipulation
TextFormatter
- Formats strings into UpperCamelCase, lowerCamelCase, or General Form For Titles
TextSizer
- Measures the legnth of strings for the chat box
- Can add spacing to strings in front or in back to square everything up nicely
- More accurate than what can be achieved by manually adding spaces alone!
TypeChecker
- Allows you to check whether or not a string is an integer, double, or other type before trying to parse it
TextSplitter
- More for scoreboard usage
- Divides up messages into 16 characters per line
Regions
New to 1.9 are region helpers. There are currenlty 2:
Cuboid
- Allows you to define a cuboid from a number of options
- Easily get the contents of the cuboid such as the blocks or players
- Check whether a certain player is inside
Sphere
- Same as the cuboid except with spheres
Commands
Scoreboard Commands
- /board - Displays usage for scoreboard commands
- /board cycle - Enables scoreboard cycling
- /board list - Shows a list of all active boards
- /board show <boardName> - Switches to the board with the given name
- /board stop - Stops scoreboard cycling
Chat Commands
- /chat list - Displays a list of unlocked prefixes
- /chat name <displayName> - Sets display name (colors via '&' are supported)
- /chat prefix <prefixName> - Sets the prefix as the displayed one
- /chat reset - Resets display name
Permissions
- core.* - all privileges
- core.board - all permissions for scoreboards
- core.board.cycle - board cycle command (default true)
- core.board.list - board list command (default true)
- core.board.show - board show command (default true)
- core.board.stop - board stop command (default true)
- core.chat - all permissions for chat
- core.chat.list - chat list command (default true)
- core.chat.name - chat name command (default op)
- core.chat.prefix - chat prefix command (default true)
- core.chat.reset - chat reset command (default op)
About
I wanted to make a central set of tools for me to work off of to make things easier. I've decided to also share that with everyone else so that maybe plugins can be a little more compatible and help other developers make things much more easily. I plan on adding a lot to this (before you ask, yes, I will be adding permissions for various things) so feel free to provide suggestions as it progresses along!
*
While I try my best at testing for bugs, I can't find them all, especially when I have to test solo and create some things that are for multiple people. Please let me know of any bugs that you find and I apologize for them in advance. (In fact, I appear to be off to a bad start already >_<)
Works fine with essentials if you know what your doing.
owner: '&e{factions_roleprefix} &c{factions_name|rp} &4([&6Owner&4])&c {DISPLAYNAME}&4*&e {MESSAGE}'
This in the essentials config for the ranks.
As if in PEX the group name is owner then owner will get this.
Also make sure you toggle the settings right in essentials AND factions to have factions relay on essentials and not the automatic prefix settings of factions. Also in the essentials config you have to have it so it overrides. Just read into the configs, its all there. In a nutshell your telling factions to use essentials to handle EVERYTHING and pex is telling essentials what rank is who.
So now im running pex with essentials and factions in a multiworld server, with a faction world that uses faction prefixes. I may have made it seem complex but don't stress its not.
I can try to find a way to make it work with essentials/PEX, but no guarantees. It's hard working around other people's code while not actually depending on it.
Can you make it compatible with essentials? I use only essentials (i do not use essentialchat, essentialsprotect,etc) but prefix dont work with essential.jar. And i need essential because i have several warps, etc.
Thanks
How to make this work with PermissionsEx prefixes?
I wanted to do for example: [Figher]&4PlayerName:
With this I mean a prefix and a name color.
MCCore plugin.yml
@Tom555444
The plugin.yml for MCCore? Or your own plugin?
When I start my server it says the plugin.yml is invalid, HELP!
@Ethdawg
Sorry, that was a debugging message for making the TargetHelper class. I will remove that as soon as possible.
@Enripsa96
Issue with 2.0 on Git -> BoardListener.java is sending messages to console and chat on right or left click when interacting.
Line 49:
I'm not using MCCore for anything other than to appease the usage in SkillAPI. It's currently just printing "None" to chat any time I right or left click.
Is this intended behavior?
Thanks
I must say, most APIs and Libraries suck or are only good for a single author. But this is really amazing. Nice work!
@MinecraftManiac365
It should be compatible with 1.6.4 already as it doesn't use nms or cb code
PLEASE UPDATE TO 1.6.4!
@CyroTekServer
You'll likely find a few problems here or there for the first couple versions (which I apologize for, I think I just published before it was ready). Most of it doesn't use the config at all (in fact the only thing right now is the Chat system). I think the chat doesn't save properly until v1.2 (again, sorry about that). Hopefully the other tools can serve you well until v1.3 and v1.4 come out. >_<
Although a config wasn't created
First download! And plugin works great