首頁 / 今天我就是巴菲特- XConomy 經濟插件

今天我就是巴菲特- XConomy 經濟插件

啊,這系列文章也寫到第三篇了。今天我們要介紹的是一款非常好用的經濟插件—— XConomy !

這是一款自帶中文語系的經濟插件,讓你的伺服器也能像現實生活一樣有金錢系統、負債還債、首富排行榜等!如果未來想要增加課金功能(我自己不喜歡付費,所以不一定會教),也可以用它來管理;甚至於我預計下幾篇就會介紹的領地插件,也需要 XConomy 的「金主」支持!

什麼是經濟插件

現實生活中賺錢是件很重要的事情,在麥塊世界中…誰說不是了?使用這款 XConomy ,你可以在伺服器中辦到許多事。試著想像一下,你的伺服器開始有了富有有了貧窮、可以用金錢互相買賣物品,不再是普通的以物易物。再放遠想一下,你的副本系統、領地系統…都架設好了,想讓玩家購買特殊武器?儲值伺服器幫助你賺錢?不要把這些事想的太難,它非常的簡單,簡單到你我都可以學會!

還記得上次介紹的LuckPerms嗎?它的用處就在這裡,放款借貸某些人可以、想要指令不用給OP。這就是插件的力量啊!

經濟插件之祖:Vault

Vault是一個讓插件輕鬆連接權限、聊天和經濟系統的API,而無需個別連接或依賴於每個插件本身。它的誕生源於對Register和當前權限API運行方式的不滿,以及它們缺乏功能或過於複雜的實現方式。Vault試圖通過直觀的設計,為插件提供對它們可能使用的任何系統的支持,從而解決這些問題。讓插件能夠輕鬆地連接到這些系統,從而為Minecraft伺服器帶來更多功能和可能性!

Vault | SpigotMC – High Performance Minecraft

Vault 是一款開源的經濟插件前置API,它提供簡單且強大的開發接口讓開發者們可以輕鬆設計各種關於聊天、經濟與權限系統的API們。今天的主角 XConomy 就是基於它開發的,所以就像模組要裝前置模組一樣,XConomy 也需要 Vault 的助攻!

API

API,全名應用程式開發接口(Application Programming Interface),是一個可以讓一款軟體調用其他軟體程式碼的工具。

打個比方,今天我前往了一家餐廳,我不會直接跑到後台跟廚師說我要來一份炒飯,而是請服務生幫我跟廚師點炒飯;我也不會自己跑去後台跟廚師拿我的炒飯,更不會自己去收銀檯打開收銀機交錢(你相信我不會偷錢就錯了…),而是全部找服務生。

如此一來,這位服務生就是所謂的API接口,他省去了我要自己去找廚師處理、自己去交錢的流程(底層程式碼)。他不只簡化了我要整家餐廳到處跑的麻煩,也讓我沒辦法偷餐廳的錢(雖然讓我偷比較好吧…),這就是API!

Vault 在自己的程式碼中提供了一些代碼允許其他人調用它們來完成自己的插件,而不需要自行寫這些基礎程式碼。而XConomy的作者為了簡化開發,採用Vault提供的代碼來完善自己的程式。

安裝XConomy!

安裝XConomy很簡單,跟之前裝其他插件一樣,下載適合的版本即可。但你會發現,Vault已經沒有1.20版的支持了。因此我會在網站提供我測試過可以用在1.20.x版上的Vault,你當然也可以自己去官方載比較安全,我只是提供簡單的方法而已(我是API~~

如果從我那裏下載,記得解壓縮密碼是 SamHacker

然後上傳到伺服器後台的plugins目錄中,重啟之後他會在該目錄產生兩個新資料夾名為Vault與XConomy!

扔到這個目錄裡~

我是租託管的…

這個面板不是檔案總管,是IceHost的面板喔~未來我面板應該都會用這個,不過本機搭建也就只是換成用檔案總館,路徑不會變喔!

初見插件配置文件

打開產生出來的/XConomy/資料夾中config.yml,你會看到開頭有這些的話就正常了!

#Default Online Offline SemiOnline
#Default mode will automatically detect the player's UUID(support GeyserMC)
#Online mode is better for servers that enable online-mode(support Yggdrasil)
#Offline mode does not support ignoring username case
#If you use floodgate(GeyserMC) and the option 'username-prefix' is set to empty, Please use SemiOnline mode
UUID-mode: Default
#In convertion mode, can use command '/xconomy' import data from other plugins based on Vault
#Conflicting data will be skipped, The imported data will be saved in XConomy/importdata/data.yml
#In this mode, XConomy will not start normally
#After the conversion, please check data and turn off this mode
#Sponge version does not have this function
Importdata-mode: false


#Settings
Settings:
  #Chinese ChineseTW English French Spanish Russian Turkish Japanese German
  #Indonesia Portuguese Italian
  language: English
  #Whether to check for new version
  check-update: true
  #TOP10 and the Server Total refresh time interval (Seconds)
  refresh-time: 300
    #If set to true, XConomy will register the following commands:
    # - economy
    # - eco
    # - ebalancetop
    # - ebaltop
  # - eeconomy
# ...

這只是節錄,全放我不相信你想滑…反正這就是配置文件,是用一種叫做YAML的語言寫的。如果你想問我:所以我要動他?痾…你的預知能力不錯,正確無誤…但不用怕,照我教的保證不會出事!

什麼是YAML?

首先我要先來介紹一下YAML是個啥?請先想想你生活中會有多少資料需要記憶?YAML是一種資料格式,可以方便程式在其他檔案裡儲存自己的資料。XConomy使用這個格式來儲存所有它的設定。以下是XConomy(我看我要簡稱他為XC了)的配置文件節錄:

#Default Online Offline SemiOnline
#Default mode will automatically detect the player's UUID(support GeyserMC)
#Online mode is better for servers that enable online-mode(support Yggdrasil)
#Offline mode does not support ignoring username case
#If you use floodgate(GeyserMC) and the option 'username-prefix' is set to empty, Please use SemiOnline mode
UUID-mode: Default
#In convertion mode, can use command '/xconomy' import data from other plugins based on Vault
#Conflicting data will be skipped, The imported data will be saved in XConomy/importdata/data.yml
#In this mode, XConomy will not start normally
#After the conversion, please check data and turn off this mode
#Sponge version does not have this function
Importdata-mode: false


#Settings
Settings:
  #Chinese ChineseTW English French Spanish Russian Turkish Japanese German
  #Indonesia Portuguese Italian
  language: English
  #Whether to check for new version
  check-update: true
  #TOP10 and the Server Total refresh time interval (Seconds)
  refresh-time: 300
# ...

以上就是XC的配置檔案中,重要需要改的部分。

鍵值對(Key-Value Pair)

鍵值對是一種由索引跟內容組合而成的物件,是YAML的基本架構。你可以把YAML想像成一張教師用的解答卷,裡面的每一個鍵值對就是一道題跟答案。鍵值對由鍵跟值組成,在插件中你只能改值不能改鍵,就像你考試可以有很多答案(不管正不正確),但你不可能改變題目。以下是一個鍵值對:

example-key: value

這就是一個鍵值對,前面的example-key是題目(鍵),value是值(答案)。如果你不想學程式語言,只要記得一件事:

改配置檔只能改冒號後面!

SamHacker

註釋(註解)

這份文件叫做設定檔,而每一個鍵又只能用數字英文與減號。除非插件作者會通靈,否則你應該不會了解這個鍵值對的用意。因此會需要註解的協助,註解在YAML中並不會被程式解析(也就是程式不會管它),所以作者可以在註解裡寫人話讓我們知道他是幹嘛的。註解採用#開頭的文字:

# 我是註解

配置插件

語系

XC有內建中文翻譯檔案,所以不用擔心你看不懂插件的問題(如果沒有提供中文化語系檔,會需要自行翻譯。我之前有寫過一個簡單的翻譯工具,之後需要會寫教學…)

對於內建有中文翻譯檔案的插件而言,只需要配置文件中改掉語系設定即可,如下:

#Settings
Settings:
  #Chinese ChineseTW English French Spanish Russian Turkish Japanese German
  #Indonesia Portuguese Italian
  language: ChineseTW    # 把這項從English換成ChineseTW,Chinese是簡體字喔

然後存檔,再來請進入伺服器或在後台打這串指令:/xconomy reload

你會看到這段話,代表成功重新載入。

Reload

請記得!大部分插件修改完配置文件、語系文件等之後,都會需要使用一次Reload指令來重新載入新的配置,而大多數插件Reload指令語法都一樣:

/插件名稱 reload

檢查更新

在伺服器每次啟動時,會自動檢查插件是否有更新。如果你不希望啟用這項功能,可以直接把此項目給關掉

Settings:
  # ...
  #Whether to check for new version
  check-update: true
  # ...

true是開啟檢查更新,false則相反

重新載入速率(Refresh Rate)

XC會每隔一段時間更新PlaceHolder(之後找時間介紹)的內容,你可以在這邊設定每隔多久執行一次更新。數值越小越吃資源,但會比較快看到更新的效果,反之亦然。設定單位為秒

不要設為0

如果把重新載入速率設為0,則伺服器會一直重複重載,可能會造成伺服器崩潰(不做死就不會死的意思…)

Settings:
  # ...
  #TOP10 and the Server Total refresh time interval (Seconds)
  refresh-time: 300     # 預設為300秒(5分鐘)更新一次
  # ...

金錢單位設定

#The display of the currency
Currency:
  singular-name: ''
  plural-name: ''
  #Is the balance an integer
  integer-bal: true
  thousands-separator: ','
  #%format_balance% indicate the balance after the format
  display-format: '%balance% %currencyname%'
  #Maximum amount (default is maximum)
  max-number: '99999999999999999999999999999999999999999999'
  format-balance:
    1000: K
    1000000: M
    1000000000: B
    1000000000000: T

這邊我懶得一個一個分,直接給介紹:

  • integer-bal:如果你的金錢單位是是整數沒有餘數,就把它設為true,否則設為false即可
  • thousands-separator:英文數常用的分隔,一般保持預設,或設為''代表不要使用
  • display-format:金錢顯示的格式,沒有特殊需求保持預設即可
  • max-number:金錢最多可以有多少,保持預設即可
  • format-balance:達到這些時的縮寫,例如此設定代表1000元會顯示1K、1000000顯示M…

權限設定

對,到了最討厭的權限設定了。打開LuckPerms的網頁設定面板,以下是XC提供的權限節點:

節點說明建議擁有者
xconomy.user.balance允許玩家可以看自己的金錢一般玩家
xconomy.user.balance.other允許玩家可以看別人的金錢一般玩家
xconomy.user.pay允許玩家將錢交給別人一般玩家
xconomy.user.pay.receive允許玩家收別人給的錢(需要LP,上一篇應該裝好了)一般玩家
xconomy.user.balancetop允許玩家檢視金錢排行榜一般玩家
xconomy.user.paytoggle允許玩家切換是否要收受金錢一般玩家
xconomy.admin.give允許管理員給予自己與別人金錢
(這會造成擁有此節點者得到無限金錢以破壞平衡,極為不建議非服主者擁有!)
服主
xconomy.admin.take允許管理員移除自己與別人金錢
(這會造成擁有此節點者移除他人金錢以破壞平衡,極為不建議非服主者擁有!)
服主
xconomy.admin.set允許管理員設定自己與別人金錢
(這會造成擁有此節點者得到無限金錢以破壞平衡,極為不建議非服主者擁有!)
服主
xconomy.admin.balancetop允許玩家從排行榜上隱藏某位玩家的資訊服主
xconomy.admin.paytoggle允許玩家切換他人是否能收受金錢服主
xconomy.admin.permission允許管理員設定插件的權限服主或插件師
xconomy.admin.hidden隱藏Tab選單服主
XConomy權限節點簡表

絕對不要給別人金錢管理權限!!

非常重要:絕對不要給除了自己以外其他人擁有give、take、set三項權限,它們會嚴重破壞伺服器的金錢平衡,甚至是通貨膨脹;也不要自己亂給金錢!身為服主,請有身為服主的自知

指令表

指令說明對應權限節點
/balance 或 /money檢視自己擁有的金錢xconomy.user.balance
/balance <Player> 或 /money <Player>檢視 Player 擁有的金錢xconomy.user.balance.other
/pay <player> <amount>給 Player Amont元xconomy.user.pay
/balancetop檢視首富前十名xconomy.user.balancetop
/paytoggle決定要不要收受他人給予的金錢xconomy.user.paytoggle
/xconomy help檢視插件的幫助
一般玩家指令表

Tab按住出現金錢

有沒有在別的伺服器中遇到按住TAB的玩家列表中會出現你的金錢、伺服器名稱等資訊?這很簡單,但需要一些插件的協助~

PlaceHolder API

PlaceHolder,中文名為”預留位置”或”預保留位置”,是一種透過文字代替實際數值的技術。這可以讓你用一段文字代替實體數值,打比方,以下是XC預留的PH(PlaceHolder):

以下是XConomy插件的Placeholder對應的翻譯表:

PlaceHolder說明
%xconomy_balance%顯示餘額
%xconomy_balance_value%顯示餘額數值
%xconomy_balance_formatted%顯示格式化後的餘額
%xconomy_top_hidden%顯示是否隱藏玩家排名
%xconomy_top_player_#%顯示排名#的玩家名稱
%xconomy_top_balance_#%顯示排名#的玩家餘額
%xconomy_top_balance_value_#%顯示排名#的玩家餘額數值
%xconomy_sum_balance%顯示伺服器總餘額
%xconomy_sum_balance_value%顯示伺服器總餘額數值
%xconomy_top_rank%顯示玩家的排名
%xconomy_top_rank_#%顯示排名#的玩家排名
%xconomy_global_paypermission%顯示全域付款許可
%xconomy_paypermission%顯示玩家付款許可
%xconomy_paytoggle%顯示玩家接受付款的狀態
XConomy Placeholder

如果你在其他插件的配置中插入 %xconomy_balance%例如我在某個地方輸入你剩下 %xconomy_balance% 元,玩家在這個位置會看到他剩下的餘額,例如”你剩下 80 元”。

是不是很神奇?再來看一個:如果你進行設定好了(之後我會教你設定,敲碗敲越多我教越快,所以要不要分享文章還有按下面拍手了?),可以辦到像這樣:

DiscordSRV + Placeholder

這是以上操作的示意圖:

而在麥塊插件界中,PlaceHolder API做的事情就是解析你加入的PlaceHolder,替換後交給其他插件。想做到上面的操作,一定需要這款插件:

安裝方法相信大家都知道了,一樣SOP上傳重啟解決。這款就不需要進行配置文件的修改了放心

然後在這邊介紹過的TAB插件是用來修改TAB選單中的文字的插件,所以也要裝

再來打開TAB的配置文件:/plugins/TAB/config.yml,以下是這次要用到的配置段落:

header-footer:
  enabled: true
  header:
  - '                                                      '
  - '>>   &k1&r%animation:ServerName%&f&k1   &r<<' 
  - ''
  - '戰鬥力: %aureliumskills_fighting_roman%  |  凌狼幣: %xconomy_balance_formatted% |  線上玩家: %online%'
  - ''
  footer:
  - ''
  - '&bX&f: %player_x% &6Y&f: %player_y% &bZ&f: %player_z%'
  - '&#BBFFBBTPS: 20   &#BBFFFF%date%   &#FFD1A4PIN: %ping%'
  - ''

以上是我自己的,反正上面header中每一行都代表著一行文字,如下:

上面就是這個配置的結果,因此你可以再創建一行(建議用Visual Studio Code編輯,比較不會出事)或修改現有的行,然後在希望出現金錢餘額的地方加入%xconomy_balance_formatted%即可!

不要忘記Reload

TAB的重載入指令是 /tab reload

結語

這篇文章裡面我探討了金錢插件XC跟串接方式,如果大家有學到不少東西的話,歡迎幫我點個拍手~~

最後總結一下這篇文章:

安裝XConomy、介紹YAML、PlaceHolder API

今日總結
SamHacker
SamHacker

嗨,大家好!我是SamHacker,一名對程式設計充滿熱情的國二生。
從幾年前開始,我就深陷於程式設計的沼澤,不斷地越挖越深…..
在WordPress方面,我喜歡挑戰自己,創建出獨特且功能豐富的網站;
同時,無聊也會在那邊做Discord機器人。
順便扯一下,Minecraft好好玩

文章: 33

1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *