Cube Genetics
Cube Genetics is a live NBT editing plugin for Bukkit servers. It lets you load the NBT structures of entities, tile entities (such as beacons, chests, signs, mobspawners), and players (both online and offline) right from the chat interface. Since it uses the chat menu along with Bukkit's conversations API, there's no client mod needed. Once the plugin is installed to your server, all players with permission (defaults to OP) can start using it to load and edit the NBT data of their surroundings.
To enter NBT editing mode, the user runs the /NBT command. Now the NBT data of objects you interact with will show up in your chat window. Since it uses the Bukkit conversations API, there are no other commands; rather, the plugin operates on your chat input. This minimizes conflicting commands with other plugins and makes interaction smoother. You can use the 'prev' and 'next' keywords to move through the results pages, 'cd' to change directory, and 'up' to move up a folder. You can create a new tag within the current folder, for instance 'newstring Name Awesome Sword', or you can edit a current tag, 'edit Name Awesomer Sword'. Once you're done editing the NBT tags, the 'save' keyword saves the tags back to the object they belong to, and 'exit' or 'done' takes you out of edit mode and back to regular chat.
Here's some examples of things you can do with Cube Genetics:
- Custom item names and lore
- Enchant un-enchantable items to ridiculous levels
- Infinite dispensers (set quantity to -1)
- Custom player heads
- Editing villager offers
- Duplicate items
- Editing written books
- Custom potion effects (including effects not usually attainable in vanilla)
- Change paintings
- Colored and formatted text, including magic characters (Items, signs, books, command blocks)
- Edit player data (Walking speed, flight speed, inventory)
- Use blocks as helmets
- Edit mob attributes (Health, attack time, potion effects, equipment, prevent despawning etc.)
- Create custom spawners for your mobs (Player distance, maximum nearby entities, spawn rate)
- Give yourself cookies! (Well you could probably already do this but let's not allow that to detract from the greatness of more cookies)
For a full list of NBT tags you can tinker with, check the minecraft wiki here and here.
The best part about this plugin is it does it all live with no need to download .dat files, edit them in a standalone program like MCEdit or INVEdit, reupload them to the server and restart. It also doesn't rely on any other modifications or hacks of the game code. All this functionality is built into minecraft and would continue to work even if you were to uninstall the plugin.
If you've used inventory editors or SethBling's MCEdit filters before and wished you could do the same in real time on your bukkit server, this is the plugin for you.
Installation
1. After making a proper sacrifice to your preferred Mojang god, drop the jar into your server's plugin folder.
2. Think of a witty comment while the server restarts.
Done!
Note: Cube Genetics is compatible with CraftBukkit 1.4.4 and up.
Commands
There's only one real command in the eyes of the server, and only one permission node to go along with it: CubeGenetics.NBT. The NBT command puts you into edit mode which then allows for the rest of the keyword commands to be typed into chat.
Note that commands and directory names aren't case sensitive but tag names and values are. Mojang decided to arbitrarily capitalize tag names so you'll probably need the wiki links above open as a reference until you get used to it.
Also, names aren't necessarily required for a tag if it's in a list instead of a compound, so these commands will create new tags with just a value if applicable. Optional parameters are denoted with {curly braces}. If you're editing or removing a tag in a list, use the tag's number in place of its name.
help - does what is says on the tin
cd [directory name] - changes to the directory you specify. You can put in multiple subdirectories instead of having to run the command multiple times, for example: "cd inventory 0 tag display" would take you to /Inventory/0/tag/display.
up {level} - goes up a level. You can add a number of levels to go up instead of running it multiple times.
next - displays the next page of data if there is one.
prev/previous - displays the previous page of data.
player [player name] or player me - loads a player's NBT data.
edit [name] [value] - edits an existing tag's value.
rename [name] [newname] - renames a tag to the name you specify. Note that this will not work in lists since they use numbers instead of names.
remove [name] - removes a tag.
copy {name} - copies a tag or the current directory if no name is specified.
paste - pastes the copied tag into the current directory
merge - pastes the contents of the copied tag into the current directory (useful when you're copying root directories)
newcompound {name} - creates a new compound tag.
newlist {name} - creates a new list.
newstring {name} [value] - creates a new string. To use formatting codes replace the section sign (ยง) with an ampersand (&). If creating a unnamed string in a list, type null for the name. (This is due to the ability to have spaces in strings, leaving the plugin unsure whether the first word is the name of the string or the first word of the value)
newint {name} [value] - creates a new integer tag.
newbyte {name} [value] - creates a new byte tag.
newshort {name} [value] - creates a new short tag.
newdouble {name} [value] - creates a new double tag.
newlong {name} [value] - creates a new long tag.
newfloat {name} [value] - creates a new float tag.
newintarray {name} [value1],[value2],[value3],etc. - creates a new int array tag. Note that the values are delimited by commas and no brackets are required.
newbytearray {name} [value1],[value2],[value3],etc. - creates a new byte array tag. Same as above. save - saves the tag data back to the object it came from.
macro define [name] {arg1} ... {argN} - creates a new macro with the name you specify and any parameters you pass in. After entering in the commands to be included in the macro, create saves the macro and enables you to use it. For more information, see the macro page.
exit/done- exits edit mode and goes back to regular chat.
@AscorbinS
Ahh your server must be running the last version of Java. Sorry about that, let me recompile it with Java 6 and I'll have an update up in just a sec!
@antidust
There shouldn't be any conflicting plugins, it only has the one command. The rest of the "commands" are done with the bukkit conversations api so only the plugin sees them.
Tutorials are on my short list, hope to have some out this week. Anything in particular you're interested in, in terms of examples I could use? I was thinking mob spawners, colored names and lore, custom player heads, and custom potions. If there's any one thing you'd like an example of, leave a comment. In the mean time, check out the links above to the NBT pages on the minecraft wiki for a list of all the things you can edit.
@Kyran_
1.4.5-R02 is what we use...
It says something about java.lang.UnsupportedClassVersionError and unsupported major.minor version 51.0. hope that helps in any way..
are there any conflict plugins? becuase when i trying to type /nbt it error in console like hell when i'm in NBT editing mode i click right or left block or left the game error like a hell any idea?
Plugin List: CubeGenetics ChatManager CustomPotions EndlessEnchant EpicBoss Essentials EssentialsAntiBuild EssentialsChat EssentialsProtect EssentialsSpawn LWC ModifyWorld PermissionsEx WorldEdit WorldGuard
EDIT : Ok i fixed . i need to use 1.4.5-R02 :P
EDIT 2 : any video?
EDIT 3 : any tutorial????
@AscorbinS
What version of craftbukkit are you running?
Also if you create an ebean.properties file inside the same directory as your server properties file, that other error should go away. It's from bukkit's persistence system which is probably being used by another plugin of yours. The error's unrelated though and pretty benign. Cube Genetics doesn't use persistence.
I'm guessing (hoping) the plugin loading error is coming from the bukkit version. Cube Genetics is built against the latest craftbukkit beta, 1.4.5-R02, which you can find here. Beta builds have become the new recommended build and are what I use on my home server. I think the last recommended build was 1.3; they update much much slower than dev and beta releases.
This sounds super awesome, but when I start my server it just says 'cant load CubeGenetics.jar' (Or something very similar)
Any idea what could cause that?
There aren't any more error messages I can find :(
EDIT:
Ok I just checked again and there are two errors I get:
1. Could not load 'plugins\CubeGenetics.jar' in folder 'plugins'
2. ebean.properties not found
I don't know if the second one matters for this...I just wanted to mention it.//
@S1lverK3y
It was born out of necessity! I hope it's useful to people other than me as well.
@cotjones
Hmm that's strange. What version of craftbukkit, and what client version? What tags are you editing in the bow? Any console errors?
For some reason, every time I look at a bow i've edited in my inventory, the game crashes.
Finally something useful to edit NBTs ingame!
@imilkywayz
Yep the save is crucial. Having that extra step lets you back out in case you mess something up. Also when working with signs or heads, I've found you need to leave the area and then come back for it to update. Your mileage may vary with this but if you're not seeing changes happen and you've saved the tags properly, try warping away and back again.
Unfortunately the bukkit api doesn't support editing nbt data in any way. The plugin uses craftbukkit and native server code and quite a bit of reflection to gain access to things. You're right though that some of the surface features are done a lot easier with bukkit calls. Enchanting for instance, is better handled by a plugin like Tim the Enchanter, which is why I didn't bother trying to adopt similar functionality. This plugin was intended more for the deeper editing of things which wasn't offered by other plugins.
Thanks for the feedback!
@Kyran_
I was trying to change the skull owner on a player skull. I clicked it then used: newstring SkullOwner milkywayz and nothing happened, I know im doing something wrong so hopefully you'll enlighten me :D
Edit: Got that to work, forgot to use 'save'. Also been trying stuff out and I think it's a good plugin but honestly most of what it does should be doable with the bukkit api.
@imilkywayz
Thanks for checking it out! Better documentation is something I'm looking to implement as I know that I know how it works, but to others it may be confusing. Make sure to read through the two minecraft wiki links included in the description as they contain a lot of valuable information.
Is there anything in particular that you're confused about?
I think the plugin is brilliant, but without better docs the learning curve is really steep. I'm gonna continue playing around with this until I get a better understanding.