Jump to content

Recommended Posts

Posted

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!

Posted

First and foremost:
Making vanilla tools/items (also) use this logic, whilst not impossible, is much harder compared to using (only )your own items.

 

I would recommend that you make use of Capabilities for this, like coolAlias suggests as well.
In this capability, you would store XP, name and level.

 

You'd be better off incrementing the XP when the tool lose durability (for vanilla/others items, you'd need a tick-counter and manually check every so often, and add XP as needed), instead of going after the LivingDeathEvent (as that fires when an EntityLiving dies (or equivalent of))

Also previously known as eAndPi.

"Pi, is there a station coming up where we can board your train of thought?" -Kronnn

Published Mods: Underworld

Handy links: Vic_'s Forge events Own WIP Tutorials.

Posted (edited)

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?

Edited by TheCaelondian
Posted

Sentience itself could be a new enchantment that works much like Mending -- not available on the table, perhaps not even available in found magic books, siphons XP orbs when in player's active hand (or otherwise intervenes when used). Being an enchantment might make it easier to act upon vanilla items / itemStacks

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Recovering stolen Bitcoin can feel like an insurmountable challenge, especially after falling victim to scams that promise high returns with little investment. My journey began with excitement when I first learned about Bitcoin mining pools. The idea of earning substantial profits from a modest investment was enticing. I was encouraged to invest $5,200, and soon found myself caught in a web of endless demands for more money to access my funds. As time went on, I paid out hundreds of thousands of dollars, believing that each payment would finally unlock my investments. However, the requests never ceased, and I soon realized I was trapped in a scam. The weight of losing $826,000 worth of Bitcoin was unbearable, and I felt utterly helpless. I reached out to authorities, but their responses were disheartening, leaving me feeling even more isolated in my struggle. In my desperation, I even went to pray, seeking guidance and hope in what felt like a hopeless situation. I poured my heart out, asking for a sign or a way to recover my lost funds. It was during this time of reflection that I began searching for solutions online, hoping to find a way to recover my investments. That’s when I stumbled upon RAPID DIGITAL RECOVERY. At first, I was cynical after all, I had already been deceived so many times. However, I decided to reach out and share my story. The team at RAPID DIGITAL RECOVERY was understanding and compassionate, assuring me they had the expertise to help me recover my stolen Bitcoin. Within hours of providing them with the necessary information, I began to see progress. They guided me through the recovery process, keeping me informed every step of the way. It was surreal to watch as they worked diligently to trace my funds and navigate the complexities of the blockchain. To my astonishment, I received confirmation that my Bitcoin had been successfully recovered. The relief and joy I felt were indescribable. I had almost given up hope, but RAPID DIGITAL RECOVERY proved to be the lifeline I desperately needed. If you find yourself in a similar situation, I urge you to seek help from Reputable team at RAPID DIGITAL RECOVERY.  
    • https://mclo.gs/9Byd16j Hi, I've had my BetterMC world for a couple days now (1.19.2 vers & Fabric loader) but recently whenever I try to open the profile the minecraft launcher crashes and provides this error code. I've checked both this forum and google and haven't found any similar problems or solution to my problem. I'm not the best at reading crash logs but I gathered that there's an issue with fabric possibly, so I re-downloaded the same one on the modpack, then the latest version for 1.19.2 fabric and the issue still occurred. What can I do now?
    • it works now but idk why lmao. i removed terrablender and it didnt work. i then left it for a couple of days and, when i came back, updated the mods that needed updating because "what's the worst that could happen". i then tried launching it and now it works. i genuenly have no clue what i did to make it work, othen than updating the mods. so, thanks for your help
    • Add the crash-report or latest.log (logs-folder) with sites like https://mclo.gs/ and paste the link to it here  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.