Thank you for the advice. Regarding vanilla items, would it be easier to create "pseudo-vanilla" items that would behave like the vanilla ones, but are added by my mod? For example, if I create an "ItemNewDiamondSword" class and set it up, would that be easier to access and use than the original?
Hi! I'm working on a mod that adds "sentient items" into Minecraft - think something along the lines of the Transistor from the game of the same name, or the Corrupted Ashbringer from WoW. The concept of sentient items is that they get stronger the more they get used; they get XP from using them - whether it's killing things for swords and bows, breaking blocks for pickaxes and shovels, either of those for axes, or taking damage for armor. They can't be crafted (with one exception), but can only be found from killing boss mobs or looting dungeon chests. Any vanilla tool or armor (save for hoes) that can be found as dungeon loot would have a small, 1% chance to generate as Sentient; in addition, the mod adds several new types of weapons and tools, a few of which will only be generated as Sentient, the rest of which can be crafted. I'm also adding four enchantments to the game. I'm not sure how to go about the XP system, though. I do have the mechanics worked out in "layman's terms", but what I need help with is figuring out how to make an item generate as Sentient, as opposed to marking all items of the appropriate class Sentient, and making that item level up on tool use or armor taking damage. Essentially, I want it to work like this: Sentient items start at Level 1, and max out at level 20. They generate with a randomly selected name, personality, and extra modifier, as well as starting with enchantments - all Sentients generate with Unbreaking I, as well as Sharpness, Efficiency or Protection depending on the type of item. In order to level up, an item must be used a number of times equal to its current level times 100. This means killing 100 mobs with a weapon, breaking 100 ore blocks with a pickaxe (I may configure certain blocks to reward different amounts of XP), or taking 100 points of damage with an armor piece. When a Sentient levels up, one random enchantment currently on the item is raised in level by one. No enchantment can be raised above level 10. If a Sentient maxes its enchantments before reaching Level 20 (only possible if it did not generate a new enchantment from its modifier), it gains a new enchantment at level 1; these can include treasure enchants, and the new enchant will, if applicable, level up as normal until the level cap is reached. Each of the game's bosses drops a different, unique Sentient - the Elder Guardians, as there are three, drop separate parts of their item, that can be crafted together to create the final product. Four enchantments: Wither, Poison, True Damage, and Health Boost. Wither adds two seconds of Wither II on hit per level, normally capping at 2. Poison inflicts Poison I for three seconds per level, capping at 3 for non-Sentients. True Damage adds one point of armor-piercing damage per level, capping at 3 - this cap cannot be exceeded even by Sentients. Finally, Health Boost adds half a heart to your max health per level, capping at 5. As a secondary goal, I am in the process of writing some dialogue for a set of "personalities" that will be picked from when a Sentient is generated. This dialogue would be used by the Sentient, triggered by using it, storing or withdrawing it, or equipping it. Ideally, it would be shown only to the owner of the sentient, akin to using the /whisper command. I figure the random generation of the Sentient's name, personality and modifier (the last being an extra enchant) could be accomplished using random selection from arrays, but I don't know how to apply a tag to an item to identify it as a Sentient and generate its data, nor do I know how to structure its experience code. I can picture how the latter would work, incrementing it by one using "xp++" when LivingDeathEvent is triggered, but I don't know how to hook that into each individual item, or whether enchantment data can be incremented in the same way. I realize that this is not a school, and I am learning Java, but I've only started work on the mod two days ago, and I'm still learning the depth and breadth of this whole scene. I would greatly appreciate any help you can give, and I can link my currently completed classes for reference if necessary. Thank you for your help!