[精讚] [會員登入]
1074

【CoreProtect】[SpigotMC] (進階篇) 如何直接存取資料

大家好,這裡是準備要去參加FF38的小編過路君子 本來只要自己去,結果臨時有人說要一起去,那...好吧!走~ 對於一般人

分享此文連結 //n.sfs.tw/15605

分享連結 【CoreProtect】[SpigotMC] (進階篇) 如何直接存取資料@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2022-03-10 20:03:06 最後編修
2022-02-10 17:18:51 By 過路君子
 

大家好,這裡是準備要去參加FF38的小編過路君子

本來只要自己去,結果臨時有人說要一起去,那...好吧!走~

 

 

對於一般人來說,使用遊戲內所提供的指令/co lookup 就已經很夠用了。

但是對於程式設計人員來說,這點遠遠不夠用,能直接使用 SQL 語法去找尋資料當然是所樂見的事情。

所以,今天的主題就是如何直接從原始資料透過 SQL 語法去取得資料。

 

那第一步當然要先知道原始資料檔案放在哪裡啦~

正常來說會放在./plugins/CoreProtect/database.db這裡。

(所有圖片點擊都可以放大、變高清)

 

沒錯,我們要找的就是 database.db 這個檔案。

然後接下來就是使用軟體開啟這個檔案。

那小編在這裡是使用 SQLiteStudio 這個軟體,至於各位要使用什麼軟體都可以,只要能打開 .db 檔就好。

 

然後準備開啟將我們剛剛找到的那個檔案。

 

匯入檔案。

 

然後就可以看到所有被 CoreProtect 記錄的下來的紀錄了。

 

那接下來小編就條列出所有 table 所擁有以及代表的資訊吧(由上至下),紅字的為常用 table。

co_art_map (未知)
co_block 所有方塊的資料,包括放置、摧毀;生物擊殺資料也放在這裡。
co_blockdata_map 所有的方塊狀態。
co_chat 所有的聊天訊息。
co_command 所有被使用過的指令紀錄。
co_container 所有箱子、投擲器等可放置物品的容器紀錄。
co_database_lock (未知)
co_entity 村民以及其他生物的紀錄。
co_entity_map 生物對應其在 CoreProtect ID 的紀錄。
co_item 所有生物的紀錄。
co_material_map 所有物品對應其在 CoreProtect ID 的紀錄。
co_session 所有玩家的登入以及登出紀錄。
co_sign 所有告示牌的紀錄。
co_skull 所有頭顱的紀錄。
co_user 所有會被記錄事件的物品或是玩家。
co_username_log 玩家的暱稱和UUID 對應其在 CoreProtect ID 的紀錄。
co_version Minecraft 運行的版本。
co_world 世界的名稱對應其在 CoreProtect ID 的紀錄。

 

那至於要怎麼搜尋資料...就考驗各位的 SQL 語法了。

這邊就以查詢位於 (x 171, y 64, z -293) 的 #dispenser(投擲器) 紀錄為範例:

SELECT
    a.time, 
    b.id, 
    b.user, 
    a.x, 
    a.y, 
    a.z, 
    a.action 

FROM co_container AS a 

RIGHT JOIN co_user AS b 

ON
    b.user = "#dispenser"  
    
WHERE 
    a.user = 10 AND 
    a.x = 171 AND
    a.y = 64 AND
    a.z = -293;

你說小編怎麼知道 #dispenser 的 user 代號是 10?因為小編有偷偷先用 SQL 查了一下 (#

這邊一樣提供給各位參考:

SELECT id, user FROM co_user WHERE user = "#dispenser";

 

 

那你說這個有什麼用?

只要能使用 SQL 直接抓出來代表說我可以另存成 .csv 之類的,或是寫程式去快速爬取資料。

當然 CoreProtect 也有提供相應的 API 可以用(使用 Java 來讀取資料),但那就不是今天的主題了。

 

 

 

後記

希望有知道更多表格資訊的高手可以補充那兩個表格所代表的意義,小編有試著研究過,但是怎麼樣都串不起來。

END

你可能感興趣的文章

【Maven】如何開始撰寫 Minecraft PaperMC server插件 萬事起頭難,要開始寫一個插件最難的一步就是要怎麼開始寫

【教程】[HTML](進階版)如何在手機上編輯電子書(epub)預覽介面 可能會有人認為電子書(epub)只能用電腦來開啟、編輯,其實不是的,手機也可以編輯喔!

【Wildfly/jBoss】[Linux](Connection Datasource)如何與MySQL資料庫建立連線 網頁瀏覽器和資料庫的關係密不可分,而通常會將兩者分開架設在不同的伺服器上面來提供服務,這時要如何進行連線呢?

【Discord bot】(ERROR)await self.bot.wait_for() 大坑 今天真的是採到大坑,只找到解決方法,具體原因不明

【Kali Linux】[history -c]如何清除歷史記錄 非bash環境會使history部分功能變的非法

【Wickct】(link) <a> 如何新增超連結 簡單來說有兩種方式,小編個人比較偏好 的方法

隨機好文

高捷少女:購票大作戰③  歐巴桑露出懷疑的表情。「怎麼了,您跟夏尼爾小姐不是朋友嗎?只要打電話確認就好了,不是嗎?」「是……是這樣沒錯……可是……」小穹支支吾吾地說。我的確是潔西塔的朋友,但

高捷少女:耐耐的新年驚喜③ 即使如此,夫人仍然每年都會問老爺是否能空出一週時間,但總是被回絕,除了前年以外。老爺答應夫人一定會排出空檔,他們在去年的二十三日前往澳洲。」耐耐嘆了口氣。「那一天的晚上,我打電話給媽媽時,她很高興地告

高捷少女:耐耐的新年驚喜(終) 他的話說到一半,便被一陣響亮的哭聲打住了,是從產房中的傳來的。聽起來就像嬰兒的哭聲。 婕兒、小穹跟艾米也被哭聲吵醒,婕兒揉揉眼睛,看向呆若木雞的耐耐父女。「剛剛的聲音,該不會是……」

【英翻中歌詞】(二創歌)妖精大戰爭 ~Fairy Wars 妖精大戦争 ~Fairy Wars Star light… star bright… 星光閃耀...星輝熠熠... We’re the three brightest stars in the sky tonight! 我們是今晚

【數學】徐氏數學簡明講義(三) 第二章 直線與園 P2.1-15 Q12 12.已知聯立方程式恰有一解(x,y) = (1,2),   則的解為(x,y) = ? 解: