minethon 0.1.0a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
minethon/__init__.py ADDED
@@ -0,0 +1,78 @@
1
+ """minethon -- A Python-first Mineflayer SDK."""
2
+
3
+ from minethon.api.navigation import NavigationAPI
4
+ from minethon.api.observe import ObserveAPI
5
+ from minethon.api.plugins import PluginAPI
6
+ from minethon.bot import Bot
7
+ from minethon.models.block import Block
8
+ from minethon.models.entity import Entity, EntityKind
9
+ from minethon.models.errors import (
10
+ BridgeError,
11
+ InventoryError,
12
+ MinethonConnectionError,
13
+ MinethonError,
14
+ NavigationError,
15
+ NotSpawnedError,
16
+ PluginError,
17
+ )
18
+ from minethon.models.events import (
19
+ BlockBrokenEvent,
20
+ ChatEvent,
21
+ CollectCompletedEvent,
22
+ DeathEvent,
23
+ EndEvent,
24
+ GoalFailedEvent,
25
+ GoalReachedEvent,
26
+ HealthChangedEvent,
27
+ KickedEvent,
28
+ SpawnEvent,
29
+ WhisperEvent,
30
+ )
31
+ from minethon.models.experience import Experience
32
+ from minethon.models.game_state import GameState
33
+ from minethon.models.item import ItemStack
34
+ from minethon.models.player_info import PlayerInfo
35
+ from minethon.models.recipe import Recipe
36
+ from minethon.models.time_state import TimeState
37
+ from minethon.models.vec3 import Vec3
38
+ from minethon.models.window import TradeOffer, VillagerSession, WindowHandle
39
+ from minethon.raw import RawBotHandle
40
+
41
+ __all__ = [
42
+ "Block",
43
+ "BlockBrokenEvent",
44
+ "Bot",
45
+ "BridgeError",
46
+ "ChatEvent",
47
+ "CollectCompletedEvent",
48
+ "DeathEvent",
49
+ "EndEvent",
50
+ "Entity",
51
+ "EntityKind",
52
+ "Experience",
53
+ "GameState",
54
+ "GoalFailedEvent",
55
+ "GoalReachedEvent",
56
+ "HealthChangedEvent",
57
+ "InventoryError",
58
+ "ItemStack",
59
+ "KickedEvent",
60
+ "MinethonConnectionError",
61
+ "MinethonError",
62
+ "NavigationAPI",
63
+ "NavigationError",
64
+ "NotSpawnedError",
65
+ "ObserveAPI",
66
+ "PlayerInfo",
67
+ "PluginAPI",
68
+ "PluginError",
69
+ "RawBotHandle",
70
+ "Recipe",
71
+ "SpawnEvent",
72
+ "TimeState",
73
+ "TradeOffer",
74
+ "Vec3",
75
+ "VillagerSession",
76
+ "WhisperEvent",
77
+ "WindowHandle",
78
+ ]
File without changes
@@ -0,0 +1,312 @@
1
+ """Internal bridge events for async JS operations.
2
+
3
+ These are private to the bridge layer — never import from public API.
4
+ Each event signals completion of a non-blocking JS action started by
5
+ the helpers in ``_bridge/js/helpers.js``.
6
+ """
7
+
8
+ from dataclasses import dataclass
9
+ from typing import Any
10
+
11
+ # -- Existing events --
12
+
13
+
14
+ @dataclass(frozen=True, slots=True)
15
+ class DigDoneEvent:
16
+ """Dig operation finished (success if error is None)."""
17
+
18
+ error: str | None = None
19
+
20
+
21
+ @dataclass(frozen=True, slots=True)
22
+ class PlaceDoneEvent:
23
+ """Place operation finished."""
24
+
25
+ error: str | None = None
26
+
27
+
28
+ @dataclass(frozen=True, slots=True)
29
+ class EquipDoneEvent:
30
+ """Equip operation finished."""
31
+
32
+ error: str | None = None
33
+
34
+
35
+ @dataclass(frozen=True, slots=True)
36
+ class LookAtDoneEvent:
37
+ """LookAt operation finished."""
38
+
39
+ error: str | None = None
40
+
41
+
42
+ # -- Movement --
43
+
44
+
45
+ @dataclass(frozen=True, slots=True)
46
+ class LookDoneEvent:
47
+ """Look (yaw/pitch) operation finished."""
48
+
49
+ error: str | None = None
50
+
51
+
52
+ # -- Sleep --
53
+
54
+
55
+ @dataclass(frozen=True, slots=True)
56
+ class SleepDoneEvent:
57
+ """Sleep operation finished."""
58
+
59
+ error: str | None = None
60
+
61
+
62
+ @dataclass(frozen=True, slots=True)
63
+ class WakeDoneEvent:
64
+ """Wake operation finished."""
65
+
66
+ error: str | None = None
67
+
68
+
69
+ # -- Inventory --
70
+
71
+
72
+ @dataclass(frozen=True, slots=True)
73
+ class UnequipDoneEvent:
74
+ """Unequip operation finished."""
75
+
76
+ error: str | None = None
77
+
78
+
79
+ @dataclass(frozen=True, slots=True)
80
+ class TossStackDoneEvent:
81
+ """TossStack operation finished."""
82
+
83
+ error: str | None = None
84
+
85
+
86
+ @dataclass(frozen=True, slots=True)
87
+ class TossDoneEvent:
88
+ """Toss operation finished."""
89
+
90
+ error: str | None = None
91
+
92
+
93
+ # -- Actions --
94
+
95
+
96
+ @dataclass(frozen=True, slots=True)
97
+ class ConsumeDoneEvent:
98
+ """Consume (eat/drink) operation finished."""
99
+
100
+ error: str | None = None
101
+
102
+
103
+ @dataclass(frozen=True, slots=True)
104
+ class FishDoneEvent:
105
+ """Fish operation finished."""
106
+
107
+ error: str | None = None
108
+
109
+
110
+ @dataclass(frozen=True, slots=True)
111
+ class ElytraFlyDoneEvent:
112
+ """Elytra fly activation finished."""
113
+
114
+ error: str | None = None
115
+
116
+
117
+ # -- Crafting --
118
+
119
+
120
+ @dataclass(frozen=True, slots=True)
121
+ class CraftDoneEvent:
122
+ """Craft operation finished."""
123
+
124
+ error: str | None = None
125
+
126
+
127
+ # -- Block interaction --
128
+
129
+
130
+ @dataclass(frozen=True, slots=True)
131
+ class ActivateBlockDoneEvent:
132
+ """ActivateBlock operation finished."""
133
+
134
+ error: str | None = None
135
+
136
+
137
+ @dataclass(frozen=True, slots=True)
138
+ class ActivateEntityDoneEvent:
139
+ """ActivateEntity operation finished."""
140
+
141
+ error: str | None = None
142
+
143
+
144
+ @dataclass(frozen=True, slots=True)
145
+ class ActivateEntityAtDoneEvent:
146
+ """ActivateEntityAt operation finished."""
147
+
148
+ error: str | None = None
149
+
150
+
151
+ # -- Containers (return JS window/instance proxy on success) --
152
+
153
+
154
+ @dataclass(frozen=True, slots=True)
155
+ class OpenContainerDoneEvent:
156
+ """OpenContainer operation finished."""
157
+
158
+ error: str | None = None
159
+ result: Any = None
160
+
161
+
162
+ @dataclass(frozen=True, slots=True)
163
+ class OpenFurnaceDoneEvent:
164
+ """OpenFurnace operation finished."""
165
+
166
+ error: str | None = None
167
+ result: Any = None
168
+
169
+
170
+ @dataclass(frozen=True, slots=True)
171
+ class OpenEnchantmentTableDoneEvent:
172
+ """OpenEnchantmentTable operation finished."""
173
+
174
+ error: str | None = None
175
+ result: Any = None
176
+
177
+
178
+ @dataclass(frozen=True, slots=True)
179
+ class OpenAnvilDoneEvent:
180
+ """OpenAnvil operation finished."""
181
+
182
+ error: str | None = None
183
+ result: Any = None
184
+
185
+
186
+ @dataclass(frozen=True, slots=True)
187
+ class OpenVillagerDoneEvent:
188
+ """OpenVillager operation finished."""
189
+
190
+ error: str | None = None
191
+ result: Any = None
192
+
193
+
194
+ # -- Trading --
195
+
196
+
197
+ @dataclass(frozen=True, slots=True)
198
+ class TradeDoneEvent:
199
+ """Trade operation finished."""
200
+
201
+ error: str | None = None
202
+
203
+
204
+ # -- Tab completion (returns matches) --
205
+
206
+
207
+ @dataclass(frozen=True, slots=True)
208
+ class TabCompleteDoneEvent:
209
+ """TabComplete operation finished."""
210
+
211
+ error: str | None = None
212
+ result: Any = None
213
+
214
+
215
+ # -- Writing --
216
+
217
+
218
+ @dataclass(frozen=True, slots=True)
219
+ class WriteBookDoneEvent:
220
+ """WriteBook operation finished."""
221
+
222
+ error: str | None = None
223
+
224
+
225
+ # -- World --
226
+
227
+
228
+ @dataclass(frozen=True, slots=True)
229
+ class ChunksLoadedDoneEvent:
230
+ """WaitForChunksToLoad finished."""
231
+
232
+ error: str | None = None
233
+
234
+
235
+ @dataclass(frozen=True, slots=True)
236
+ class WaitForTicksDoneEvent:
237
+ """WaitForTicks finished."""
238
+
239
+ error: str | None = None
240
+
241
+
242
+ # -- Lower-level inventory --
243
+
244
+
245
+ @dataclass(frozen=True, slots=True)
246
+ class ClickWindowDoneEvent:
247
+ """ClickWindow operation finished."""
248
+
249
+ error: str | None = None
250
+
251
+
252
+ @dataclass(frozen=True, slots=True)
253
+ class TransferDoneEvent:
254
+ """Transfer operation finished."""
255
+
256
+ error: str | None = None
257
+
258
+
259
+ @dataclass(frozen=True, slots=True)
260
+ class MoveSlotItemDoneEvent:
261
+ """MoveSlotItem operation finished."""
262
+
263
+ error: str | None = None
264
+
265
+
266
+ @dataclass(frozen=True, slots=True)
267
+ class PutAwayDoneEvent:
268
+ """PutAway operation finished."""
269
+
270
+ error: str | None = None
271
+
272
+
273
+ # -- Creative --
274
+
275
+
276
+ @dataclass(frozen=True, slots=True)
277
+ class CreativeFlyToDoneEvent:
278
+ """Creative flyTo operation finished."""
279
+
280
+ error: str | None = None
281
+
282
+
283
+ @dataclass(frozen=True, slots=True)
284
+ class CreativeSetSlotDoneEvent:
285
+ """Creative setInventorySlot operation finished."""
286
+
287
+ error: str | None = None
288
+
289
+
290
+ @dataclass(frozen=True, slots=True)
291
+ class CreativeClearSlotDoneEvent:
292
+ """Creative clearSlot operation finished."""
293
+
294
+ error: str | None = None
295
+
296
+
297
+ @dataclass(frozen=True, slots=True)
298
+ class CreativeClearInventoryDoneEvent:
299
+ """Creative clearInventory operation finished."""
300
+
301
+ error: str | None = None
302
+
303
+
304
+ # -- Entity placement --
305
+
306
+
307
+ @dataclass(frozen=True, slots=True)
308
+ class PlaceEntityDoneEvent:
309
+ """PlaceEntity operation finished."""
310
+
311
+ error: str | None = None
312
+ result: Any = None
@@ -0,0 +1,18 @@
1
+ """Internal bridge utilities."""
2
+
3
+
4
+ def extract_js_stack(exc: BaseException) -> str | None:
5
+ """Try to extract a JS stack trace from a JSPyBridge exception.
6
+
7
+ JSPyBridge exceptions may carry a ``stack`` attribute with the
8
+ JavaScript stack trace string.
9
+ """
10
+ stack = getattr(exc, "stack", None)
11
+ if isinstance(stack, str):
12
+ return stack
13
+ for chained in (exc.__cause__, exc.__context__):
14
+ if chained is not None:
15
+ stack = getattr(chained, "stack", None)
16
+ if isinstance(stack, str):
17
+ return stack
18
+ return None