private void StartBreakingBlock() { SwingArm(true); var floored = Vector3.Floor(Raytraced); var block = Level.GetBlock(floored); if (!block.HasHitbox) { return; } _destroyingBlock = true; _destroyingTarget = floored; _destroyingFace = GetTargetFace(); _destroyingTick = DateTime.UtcNow; //if (Inventory.MainHand != null) { _destroyTimeNeeded = block.GetBreakTime(Inventory.MainHand ?? new ItemAir()) * 20f; } Log.Debug($"Start break block ({_destroyingTarget}, {_destroyTimeNeeded} ticks.)"); var flooredAdj = Vector3.Floor(AdjacentRaytrace); var remainder = new Vector3(AdjacentRaytrace.X - flooredAdj.X, AdjacentRaytrace.Y - flooredAdj.Y, AdjacentRaytrace.Z - flooredAdj.Z); Network?.PlayerDigging(DiggingStatus.Started, _destroyingTarget, _destroyingFace, remainder); }
private void StartBreakingBlock() { SwingArm(true); var floored = new BlockCoordinates(Vector3.Floor(Raytraced)); var adjacent = AdjacentRaytrace; var block = Level.GetBlock(floored); if (!block.HasHitbox) { return; } var face = GetTargetFace(); _destroyingBlock = true; _destroyingTarget = floored; _destroyingFace = face; Interlocked.Exchange(ref _destroyingTick, 0); _destroyTimeNeeded = block.GetBreakTime(Inventory.MainHand ?? new ItemAir()); Log.Debug($"Start break block ({_destroyingTarget}, {_destroyTimeNeeded} ticks.)"); var flooredAdj = Vector3.Floor(adjacent); var remainder = new Vector3(adjacent.X - flooredAdj.X, adjacent.Y - flooredAdj.Y, adjacent.Z - flooredAdj.Z); Network?.PlayerDigging(DiggingStatus.Started, floored, face, remainder); }
public override void BlockPlaced(BlockCoordinates position, API.Blocks.BlockFace face, int hand, Vector3 cursorPosition, Entity p) { Client.SendPacket(new PlayerBlockPlacementPacket() { CursorPosition = cursorPosition, Location = position, Face = face, Hand = hand }); }
public override void WorldInteraction(BlockCoordinates position, API.Blocks.BlockFace face, int hand, Vector3 cursorPosition) { Client.SendPacket(new PlayerBlockPlacementPacket() { Location = position, Face = face, Hand = hand, CursorPosition = cursorPosition, InsideBlock = false }); }
public override void UseItem(Item item, int hand, ItemUseAction action, BlockCoordinates position, API.Blocks.BlockFace face, Vector3 cursorPosition) { //if (!(action == )) Client.SendPacket(new UseItemPacket() { Hand = hand }); }
public override void PlayerDigging(DiggingStatus status, BlockCoordinates position, API.Blocks.BlockFace face, Vector3 cursorPosition) { Client.SendPacket(new PlayerDiggingPacket() { Face = face, Location = position, Status = status }); }
public override void UseItem(Item item, int hand, ItemUseAction useAction, BlockCoordinates position, API.Blocks.BlockFace face, Vector3 cursorPosition) { }
public override void WorldInteraction(Entity player, BlockCoordinates position, API.Blocks.BlockFace face, int hand, int slot, Vector3 cursorPosition) { }
public override void PlayerDigging(DiggingStatus status, BlockCoordinates position, API.Blocks.BlockFace face, Vector3 cursorPosition) { }
public override void BlockPlaced(BlockCoordinates position, API.Blocks.BlockFace face, int hand, int slot, Vector3 cursorPosition, Entity p) { }
public abstract void UseItem(Item item, int hand, ItemUseAction action, BlockCoordinates position, API.Blocks.BlockFace face, Vector3 cursorPosition);
public abstract void WorldInteraction(Entity entity, BlockCoordinates position, API.Blocks.BlockFace face, int hand, int slot, Vector3 cursorPosition);
public abstract void PlayerDigging(DiggingStatus status, BlockCoordinates position, API.Blocks.BlockFace face, Vector3 cursorPosition);
public abstract void BlockPlaced(BlockCoordinates position, API.Blocks.BlockFace face, int hand, Vector3 cursorPosition, Entity player);
public override void WorldInteraction(BlockCoordinates position, API.Blocks.BlockFace face, int hand, Vector3 cursorPosition) { }