levistone 0.6.1__cp312-cp312-win_amd64.whl → 0.6.2.dev58__cp312-cp312-win_amd64.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.

Potentially problematic release.


This version of levistone might be problematic. Click here for more details.

@@ -3,6 +3,7 @@ import hashlib
3
3
  import logging
4
4
  import os
5
5
  import platform
6
+ import shutil
6
7
  import subprocess
7
8
  import sys
8
9
  import tempfile
@@ -12,6 +13,7 @@ from typing import Union
12
13
 
13
14
  import click
14
15
  import requests
16
+ import sentry_crashpad
15
17
  from packaging.version import Version
16
18
  from rich.progress import BarColumn, DownloadColumn, Progress, TextColumn, TimeRemainingColumn
17
19
 
@@ -135,6 +137,9 @@ class Bootstrap:
135
137
 
136
138
  def _prepare(self) -> None:
137
139
  self.plugin_path.mkdir(parents=True, exist_ok=True)
140
+ shutil.copytree(
141
+ Path(sentry_crashpad._get_executable("crashpad_handler")).parent, self.server_path, dirs_exist_ok=True
142
+ )
138
143
 
139
144
  def _install(self) -> None:
140
145
  """
@@ -27,6 +27,7 @@ class LinuxBootstrap(Bootstrap):
27
27
  super()._prepare()
28
28
  st = os.stat(self.executable_path)
29
29
  os.chmod(self.executable_path, st.st_mode | stat.S_IEXEC)
30
+ os.chmod(self.server_path / "crashpad_handler", st.st_mode | stat.S_IEXEC)
30
31
 
31
32
  def _create_process(self, *args, **kwargs) -> None:
32
33
  env = os.environ.copy()
Binary file
@@ -4,7 +4,7 @@ import numpy
4
4
  import os
5
5
  import typing
6
6
  import uuid
7
- __all__ = ['ActionForm', 'Actor', 'ActorDamageEvent', 'ActorDeathEvent', 'ActorEvent', 'ActorExplodeEvent', 'ActorKnockbackEvent', 'ActorRemoveEvent', 'ActorSpawnEvent', 'ActorTeleportEvent', 'BanEntry', 'BarColor', 'BarFlag', 'BarStyle', 'Block', 'BlockBreakEvent', 'BlockData', 'BlockEvent', 'BlockFace', 'BlockPlaceEvent', 'BlockState', 'BossBar', 'BroadcastMessageEvent', 'Cancellable', 'Chunk', 'ColorFormat', 'Command', 'CommandExecutor', 'CommandSender', 'CommandSenderWrapper', 'ConsoleCommandSender', 'Criteria', 'DamageSource', 'Dimension', 'DisplaySlot', 'Dropdown', 'Event', 'EventPriority', 'GameMode', 'Inventory', 'IpBanEntry', 'IpBanList', 'ItemStack', 'Label', 'Language', 'Level', 'Location', 'Logger', 'MessageForm', 'Mob', 'MobEvent', 'ModalForm', 'Objective', 'ObjectiveSortOrder', 'OfflinePlayer', 'Packet', 'PacketType', 'Permissible', 'Permission', 'PermissionAttachment', 'PermissionAttachmentInfo', 'PermissionDefault', 'Player', 'PlayerBanEntry', 'PlayerBanList', 'PlayerChatEvent', 'PlayerCommandEvent', 'PlayerDeathEvent', 'PlayerEmoteEvent', 'PlayerEvent', 'PlayerGameModeChangeEvent', 'PlayerInteractActorEvent', 'PlayerInteractEvent', 'PlayerInventory', 'PlayerJoinEvent', 'PlayerKickEvent', 'PlayerLoginEvent', 'PlayerQuitEvent', 'PlayerRespawnEvent', 'PlayerTeleportEvent', 'Plugin', 'PluginCommand', 'PluginDescription', 'PluginDisableEvent', 'PluginEnableEvent', 'PluginLoadOrder', 'PluginLoader', 'PluginManager', 'Position', 'ProxiedCommandSender', 'RenderType', 'Scheduler', 'Score', 'Scoreboard', 'ScriptMessageEvent', 'Server', 'ServerCommandEvent', 'ServerEvent', 'ServerListPingEvent', 'ServerLoadEvent', 'Skin', 'Slider', 'SocketAddress', 'SpawnParticleEffectPacket', 'StepSlider', 'Task', 'TextInput', 'ThunderChangeEvent', 'Toggle', 'Translatable', 'Vector', 'WeatherChangeEvent', 'WeatherEvent']
7
+ __all__ = ['ActionForm', 'Actor', 'ActorDamageEvent', 'ActorDeathEvent', 'ActorEvent', 'ActorExplodeEvent', 'ActorKnockbackEvent', 'ActorRemoveEvent', 'ActorSpawnEvent', 'ActorTeleportEvent', 'BanEntry', 'BarColor', 'BarFlag', 'BarStyle', 'Block', 'BlockBreakEvent', 'BlockData', 'BlockEvent', 'BlockFace', 'BlockPlaceEvent', 'BlockState', 'BossBar', 'BroadcastMessageEvent', 'Cancellable', 'Chunk', 'ColorFormat', 'Command', 'CommandExecutor', 'CommandSender', 'CommandSenderWrapper', 'ConsoleCommandSender', 'Criteria', 'DamageSource', 'DataPacketReceiveEvent', 'DataPacketSendEvent', 'Dimension', 'DisplaySlot', 'Dropdown', 'Event', 'EventPriority', 'GameMode', 'Inventory', 'IpBanEntry', 'IpBanList', 'ItemStack', 'Label', 'Language', 'Level', 'Location', 'Logger', 'MessageForm', 'Mob', 'MobEvent', 'ModalForm', 'Objective', 'ObjectiveSortOrder', 'OfflinePlayer', 'Packet', 'PacketType', 'Permissible', 'Permission', 'PermissionAttachment', 'PermissionAttachmentInfo', 'PermissionDefault', 'Player', 'PlayerBanEntry', 'PlayerBanList', 'PlayerChatEvent', 'PlayerCommandEvent', 'PlayerDeathEvent', 'PlayerEmoteEvent', 'PlayerEvent', 'PlayerGameModeChangeEvent', 'PlayerInteractActorEvent', 'PlayerInteractEvent', 'PlayerInventory', 'PlayerJoinEvent', 'PlayerKickEvent', 'PlayerLoginEvent', 'PlayerQuitEvent', 'PlayerRespawnEvent', 'PlayerTeleportEvent', 'Plugin', 'PluginCommand', 'PluginDescription', 'PluginDisableEvent', 'PluginEnableEvent', 'PluginLoadOrder', 'PluginLoader', 'PluginManager', 'Position', 'ProxiedCommandSender', 'RenderType', 'Scheduler', 'Score', 'Scoreboard', 'ScriptMessageEvent', 'Server', 'ServerCommandEvent', 'ServerEvent', 'ServerListPingEvent', 'ServerLoadEvent', 'Skin', 'Slider', 'SocketAddress', 'SpawnParticleEffectPacket', 'StepSlider', 'Task', 'TextInput', 'ThunderChangeEvent', 'Toggle', 'Translatable', 'Vector', 'WeatherChangeEvent', 'WeatherEvent']
8
8
  class ActionForm:
9
9
  """
10
10
  Represents a form with buttons that let the player take action.
@@ -102,6 +102,10 @@ class Actor(CommandSender):
102
102
  """
103
103
  Adds a tag to this actor.
104
104
  """
105
+ def remove(self) -> None:
106
+ """
107
+ Remove this actor from the level.
108
+ """
105
109
  def remove_scoreboard_tag(self, tag: str) -> bool:
106
110
  """
107
111
  Removes a given tag from this actor.
@@ -175,6 +179,11 @@ class Actor(CommandSender):
175
179
  Returns true if the actor is supported by a block, i.e. on ground.
176
180
  """
177
181
  @property
182
+ def is_valid(self) -> bool:
183
+ """
184
+ Returns false if the entity has died, been despawned for some other reason, or has not been added to the level.
185
+ """
186
+ @property
178
187
  def level(self) -> Level:
179
188
  """
180
189
  Gets the current Level this actor resides in.
@@ -1120,6 +1129,40 @@ class DamageSource:
1120
1129
  """
1121
1130
  Get the damage type.
1122
1131
  """
1132
+ class DataPacketReceiveEvent(ServerEvent, Cancellable):
1133
+ """
1134
+ Called when the server receives a packet from a connected client.
1135
+ """
1136
+ @staticmethod
1137
+ def _pybind11_conduit_v1_(*args, **kwargs):
1138
+ ...
1139
+ @property
1140
+ def data(self) -> bytes:
1141
+ """
1142
+ Gets the raw packet data
1143
+ """
1144
+ @property
1145
+ def player(self) -> Player:
1146
+ """
1147
+ Gets the player involved in this event
1148
+ """
1149
+ class DataPacketSendEvent(ServerEvent, Cancellable):
1150
+ """
1151
+ Called when the server sends a packet to a connected client.
1152
+ """
1153
+ @staticmethod
1154
+ def _pybind11_conduit_v1_(*args, **kwargs):
1155
+ ...
1156
+ @property
1157
+ def data(self) -> bytes:
1158
+ """
1159
+ Gets the raw packet data
1160
+ """
1161
+ @property
1162
+ def player(self) -> Player:
1163
+ """
1164
+ Gets the player involved in this event
1165
+ """
1123
1166
  class Dimension:
1124
1167
  """
1125
1168
  Represents a dimension within a Level.
@@ -1179,6 +1222,20 @@ class Dimension:
1179
1222
  """
1180
1223
  Gets the Block at the given coordinates
1181
1224
  """
1225
+ @typing.overload
1226
+ def get_highest_block_at(self, location: Location) -> Block:
1227
+ """
1228
+ Gets the highest non-empty (impassable) block at the given Location.
1229
+ """
1230
+ @typing.overload
1231
+ def get_highest_block_at(self, x: int, z: int) -> Block:
1232
+ """
1233
+ Gets the highest non-empty (impassable) block at the given coordinates.
1234
+ """
1235
+ def get_highest_block_y_at(self, x: int, z: int) -> int:
1236
+ """
1237
+ Gets the highest non-empty (impassable) coordinate at the given coordinates.
1238
+ """
1182
1239
  @property
1183
1240
  def level(self) -> Level:
1184
1241
  """
@@ -8,6 +8,7 @@ import shutil
8
8
  import site
9
9
  import subprocess
10
10
  import sys
11
+ import traceback
11
12
  import warnings
12
13
 
13
14
  import pkginfo
@@ -164,7 +165,7 @@ class PythonPluginLoader(PluginLoader):
164
165
  f"please change the distribution name from '{ep.dist.name}' to '{dist_name}'."
165
166
  )
166
167
  self.server.logger.error(
167
- f"* If not, " f"please change the entry point name from '{ep.name}' to '{ep.dist.name[9:]}'."
168
+ f"* If not, please change the entry point name from '{ep.name}' to '{ep.dist.name[9:]}'."
168
169
  )
169
170
  return None
170
171
 
@@ -172,8 +173,9 @@ class PythonPluginLoader(PluginLoader):
172
173
  try:
173
174
  plugin_metadata = metadata(ep.dist.name).json
174
175
  cls = ep.load()
175
- except Exception as e:
176
- self.server.logger.error(f"Error occurred when trying to load plugin from entry point '{ep.name}': {e}")
176
+ except BaseException as e:
177
+ self.server.logger.error(f"Error occurred when trying to load plugin from entry point '{ep.name}':")
178
+ self.server.logger.error("".join(traceback.format_exception(e)))
177
179
  return None
178
180
 
179
181
  # prepare plugin description
@@ -10,5 +10,5 @@ __version__: str
10
10
  __version_tuple__: VERSION_TUPLE
11
11
  version_tuple: VERSION_TUPLE
12
12
 
13
- __version__ = version = '0.6.1'
14
- __version_tuple__ = version_tuple = (0, 6, 1, '')
13
+ __version__ = version = '0.6.2'
14
+ __version_tuple__ = version_tuple = (0, 6, 2, '')
endstone/command.py CHANGED
@@ -7,5 +7,11 @@ from endstone._internal.endstone_python import (
7
7
  ProxiedCommandSender,
8
8
  )
9
9
 
10
- __all__ = ["Command", "CommandExecutor", "CommandSender", "CommandSenderWrapper", "ConsoleCommandSender",
11
- "ProxiedCommandSender", ]
10
+ __all__ = [
11
+ "Command",
12
+ "CommandExecutor",
13
+ "CommandSender",
14
+ "CommandSenderWrapper",
15
+ "ConsoleCommandSender",
16
+ "ProxiedCommandSender",
17
+ ]
endstone/event.py CHANGED
@@ -12,6 +12,8 @@ from endstone._internal.endstone_python import (
12
12
  BlockPlaceEvent,
13
13
  BroadcastMessageEvent,
14
14
  Cancellable,
15
+ DataPacketReceiveEvent,
16
+ DataPacketSendEvent,
15
17
  Event,
16
18
  EventPriority,
17
19
  MobEvent,
@@ -55,6 +57,8 @@ __all__ = [
55
57
  "BlockBreakEvent",
56
58
  "BlockPlaceEvent",
57
59
  "Cancellable",
60
+ "DataPacketReceiveEvent",
61
+ "DataPacketSendEvent",
58
62
  "Event",
59
63
  "EventPriority",
60
64
  "MobEvent",
endstone/plugin.py CHANGED
@@ -88,8 +88,7 @@ class Plugin(endstone_python.Plugin):
88
88
  or not issubclass(params[0].annotation, Event)
89
89
  ):
90
90
  self.logger.error(
91
- f"Plugin {self.name} attempted to register an invalid "
92
- f"event handler signature: {attr_name}: {sig}"
91
+ f"Plugin {self.name} attempted to register an invalid event handler signature: {attr_name}: {sig}"
93
92
  )
94
93
  continue
95
94
 
endstone_runtime.dll CHANGED
Binary file
endstone_runtime.pdb CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: levistone
3
- Version: 0.6.1
3
+ Version: 0.6.2.dev58
4
4
  Summary: Endstone offers a plugin API for Bedrock Dedicated Servers, supporting both Python and C++.
5
5
  Author-email: Vincent Wu <magicdroidx@gmail.com>
6
6
  Project-URL: Changelog, https://endstone.readthedocs.io/en/latest/changelog
@@ -36,4 +36,12 @@ Requires-Dist: typing-extensions
36
36
  Provides-Extra: test
37
37
  Requires-Dist: pytest; extra == "test"
38
38
 
39
- # Levistone
39
+ # LeviStone
40
+
41
+ A runtime for running Endstone plugins on LeviLamina
42
+
43
+ ## Installation
44
+
45
+ ```bash
46
+ pip install levistone --target plugins/EndstoneRuntime
47
+ ```
@@ -1,37 +1,37 @@
1
- endstone_runtime.dll,sha256=oO8J88bMrgZozXhJ-Tsfq5UbrRpawWOHOwNYs7IE-10,1423360
2
- endstone_runtime.pdb,sha256=EWUyf5zzRw0Oq_vBkNM5MhsJonvJ6lk6W6O7fkb4dbw,15929344
3
- manifest.json,sha256=C0nw6NAQCZ34jMWg_3dTsK0tt_8I0UuSa2JKIXHeReY,121
1
+ endstone_runtime.dll,sha256=MPk9aLfqfAZYtx_NasqAcTZXPyeENf3LoVwPgpmgIkQ,1435648
2
+ endstone_runtime.pdb,sha256=oNAeGFJTHhldEZuSguHU4Yc8wqwRx4f0Vyme0cqCzK8,16830464
3
+ manifest.json,sha256=UVXEdBepK0m96KrBz4kbTRCkvubGajtfB00Zu_I9OPw,121
4
4
  endstone/__init__.py,sha256=7dmwkc0ADuHU7pcno32L2f-rJY4nItfJbgY73s0HHdU,389
5
5
  endstone/__main__.py,sha256=BScr7X_wRgbkmrnGTOEuhJqgbve5leelFfh1v5OdPdc,87
6
6
  endstone/actor.py,sha256=zwMagc_ogTMexG_1Ahmgf3jkDMeRhvunOxCpL67GQYw,89
7
7
  endstone/ban.py,sha256=6t_lhCGpwe7w_jOM-l1ooI6kF1P0pHgGaasMX2FeTeU,177
8
8
  endstone/block.py,sha256=3r-ZQna3RDQgn_ayVObY_xWeDZMJvUaMyuFuWtwdbnM,151
9
9
  endstone/boss.py,sha256=N6B3CDIlYRcYVDZPdjRXq9hBPnYYRuE0d7e5-MpuB8c,145
10
- endstone/command.py,sha256=LYPDIwW5EyH-fPf4mayAxOVZ7fdOwyfJ7oKDPP4jk8Y,337
10
+ endstone/command.py,sha256=p7O4jK9CE2SLg5QUYT2meXe9WPStpIrs6PMBt-0plLI,357
11
11
  endstone/damage.py,sha256=riTGQq-LYaSRE49KAsm1DxT-QetJNahbrpnLItDo1X0,91
12
- endstone/event.py,sha256=dag-uIN_eMgaW6Ypm3nP72GI87amcKHzWqyOwKuL2CU,2373
12
+ endstone/event.py,sha256=GhEBt86woXZ4vHfYVIf3uuPvCDSOBmGkahCr5pFmIKk,2487
13
13
  endstone/form.py,sha256=XrpxrD3z57akr0Xg4eeAaNxIlQfyHg1Llma_x7tWfDQ,314
14
14
  endstone/inventory.py,sha256=Alt4MIa7Vha0hstiJ7Hxrre2OuIvCXJxdIXbfauBX_Q,145
15
15
  endstone/lang.py,sha256=hrsaaDy3pC0MT-xrgMOwnzobU9KXH5byy5RbMpqF_BU,113
16
16
  endstone/level.py,sha256=cqJQa4MKhobv_T8EMXGVNLRGaNr83xgg1bxNzUwnL7w,190
17
17
  endstone/network.py,sha256=Wf5vHYIY9HbuXuvfBB_airnWsy72Bq7tSe41fzAV_RU,161
18
18
  endstone/permissions.py,sha256=QccUzGLsFZ5ge1U0zUr1eGHZjvwh9aFkHarvEx0X4gk,286
19
- endstone/plugin.py,sha256=VxkVJbA9fl9RuOZa3rIjP1wa33hzGhMq1ajHmZgQ5mQ,4106
19
+ endstone/plugin.py,sha256=kAwGbCRzcAHzmaxh_8GYs6i5xxFfB8iMECTYFWf0Llg,4081
20
20
  endstone/scheduler.py,sha256=2PkwAeLgrX6KxaiUPcnONbRNQYlFdvhUUShpFE35t-8,99
21
21
  endstone/scoreboard.py,sha256=qO1X0sD7D_SH6Lb4sKODe7emfdAyQ7iEAPVFznxOuyI,219
22
22
  endstone/util.py,sha256=vvIIfPj3K085eg-aaLfcNnSvapQpTZSHH756VDBwEi8,111
23
23
  endstone/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- endstone/_internal/endstone_python.pyd,sha256=j-k-4DIS4DweK7tSPnTmt_tKjUtfbAei8F8WMefnKUo,1582080
25
- endstone/_internal/endstone_python.pyi,sha256=zwkf99Wrn9EZ3fEG1VIdv_usE9OIAmLIj6aryZtul_4,128031
24
+ endstone/_internal/endstone_python.pyd,sha256=3Ow-vuBn7VVB8h5CJlEF_4ACBKUV7YK21hcEa4xhM_Y,1593856
25
+ endstone/_internal/endstone_python.pyi,sha256=h-jlWtSkBMtOGtGyITvUK-nRKVqSlggIJ0A3CxFhISs,129832
26
26
  endstone/_internal/metrics.py,sha256=TNi9AxE1sPdFvlkw3teP6qPohAuH43FKBkprTPaGElU,3834
27
- endstone/_internal/plugin_loader.py,sha256=lDvj23esHchf6KTh_u7UvgLTE3WkojYO9I-RSujn0bg,8667
28
- endstone/_internal/version.py,sha256=4pPNFHt5fplXXhi-MdUOl3VjI98NwvHNq7d1jizjPMU,347
27
+ endstone/_internal/plugin_loader.py,sha256=Hn4EyA8gKLqngHlipKkmHAT-Z4AeYHUCCVEcGHLx7II,8759
28
+ endstone/_internal/version.py,sha256=78wdqQ4LyR4-5TvPXv9FZS7Jz-uZqSw1I80Cv3OAbiw,347
29
29
  endstone/_internal/bootstrap/__init__.py,sha256=AaIf_APW06aMPdVC8hnWRWcXriDzUHKiCbQrjkk9Avw,1953
30
- endstone/_internal/bootstrap/base.py,sha256=8mZrCnN8rEWH9q3XfHFf6kv_EfxUzk0NxHD33jvqnT0,9515
31
- endstone/_internal/bootstrap/linux.py,sha256=g3OXAyllzgHwnB1zh4VWUKFlV62XjtlBq0LCm6_dCPM,2225
30
+ endstone/_internal/bootstrap/base.py,sha256=onPidPfTIknmWyN-ZL8ltLhcZI68-0OvyW1CyiEWMzM,9707
31
+ endstone/_internal/bootstrap/linux.py,sha256=axWZsDP9FeVoelVGsYWtYoZprm3SNzznPegD4M0YdAs,2309
32
32
  endstone/_internal/bootstrap/windows.py,sha256=vkJTXguFWjA6od3UO-tNUXptbm6k-aYzcmNc6Y89Ha4,8455
33
- levistone-0.6.1.dist-info/METADATA,sha256=X24sFTHXAYpNGxuKhC9PzUxk7hE7P-_Y-QIA0LAIb0k,1553
34
- levistone-0.6.1.dist-info/WHEEL,sha256=Iq23X5JJH73cZixxNPcGGrmwJACMDj_ym-L1o8fjnY8,100
35
- levistone-0.6.1.dist-info/entry_points.txt,sha256=YcCpMmhXBaSX4Vm9Lt5KEBwkaL5wEzNCLdpZAZJ3gsg,62
36
- levistone-0.6.1.dist-info/top_level.txt,sha256=BERCWpr0nMLPIcEyGbeVJNJ1xRNrx08gMj8Xi2vLqbo,10
37
- levistone-0.6.1.dist-info/RECORD,,
33
+ levistone-0.6.2.dev58.dist-info/METADATA,sha256=jh1THDTMceK2YBEcXMwW8WM9bJfrK8mq6ux4hOsRIgE,1706
34
+ levistone-0.6.2.dev58.dist-info/WHEEL,sha256=agt19kgClKEHqWYrJT6kjVPb8HMqSZQocXgSpojyAEw,100
35
+ levistone-0.6.2.dev58.dist-info/entry_points.txt,sha256=YcCpMmhXBaSX4Vm9Lt5KEBwkaL5wEzNCLdpZAZJ3gsg,62
36
+ levistone-0.6.2.dev58.dist-info/top_level.txt,sha256=BERCWpr0nMLPIcEyGbeVJNJ1xRNrx08gMj8Xi2vLqbo,10
37
+ levistone-0.6.2.dev58.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.2)
2
+ Generator: setuptools (76.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: cp312-cp312-win_amd64
5
5
 
manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "EndstoneRuntime",
3
3
  "entry": "endstone_runtime.dll",
4
- "version": "0.6.1",
4
+ "version": "0.6.2",
5
5
  "type": "native"
6
6
  }