- 2
- 0
Необходим следующий функционал: при нажатии ПКМ по блоку с определённым (кастомным) предметом в руке, после валидации этого блока, изменить одно из значений CompoundNBT для предмета. С CompoundNBT вроде разобрался (но буду благодарен, если подскажете более элегантный способ изменения существующего значения), но возник вопрос, как вычислить блок, на который нацелен игрок.
public class LightCollectorItem extends ToolItem:
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
BlockPos blockPosUnderAim = new BlockPos(0, 0, 0); //todo get correct block
ItemStack heldItem = playerIn.getHeldItem(handIn);
if (isLightValueValid(worldIn, blockPosUnderAim)) {
CompoundNBT compoundNBT = heldItem.getTag();
int lightCounter;
if (compoundNBT == null) {
compoundNBT = new CompoundNBT();
lightCounter = 0;
} else {
lightCounter = compoundNBT.getInt(LIGHT_COUNTER_KEY);
}
compoundNBT.putInt(LIGHT_COUNTER_KEY, ++lightCounter);
heldItem.setTag(compoundNBT);
}
return new ActionResult<>(ActionResultType.SUCCESS, heldItem);
}