Skip to content

Commit 2fbe5d2

Browse files
zimuya4153ShrBox
andauthored
feat: add some api and event (#220)
* feat: add some api * fix: fix docs error * feat: add Player.toEntity api * fix: fix error * chore: fix CHANGELOG.md --------- Co-authored-by: ShrBox <[email protected]>
1 parent 8fdc518 commit 2fbe5d2

File tree

21 files changed

+405
-178
lines changed

21 files changed

+405
-178
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- Added some api and event [#220]
13+
1014
## [0.9.4] - 2025-02-02
1115

1216
### Changed
@@ -766,6 +770,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
766770

767771
[#219]: https://github.com/LiteLDev/LegacyScriptEngine/issues/219
768772

773+
[#220]: https://github.com/LiteLDev/LegacyScriptEngine/issues/220
774+
769775
[Unreleased]: https://github.com/LiteLDev/LegacyScriptEngine/compare/v0.9.4...HEAD
770776

771777
[0.9.4]: https://github.com/LiteLDev/LegacyScriptEngine/compare/v0.9.3...v0.9.4

docs/apis/EventAPI/PlayerEvents.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,3 +576,20 @@ Note: This event is so powerful that it can even intercept and open backpacks.
576576
- pos : `IntPos`
577577
The position of the bed used.
578578
- Intercept events: function returns `false`
579+
580+
581+
582+
#### `"onPlayerInteractEntity"` - Player Interact with Entity
583+
584+
!!! tip "Added in 0.9.5"
585+
586+
- Listener function prototype
587+
`function(player, entity, pos)`
588+
- Parameters:
589+
- player : `Player`
590+
Players who interact with entity
591+
- entity : `Entity`
592+
Entity that player interact with
593+
- pos : `FloatPos`
594+
Interaction position
595+
- Intercept events: function returns `false`

docs/apis/EventAPI/PlayerEvents.zh.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,3 +592,20 @@
592592
- pos : `IntPos`
593593
床的位置
594594
- 拦截事件:函数返回`false`
595+
596+
597+
598+
#### `"onPlayerInteractEntity"` - 玩家交互实体
599+
600+
!!! tip "此事件在 0.9.5 中加入"
601+
602+
- 监听函数原型
603+
`function(player, entity, pos)`
604+
- 参数:
605+
- player : `Player`
606+
交互实体的玩家对象
607+
- entity : `Entity`
608+
被交互的实体对象
609+
- pos : `FloatPos`
610+
交互坐标
611+
- 拦截事件:函数返回`false`

docs/apis/GameAPI/Entity.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,23 @@ This function returns an array of entity objects, each of which corresponds to a
3333
- Return value: List of entity objects
3434
- Return value type: `Array<Entity,Entity,...>`
3535

36+
#### Acquired From Existing Entitys
37+
38+
Manually generate entity objects by **entity information**
39+
Use this function to manually generate objects. Note that the entity you want to get must be online, otherwise the
40+
generation will fail.
41+
42+
!!! tip "Added in 0.9.5"
43+
44+
`mc.getEntity(info)`
45+
46+
- Parameters:
47+
- info : `Number`
48+
Entity's UniqueId or RuntimeId.
49+
- Return value: The generated entity object.
50+
- Return value type: `Entity`
51+
- If the return value is `Null`, it means that getting the entity failed.
52+
3653
#### Spawn New Creature and Get Its Entity Object
3754

3855
Through this function, generate a new creature at the specified location and get its corresponding entity object.
@@ -105,6 +122,7 @@ properties:
105122
| en.speed | Entity's current speed | `Float` |
106123
| en.direction | Entity's orientation | `DirectionAngle` |
107124
| en.uniqueId | Entity's unique identifier | `String` |
125+
| en.runtimeId | Entity's runtime identifier (Added in 0.9.5) | `String` |
108126
| en.isInvisible | Whether the entity is invisible | `Boolean` |
109127
| en.isInsidePortal | Whether the entity is inside the portal | `Boolean` |
110128
| en.isTrusting | Whether the entity is trusted | `Boolean` |

docs/apis/GameAPI/Entity.zh.md

Lines changed: 56 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,22 @@
3232
- 返回值: 实体对象列表
3333
- 返回值类型: `Array<Entity,Entity,...>`
3434

35+
#### 从现有实体获取
36+
37+
通过**实体信息**手动生成实体对象
38+
通过此函数来手动生成对象,注意,你要获取的实体必须是在线状态,否则会生成失败
39+
40+
!!! tip "此接口在 0.9.5 版本加入"
41+
42+
`mc.getEntity(info)`
43+
44+
- 参数:
45+
- info : `Number`
46+
实体的UniqueId或者RuntimeId
47+
- 返回值:生成的实体对象
48+
- 返回值类型:`Entity`
49+
- 如返回值为 `Null` 则表示获取实体失败
50+
3551
#### 生成新生物并获取
3652

3753
通过此函数,在指定的位置生成一个新生物,并获取它对应的实体对象
@@ -74,45 +90,46 @@
7490

7591
每一个实体对象都包含一些固定的对象属性。对于某个特定的实体对象`en`,有以下这些属性
7692

77-
| 属性 | 含义 | 类型 |
78-
|--------------------------|-------------|------------------|
79-
| en.name | 实体名称 | `String` |
80-
| en.type | 实体标准类型名 | `String` |
81-
| en.id | 实体的游戏内id | `Integer` |
82-
| en.pos | 实体所在坐标 | `FloatPos` |
83-
| en.feetPos | 实体腿部所在坐标 | `FloatPos` |
84-
| en.blockPos | 实体所在的方块坐标 | `IntPos` |
85-
| en.maxHealth | 实体最大生命值 | `Integer` |
86-
| en.health | 实体当前生命值 | `Integer` |
87-
| en.canFly | 实体是否能飞行 | `Boolean` |
88-
| en.canFreeze | 实体是否能被冻结 | `Boolean` |
89-
| en.canSeeDaylight | 实体是否能看到天空 | `Boolean` |
90-
| en.canPickupItems | 实体是否能拾取物品 | `Boolean` |
91-
| en.inAir | 实体是否悬空 | `Boolean` |
92-
| en.inWater | 实体是否在水中 | `Boolean` |
93-
| en.inLava | 实体是否在岩浆中 | `Boolean` |
94-
| en.inRain | 实体是否在雨中 | `Boolean` |
95-
| en.inSnow | 实体是否在雪中 | `Boolean` |
96-
| en.inWall | 实体是否在墙上 | `Boolean` |
97-
| en.inWaterOrRain | 实体是否在水中或雨中 | `Boolean` |
98-
| en.inWorld | 实体是否在世界中 | `Boolean` |
99-
| en.speed | 实体当前速度 | `Float` |
100-
| en.direction | 实体当前朝向 | `DirectionAngle` |
101-
| en.uniqueId | 实体唯一标识符 | `String` |
102-
| en.isInvisible | 实体是否不可见 | `Boolean` |
103-
| en.isInsidePortal | 实体是否在门户内 | `Boolean` |
104-
| en.isTrusting | 实体是否信任 | `Boolean` |
105-
| en.isTouchingDamageBlock | 实体是否接触到伤害方块 | `Boolean` |
106-
| en.isOnFire | 实体是否着火 | `Boolean` |
107-
| en.isOnGround | 实体是否在地面 | `Boolean` |
108-
| en.isOnHotBlock | 实体是否在热块上 | `Boolean` |
109-
| en.isTrading | 实体是否在交易 | `Boolean` |
110-
| en.isRiding | 实体是否正在骑行 | `Boolean` |
111-
| en.isDancing | 实体是否在跳舞 | `Boolean` |
112-
| en.isSleeping | 实体是否在睡觉 | `Boolean` |
113-
| en.isAngry | 实体是否生气 | `Boolean` |
114-
| en.isBaby | 实体是否为幼体 | `Boolean` |
115-
| en.isMoving | 实体是否移动 | `Boolean` |
93+
| 属性 | 含义 | 类型 |
94+
| ------------------------ | ----------------------------------- | ---------------- |
95+
| en.name | 实体名称 | `String` |
96+
| en.type | 实体标准类型名 | `String` |
97+
| en.id | 实体的游戏内 id | `Integer` |
98+
| en.pos | 实体所在坐标 | `FloatPos` |
99+
| en.feetPos | 实体腿部所在坐标 | `FloatPos` |
100+
| en.blockPos | 实体所在的方块坐标 | `IntPos` |
101+
| en.maxHealth | 实体最大生命值 | `Integer` |
102+
| en.health | 实体当前生命值 | `Integer` |
103+
| en.canFly | 实体是否能飞行 | `Boolean` |
104+
| en.canFreeze | 实体是否能被冻结 | `Boolean` |
105+
| en.canSeeDaylight | 实体是否能看到天空 | `Boolean` |
106+
| en.canPickupItems | 实体是否能拾取物品 | `Boolean` |
107+
| en.inAir | 实体是否悬空 | `Boolean` |
108+
| en.inWater | 实体是否在水中 | `Boolean` |
109+
| en.inLava | 实体是否在岩浆中 | `Boolean` |
110+
| en.inRain | 实体是否在雨中 | `Boolean` |
111+
| en.inSnow | 实体是否在雪中 | `Boolean` |
112+
| en.inWall | 实体是否在墙上 | `Boolean` |
113+
| en.inWaterOrRain | 实体是否在水中或雨中 | `Boolean` |
114+
| en.inWorld | 实体是否在世界中 | `Boolean` |
115+
| en.speed | 实体当前速度 | `Float` |
116+
| en.direction | 实体当前朝向 | `DirectionAngle` |
117+
| en.uniqueId | 实体唯一标识符 | `String` |
118+
| en.runtimeId | 实体运行时标识符(在 0.9.5 时被加入) | `String` |
119+
| en.isInvisible | 实体是否不可见 | `Boolean` |
120+
| en.isInsidePortal | 实体是否在门户内 | `Boolean` |
121+
| en.isTrusting | 实体是否信任 | `Boolean` |
122+
| en.isTouchingDamageBlock | 实体是否接触到伤害方块 | `Boolean` |
123+
| en.isOnFire | 实体是否着火 | `Boolean` |
124+
| en.isOnGround | 实体是否在地面 | `Boolean` |
125+
| en.isOnHotBlock | 实体是否在热块上 | `Boolean` |
126+
| en.isTrading | 实体是否在交易 | `Boolean` |
127+
| en.isRiding | 实体是否正在骑行 | `Boolean` |
128+
| en.isDancing | 实体是否在跳舞 | `Boolean` |
129+
| en.isSleeping | 实体是否在睡觉 | `Boolean` |
130+
| en.isAngry | 实体是否生气 | `Boolean` |
131+
| en.isBaby | 实体是否为幼体 | `Boolean` |
132+
| en.isMoving | 实体是否移动 | `Boolean` |
116133

117134
这些对象属性都是只读的,无法被修改
118135

docs/apis/GameAPI/Packet.md

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -83,27 +83,29 @@ Every binary stream object contains some member functions (member methods) that
8383
- Return value:success or not
8484
- Return value type: `Boolean`
8585

86-
| Available functions | Parameter Type |
87-
| ----------------------- | -------------- |
88-
| writeBool | `Boolean` |
89-
| writeByte | `Integer` |
90-
| writeDouble | `Number` |
91-
| writeFloat | `Float` |
92-
| writeSignedBigEndianInt | `Number` |
93-
| writeSignedInt | `Number` |
94-
| writeSignedInt64 | `Number` |
95-
| writeSignedShort | `Integer` |
96-
| writeString | `String` |
97-
| writeUnsignedChar | `Integer` |
98-
| writeUnsignedInt | `Number` |
99-
| writeUnsignedInt64 | `Number` |
100-
| writeUnsignedShort | `Integer` |
101-
| writeUnsignedVarInt | `Number` |
102-
| writeUnsignedVarInt64 | `Number` |
103-
| writeVarInt | `Number` |
104-
| writeVarInt64 | `Number` |
105-
| writeVec3 | `FloatPos` |
106-
| writeCompoundTag | `NbtCompound` |
86+
| Available functions | Parameter Type |
87+
| ------------------------------ | -------------- |
88+
| writeBool | `Boolean` |
89+
| writeByte | `Integer` |
90+
| writeDouble | `Number` |
91+
| writeFloat | `Float` |
92+
| writeSignedBigEndianInt | `Number` |
93+
| writeSignedInt | `Number` |
94+
| writeSignedInt64 | `Number` |
95+
| writeSignedShort | `Integer` |
96+
| writeString | `String` |
97+
| writeUnsignedChar | `Integer` |
98+
| writeUnsignedInt | `Number` |
99+
| writeUnsignedInt64 | `Number` |
100+
| writeUnsignedShort | `Integer` |
101+
| writeUnsignedVarInt | `Number` |
102+
| writeUnsignedVarInt64 | `Number` |
103+
| writeVarInt | `Number` |
104+
| writeVarInt64 | `Number` |
105+
| writeVec3 | `FloatPos` |
106+
| writeBlockPos (Added in 0.9.5) | `BlockPos` |
107+
| writeCompoundTag | `NbtCompound` |
108+
| writeItem (Added in 0.9.5) | `Item` |
107109

108110

109111

docs/apis/GameAPI/Packet.zh.md

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -83,27 +83,29 @@
8383
- 返回值:是否成功
8484
- 返回值类型: `Boolean`
8585

86-
| 可用函数 | 参数类型 |
87-
| ----------------------- | ------------- |
88-
| writeBool | `Boolean` |
89-
| writeByte | `Integer` |
90-
| writeDouble | `Number` |
91-
| writeFloat | `Float` |
92-
| writeSignedBigEndianInt | `Number` |
93-
| writeSignedInt | `Number` |
94-
| writeSignedInt64 | `Number` |
95-
| writeSignedShort | `Integer` |
96-
| writeString | `String` |
97-
| writeUnsignedChar | `Integer` |
98-
| writeUnsignedInt | `Number` |
99-
| writeUnsignedInt64 | `Number` |
100-
| writeUnsignedShort | `Integer` |
101-
| writeUnsignedVarInt | `Number` |
102-
| writeUnsignedVarInt64 | `Number` |
103-
| writeVarInt | `Number` |
104-
| writeVarInt64 | `Number` |
105-
| writeVec3 | `FloatPos` |
106-
| writeCompoundTag | `NbtCompound` |
86+
| 可用函数 | 参数类型 |
87+
| ---------------------------- | ------------- |
88+
| writeBool | `Boolean` |
89+
| writeByte | `Integer` |
90+
| writeDouble | `Number` |
91+
| writeFloat | `Float` |
92+
| writeSignedBigEndianInt | `Number` |
93+
| writeSignedInt | `Number` |
94+
| writeSignedInt64 | `Number` |
95+
| writeSignedShort | `Integer` |
96+
| writeString | `String` |
97+
| writeUnsignedChar | `Integer` |
98+
| writeUnsignedInt | `Number` |
99+
| writeUnsignedInt64 | `Number` |
100+
| writeUnsignedShort | `Integer` |
101+
| writeUnsignedVarInt | `Number` |
102+
| writeUnsignedVarInt64 | `Number` |
103+
| writeVarInt | `Number` |
104+
| writeVarInt64 | `Number` |
105+
| writeVec3 | `FloatPos` |
106+
| writeBlockPos (0.9.5 时加入) | `BlockPos` |
107+
| writeCompoundTag | `NbtCompound` |
108+
| writeItem (0.9.5 时加入) | `Item` |
107109

108110

109111

@@ -135,5 +137,5 @@ mc.listen("onChat",function(pl,msg){
135137
bs.writeString("")
136138
var pkt = bs.createPacket(9)
137139
pl.sendPacket(pkt)
138-
})
140+
});
139141
```

docs/apis/GameAPI/Player.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ generation will fail.
1717

1818
`mc.getPlayer(info)`
1919

20-
!!! tip
21-
Versions before 0.8.13 could not get player by UUID
20+
!!! tip "Versions before 0.8.13 could not get player by UUID<br>Versions before 0.9.5 could not get player by RuntimeId"
2221

2322
- Parameters:
2423
- info : `String`
25-
Player's name, XUID or UniqueId or UUID.
24+
Player's name, XUID or UniqueId or RuntimeId or UUID.
2625
- Return value: The generated player object.
2726
- Return value type: `Player`
2827
- If the return value is `Null`, it means that getting the player failed.
@@ -79,6 +78,7 @@ properties.
7978
| pl.speed | Player's current speed | `Float` |
8079
| pl.direction | Player's current orientation | `DirectionAngle` |
8180
| pl.uniqueId | Player's (entity's) unique identifier | `String` |
81+
| pl.runtimeId | Player's (entity's) runtime identifier (Added in 0.9.5) | `String` |
8282
| pl.isLoading | Player is loading | `Boolean` |
8383
| pl.isInvisible | Player is invisible | `Boolean` |
8484
| pl.isInsidePortal | Player is inside portal | `Boolean` |
@@ -1334,6 +1334,17 @@ such as `Base` `Current` `DefaultMax` `DefaultMin` `Max` `Min` `Name` by default
13341334
| village_hero | 29 |
13351335
| darkness | 30 |
13361336

1337+
#### Convert Player Object to Entity Object
1338+
1339+
`en.toEntity()`
1340+
1341+
- Return value: The converted `Entity` object.
1342+
- Return value type: `Entity`
1343+
- Returns `Null` if the transition fails.
1344+
1345+
If the current entity object points to a player, you can use this function to convert the entity object to a player
1346+
object to use more player-related APIs.
1347+
13371348
### Determine whether it is a simulated player
13381349

13391350
`pl.isSimulatedPlayer()`

0 commit comments

Comments
 (0)