Проблема с setBlockState

Версия Minecraft
1.12.1
Нужно ставить блок если зажат Shift. В противном случае заменять блок на который нажали первым блоком.
Я сделал так: в классе блока в методе canPlaceBlockAt написал if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) return false; else true;
А в событии PlayerInteractEvent.RightClickBlock написал чтобы блок ставился если шифта нет и в руке предмет блока. Но вот проблема : блок не заменяется а либо быстро изменяется и обратно либо создается невидимый блок, который после перезапуска становится прежним блоком. Писал через world.setBlockState. Если делать тоже самое, но проверять что в руке, например , яблоко , то все работает. Я думаю что может быть этот блок заменяется только на клиенте.
Или тут совсем другая ошибка?
 
5,018
47
783
if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) return false; else true;
Это бред. Это будет синтаксическая ошибка...
Если не ошибаюсь, это булев метод, а тебя тут RETURN нету.)
Когда ставил через world.setBlockState наверно ты написал setBlockState(Block, BlockPos) а не setBlockState(BlockState, BlockPos)
 
Сверху