Fixed player mining vanilla block

This commit is contained in:
Felix Cravic 2020-05-28 19:29:29 +02:00
parent 5e91b75d78
commit dfd7ca84a4
3 changed files with 16 additions and 16 deletions

View File

@ -1609,11 +1609,18 @@ public class Player extends LivingEntity {
}
public void resetTargetBlock() {
if (targetBlockPosition != null)
if (targetBlockPosition != null) {
sendBlockBreakAnimation(targetBlockPosition, (byte) -1); // Clear the break animation
this.targetCustomBlock = null;
this.targetBlockPosition = null;
this.targetBlockTime = 0;
this.targetCustomBlock = null;
this.targetBlockPosition = null;
this.targetBlockTime = 0;
// Remove effect
RemoveEntityEffectPacket removeEntityEffectPacket = new RemoveEntityEffectPacket();
removeEntityEffectPacket.entityId = getEntityId();
removeEntityEffectPacket.effectId = 4;
getPlayerConnection().sendPacket(removeEntityEffectPacket);
}
}
public void refreshAddBossbar(BossBar bossBar) {

View File

@ -206,6 +206,8 @@ public class InstanceContainer extends Instance {
@Override
public boolean breakBlock(Player player, BlockPosition blockPosition) {
player.resetTargetBlock();
Chunk chunk = getChunkAt(blockPosition);
int x = blockPosition.getX();
@ -226,7 +228,6 @@ public class InstanceContainer extends Instance {
player.callEvent(PlayerBlockBreakEvent.class, blockBreakEvent);
boolean result = !blockBreakEvent.isCancelled();
if (result) {
// Break or change the broken block based on event result
setSeparateBlocks(x, y, z, blockBreakEvent.getResultBlockId(), blockBreakEvent.getResultCustomBlockId());
@ -239,7 +240,7 @@ public class InstanceContainer extends Instance {
chunk.getViewers().forEach(p -> {
// The player who breaks the block already get particles client-side
if (!(p.equals(player) && player.isCreative())) {
if (customBlock == null || !(p.equals(player) && player.isCreative())) {
p.getPlayerConnection().sendPacket(particlePacket);
}
});

View File

@ -13,7 +13,6 @@ import net.minestom.server.item.StackingRule;
import net.minestom.server.network.packet.client.play.ClientPlayerDiggingPacket;
import net.minestom.server.network.packet.server.play.AcknowledgePlayerDiggingPacket;
import net.minestom.server.network.packet.server.play.EntityEffectPacket;
import net.minestom.server.network.packet.server.play.RemoveEntityEffectPacket;
import net.minestom.server.utils.BlockPosition;
public class PlayerDiggingListener {
@ -95,7 +94,7 @@ public class PlayerDiggingListener {
// Unverified block break, client is fully responsive
instance.breakBlock(player, blockPosition);
sendAcknowledgePacket(player, blockPosition, blockId,
sendAcknowledgePacket(player, blockPosition, 0,
ClientPlayerDiggingPacket.Status.FINISHED_DIGGING, true);
break;
case DROP_ITEM_STACK:
@ -157,14 +156,7 @@ public class PlayerDiggingListener {
}
private static void removeEffect(Player player) {
if (player.getCustomBlockTarget() != null) {
player.resetTargetBlock();
RemoveEntityEffectPacket removeEntityEffectPacket = new RemoveEntityEffectPacket();
removeEntityEffectPacket.entityId = player.getEntityId();
removeEntityEffectPacket.effectId = 4;
player.getPlayerConnection().sendPacket(removeEntityEffectPacket);
}
player.resetTargetBlock();
}
private static void sendAcknowledgePacket(Player player, BlockPosition blockPosition, int blockId,