UU看書

第五十二章 /kick和黑名單系統

天才一秒記住【UU看書】地址:www.uukanshu.co

在上一章我們學習了白名單的使用方法。但在MCJava版中不只有白名單,還有黑名單系統。

黑名單系統的組成和白名單類似,也是由兩部分組成:黑名單相關指令和伺服器目錄下的黑名單檔案。

雖然組成成分類似,但黑名單和白名單還是有許多不同之處。第一,黑名單目前僅在Java版伺服器中有;第二,黑名單的記錄內容比白名單的內容更加複雜;第三,黑名單的作用和白名單是相反的;第四,黑名單系統是一直在執行的,無法關閉

那麼黑名單有什麼用呢?黑名單和白名單一樣,也是伺服器隨身攜帶的一個小本本,這個小本本上面也記錄了一些玩家(還有IP地址)。當一個玩家想要進入伺服器時,伺服器就會拿出這個小本本,看一看該玩家的名字和UUID是否被記錄在了本子上,然後再看看該玩家的IP地址是否也被記錄。只要玩家名和IP地址中兩者有任意一者被記錄在了本子上,該玩家就無法進入伺服器。

沒錯,黑名單系統就是一個伺服器的“封號”系統。但是說成“封號”並不準確,因為“封號”僅指的是封禁整個賬號,而黑名單系統不止會封禁賬號,還可以封禁IP地址。

什麼是IP地址?IP地址(InternetProtocolAddress),即網際網路協議地址。用人話來說,IP地址就相當於你和其他人在網際網路上的郵編,雙方都需要透過IP地址才能互相收發郵件。假設你的IP地址是222216131255,你的朋友的IP地址是23135160255,你想要給他傳送一條資訊,那麼這條資訊上面就會標註上你作為發信人的IP地址還有他作為收信人的IP地址,這樣他才能收到資訊。

封禁IP地址,就相當於拒收從某IP地址發來的資訊。

黑名單上到底記錄了什麼資訊呢?一項封禁具體有如下資訊:

如果封禁的是玩家名,這裡會記錄該玩家名對應的UUID:XXXXXXXXXXXXXXXXXXXXXXXXXXXX

被封禁的玩家名(name)或IP地址(ip):XXXXXX

該項封禁的建立時間(created):XXXXXXXXXXXXXXXXXX

該項封禁的建立人(source):XXXXXX

該項封禁的到期時間(expires):預設為forever

封禁的原因(reason):預設為Bannedbyanoperator

我們該怎樣透過指令使用黑名單?

黑名單相關的指令有許多,具體有:

封禁相關

banlt玩家名或UUIDgt封禁原因——透過玩家名或UUID來封禁一名玩家,玩家無需線上。

banipltIP地址或線上玩家名稱gt封禁原因——直接封禁一個IP地址或封禁一名線上玩家的IP地址

檢視相關

banlistltipsplayersgt——檢視被封禁的IP列表或玩家列表。ips即Ip列表,players即玩家列表。

解封相關

pardonlt玩家名gt——解封一個玩家名(從黑名單上移除指定玩家名)

pardonipltIP地址gt——解封一個IP地址(從黑名單上移除指定IP地址)

雖然比whitelist指令要複雜一點,但仍然很簡單,對吧?

現在我們來看一個情景(本情景為作者瞎編,如有雷同,純屬巧合):

在某生存小遊戲伺服器中,有一名叫做Klee的玩家(IP地址為114514191)亂放TNT,放火燒山,給該伺服器中的其他玩家造成許多損失。經管理員們討論後,伺服器給予該玩家永久封禁賬號(banKlee由於您嚴重違反我們伺服器相關規定,該帳號已被永久封禁)IP地址(banip114514191)大禮包,並補償伺服器內的其他玩家每人3萬遊戲幣,同時對受災嚴重地區進行回檔操作。

如果這名玩家想要再次進入伺服器,那麼她將會收到一條錯誤資訊:由於您嚴重違反我們伺服器相關規定,該帳號已被永久封禁。

如果這名玩家還不服氣,網上買了個黑號打算再進伺服器大幹一番,只要她的IP地址還是原來的那個114514191,那麼她就永遠無法進入該伺服器(除非IP地址被解封或她的IP地址換了)。

對了,如何檢視一名玩家的IP地址呢?

開啟你伺服器的根目錄,找到logs資料夾。進入該資料夾,找到需要檢視的玩家最後上線那天的伺服器日誌檔案。開啟後,使用CtrlF(Windows和Linux)或Command⌘F(Mac)搜尋該玩家名稱,就能很快地找到該玩家的IP資訊。

現在你知道如何使用黑名單了吧?就算你學會了,本章也沒有到此結束(kick還沒講呢!)。

注意到上面封禁的具體資訊中有一行封禁到期時間了沒有?

你有沒有發現,在黑名單的相關指令中,從來沒有出現過能夠設定封禁時長的引數,每次封禁都是forever(永久封禁)。這究竟是怎麼一回事?

實際上,這裡藏著一個天大的BUG,一個從Java19甚至更早到現在都未能解決的BUG:

當一項封禁到了到期時間,遊戲仍然會繼續封禁而不是放棄該項封禁。

雖然該bug在19版本才被發現,Mojang內部員工也說了該Bug在1131被解決(MC84786),但實際上仍然沒有解決(MC158900)。根據目前Mojangbug反饋網站上顯示的資訊,該錯誤影響了原版MC的191122、1144117版本。如果這個bug在接下來的119甚至是以後的120版本中被解決,那麼Mojang很有可能會給ban還有banip指令新增一個新的可以設定到期時間的引數!

唉,我們是不是漏了什麼東西?

kick啊!

kick的作用是踢出一名玩家。和黑名單不同的是,被踢出的玩家可以再次進入到伺服器中而不受限制,相當於是一個警告或是一個玩笑。

kick的語法如下:

kicklt目標選擇器:玩家gt踢出原因

即使kick的使用如此簡單,我們仍然需要注意以下幾點:

①在基岩版中,kick可以在命令方塊中執行(需要許可權等級僅為1)。但在Java版中不行(需要3級許可權)。

②在基岩版中,kick不能踢出伺服器的擁有者。但在Java版中,這是可行的。

③在基岩版中,kick在命令方塊執行成功輸出的紅石訊號強度等同於kick本次執行所踢出的玩家數量。

本章就到此結束了。

如遇章節錯誤,請點選報錯(無需登陸)

新書推薦

三國之我是個小兵 聯盟之王朝基石 LOL:都奪冠了誰還打職業啊! 全球對映:開局我是滿級大佬 莫瑟的日常 商如意宇文愆小說全本免費閱讀 當我穿越進入諸神的世界