pumpkin-api-py/example/main.py
2026-06-16 10:27:14 -07:00

65 lines
1.8 KiB
Python

from pumpkin_api import (
Plugin,
command,
context,
event,
logging,
metadata,
permission,
register_plugin,
server,
text,
)
PluginMetadata = metadata.PluginMetadata
class MyPlugin(Plugin):
def metadata(self) -> PluginMetadata:
return PluginMetadata(
name="my-python-plugin",
version="0.1.0",
authors=["you"],
description="An example python plugin.",
dependencies=[],
permissions=[],
)
def on_load(self, ctx: context.Context) -> None:
logging.log(logging.Level.INFO, "Python plugin loaded!")
hello_permission = permission.Permission(
node="my-python-plugin:hello",
description="Allows using /hello from the Python example plugin.",
default=permission.PermissionDefault_Allow(),
children=[],
)
ctx.register_permission(hello_permission)
# Register an event handler
self.register_event(ctx, event.EventType.PLAYER_JOIN_EVENT, self.on_player_join)
# Register a command
cmd = command.Command(["hello"], "A simple hello command")
self.register_command(ctx, cmd, self.hello_command, "hello")
def on_player_join(
self, srv: server.Server, evt: event.PlayerJoinEventData
) -> event.PlayerJoinEventData:
logging.log(logging.Level.INFO, f"Player {evt.player.get_name()} joined!")
# We can modify the join message
# evt.join_message = text.TextComponent_text("Welcome to the server!")
return evt
def hello_command(
self,
sender: command.CommandSender,
srv: server.Server,
args: command.ConsumedArgs,
) -> int:
sender.send_message(text.TextComponent.text("Hello from Python!"))
return 1
register_plugin(MyPlugin)