- 222
- 5
- 28
Есть некий плагин на Bukkit, с помощью которого реализована так называемая супер кирка, которая при взаимодействии с блоком ломает его натурально и с учётом эффектов на кирке.
На данный момент я переписываю ряд плагинов для Sponge. На текущей стадии разработки, метод, который помог бы мне сделать это в виде плагина на платформе Sponge ещё не реализован, поэтому я пришёл к выводу, что придётся сделать его модом.
Вот видео с работой мода на данном этапе:
Код:
У меня ряд вопросов:
1. Правильно ли подобрано событие для этого?
2. Правильно ли я ломаю блок и создаю дроп после ломания?
3. В документации к методу removedByPlayer есть описание параметру willHarvest (boolean):
Как правильно понимать это? Имеется ввиду, что метод при значении true сам вызовет метод harvestBlock или то, что я сам вызову этот метод?
Если не вызывать harvestBlock вручную, то блок просто пропадает, но дроп после него не появляется.
На данный момент я переписываю ряд плагинов для Sponge. На текущей стадии разработки, метод, который помог бы мне сделать это в виде плагина на платформе Sponge ещё не реализован, поэтому я пришёл к выводу, что придётся сделать его модом.
Вот видео с работой мода на данном этапе:
Java:
@SubscribeEvent
public static void interact(PlayerInteractEvent.LeftClickBlock e) {
if (e.getHand() == EnumHand.MAIN_HAND) {
EntityPlayer p = e.getEntityPlayer();
BlockPos pos = e.getPos();
World world = p.world;
TileEntity tileEntity = world.getTileEntity(pos);
IBlockState blockState = world.getBlockState(pos);
Block block = blockState.getBlock();
if (block.removedByPlayer(blockState, world, pos, p, true)) {
block.harvestBlock(world, p, pos, blockState, tileEntity, e.getItemStack());
p.sendMessage(new TextComponentString("broken?"));
}
}
}
У меня ряд вопросов:
1. Правильно ли подобрано событие для этого?
2. Правильно ли я ломаю блок и создаю дроп после ломания?
3. В документации к методу removedByPlayer есть описание параметру willHarvest (boolean):
Код:
@param willHarvest True if Block.harvestBlock will be called after this, if the return in true.
Can be useful to delay the destruction of tile entities till after harvestBlock
Если не вызывать harvestBlock вручную, то блок просто пропадает, но дроп после него не появляется.
Последнее редактирование: