PlayerInteractEvent
или FluidEvent.FluidFillingEvent
player.inventory.getStackInSlot
, player.inventory.setInventorySlotContents
world.setBlockState(new BlockPos(x,y,z), Blocks.WATER.getDefaultState())
playerController.processRightClickBlock
.processRightClick
, то всё работает: происходит клик правой кнопкой мыши и ведро набирается. Но для этого нужно смотреть на блок. Поэтому пробую processRightClickBlock
, но он не работает.EnumActionResult res = mc.playerController.processRightClickBlock(mc.player, mc.world, waterBlock, EnumFacing.UP, vec, EnumHand.MAIN_HAND);
В vec нужна переменная Vec3d. Откуда её взять?
в waterBlock - BlockPos блока воды.
При исполнении ничего не происходит
res - PASS
СервераЭто будет работать только со стороны клиента?
Это можно юзать для симуляции пкм на клиенте. Vec3d аргумент - это, видимо, направление взглядаprocessRightClickBlock
Нужно на клиентеСервера
Скорее всего, но вопрос: как его получить, имея позицию игрока и позицию блока воды?Vec3d аргумент - это, видимо, направление взгляда
public EnumActionResult processRightClickBlock(EntityPlayerSP player, WorldClient worldIn, BlockPos pos, EnumFacing direction, Vec3d vec, EnumHand hand)
{
this.syncCurrentPlayItem();
ItemStack itemstack = player.getHeldItem(hand);
float f = (float)(vec.x - (double)pos.getX());
float f1 = (float)(vec.y - (double)pos.getY());
float f2 = (float)(vec.z - (double)pos.getZ());
boolean flag = false;