EG/plugins/plugin_interface_spec.py
2025-12-12 16:16:15 +08:00

89 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
插件接口规范示例
此文件定义了插件应遵循的接口规范
"""
from plugins.plugin_manager import BasePlugin
class ExamplePlugin(BasePlugin):
"""
插件接口规范示例
所有插件都应该继承BasePlugin类并实现以下方法
"""
def __init__(self, plugin_manager, name):
super().__init__(plugin_manager, name)
# 设置插件配置
self.config = {
"version": "1.0.0",
"author": "Your Name",
"description": "插件功能描述"
}
def initialize(self) -> bool:
"""
初始化插件
在插件加载时调用,用于执行一次性设置
返回True表示初始化成功False表示失败
"""
print(f"初始化插件: {self.name}")
# 在这里执行插件初始化逻辑
return True
def enable(self) -> bool:
"""
启用插件
在插件启用时调用用于注册事件处理器、创建GUI元素等
返回True表示启用成功False表示失败
"""
if not super().enable():
return False
print(f"启用插件: {self.name}")
# 在这里执行插件启用逻辑
# 例如注册事件处理器:
# self.plugin_manager.world.accept("f1", self.on_f1_pressed)
return True
def disable(self) -> bool:
"""
禁用插件
在插件禁用时调用,用于清理资源、移除事件处理器等
返回True表示禁用成功False表示失败
"""
if not super().disable():
return False
print(f"禁用插件: {self.name}")
# 在这里执行插件禁用逻辑
# 例如移除事件处理器:
# self.plugin_manager.world.ignore("f1")
return True
def finalize(self):
"""
清理插件资源
在插件卸载时调用,用于执行最终清理工作
"""
print(f"清理插件资源: {self.name}")
# 在这里执行最终清理逻辑
def get_info(self) -> dict:
"""
获取插件信息
返回包含插件信息的字典
"""
info = super().get_info()
info.update({
"version": self.config.get("version", "1.0.0"),
"author": self.config.get("author", "Unknown"),
"description": self.config.get("description", "Base plugin class")
})
return info
# 插件开发步骤说明:
# 1. 在plugins/user/目录下创建插件目录如my_plugin
# 2. 在插件目录中创建plugin.py文件
# 3. 在plugin.py中实现Plugin类继承BasePlugin
# 4. 实现必要的方法initialize, enable, disable, finalize
# 5. 在MyWorld中通过plugin_manager加载和启用插件