Posted March 19, 20223 yr I am trying to be able to throw a tool into a fire and have it return another tool without getting burnt in the fire, I am unsure how to go about this as I cannot think of another item that does something similar in vanilla to look at the code. What might be the best way to go about doing this? I know to create a class for the item, but am unsure how to remove the entity that is dropped and replace it.
March 19, 20223 yr Author 12 minutes ago, diesieben07 said: Override hasCustomEntity and createEntity in your Item class and do these actions in a custom ItemEntity class. So for clarification, I need to create 2 classes for each item I want to change, or 1 class that is the ItemEntity class, and a seperate one for each Item I want to change?
March 19, 20223 yr Author 1 minute ago, diesieben07 said: Sorry but I do not understand your question I apologize, You said to put the actions in a custom ItemEntity class, I took this as making another separate class for these actions related to the tool I want to touch. And that I would need to make a separate one for each item. If this is not the case then do I simply make 1 ItemEntity class.
March 19, 20223 yr Author 3 hours ago, diesieben07 said: You can make one class or multiple depending on your desired behavior. I'm looking through the Vanilla code, and I'm at a loss to what I should override to get my intended behavior, I originally used hurt, but it seems that may not workout as I can't return an item back to the fire that "killed" the item.
March 19, 20223 yr Author 56 minutes ago, diesieben07 said: Show what you tried. Item class, I couldn't seem to figure out the ItemEntity class and how to implement it so I tried my best with the item class itself Spoiler public class CoalPickaxe extends PickaxeItem { public CoalPickaxe(Tier pTier, int pAttackDamageModifier, float pAttackSpeedModifier, Properties pProperties) { super(pTier, pAttackDamageModifier, pAttackSpeedModifier, pProperties); } @Override @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> tooltip, TooltipFlag flagIn) { if (Screen.hasShiftDown()) { tooltip.add(new TranslatableComponent("\u00A7e"+"I wonder what happens if you throw it in a fire?" + "\u00A7e")); } else { tooltip.add(new TranslatableComponent("\u00A77"+"Hold "+"\u00A7e"+"shift "+"\u00A77"+"for more info" + "\u00A77")); } } @Override public boolean hasCustomEntity(ItemStack stack) { return true; } @Override public Entity createEntity(Level level, Entity location, ItemStack stack) { if (location.isOnFire() && location.isOnGround()) { return ModItems.FIRE_PICKAXE.get().createEntity(level, location, stack); } return null; } } The ItemEntity Class Spoiler public class BornFromFireEntity extends ItemEntity { private int health = 5; public BornFromFireEntity(Level level, double x, double y, double z, ItemStack stack) { super(level, x, y, z, stack); } @Override public boolean hurt(DamageSource pSource, float pAmount) { if (pSource.isFire()) { this.markHurt(); this.health = (int)((float)this.health - pAmount); this.gameEvent(GameEvent.ENTITY_DAMAGED, pSource.getEntity()); if (this.health <= 0) { this.getItem().onDestroyed(this, pSource); this.discard(); } return true; } else { return false; } } }
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.