LING_Y_
再写TextComponent 文本的时候点击事件只有RUN_COMMAND 以玩家身份执行指令,
有什么方法能够让这个动作转换成以管理员身份执行指令呢?
或者有什么方法能够让点击后运行一个方法

teddyxlandlee
你可以写一个命令进行套壳。但是请注意!你必须考虑安全问题。
我不是密码学专家,以下仅为建议。但为了防止提权漏洞出现,请务必注意!

建议在插件中保存一个 Map<Player, Set<SudoCommandInfo>>作为Token储存的地方。
其中的SudoCommandInfo是你的自定义类,需要包含:

你的套壳命令可以像:
  1. /myplugin:internalcmdwrapper P13ppQYQQChHqz64bfm1CdRie7/8M1jkL/3LV3HbfmeGlU0uT6nUFSh6ZaBGjM576LXwdT+RxVItp9+T+r/r/piP1oPztmka1IvVg0TD0JWa5y/DnhoXHIMA1jVRu7AY
复制代码

其中后面是用 SecureRandom 摇出的 Nonce,它会被保存到对应 Player 的名下。
需要注意的是,这个 Nonce 必须有有效期。

洞穴夜莺
/triger触发,很多数据包都采用这种方法

commandf1
本帖最后由 commandf1 于 2023-1-23 18:32 编辑

不安全的写法
if (!player.isOp()) {
player.setOp(true);
// execute command
player.setOp(false);
} else {
// execute command
}
还是比较推荐上面的token写法


第一页 上一页 下一页 最后一页