Hướng dẫn

Cách làm plugin kinh tế cho Minecraft

Cập nhật 18 tháng 10, 2026

Plugin kinh tế giữ số dư cho từng người chơi, cho phép họ trả tiền cho nhau, kiếm tiền và tiêu tiền ở cửa hàng. Phần quan trọng không phải là các lệnh mà là kết nối với Vault: chính nó cho phép các plugin cửa hàng, nghề nghiệp và đấu giá dùng tiền của bạn. Hướng dẫn này nói về thiết kế, cách lưu trữ và cách build rồi thử nghiệm plugin.

Bắt đầu từ ví dụ này và đổi các quy tắc theo ý bạn.

Tạo thứ này với Codexe

Từng bước

  1. 1.Xác định plugin là loại nào

    Hoặc nó là nền kinh tế (lưu số dư và tự đăng ký làm nền kinh tế của Vault), hoặc nó dùng một nền kinh tế có sẵn qua Vault (cửa hàng, truy nã, plugin nghề nghiệp). Hầu hết máy chủ cần mỗi loại một cái, chứ không phải hai nền kinh tế.

  2. 2.Chọn máy chủ và phiên bản

    Ghi phần mềm máy chủ và phiên bản, ví dụ Paper 1.21.4. Plugin được build theo API và mức Java của phiên bản đó.

  3. 3.Liệt kê các lệnh và quy tắc

    /balance, /pay <player> <amount>, /baltop và các lệnh admin như /eco give|take|set. Thêm số dư ban đầu, tên đơn vị tiền tệ, số chữ số thập phân và mức thanh toán tối thiểu.

  4. 4.Chọn nơi lưu số dư

    SQLite cho một máy chủ, MySQL nếu nhiều máy chủ phải dùng chung số dư. Tiền phải còn nguyên sau khi khởi động lại hay bị sập, nên không bao giờ chỉ giữ trong bộ nhớ.

  5. 5.Để Codexe viết và build

    Hãy mô tả plugin và ghi rõ tên Vault để nó được thêm làm dependency. Codexe viết mã Java, plugin.yml và config.yml, biên dịch và sửa lỗi build trước khi dự án Sẵn sàng.

  6. 6.Thử thanh toán trong game

    Nhấn Dùng thử ngay và vào máy chủ thử nghiệm. Chuyển tiền giữa hai tài khoản, thử số tiền quá lớn, số âm hoặc không phải số, rồi khởi động lại và kiểm tra số dư vẫn còn.

  7. 7.Cài đặt

    Đặt Vault và tệp .jar của bạn vào thư mục plugins/ của máy chủ rồi khởi động lại. Gỡ mọi plugin kinh tế khác, hoặc quyết định Vault nên dùng cái nào.

Vault nằm ở đâu trong hệ thống

Vault là cầu nối, không phải nền kinh tế. Plugin kinh tế triển khai interface Economy của Vault và đăng ký nó với services manager của máy chủ; các plugin khác lấy nó bằng getServer().getServicesManager().getRegistration(Economy.class) rồi gọi các phương thức như getBalance, withdrawPlayer và depositPlayer.

Nhờ vậy plugin cửa hàng không cần biết bạn đang chạy nền kinh tế nào. Trong plugin.yml hãy dùng depend: [Vault] khi plugin không thể hoạt động nếu thiếu nó, hoặc softdepend khi Vault là tùy chọn. API của Vault chỉ cần để biên dịch; bản thân Vault được cài trên máy chủ.

Những quyết định nên ghi trong yêu cầu

  • Định dạng tiền: tên đơn vị tiền ở số ít và số nhiều, ký hiệu, số chữ số thập phân.
  • Giới hạn: số dư ban đầu, số dư tối đa, số dư có được âm hay không.
  • Người chơi offline: /pay và /eco có dùng được với người chơi không online hay không.
  • Ghi log: nhật ký giao dịch trong cơ sở dữ liệu hoặc một tệp, để staff kiểm tra khi có tranh chấp.
  • Cách kiếm tiền: giết mob, thưởng theo thời gian chơi, bán vật phẩm, hoặc chỉ bằng lệnh admin.

Lưu số dư ở đâu

Lưu trữPhù hợp choCần lưu ý
Tệp YAMLMáy chủ rất nhỏ, dễ đọcChậm khi đông người chơi, dễ hỏng khi máy chủ sập
SQLiteMột máy chủ, không cần cài đặtKhông dùng chung được giữa các máy chủ
MySQL / MariaDBMạng máy chủ dùng chung một số dưCần một máy chủ cơ sở dữ liệu và thông tin đăng nhập trong config.yml

Mô tả ví dụ

"Một plugin kinh tế Paper 1.21.4 tên Coins, tự đăng ký làm nền kinh tế của Vault. /balance [player], /pay <player> <amount> với mức tối thiểu là 1, /baltop với top 10, và /eco give|take|set cho người chơi có coins.admin. Người chơi mới bắt đầu với 100 coin. Hai chữ số thập phân. Mỗi khoản thanh toán được ghi log với ngày, người gửi, người nhận và số tiền. Số dư lưu trong SQLite. Tên đơn vị tiền và mọi tin nhắn nằm trong config.yml."

Codexe dùng SQLite theo mặc định khi bạn không yêu cầu thứ khác. Nếu bạn yêu cầu MySQL, plugin được viết với một thiết lập storage-type, và máy chủ thử nghiệm cấp cho nó một cơ sở dữ liệu MySQL riêng trong lúc bạn thử.

Câu hỏi

Tôi có cần Vault không?

Không cần nếu là một nền kinh tế độc lập mà không plugin nào khác dùng. Bạn cần nó ngay khi các plugin khác (cửa hàng, nghề nghiệp, đấu giá) phải đọc hoặc thay đổi số dư, vì đó là API mà chúng tìm đến.

Tôi có thể chạy nó cùng EssentialsX không?

EssentialsX có nền kinh tế riêng và cũng đăng ký nó với Vault. Hãy chỉ chạy một nền kinh tế mỗi lúc, hoặc tắt cái bạn không muốn, nếu không các plugin khác có thể dùng một số dư khác với số dư mà lệnh của bạn hiển thị.

Nhiều máy chủ có thể dùng chung số dư không?

Có, với MySQL hoặc MariaDB làm nơi lưu trữ và cùng một cơ sở dữ liệu trong config.yml của mọi máy chủ. Hãy ghi điều đó trong yêu cầu để plugin đọc số dư từ cơ sở dữ liệu thay vì lưu đệm quá lâu.

Làm sao để thử mà không cần máy chủ thật?

Với Dùng thử ngay: một máy chủ Paper riêng đúng phiên bản của bạn khởi động cùng plugin đã biên dịch, và các plugin ghi trong depend và softdepend, như Vault, được cài sẵn cho nó. Gói Free có 3 máy chủ thử nghiệm mỗi ngày, mỗi máy 10 phút.

Tạo nền kinh tế cho máy chủ của bạn

Prompt này mở ra sẵn sàng để gửi:

“Một plugin kinh tế Paper 1.21.4 tên Coins, đăng ký làm nền kinh tế của Vault: /balance, /pay với mức tối thiểu là 1, /baltop top 10, /eco give|take|set cho coins.admin, số dư ban đầu 100, hai chữ số thập phân, mọi khoản thanh toán được ghi log, số dư trong SQLite, tên đơn vị tiền và tin nhắn trong config.yml.”

Tạo thứ này với Codexe
Cách làm plugin kinh tế cho Minecraft (Vault, Paper) | Codexe