Hướng dẫn
Cách làm plugin nhiệm vụ cho Minecraft
Cập nhật 18 tháng 10, 2026
Nhiệm vụ cho người chơi một lý do để chơi: giết 20 zombie, đào 64 sắt, mang 10 ổ bánh mì cho dân làng. Plugin nhiệm vụ gồm ba thứ: mục tiêu lắng nghe các sự kiện trong game, tiến độ được lưu cho từng người chơi, và phần thưởng. Định nghĩa nhiệm vụ trong tệp cấu hình giúp bạn thêm nhiệm vụ mới mà không phải động vào mã.
Đổi nhiệm vụ và phần thưởng theo ý bạn.
Tạo thứ này với CodexeTừng bước
1.Chọn các loại mục tiêu
Bắt đầu với vài loại: giết một loại mob, phá hoặc đặt khối, thu thập vật phẩm, chế tạo, đến một địa điểm, nói chuyện với NPC. Mọi nhiệm vụ đều được ghép từ những loại này.
2.Định nghĩa nhiệm vụ trong một tệp
Mỗi nhiệm vụ trong
quests.yml: một id, tên, mô tả, các mục tiêu kèm số lượng, phần thưởng và điều kiện (hoàn thành nhiệm vụ khác trước, có quyền, đạt cấp độ).3.Theo dõi tiến độ của từng người chơi
Lắng nghe các sự kiện đứng sau mỗi mục tiêu và cộng vào tiến độ của người chơi. Lưu vào SQLite hoặc một tệp để tiến độ còn nguyên sau khi thoát game và khởi động lại.
4.Hiển thị tiến độ
Một menu
/questsvới các nhiệm vụ đang làm và đã xong, kèm tin nhắn, tiêu đề hoặc boss bar khi tiến độ thay đổi.5.Trao phần thưởng
Vật phẩm, kinh nghiệm, tiền qua Vault, hoặc lệnh console như
lp user %player% permission set ...cho mọi thứ khác.6.Build và hoàn thành một nhiệm vụ trong game
Để Codexe biên dịch, vào máy chủ thử nghiệm, nhận một nhiệm vụ và hoàn thành nó. Sau đó khởi động lại và kiểm tra tiến độ và phần thưởng đã được lưu.
Các mục tiêu và sự kiện đứng sau chúng
| Mục tiêu | Sự kiện | Chi tiết cần quyết định |
|---|---|---|
| Giết mob | EntityDeathEvent | Chỉ tính mạng hạ bởi người chơi, hay tính cả thú cưng và mũi tên của họ |
| Phá khối | BlockBreakEvent | Bỏ qua các khối do người chơi tự đặt, nếu không người chơi sẽ đặt rồi phá cùng một khối |
| Thu thập vật phẩm | Kiểm tra túi đồ hoặc sự kiện nhặt đồ | Vật phẩm có bị lấy đi khi nộp nhiệm vụ hay không |
| Chế tạo vật phẩm | CraftItemEvent | Chế tạo bằng shift-click tạo ra nhiều cái cùng lúc |
| Đến một địa điểm | PlayerMoveEvent | Chỉ kiểm tra khi người chơi đổi sang khối khác, không phải mỗi lần di chuyển |
| Nói chuyện với NPC | PlayerInteractEntityEvent | Thực thể nào là người giao nhiệm vụ |
Người giao nhiệm vụ
Người giao nhiệm vụ đơn giản nhất là một lệnh hoặc một menu. Với một nhân vật trong thế giới, một dân làng hoặc giá giáp có tên tùy chỉnh và một tag PersistentDataContainer là đủ mà không cần plugin khác: plugin nhận ra nó khi người chơi nhấp chuột phải vào. Nếu máy chủ của bạn đã dùng plugin NPC như Citizens, hãy ghi tên nó trong yêu cầu để plugin kết nối với nó.
Mô tả ví dụ
"Một plugin nhiệm vụ Paper 1.21.4 tên Quests. Các loại mục tiêu: giết mob, phá khối (không phải do người chơi đặt), thu thập vật phẩm và nói chuyện với một dân làng được gắn tag là người giao nhiệm vụ. Nhiệm vụ định nghĩa trong quests.yml với tên, mục tiêu, nhiệm vụ cần hoàn thành trước và phần thưởng (vật phẩm, kinh nghiệm, tiền Vault, lệnh console). /quests mở menu với các nhiệm vụ có sẵn, đang làm và đã xong. Tiến độ hiển thị trên action bar. Tối đa 3 nhiệm vụ đang làm. Nhiệm vụ hằng ngày đặt lại lúc nửa đêm theo giờ máy chủ. Tiến độ lưu trong SQLite."
Nhiệm vụ hằng ngày và lặp lại
- Ghi rõ khi nào chúng được đặt lại: vào một giờ cố định mỗi ngày, hay 24 giờ sau khi người chơi hoàn thành.
- Ghi rõ nhiệm vụ hằng ngày là ngẫu nhiên cho từng người chơi hay giống nhau cho tất cả.
- Lưu thời điểm hoàn thành gần nhất, không phải một cờ đánh dấu, để việc đặt lại vẫn đúng cả khi máy chủ tắt.
Câu hỏi
Nhiệm vụ có dùng được PlaceholderAPI không?
Có. Hãy yêu cầu các placeholder như nhiệm vụ đang làm và tiến độ của nó, để bảng điểm và danh sách tab hiển thị được. Ghi tên PlaceholderAPI trong yêu cầu để nó được thêm làm dependency.
Tôi có thể viết nhiệm vụ bằng Skript không?
Hệ thống nhiệm vụ nhỏ vừa vặn trong một script Skript với biến. Nhiều loại mục tiêu, menu và tiến độ lưu cho hàng trăm người chơi thì dễ giữ nhanh và gọn gàng hơn trong một plugin.
Làm sao kiểm tra nhiệm vụ có hoạt động?
Hãy chơi thử trên máy chủ thử nghiệm của Codexe, và thêm bài kiểm thử bằng lời của bạn, ví dụ "một người chơi thường chạy /quests và thấy một menu mở ra". Bài kiểm thử kiểm tra tin nhắn, vật phẩm và menu, không kiểm tra mob hay khối trong thế giới.
Tạo plugin nhiệm vụ của bạn
Prompt này mở ra sẵn sàng để gửi:
“Một plugin nhiệm vụ Paper 1.21.4: các loại mục tiêu giết mob, phá khối không do người chơi đặt, thu thập vật phẩm và nói chuyện với dân làng được gắn tag; nhiệm vụ trong quests.yml với mục tiêu, nhiệm vụ cần làm trước và phần thưởng (vật phẩm, XP, tiền Vault, lệnh console); menu /quests với nhiệm vụ có sẵn, đang làm và đã xong; tiến độ trên action bar; tối đa 3 nhiệm vụ đang làm; nhiệm vụ hằng ngày đặt lại lúc nửa đêm; tiến độ lưu trong SQLite.”
Tạo thứ này với Codexe