[英]Bukkit - Why does a certain piece of code only work on OPs?
出於某種原因,我的一段代碼僅適用於OP。 而且這段代碼可能是唯一不適合使用OP的代碼之一。
我的代碼在: http : //pastebin.com/sQeeXRNN
現在,不起作用的地方是
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if(!event.getWhoClicked().isOp()) {
//rest of it
if(!event.getWhoClicked().isOp()) {
明確指出僅適用於非Op的人。 我嘗試了沒有if
語句,它仍然僅適用於OP。 有任何想法嗎?
謝謝,周傑倫
使用
if(!e.getWhoClicked().isOp())
{
// code
}
將不會起作用,因為InventoryClickEvent#getWhoClicked()
返回了HumanEntity。 這不是玩家。
要解決此問題,您首先需要將getWhoClicked()
投射到播放器上,如下所示:
Player player = (Player) e.getWhoClicked();
if(!player.isOp())
{
// continue code
}
在檢查是否為op之前,必須始終確保有東西正在返回播放器。
上次我檢查不贊成使用這些檢查的類型時,請改用權限系統:
if (!event.getWhoClicked().hasPermission("yourplugin.bypassclick"))
並將該權限授予您plugin.yml
內部的plugin.yml
:
permissions:
yourplugin.*:
description: Gives all permission
children:
yourplugin.bypassclick: true
yourplugin.bypassclick:
description: Gives the permission to <do something>
default: op
奇怪的是,服務器的簡單重啟解決了該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.