I'd like it to be so that when a player right clicks on a block, any entity on top gets bounced into the air a little bit.
It works on most entities, but for some reason it doesn't work on players.
@Override
public ActionResultType use(BlockState state, World world, BlockPos pos, PlayerEntity playerEntity, Hand hand, BlockRayTraceResult hit) {
if (!world.isClientSide()) {
List<Entity> entitiesToBoing = world.getEntitiesOfClass(Entity.class, new AxisAlignedBB(pos.getX(), pos.getY() + 1.0f, pos.getZ(), pos.getX() + 1.0f, pos.getY() + 2.0f, pos.getZ() + 1.0f));
for (Entity entity : entitiesToBoing) {
entity.setDeltaMovement(entity.getDeltaMovement().add(0.0f, 0.5f, 0.0f));
}
}
return ActionResultType.SUCCESS;
}
My reckoning is that the velocity of player entities is changed after this method is called and before their positions are updated, but I don't know how to work around that for my purposes.
Does anybody know why this isn't working and what I can do to fix it?
(I'm using Forge 36.1.0 for MC 1.16.5, if that's relevant)