第五十二章 /kick和黑名單系統(tǒng)
在上一章我們學(xué)習(xí)了白名單的使用方法。但在MC Java版中不只有白名單,還有黑名單系統(tǒng)。
黑名單系統(tǒng)的組成和白名單類似,也是由兩部分組成:黑名單相關(guān)指令和服務(wù)器目錄下的黑名單文件。
雖然組成成分類似,但黑名單和白名單還是有許多不同之處。第一,黑名單目前僅在Java版服務(wù)器中有;第二,黑名單的記錄內(nèi)容比白名單的內(nèi)容更加復(fù)雜;第三,黑名單的作用和白名單是相反的;第四,黑名單系統(tǒng)是一直在運(yùn)行的,無法關(guān)閉
那么黑名單有什么用呢?黑名單和白名單一樣,也是服務(wù)器隨身攜帶的一個(gè)小本本,這個(gè)小本本上面也記錄了一些玩家(還有IP地址)。當(dāng)一個(gè)玩家想要進(jìn)入服務(wù)器時(shí),服務(wù)器就會(huì)拿出這個(gè)小本本,看一看該玩家的名字和UUID是否被記錄在了本子上,然后再看看該玩家的IP地址是否也被記錄。只要玩家名和IP地址中兩者有任意一者被記錄在了本子上,該玩家就無法進(jìn)入服務(wù)器。
沒錯(cuò),黑名單系統(tǒng)就是一個(gè)服務(wù)器的“封號(hào)”系統(tǒng)。但是說成“封號(hào)”并不準(zhǔn)確,因?yàn)椤胺馓?hào)”僅指的是封禁整個(gè)賬號(hào),而黑名單系統(tǒng)不止會(huì)封禁賬號(hào),還可以封禁IP地址。
什么是IP地址?IP地址(Internet Protocol Address),即互聯(lián)網(wǎng)協(xié)議地址。用人話來說,IP地址就相當(dāng)于你和其他人在互聯(lián)網(wǎng)上的郵編,雙方都需要通過IP地址才能互相收發(fā)郵件。假設(shè)你的IP地址是222.216.131.255,你的朋友的IP地址是23.135.160.255,你想要給他發(fā)送一條信息,那么這條信息上面就會(huì)標(biāo)注上你作為發(fā)信人的IP地址還有他作為收信人的IP地址,這樣他才能收到信息。
封禁IP地址,就相當(dāng)于拒收從某IP地址發(fā)來的信息。
黑名單上到底記錄了什么信息呢?一項(xiàng)封禁具體有如下信息:
如果封禁的是玩家名,這里會(huì)記錄該玩家名對(duì)應(yīng)的UUID:XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
被封禁的玩家名(name)或IP地址(ip):XXXXXX
該項(xiàng)封禁的創(chuàng)建時(shí)間(created):XXXX-XX-XX XX:XX:XX +XXXX
該項(xiàng)封禁的創(chuàng)建人(source):XXXXXX
該項(xiàng)封禁的到期時(shí)間(expires):默認(rèn)為forever
封禁的原因(reason):默認(rèn)為Banned by an operator.
我們?cè)撛鯓油ㄟ^指令使用黑名單?
黑名單相關(guān)的指令有許多,具體有:
\\封禁相關(guān)\\
/ban <玩家名或UUID>[封禁原因]——通過玩家名或UUID來封禁一名玩家,玩家無需在線。
/ban-ip <IP地址或在線玩家名稱>[封禁原因]——直接封禁一個(gè)IP地址或封禁一名在線玩家的IP地址
\\查看相關(guān)\\
/banlist <ips|players>——查看被封禁的IP列表或玩家列表。ips即Ip列表,players即玩家列表。
\\解封相關(guān)\\
/pardon <玩家名>——解封一個(gè)玩家名(從黑名單上移除指定玩家名)
/pardon-ip <IP地址>——解封一個(gè)IP地址(從黑名單上移除指定IP地址)
雖然比/whitelist指令要復(fù)雜一點(diǎn),但仍然很簡單,對(duì)吧?
現(xiàn)在我們來看一個(gè)情景(本情景為作者瞎編,如有雷同,純屬巧合):
在某生存+小游戲服務(wù)器中,有一名叫做Klee的玩家(IP地址為1.145.14.191)亂放TNT,放火燒山,給該服務(wù)器中的其他玩家造成許多損失。經(jīng)管理員們討論后,服務(wù)器給予該玩家永久封禁賬號(hào)(/ban Klee 由于您嚴(yán)重違反我們服務(wù)器相關(guān)規(guī)定,該帳號(hào)已被永久封禁)+IP地址(/ban-ip 1.145.14.191)大禮包,并補(bǔ)償服務(wù)器內(nèi)的其他玩家每人3萬游戲幣,同時(shí)對(duì)受災(zāi)嚴(yán)重地區(qū)進(jìn)行回檔操作。
如果這名玩家想要再次進(jìn)入服務(wù)器,那么她將會(huì)收到一條錯(cuò)誤信息:由于您嚴(yán)重違反我們服務(wù)器相關(guān)規(guī)定,該帳號(hào)已被永久封禁。
如果這名玩家還不服氣,網(wǎng)上買了個(gè)黑號(hào)打算再進(jìn)服務(wù)器大干一番,只要她的IP地址還是原來的那個(gè)1.145.14.191,那么她就永遠(yuǎn)無法進(jìn)入該服務(wù)器(除非IP地址被解封或她的IP地址換了)。
對(duì)了,如何查看一名玩家的IP地址呢?
打開你服務(wù)器的根目錄,找到logs文件夾。進(jìn)入該文件夾,找到需要查看的玩家最后上線那天的服務(wù)器日志文件。打開后,使用Ctrl+F(Windows和Linux)或Command?+F(Mac)搜索該玩家名稱,就能很快地找到該玩家的IP信息。
現(xiàn)在你知道如何使用黑名單了吧?就算你學(xué)會(huì)了,本章也沒有到此結(jié)束(/kick還沒講呢?。?。
注意到上面封禁的具體信息中有一行封禁到期時(shí)間了沒有?
你有沒有發(fā)現(xiàn),在黑名單的相關(guān)指令中,從來沒有出現(xiàn)過能夠設(shè)置封禁時(shí)長的參數(shù),每次封禁都是forever(永久封禁)。這究竟是怎么一回事?
實(shí)際上,這里藏著一個(gè)天大的BUG,一個(gè)從Java1.9甚至更早到現(xiàn)在都未能解決的BUG:
當(dāng)一項(xiàng)封禁到了到期時(shí)間,游戲仍然會(huì)繼續(xù)封禁而不是放棄該項(xiàng)封禁。
雖然該bug在1.9版本才被發(fā)現(xiàn),Mojang內(nèi)部員工也說了該Bug在1.13.1被解決(MC-84786),但實(shí)際上仍然沒有解決(MC-158900)。根據(jù)目前Mojang bug反饋網(wǎng)站上顯示的信息,該錯(cuò)誤影響了原版MC的1.9~1.12.2、1.14.4~1.17版本。如果這個(gè)bug在接下來的1.19甚至是以后的1.20版本中被解決,那么Mojang很有可能會(huì)給/ban還有/ban-ip指令添加一個(gè)新的可以設(shè)定到期時(shí)間的參數(shù)!
唉,我們是不是漏了什么東西?
/kick啊!
/kick的作用是踢出一名玩家。和黑名單不同的是,被踢出的玩家可以再次進(jìn)入到服務(wù)器中而不受限制,相當(dāng)于是一個(gè)警告或是一個(gè)玩笑。
/kick的語法如下:
/kick <目標(biāo)選擇器:玩家>[踢出原因]
即使/kick的使用如此簡單,我們?nèi)匀恍枰⒁庖韵聨c(diǎn):
?、僭诨鶐r版中,/kick可以在命令方塊中執(zhí)行(需要權(quán)限等級(jí)僅為1)。但在Java版中不行(需要3級(jí)權(quán)限)。
②在基巖版中,/kick不能踢出服務(wù)器的擁有者。但在Java版中,這是可行的。
?、墼诨鶐r版中,/kick在命令方塊執(zhí)行成功輸出的紅石信號(hào)強(qiáng)度等同于/kick本次執(zhí)行所踢出的玩家數(shù)量。
本章就到此結(jié)束了。