跳到正文

Permission Validator

作者:hudsom62

为多平台模组集成权限节点提供即插即用的解决方案。

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

权限验证器

为你的多加载器模组集成权限节点的即插即用解决方案。

它通过提供单一、统一的 API 来定义和检查权限,基本上承担了 Fabric 和 NeoForge 两端的全部繁重工作。
在 Fabric 上,它还会检测是否存在 fabric-permissions-api 模组,若存在则使用它。

你最常在命令中进行权限检查时使用它,但它实际上可用于任何
你想检查的“权限”类型,例如玩家能否使用某个物品或进入某个区域。

面向用户: 这是一个前置库模组,除非有模组需要它,否则你无需安装。
如果你是开发者,请继续阅读!

用法示例

1. 添加依赖

你通常只需将其以 Jar in Jar 方式打包进你的模组即可(它只有约 16KB!)。

不过,如果你确实想这么做,也可以将其作为依赖添加到你的 fabric.mod.json 或 neoforge.mods.toml 文件中
并要求用户单独安装。

repositories {
    maven("https://maven.ziroau.com")
}

// For Fabric & Architectury Loom
dependencies {
    modApi "com.ziroau:permissionvalidator:${permissionvalidator_version}:fabric-mc${minecraft_version}"
    include "com.ziroau:permissionvalidator:${permissionvalidator_version}:fabric-mc${minecraft_version}"
}

// For NeoForge
dependencies {
    jarJar(implementation("com.ziroau:permissionvalidator:${permissionvalidator_version}:neoforge-mc${minecraft_version}")) {
        version {
            strictly "[${permissionvalidator_version},)"
            prefer "${permissionvalidator_version}"
        }
    }
}

// Multiloader 'Common' Project
dependencies {
    modCompileOnlyApi "com.ziroau:permissionvalidator:${permissionvalidator_version}:fabric-mc${minecraft_version}"
}

2. 定义并初始化权限

object ModPermissions {
    val ROOT = PermissionManager.create(
        "mod",
        PermissionLevel.CHEATS_AND_COMMAND_BLOCKS
    )
    val RELOAD = PermissionManager.create(
        "mod.reload",
        PermissionLevel.CHEATS_AND_COMMAND_BLOCKS
    )

    // Call just before command registration
    fun initialize() {
        PermissionManager.initialize(listOf(ROOT, RELOAD))
    }
}

3. 检查权限

在你的 Brigadier 结构中,你可以使用 .requires 重载:

import com.ziroau.permissionvalidator.api.PermissionManager.requires

object ModComands {
    fun register(dispatcher: CommandDispatcher<ServerCommandSource>) {
        ModPermissions.initialize()

        val root = Commands.literal("commandroot")
            .requires(ModPermissions.ROOT)
            .executes { ctx -> modInfo(ctx.source) }
            .then(
                //** /commandroot reload */
                Commands.literal("reload")
                    .requires(ModPermissions.RELOAD)
                    .executes { ctx -> reload(ctx.source) }
            )
    }
}

或在其他任意上下文中:

fun someRandomFunction(player: ServerPlayerEntity) {
    if (PermissionManager.hasPermission(player, ModPermissions.RELOAD)) {
        // do something
    } else {
        // did not have permission to do something :(
    }
}

常见问题

Permission Validator 支持哪些 Minecraft 版本?

Permission Validator 支持 Minecraft Java 版 1.21.1–26.3,共 16 个版本,可用的加载器:Fabric / NeoForge。下载时注意选择和你游戏版本一致的文件。

Permission Validator 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅服务端。

评论

登录后评论和评分

hudsom62 的其他作品

查看全部 →