Jump to content

Nolwest

Members
  • Posts

    1
  • Joined

  • Last visited

Nolwest's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. I'm just getting back into the saddle from Minecraft modding back when I still used Skype, with much greater Java knowledge. I decided to make a little testing mod that, so far, just adds in some staff(hitting, not magic) weapon types into the game. And, because why not, I decided one of the fun ones to add would be Bread Staff, that has super low uses but can be eaten to act as a piece of bread for some durability. Of course, this means I have to override the method that would normally consume it, but doing that just made it not heal any hunger what so ever. The rest works great, it gets eaten, sound and animation plays, durability goes down by 1, and can break the weapon too. I haven't been able to find the actual code that adds hunger, but I have yet to dig super deep, and feel like this might be a problem I shouldn't just copy that code in, because I'm not sure what isn't working here. Code below: package com.nolwest.testmod.items; //imports not shown //I have a util class for ItemTier, letting me just add them in like in this constructor. //StaffItem extends Tiered Item. No part extends Food. public class BreadStaff extends StaffItem{ public BreadStaff() { super(new ItemTier(0,4,1, -1, 18, Items.BREAD), new Properties().group(TestMod.TEST_TAB) .food(new Food.Builder().hunger(5).saturation(0.6F).build())); } //Code overriding the normal Item.onItemUseFinish public ItemStack onItemUseFinish(ItemStack stack, World worldIn, LivingEntity entityLiving) { if (stack.isFood()) { worldIn.playSound((PlayerEntity)null, entityLiving.getPosX(), entityLiving.getPosY(), entityLiving.getPosZ(), entityLiving.getEatSound(stack), SoundCategory.NEUTRAL, 1.0F, 1.0F + (worldIn.rand.nextFloat() - worldIn.rand.nextFloat()) * 0.4F); for(Pair<EffectInstance, Float> pair : stack.getItem().getFood().getEffects()) { if (!worldIn.isRemote && pair.getLeft() != null && worldIn.rand.nextFloat() < pair.getRight()) { entityLiving.addPotionEffect(new EffectInstance(pair.getLeft())); } } if (!(entityLiving instanceof PlayerEntity) || !((PlayerEntity)entityLiving).abilities.isCreativeMode) { stack.damageItem(1, entityLiving, (p_220045_0_) -> { p_220045_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); }); } } return stack; } } Thanks for the help guys. Hopefully one of you know what dumb thing I did! Let me know if you need to see any other classes. EDIT: Got code from LivingEntity not PlayerEntity for onFoodEaten(). After fixing that, it works great.
×
×
  • Create New...

Important Information

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