mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-12 10:21:39 +01:00
Fixed player mining vanilla block
This commit is contained in:
parent
5e91b75d78
commit
dfd7ca84a4
@ -1609,11 +1609,18 @@ public class Player extends LivingEntity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void resetTargetBlock() {
|
public void resetTargetBlock() {
|
||||||
if (targetBlockPosition != null)
|
if (targetBlockPosition != null) {
|
||||||
sendBlockBreakAnimation(targetBlockPosition, (byte) -1); // Clear the break animation
|
sendBlockBreakAnimation(targetBlockPosition, (byte) -1); // Clear the break animation
|
||||||
this.targetCustomBlock = null;
|
this.targetCustomBlock = null;
|
||||||
this.targetBlockPosition = null;
|
this.targetBlockPosition = null;
|
||||||
this.targetBlockTime = 0;
|
this.targetBlockTime = 0;
|
||||||
|
|
||||||
|
// Remove effect
|
||||||
|
RemoveEntityEffectPacket removeEntityEffectPacket = new RemoveEntityEffectPacket();
|
||||||
|
removeEntityEffectPacket.entityId = getEntityId();
|
||||||
|
removeEntityEffectPacket.effectId = 4;
|
||||||
|
getPlayerConnection().sendPacket(removeEntityEffectPacket);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshAddBossbar(BossBar bossBar) {
|
public void refreshAddBossbar(BossBar bossBar) {
|
||||||
|
@ -206,6 +206,8 @@ public class InstanceContainer extends Instance {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean breakBlock(Player player, BlockPosition blockPosition) {
|
public boolean breakBlock(Player player, BlockPosition blockPosition) {
|
||||||
|
player.resetTargetBlock();
|
||||||
|
|
||||||
Chunk chunk = getChunkAt(blockPosition);
|
Chunk chunk = getChunkAt(blockPosition);
|
||||||
|
|
||||||
int x = blockPosition.getX();
|
int x = blockPosition.getX();
|
||||||
@ -226,7 +228,6 @@ public class InstanceContainer extends Instance {
|
|||||||
player.callEvent(PlayerBlockBreakEvent.class, blockBreakEvent);
|
player.callEvent(PlayerBlockBreakEvent.class, blockBreakEvent);
|
||||||
boolean result = !blockBreakEvent.isCancelled();
|
boolean result = !blockBreakEvent.isCancelled();
|
||||||
if (result) {
|
if (result) {
|
||||||
|
|
||||||
// Break or change the broken block based on event result
|
// Break or change the broken block based on event result
|
||||||
setSeparateBlocks(x, y, z, blockBreakEvent.getResultBlockId(), blockBreakEvent.getResultCustomBlockId());
|
setSeparateBlocks(x, y, z, blockBreakEvent.getResultBlockId(), blockBreakEvent.getResultCustomBlockId());
|
||||||
|
|
||||||
@ -239,7 +240,7 @@ public class InstanceContainer extends Instance {
|
|||||||
|
|
||||||
chunk.getViewers().forEach(p -> {
|
chunk.getViewers().forEach(p -> {
|
||||||
// The player who breaks the block already get particles client-side
|
// 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);
|
p.getPlayerConnection().sendPacket(particlePacket);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -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.client.play.ClientPlayerDiggingPacket;
|
||||||
import net.minestom.server.network.packet.server.play.AcknowledgePlayerDiggingPacket;
|
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.EntityEffectPacket;
|
||||||
import net.minestom.server.network.packet.server.play.RemoveEntityEffectPacket;
|
|
||||||
import net.minestom.server.utils.BlockPosition;
|
import net.minestom.server.utils.BlockPosition;
|
||||||
|
|
||||||
public class PlayerDiggingListener {
|
public class PlayerDiggingListener {
|
||||||
@ -95,7 +94,7 @@ public class PlayerDiggingListener {
|
|||||||
// Unverified block break, client is fully responsive
|
// Unverified block break, client is fully responsive
|
||||||
instance.breakBlock(player, blockPosition);
|
instance.breakBlock(player, blockPosition);
|
||||||
|
|
||||||
sendAcknowledgePacket(player, blockPosition, blockId,
|
sendAcknowledgePacket(player, blockPosition, 0,
|
||||||
ClientPlayerDiggingPacket.Status.FINISHED_DIGGING, true);
|
ClientPlayerDiggingPacket.Status.FINISHED_DIGGING, true);
|
||||||
break;
|
break;
|
||||||
case DROP_ITEM_STACK:
|
case DROP_ITEM_STACK:
|
||||||
@ -157,14 +156,7 @@ public class PlayerDiggingListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void removeEffect(Player player) {
|
private static void removeEffect(Player player) {
|
||||||
if (player.getCustomBlockTarget() != null) {
|
|
||||||
player.resetTargetBlock();
|
player.resetTargetBlock();
|
||||||
|
|
||||||
RemoveEntityEffectPacket removeEntityEffectPacket = new RemoveEntityEffectPacket();
|
|
||||||
removeEntityEffectPacket.entityId = player.getEntityId();
|
|
||||||
removeEntityEffectPacket.effectId = 4;
|
|
||||||
player.getPlayerConnection().sendPacket(removeEntityEffectPacket);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void sendAcknowledgePacket(Player player, BlockPosition blockPosition, int blockId,
|
private static void sendAcknowledgePacket(Player player, BlockPosition blockPosition, int blockId,
|
||||||
|
Loading…
Reference in New Issue
Block a user