Condition
"Biểu thức điều kiện" là một chuỗi trả về true/false, dùng ở:
- Tham số action:
{condition=...} - Điều kiện reaction:
condition:trongactions/Events - Điều kiện sub-icon
- Lore inline:
'Dòng VIP {condition=perm *vip.user}' - Shiny động, hide_tooltip động, slot động…
Mặc định là Kether — chuỗi điều kiện được chạy bằng Kether luôn, trừ khi
thêm prefix js: cho JavaScript. Nếu condition bắt đầu bằng $
(như $ sender.isOp()) thì đó là viết tắt của JavaScript trong cấu hình cũ.
Kether condition#2>
Kether là ngôn ngữ script của TabooLib, cú pháp dạng hàm *tham-số. Các node do ShinnUI
đăng ký trong namespace shinnui:
| Node | Cú pháp | Ý nghĩa |
|---|---|---|
perm | perm *shinnui.use | Kiểm tra permission của người chơi. |
money / eco | money *1000 | Kiểm tra số dư (Vault) ≥ số tiền. |
points | points *10 | Kiểm tra điểm (PlayerPoints). |
item | item *material:DIAMOND,amount:5 | Kiểm tra người chơi có item khớp matcher. |
meta | meta get/set/del/has [key] [to value] | Đọc/ghi meta trong Kether. |
data | data get/set/del/has [key] [to value] | Đọc/ghi data trong Kether. |
vars / var | vars *"1000" | Parse chuỗi qua hệ biến của ShinnUI (trả về giá trị thay thế). |
mathcheck / mtc | mtc 10 > 5 | So sánh toán học (tham số dạng chuỗi cũng được). |
menu | menu open *"Shop" / menu page *1 / menu close | Điều khiển menu từ script. |
meco | meco *has | MeowEco balance check. |
Kết hợp với node chuẩn của Kether:
# AND / OR / NOT
all [ perm *vip.user money *1000 ]
any [ perm *admin perm *moderator ]
# So sánh
check %player_health% > 10
check &{meta:myMeta} is *true
# Nhân bản chuỗi, phép tính
math 1 + 2 * 3
# Điều kiện dạng khối if-then-else (thường dùng trong Events.Open)
Events:
Open: |-
if perm *shinnui.use then {
tell *"You have permission"
} else {
tell *"You dont have permission"
return
}
JavaScript condition#2>
Thêm prefix js: (hoặc $ trong cấu hình cũ). Toàn bộ đối tượng/hàm xem chi tiết
ở trang JavaScript:
js: player.hasPermission("vip.user")
js: player.hasPermission("vip.user") || utils.hasMoney(player, 1000.0)
js: varInt("%player_ping%") < 60
js: funInt("meta:input_taken") >= 10
js: utils.isBedrockPlayer(player)
Vì JS được pre-compile và cache, bạn không parse biến trực tiếp trong mã — dùng hàm
vars("...") / varInt("...") / varDouble("...") khi cần giá trị biến
tại thời điểm chạy. Ví dụ varInt("%player_ping%").