- Hỗ trợ phiên bản
- 1.13
- 1.14
- 1.15
- 1.16
- 1.17
- 1.18
- 1.19
- 1.20
- 1.21
- Người đóng góp
- SkyGamer
⏳ TimedItem (v1.1.0)
Plugin Quản Lý Hạn Sử Dụng Vật Phẩm Hiện Đại • Bất Đồng Bộ 100% Không Lag • Hỗ Trợ MMOItems • PlaceholderAPI • Phiếu Gia Hạn
✦ Giới Thiệu
TimedItem là plugin Minecraft chuyên nghiệp dành cho Spigot, Paper và Purpur 1.21 / 1.21.1+ giúp bạn tạo ra các trang bị, vũ khí, áo giáp, danh hiệu hoặc vật phẩm có Hạn Sử Dụng (Expiration Time).
Bạn từng đau đầu vì các plugin thời hạn cũ gây tụt TPS, đứng server khi quét file playerdata người chơi offline, hoặc vô tình kích hoạt đếm giờ khi bỏ item vào Crate quà hay Kit? TimedItem khắc phục hoàn toàn các nhược điểm trên nhờ lưu trữ trực tiếp bằng PersistentDataContainer (PDC), cơ chế đọc ghi file NBT bằng Java thuần chạy bất đồng bộ 100%, và cơ chế kích hoạt thông minh khi người chơi cầm ở chế độ Sinh tồn.
✦ Tính Năng Nổi Bật (Version 1.1.0)
- ⚔️ Tích Hợp MMOItems Toàn Diện (Mới trong v1.1.0):
- Phát vật phẩm MMOItems có thời hạn nhanh chóng qua lệnh:
/ti givemmo <người chơi> <loại> <id> <thời gian>. - Hỗ trợ Console 100% — tích hợp mượt mà vào Crate, Quà nạp, BattlePass, Quest, Shop NPC!
- Cơ chế Soft-dependency an toàn bằng reflection, server không cài MMOItems vẫn chạy bình thường 0% lỗi.
- Tự động chống tràn túi: Nếu người chơi đầy kho đồ, vật phẩm sẽ tự rơi tại chân kèm thông báo.
- Tự động kích hoạt đếm ngược nếu người chơi mục tiêu đang ở chế độ Sinh tồn.
- Tab-completion thông minh: Tự động gợi ý danh sách loại item MMOItems (Type) và ID item có trong server!
- Phát vật phẩm MMOItems có thời hạn nhanh chóng qua lệnh:
- Phiếu Gia Hạn Thời Gian — Extension Tokens (Mới trong v1.1.0):
- Tạo hoặc tặng Phiếu Gia Hạn qua lệnh:
/ti token <thời gian> [số lượng] [người chơi]. - Cơ chế Kéo & Thả (Drag & Drop): Người chơi chỉ cần cầm phiếu trên con trỏ chuột trong túi đồ và nhấp thẳng vào món đồ có hạn để cộng thêm thời gian!
- Tùy chỉnh tự do loại vật phẩm (
PAPER), hiệu ứng phát sáng (Glow), CustomModelData, tên và lore trongconfig.yml. - Phát âm thanh thăng cấp và hiệu ứng Enchant khi gia hạn thành công.
- Tạo hoặc tặng Phiếu Gia Hạn qua lệnh:
- Hỗ Trợ PlaceholderAPI & Lệnh /ti check (Mới trong v1.1.0):
- Đưa thời hạn item lên Scoreboard, TAB, Actionbar, DeluxeMenus, ConditionalEvents!
- Bổ sung lệnh
/ti checkcho phép người chơi tự xem chi tiết trạng thái, thời gian còn lại và ngày hết hạn của item trên tay.
- Hỗ Trợ Song Ngữ Chuẩn (Tiếng Việt & English):
- Đổi ngôn ngữ dễ dàng trong
config.ymlvớilanguage: "vi"hoặclanguage: "en". - Kèm sẵn cả 2 file
lang_vi.ymlvàlang_en.ymldịch sẵn chuẩn 100%.
- Đổi ngôn ngữ dễ dàng trong
- ️ Cơ Chế 2 Trạng Thái Thông Minh:
- Trạng thái Chờ (Hiệu lực: <thời gian>): Item tạo ra chưa bị tính giờ, thoải mái bỏ vào Crate, Shop, Kit mà không lo mất hạn của người chơi.
- An toàn cho Sáng Tạo (Creative): Admin ở Creative có thể cầm, di chuyển đồ mà không sợ vô tình kích hoạt.
- Kích hoạt Sinh Tồn (Hết hạn vào: <ngày giờ>): Ngay khi item vào kho đồ của người chơi ở Survival, hệ thống sẽ phát âm thanh *Pling*, đổi lore sang ngày giờ cụ thể và bắt đầu đếm ngược!
- Quét Kho Đồ Người Chơi Offline Bất Đồng Bộ 100%:
- Tự đọc và ghi file
playerdata/<uuid>.datbằng bộ mã NBT Java thuần chạy ngầm (Asynchronous). - Tự động xóa đồ hết hạn trong túi và Rương Ender của người chơi offline mà không gây tụt 1 chút TPS nào.
- Thông báo tổng kết cho người chơi khi đăng nhập trở lại server.
- Tự đọc và ghi file
- Lưu Trữ Chuẩn PDC & Bảo Toàn Lore:
- Lưu timestamp trực tiếp trong PersistentDataContainer chuẩn của Minecraft.
- Không bao giờ làm mất hay ghi đè lên dòng lore khác (Enchant, MMOItems, MythicMobs).
- Hỗ trợ mã màu truyền thống (
&a, &e, &c) và mã màu Hex RGB (&#RRGGBB).
✦ Danh Sách Lệnh & Quyền Hạn
| Lệnh | Quyền Hạn (Permission) | Mô Tả & Ví Dụ |
|---|---|---|
| /ti add [thời gian] | timeditem.command.add | Thêm thời hạn cho item trên tay (VD: /ti add 1d2h, /ti add 30m) |
| /ti remove [thời gian] | timeditem.command.remove | Bớt thời hạn của item trên tay (VD: /ti remove 3d5h) |
| /ti set <định dạng> | timeditem.command.set | Đặt thời hạn hoặc ngày hết hạn (VD: /ti set 1d2h, /ti set 12/07/2026) |
| /ti clear | timeditem.command.clear | Xóa hoàn toàn thời hạn khỏi item trên tay |
| /ti check | timeditem.command.check | Kiểm tra chi tiết thời hạn item trên tay (Mặc định: Mọi người) |
| /ti givemmo <người chơi> <loại> <id> <thời gian> | timeditem.command.givemmo | Tặng item MMOItems có thời hạn (VD: /ti givemmo Steve SWORD CUTLASS 7d) |
| /ti token <thời gian> [số lượng] [người chơi] | timeditem.command.token | Tạo hoặc phát Phiếu Gia Hạn (VD: /ti token 3d 1 Steve) |
| /ti reload | timeditem.command.reload | Nạp lại cấu hình và ngôn ngữ |
| /ti help [trang] | timeditem.command.help | Xem bảng hướng dẫn phân trang (Mặc định: Mọi người) |
✦ Danh Sách PlaceholderAPI
| Placeholder | Giá Trị Trả Về Mẫu | Ý Nghĩa |
|---|---|---|
%timeditem_hand_is_timed% | true / false | Kiểm tra item trên tay có hạn sử dụng không |
%timeditem_hand_status% | active, inactive, expired, none | Mã trạng thái gốc |
%timeditem_hand_status_formatted% | §aĐang hoạt động / §eChưa kích hoạt | Trạng thái có màu sắc theo file ngôn ngữ |
%timeditem_hand_remaining% | 2d 5h 30m / 45m | Thời gian còn lại dạng chuỗi đẹp mắt |
%timeditem_hand_remaining_seconds% | 192600 | Thời gian còn lại tính bằng giây (số nguyên) |
%timeditem_hand_expiry% | 25/12/2026 18:30:00 | Ngày giờ hết hạn cụ thể |
%timeditem_hand_name% | Kiếm Kim Cương | Tên hiển thị của vật phẩm trên tay |
✦ Cấu Hình Mẫu
YAML:
# ======================================================
# TimedItem Configuration (v1.1.0)
# ======================================================
# Active language of the plugin:
# "en" : English (loads lang/lang_en.yml)
# "vi" : Vietnamese (loads lang/lang_vi.yml)
# If set to "vi", reloading the plugin (/ti reload) will
# automatically switch this configuration file to Vietnamese!
language: "en"
# Date format for commands and expiration display
# Default: dd/MM/yyyy HH:mm:ss
date-format: "dd/MM/yyyy HH:mm:ss"
# How often to check for expired items (in seconds)
# Affects both online inventory and world dropped checks
check-interval: 30
# Whether to check items dropped in the world
world-check: true
# Whether to check online player inventories
inventory-check: true
# Whether to check offline player inventories and Ender Chests (100% Async)
offline-check: true
# Number of items shown per help page (/ti help)
help-per-page: 7
# Technical settings for Extension Tokens (Phiếu Gia Hạn)
# Display name & lore of tokens are localized in lang/lang_en.yml or lang/lang_vi.yml
token:
material: PAPER
custom-model-data: 0
glow: true
YAML:
# ======================================================
# TimedItem Language - Tiếng Việt (lang_vi.yml)
# ======================================================
prefix: "&8[&6TimedItem&8] &r"
# Item lifecycle messages
item-expired: "&cVật phẩm &e{item} &cx{amount} &cđã hết hạn và đã tự xoá khỏi kho!"
items-expired-offline: "&eKhi bạn đang offline, có &c{count} &evật phẩm đã hết hạn và đã tự xoá khỏi kho!"
item-activated: "&aVật phẩm &e{item} &ađã kích hoạt! Hạn sử dụng: &e{expiry}"
duration-set: "&aĐã đặt thời gian hiệu lực &e{duration} &acho vật phẩm (sẽ tính giờ khi cầm trên tay ở chế độ sinh tồn)."
time-added: "&aĐã thêm &e{time} &avào vật phẩm. Hạn sử dụng mới: &e{expiry}"
time-removed: "&aĐã xoá &e{time} &akhỏi vật phẩm. Hạn sử dụng mới: &e{expiry}"
time-set: "&aĐã set thời hạn thành &e{expiry}&a."
time-cleared: "&aĐã xoá thời hạn cho item."
# General error & notice messages
no-item-in-hand: "&cBạn phải cầm item trên tay!"
not-timed-item: "&cItem này không có thời hạn!"
invalid-time-format: "&cSai định dạng thời gian! Ví dụ: 1d2h30m, 7d, 30m"
invalid-date-format: "&cSai định dạng thời gian! Ví dụ: {format}"
date-in-past: "&cBạn phải set ngày ở tương lai!"
no-permission: "&cBạn không có quyền dùng lệnh này!"
reloaded: "&aĐã nạp lại cấu hình và ngôn ngữ thành công! (Ngôn ngữ: {lang})"
player-only: "&cChỉ người chơi mới dùng được lệnh này!"
player-not-found: "&cKhông tìm thấy người chơi &e{player}&c hoặc người chơi đang ngoại tuyến!"
invalid-amount: "&cSố lượng phải là một số nguyên dương hợp lệ!"
usage: "&cCách dùng: {usage}"
# MMOItems integration messages
mmo-not-installed: "&cPlugin MMOItems chưa được cài đặt hoặc chưa khởi động trên máy chủ!"
mmo-type-not-found: "&cKhông tìm thấy loại MMOItems &e{type}&c!"
mmo-item-not-found: "&cKhông tìm thấy vật phẩm MMOItems loại &e{type}&c với ID &e{id}&c!"
mmo-given: "&aĐã tặng vật phẩm MMOItems &e{item} &a(thời hạn: &e{time}&a) cho &e{player}&a!"
mmo-received: "&aBạn đã nhận được vật phẩm MMOItems &e{item} &a(thời hạn: &e{time}&a)!"
inventory-full-dropped: "&eTúi đồ của {player} đã đầy! Vật phẩm đã được thả xuống đất."
# Extension token messages
token-given: "&aĐã trao &e{amount}x &aPhiếu Gia Hạn (&e+{time}&a) cho &e{player}&a!"
token-received: "&aBạn nhận được &e{amount}x &aPhiếu Gia Hạn (&e+{time}&a)!"
token-applied: "&aĐã dùng Phiếu Gia Hạn! Thêm &e+{time} &acho &e{item}&a. Hạn mới: &e{expiry}"
token-cannot-extend: "&cKhông thể gia hạn cho vật phẩm đã hết hạn hoặc không có thời hạn!"
# Lore display formats
lore-inactive-format: "&eHiệu lực: &a{duration}"
lore-format: "&cHết hạn vào: &e{expiry}"
# Token item display
token-name: "&6&lPhiếu Gia Hạn &7(+{duration})"
token-lore:
- "&7Kéo và thả phiếu này vào một"
- "&7vật phẩm có thời hạn để gia hạn."
- ""
- "&eThời gian cộng thêm: &a+{duration}"
- "&8&o(Nhấp chuột trái vào item để sử dụng)"
# Status labels (for /ti check and PlaceholderAPI)
status-active: "&aĐang hoạt động"
status-inactive: "&eChưa kích hoạt"
status-expired: "&cĐã hết hạn"
status-none: "&7Không có hạn"
# Inspect (/ti check) format
check-header: "&8&m----------------------------------------"
check-title: "&6&lThông Tin Vật Phẩm Có Thời Hạn:"
check-item: " &7* Vật phẩm: &f{item}"
check-status: " &7* Trạng thái: {status}"
check-remaining: " &7* Thời gian còn lại: &a{remaining}"
check-expiry: " &7* Thời điểm hết hạn: &e{expiry}"
check-footer: "&8&m----------------------------------------"
# Help system
help-header: "&8&m----------&r &6Hướng Dẫn TimedItem &7(Trang {page}/{max_page}) &8&m----------"
help-footer: "&8&m----------&r &7Dùng /ti help {next_page} để qua trang kế tiếp &8&m----------"
help-commands:
add: "&6/ti add [time] &7- Thêm thời hạn cho vật phẩm trên tay. &8(vd: /ti add 1d2h)"
remove: "&6/ti remove [time] &7- Xoá bớt thời hạn của vật phẩm trên tay. &8(vd: /ti remove 3d5h)"
set: "&6/ti set <format> &7- Đặt thời hạn hoặc ngày hết hạn. &8(vd: /ti set 12/07/2026)"
clear: "&6/ti clear &7- Xoá hoàn toàn thời hạn khỏi vật phẩm."
check: "&6/ti check &7- Kiểm tra chi tiết thời hạn vật phẩm trên tay."
givemmo: "&6/ti givemmo <player> <type> <id> <time> &7- Tặng item MMOItems có thời hạn."
token: "&6/ti token <time> [amount] [player] &7- Tạo/tặng Phiếu Gia Hạn thời gian."
reload: "&6/ti reload &7- Nạp lại plugin và cấu hình ngôn ngữ."
help: "&6/ti help <page> &7- Xem danh sách hướng dẫn lệnh."
✦ Hướng Dẫn Cài Đặt
- Tải file TimedItem-1.1.0.jar.
- Bỏ file vào thư mục
/plugins/của server. - Khởi động server (Yêu cầu Java 21+ và Minecraft 1.21+).
- Tùy chỉnh cấu hình trong
config.ymltheo ý muốn. - Dùng lệnh
/ti reloadđể áp dụng ngay!
Được phát triển với ❤️ dành cho cộng đồng Minecraft Việt Nam & Quốc Tế