簡體   English   中英

Bukkit-為什么某些代碼片段僅適用於OP?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM