TRCStudioDean / LiteCommandEditor

Bukkit/Spigot plugin LiteCommandEditor
3 stars 0 forks source link

自定义指令无权限 #2

Closed GuYuan-V closed 1 month ago

GuYuan-V commented 1 month ago
Snipaste_2024-07-25_17-34-46

指令为/fp ,正常使用没有问题,使用修改后的的简化命令提示无权限如图,可是原命令可以正常使用

TRCStudioDean commented 1 month ago

配置文件提供一下

GuYuan-V commented 1 month ago

config.yml

#插件前缀
Prefix: '&bLite&3Command&9Editor &f&l>>> '

#插件语言
#可用语言: Simplified-Chinese(简体中文)、Traditional-Chinese(繁體中文)、English
Language: Simplified-Chinese

#禁用的命令
#禁用后,命令将无法使用(命令将不存在),直到下次重启服务器才会重新判断。
#注意:禁用其他插件的命令可能会发生严重的后果,谨慎使用!
#格式:[命令前缀]:[命令名]
#示例:bukkit:plugins 即可禁用/plugins命令
#如果想要知道命令的前缀,可以使用 /litecommandeditor info [命令] 查看。
Disabled-Commands: []

#执行命令的冷却(单位:秒)
#在这里写上需要添加冷却的命令,可以防止玩家频繁执行命令。
#注意,本功能的判断逻辑是:当玩家输入的命令以列表中的某个命令为开头,就会被添加冷却
#此设置中的命令,其主命令的源头的所有命令别名(包括带前缀的命令)均会添加冷却。
#例如: 为"lce"命令设置冷却时间时,将使 "litecommandeditor:lce", "litecommandeditor:litecommandeditor" 等本插件的所有命令别名都添加相同的冷却时间
#此选项对其他插件的命令也能够生效
Commands-Cooldown:
    Enabled: true
    #命令列表,格式为:“[命令]:[冷却时间]”
    List: 
    - 'examplecommand compound': 1.0 #即玩家输入 "/examplecommand compound ..." 时就会触发1秒冷却

#异步线程的设置
#若不清楚这什么是异步线程,请不要修改这个选项!
Async-Thread-Settings: 
    #每一刻的延迟(单位是秒,可以有小数)
    #例:0.1为每秒执行10次,0.05为每秒执行20次,即 20 TPS
    Tick-Delay: 0.1
    #是否自动移除重复的延时任务(延时任务是指包含Delay设置并且在线程池上运行的任务)
    #启用此选项后,以下任务将在重复运行时将移除当前未完成的延时任务:
    #1. ActionBar 动作栏消息(文字动画)
    #2. Title 标题消息(文字动画)
    #3. ClientSound 播放声音(播放乐谱)
    #4. CompoundFunction 复合函数(函数的执行)
    Remove-Duplicate-Delayed-Tasks: true

#计算保留的小数位数
Retaining-Decimal-Places: 2

#PlaceholderAPI设置
PlaceholderAPI:
    #是否使用
    Enabled: true
    #占位符缓存更新的延迟(秒)
    #由于部分占位符需要不断地读取数据库的数据,
    #此选项用于防止频繁调用PAPI占位符对数据库IO造成的巨大负担
    Cache-Update-Delay: 10.0
    #例外的占位符(不进行缓存的)
    Exceptions: []

#是否检查更新
#每天一次,将自动检测插件的最新版本及信息,并汇报给控制台及有拥有对应权限的玩家
#此功能并不会造成服务器产生过多流量(每次检测产生约不到1kb网络流量)
Updater: true

#是否启用Metrics
#详见https://bstats.org/plugin/bukkit/LiteCommandEditor/
Metrics: true

Alias.yml

#命令别名设置
#本选项可用于设置命令的使用别名
#以使命令的使用更加简便
#格式:(支持中文)
#   [命令别名]: [原命令]
#   [命令前缀]:[命令别名]: [原命令]
#若不填写命令前缀,则默认为“litecommandeditor”
#按照此格式可自由添加新的命令别名
#注意:建议在更改设置后重启服务器
Aliases:
    #/litecommandeditor reload -> /lcereload
    "lcereload": "litecommandeditor reload"
    #/litecommandeditor info -> /lceinfo
    "lceinfo": "litecommandeditor info"
    #/litecommandeditor load -> /lceload
    "lceload": "litecommandeditor load"
    #/litecommandeditor unload -> /lceunload
    "lceunload": "litecommandeditor unload"
    #/litecommandeditor list -> /lcelist
    "lcelist": "litecommandeditor list"
    #/litecommandeditor listall -> /lcelistall
    "lcelistall": "litecommandeditor listall"
    #/tpaccept
    "yes": "tpaccept"
    "同意": "tpaccept"
    "y": "tpaccept"
    #/tpdeny
    "n": "tpdeny"
    "no": "tpdeny"
    "拒绝": "tpdeny"
    #/la view help
    "ushelp": "la view help"
    "cnhelp": "la view cnhelp"
    #/tpacancel
    "off": "tpacancel"
    "取消": "tpacancel"
    #/fp spawn
    minecraft:setjr: fp spawn
    "创建假人": "fp spawn"
    #/fp kill
    "offjr": "fp kill"
    "清除假人": "fp kill"
    #/tab player 
    "qtab": "tab player"
    #/fp status
    "lookjr": "fp status"
    "查看假人": "fp status"
TRCStudioDean commented 1 month ago

下周开始恢复LCE更新

GuYuan-V commented 1 month ago

就在刚刚我下载并使用了快照9,并删除了配置文件重新加载,可是同样的问题依旧存在

TRCStudioDean commented 1 month ago

我经过测试后一切正常,我很好奇你输了哪个简易命令提示的没权限

GuYuan-V commented 1 month ago

/setjr /创建假人 /offjr /清除假人 /lookjr /查看假人

TRCStudioDean commented 1 month ago

依然还是测不出来,命令别名权限不受原命令影响,命令别名仅仅是转发

TRCStudioDean commented 1 month ago

我大概知道怎么回事了,下个版本更新后,你再试试看

GuYuan-V commented 1 month ago

ok

GuYuan-V commented 1 month ago

补充一下,当我拥有op的时候不会显示当我取消op之后才会提示

TRCStudioDean commented 1 month ago

你更改完配置文件完整重启一次服务器是不是就正常了

GuYuan-V commented 1 month ago

没有作用

TRCStudioDean commented 1 month ago

算了,你还是把整个服务端打包一起发过来吧,我测试了一整个晚上毫无进展,本以为你的问题是我现在在解决的问题,结果又不是

GuYuan-V commented 1 month ago

https://www.123pan.com/s/s79cVv-db0d3.html 拥有op时才可以使用,未拥有op不能使用,提示没权限

TRCStudioDean commented 1 month ago

你这个问题比我想象中的要复杂,但是目前已查明是FakePlayer这个插件本身有问题,或者说,是他所用的前置插件CommandAPI有问题,这个问题暂时无法通过更新LCE来解决,等我去翻他源代码找到答案

GuYuan-V commented 1 month ago

好的,麻烦了

TRCStudioDean commented 1 month ago

解决方案:手动/lp group default permission set minecraft.command.fp给予default组权限 已核实是CommandAPI的问题,原理比较复杂,这里就不做说明了 如果不给这个权限,这会导致你虽然给了玩家fakeplayer.command.*的权限,玩家可以正常使用/fp,但是无法通过类似于菜单(player.performCommand())、简易命令、命令别名、强制命令执行(例如CMI、Ess的/sudo)去强制玩家使用/fp命令(我猜也可能是因为作者想要防止假人也能够执行/fp然后产生一些特殊的问题)

收到回复,这个issue可以关了

GuYuan-V commented 1 month ago

ok,感谢