• 论坛

导航

  • 主页
  • 样式指南
  • 入门
    • 概述
    • Mod的结构
    • Forge更新检查器
    • 依赖管理
    • 调试分析器
  • 概念
    • Sides
    • 资源
    • 注册表
    • Jar签名
    • 国际化和本地化
  • 方块
    • 概述
    • 介绍方块状态
    • 方块互动
  • 动画 API
    • 概述
    • 骨骼
    • 动画状态机
    • 使用API
  • TileEntity
    • 概述
    • 特殊渲染器
  • 物品
    • 主页
    • 战利品表
  • 模型
    • 模型概述
    • 模型文件
    • 方块状态
      • 方块状态JSON概述
      • Forge方块状态JSON
    • 绑定模型到方块和物品
    • 彩色纹理
    • 物品属性概述
    • 高级模型(未翻译)
      • 高级模型介绍
      • IModel
      • IModelState and IModelPart
      • IBakedModel
      • Extended Blockstates
      • Perspective
      • ItemOverrideList
      • ICustomModelLoader
  • 渲染
    • TileEntityItemStackRenderer
  • 事件
    • 基本用法
  • 网络
    • 主页
    • 概述
    • SimpleImpl
    • 实体
  • 数据储存
    • 能力系统
    • World Saved Data
    • 拓展实体属性
    • Config注解
  • 工具
    • 合成
    • 矿物词典
    • 权限API
      • 如何使用权限API
      • DefaultPermissionLevel
      • 权限节点
      • 自己实现 PermissionHandler
  • 效果
    • 音效
  • 惯例
    • 版本命名
    • 文件位置
    • 加载阶段
  • 参与Forge开发
    • 入门
    • PR指南

权限API

权限API是权限系统的一个基础的实现。

它默认的实现不是增加一个先进的权限管理(例如我们知道的PEX),但它有3个权限级别,(ALL = 所有玩家, OP = 操作者, NONE = 未知是普通玩家还是操作者)。

这些行为可以由mod实现自己的PermissionHandler改变

如何使用权限API

要基础的支持只需要调用 PermissionAPI.hasPermission(EntityPlayer player, String node),但这默认总是返回false,因为默认的实现使用权限级别NONE。所以我们要想要全部玩家,或只有OP才能使用,要注册自己的权限节点。这和检查权限一样简单PermissionAPI.registerNode(String node, DefaultPermissionLevel level, String description),尽管它会在之后完成。

提示

权限API不限于用于命令,你可以用它干其它事情,如限制对GUI的访问。 另外,你将它与命令结合,你需要检查ICommandSender是否为玩家!

DefaultPermissionLevel

DefaultPermissionLevel 有3个值:

  • ALL =所有玩家都有此权限
  • OP = 只有操作者有此权限
  • NONE = 不管是普通玩家还是操作者都有此权限

权限节点

虽然技术上没有权限节点的规则,但最佳做法是用modid.subgroup.permission_id形式。 建议使用此命名方案,因为其他实现可能具有更严格的规则。

自己实现 PermissionHandler

默认PermissionHandler是非常基础的,但对绝大多数用户已经足够了。但你想在一个大型服务器里控制更多权限。可以通过自定义PermissionHandler来实现。

它如何工作以及它的功能完全有你决定,例如你可以做一个简单的实现,只需为每个玩家保存一个文件。 或者你可以使它像PEX一样先进,有数据库支持和许多其他功能。

提示

并非每个想要使用PermissionAPI的mod都应该更改PermissionHandler,因为同时只能有1个!

首先,您如何实现自己的PermissionHandler完全取决于你,你可以使用文件,数据库或其它任何方式。你所要做的只是实现接口IPermissionHandler。在这之后,你需要这样注册它:PermissionAPI.setPermissionHandler(IPermissionHandler handler)

提示

你必须在PreInit阶段设置Handle! 建议你检查它是否已被其他mod替换。

基于 MkDocs 使用自定义主题构建. 托管于 Read the Docs.
启用夜间模式