|
15 | 15 |
|
16 | 16 | ConvenientAccess 提供了一套简洁的 RESTful API,用于管理 Minecraft 1.20.1 Arclight 服务器的白名单系统。基于 WhitelistPlus 设计理念,极大简化了白名单管理流程。所有 API 端点都返回 JSON 格式的数据,专注于核心功能和服务器监控。 |
17 | 17 |
|
| 18 | +## 快速导航 |
| 19 | + |
| 20 | +- [基础信息](#基础信息) - API基础配置和认证说明 |
| 21 | +- [认证系统](#-认证系统) - API认证方式和安全配置 |
| 22 | +- [白名单管理API](#白名单管理-api) - 白名单增删改查操作 |
| 23 | +- [用户注册API](#用户注册-api) - 用户自助注册功能 |
| 24 | +- [玩家数据查询API](#玩家数据查询-api) - 获取玩家详细信息 **[新增]** |
| 25 | +- [服务器监控API](#服务器监控-api) - 服务器状态和性能监控 |
| 26 | +- [UUID自动补充机制](#-uuid自动补充机制) - 简化白名单管理流程 |
| 27 | +- [响应格式](#响应格式) - 统一的响应格式说明 |
| 28 | + |
18 | 29 | ## 基础信息 |
19 | 30 |
|
20 | 31 | - **基础URL**: `http://your-server:22222/api/v1` |
@@ -118,6 +129,11 @@ auth: |
118 | 129 |
|
119 | 130 | *注:虽然是公开端点,但需要管理员密码验证 |
120 | 131 |
|
| 132 | +### 玩家数据查询 API |
| 133 | +| 端点 | 方法 | 描述 | 认证要求 | |
| 134 | +|------|------|------|----------| |
| 135 | +| `/api/v1/player/{playerName}` | GET | 获取玩家详细数据 | API Token | |
| 136 | + |
121 | 137 | ### 服务器监控 API |
122 | 138 | | 端点 | 方法 | 描述 | 认证要求 | |
123 | 139 | |------|------|------|----------| |
@@ -592,6 +608,236 @@ X-Admin-Password: your-admin-password |
592 | 608 | } |
593 | 609 | ``` |
594 | 610 |
|
| 611 | +### 玩家数据查询 API |
| 612 | + |
| 613 | +#### `GET /api/v1/player/{playerName}` |
| 614 | + |
| 615 | +获取指定玩家的详细数据,包括基本信息、位置、生命值、背包、装备等完整信息。 |
| 616 | + |
| 617 | +**路径参数:** |
| 618 | +- `playerName` (string, 必需): 玩家名称 |
| 619 | + |
| 620 | +**请求示例:** |
| 621 | +```bash |
| 622 | +curl -H "X-API-Key: sk-your-api-token-here" \ |
| 623 | + -X GET http://your-server:22222/api/v1/player/PlayerName |
| 624 | +``` |
| 625 | + |
| 626 | +**响应示例(在线玩家):** |
| 627 | +```json |
| 628 | +{ |
| 629 | + "success": true, |
| 630 | + "data": { |
| 631 | + "playerName": "PlayerName", |
| 632 | + "uuid": "550e8400-e29b-41d4-a716-446655440000", |
| 633 | + "isOnline": true, |
| 634 | + "hasPlayedBefore": true, |
| 635 | + "firstPlayed": 1640995200000, |
| 636 | + "lastPlayed": 1640995200000, |
| 637 | + "lastLogin": 1640995200000, |
| 638 | + "gameMode": "SURVIVAL", |
| 639 | + "location": { |
| 640 | + "world": "world", |
| 641 | + "x": 123.45, |
| 642 | + "y": 64.0, |
| 643 | + "z": -67.89, |
| 644 | + "yaw": 90.0, |
| 645 | + "pitch": 0.0, |
| 646 | + "dimension": "NORMAL" |
| 647 | + }, |
| 648 | + "bedSpawnLocation": { |
| 649 | + "world": "world", |
| 650 | + "x": 100.0, |
| 651 | + "y": 65.0, |
| 652 | + "z": -50.0 |
| 653 | + }, |
| 654 | + "health": 20.0, |
| 655 | + "maxHealth": 20.0, |
| 656 | + "foodLevel": 20, |
| 657 | + "saturation": 5.0, |
| 658 | + "exhaustion": 0.0, |
| 659 | + "level": 30, |
| 660 | + "exp": 0.5, |
| 661 | + "totalExperience": 825, |
| 662 | + "remainingAir": 300, |
| 663 | + "maximumAir": 300, |
| 664 | + "fireTicks": 0, |
| 665 | + "isFlying": false, |
| 666 | + "allowFlight": false, |
| 667 | + "isInvulnerable": false, |
| 668 | + "isSneaking": false, |
| 669 | + "isSprinting": false, |
| 670 | + "isSwimming": false, |
| 671 | + "isGliding": false, |
| 672 | + "isBlocking": false, |
| 673 | + "walkSpeed": 0.2, |
| 674 | + "flySpeed": 0.1, |
| 675 | + "potionEffects": [ |
| 676 | + { |
| 677 | + "type": "SPEED", |
| 678 | + "amplifier": 1, |
| 679 | + "duration": 600, |
| 680 | + "isAmbient": false, |
| 681 | + "hasParticles": true, |
| 682 | + "hasIcon": true |
| 683 | + } |
| 684 | + ], |
| 685 | + "inventory": { |
| 686 | + "mainInventory": [ |
| 687 | + { |
| 688 | + "type": "DIAMOND_SWORD", |
| 689 | + "amount": 1, |
| 690 | + "damage": 0, |
| 691 | + "maxDurability": 1561, |
| 692 | + "slot": "0", |
| 693 | + "displayName": "§6传奇之剑", |
| 694 | + "enchantments": { |
| 695 | + "sharpness": 5, |
| 696 | + "unbreaking": 3 |
| 697 | + } |
| 698 | + } |
| 699 | + ], |
| 700 | + "armor": [ |
| 701 | + { |
| 702 | + "type": "DIAMOND_HELMET", |
| 703 | + "amount": 1, |
| 704 | + "damage": 10, |
| 705 | + "maxDurability": 363, |
| 706 | + "slot": "head", |
| 707 | + "enchantments": { |
| 708 | + "protection": 4 |
| 709 | + } |
| 710 | + } |
| 711 | + ], |
| 712 | + "mainHand": { |
| 713 | + "type": "DIAMOND_PICKAXE", |
| 714 | + "amount": 1, |
| 715 | + "damage": 50, |
| 716 | + "maxDurability": 1561, |
| 717 | + "enchantments": { |
| 718 | + "efficiency": 5, |
| 719 | + "fortune": 3 |
| 720 | + } |
| 721 | + }, |
| 722 | + "offHand": { |
| 723 | + "type": "TORCH", |
| 724 | + "amount": 64 |
| 725 | + } |
| 726 | + }, |
| 727 | + "enderChest": [ |
| 728 | + { |
| 729 | + "type": "DIAMOND", |
| 730 | + "amount": 64, |
| 731 | + "slot": "0" |
| 732 | + } |
| 733 | + ], |
| 734 | + "statistics": { |
| 735 | + "playTime": 360000, |
| 736 | + "deaths": 5, |
| 737 | + "mobKills": 1234, |
| 738 | + "playerKills": 10, |
| 739 | + "timeSinceRest": 72000, |
| 740 | + "damageTaken": 150.5, |
| 741 | + "damageDealt": 5234.5 |
| 742 | + } |
| 743 | + }, |
| 744 | + "message": "成功获取玩家数据(在线)", |
| 745 | + "timestamp": "2025-10-02T12:00:00" |
| 746 | +} |
| 747 | +``` |
| 748 | + |
| 749 | +**响应示例(离线玩家):** |
| 750 | +```json |
| 751 | +{ |
| 752 | + "success": true, |
| 753 | + "data": { |
| 754 | + "playerName": "PlayerName", |
| 755 | + "uuid": "550e8400-e29b-41d4-a716-446655440000", |
| 756 | + "isOnline": false, |
| 757 | + "hasPlayedBefore": true, |
| 758 | + "firstPlayed": 1640995200000, |
| 759 | + "lastPlayed": 1640995200000, |
| 760 | + "lastLogin": 1640995200000, |
| 761 | + "gameMode": "UNKNOWN", |
| 762 | + "bedSpawnLocation": { |
| 763 | + "world": "world", |
| 764 | + "x": 100.0, |
| 765 | + "y": 65.0, |
| 766 | + "z": -50.0 |
| 767 | + } |
| 768 | + }, |
| 769 | + "message": "成功获取玩家数据(离线)", |
| 770 | + "timestamp": "2025-10-02T12:00:00" |
| 771 | +} |
| 772 | +``` |
| 773 | + |
| 774 | +**错误响应示例:** |
| 775 | +```json |
| 776 | +{ |
| 777 | + "success": false, |
| 778 | + "error": "玩家不存在或从未登录过服务器", |
| 779 | + "code": 404, |
| 780 | + "timestamp": "2025-10-02T12:00:00" |
| 781 | +} |
| 782 | +``` |
| 783 | + |
| 784 | +**数据字段说明:** |
| 785 | + |
| 786 | +| 字段 | 类型 | 说明 | |
| 787 | +|------|------|------| |
| 788 | +| `playerName` | string | 玩家名称 | |
| 789 | +| `uuid` | string | 玩家UUID | |
| 790 | +| `isOnline` | boolean | 是否在线 | |
| 791 | +| `hasPlayedBefore` | boolean | 是否曾经登录过 | |
| 792 | +| `firstPlayed` | long | 首次登录时间戳(毫秒) | |
| 793 | +| `lastPlayed` | long | 最后登录时间戳(毫秒) | |
| 794 | +| `lastLogin` | long | 最后登录时间戳(毫秒) | |
| 795 | +| `gameMode` | string | 游戏模式 (SURVIVAL/CREATIVE/ADVENTURE/SPECTATOR/UNKNOWN) | |
| 796 | +| `location` | object | 当前位置信息(仅在线) | |
| 797 | +| `location.world` | string | 世界名称 | |
| 798 | +| `location.x/y/z` | double | 坐标 | |
| 799 | +| `location.yaw/pitch` | float | 视角方向 | |
| 800 | +| `location.dimension` | string | 维度 (NORMAL/NETHER/THE_END) | |
| 801 | +| `bedSpawnLocation` | object | 重生点位置 | |
| 802 | +| `health` | double | 当前生命值(仅在线) | |
| 803 | +| `maxHealth` | double | 最大生命值(仅在线) | |
| 804 | +| `foodLevel` | int | 饥饿值(仅在线) | |
| 805 | +| `saturation` | float | 饱和度(仅在线) | |
| 806 | +| `level` | int | 经验等级(仅在线) | |
| 807 | +| `exp` | float | 当前等级经验进度(仅在线) | |
| 808 | +| `totalExperience` | int | 总经验值(仅在线) | |
| 809 | +| `remainingAir` | int | 剩余空气值(仅在线) | |
| 810 | +| `fireTicks` | int | 火焰剩余时间(仅在线) | |
| 811 | +| `isFlying` | boolean | 是否正在飞行(仅在线) | |
| 812 | +| `allowFlight` | boolean | 是否允许飞行(仅在线) | |
| 813 | +| `walkSpeed` | float | 行走速度(仅在线) | |
| 814 | +| `flySpeed` | float | 飞行速度(仅在线) | |
| 815 | +| `potionEffects` | array | 药水效果列表(仅在线) | |
| 816 | +| `inventory` | object | 背包信息(仅在线) | |
| 817 | +| `inventory.mainInventory` | array | 主背包物品 | |
| 818 | +| `inventory.armor` | array | 装备栏物品 | |
| 819 | +| `inventory.mainHand` | object | 主手物品 | |
| 820 | +| `inventory.offHand` | object | 副手物品 | |
| 821 | +| `enderChest` | array | 末影箱物品(仅在线) | |
| 822 | +| `statistics` | object | 游戏统计数据(仅在线) | |
| 823 | +| `statistics.playTime` | long | 游戏时长(秒) | |
| 824 | +| `statistics.deaths` | int | 死亡次数 | |
| 825 | +| `statistics.mobKills` | int | 生物击杀数 | |
| 826 | +| `statistics.playerKills` | int | 玩家击杀数 | |
| 827 | + |
| 828 | +**使用场景:** |
| 829 | +- 查看玩家当前状态和位置 |
| 830 | +- 监控玩家背包和装备 |
| 831 | +- 分析玩家游戏数据 |
| 832 | +- 开发自定义管理工具 |
| 833 | +- 生成玩家数据报告 |
| 834 | + |
| 835 | +**注意事项:** |
| 836 | +- 离线玩家只能获取有限的基本信息 |
| 837 | +- 在线玩家可以获取完整的实时数据 |
| 838 | +- 需要 API Token 认证才能访问 |
| 839 | +- 玩家名称区分大小写 |
| 840 | + |
595 | 841 | ### 服务器监控 API |
596 | 842 |
|
597 | 843 | #### `GET /api/v1/server/status` |
|
0 commit comments