Skip to the content.

首页 | Blogs | 项目合集 | Bilibili↗
←返回 | 创建:2025-05-03 | 最后更新:2025-05-03

[i] 栈流Streack服务器฿,原版高版本,双端互通,欢迎来看。

Placeholder

CMI 所有地方都支持Placeholder全局变量,下面这些是CMI默认有的

占位符名称 描述
%cmi_user_charges_left%  
%cmi_user_charges_max%  
%cmi_user_charges_time%  
%cmi_user_charges_cooldown%  
%cmi_user_display_name%  
%cmi_p_[playerName]_display_name%  
%cmi_user_cleannickname%  
%cmi_user_nickname%  
%cmi_user_name%  
%cmi_user_uuid%  
%cmi_user_uuid_%  
%cmi_user_deathloc%  
%cmi_user_backloc%  
%cmi_user_cuffed%  
%cmi_p_[playerName]_cuffed%  
%cmi_user_muted%  
%cmi_p_[playerName]_muted%  
%cmi_user_inpvp%  
%cmi_user_god%  
%cmi_p_[playerName]_god%  
%cmi_user_sneaking%  
%cmi_user_mail_count%  
%cmi_user_warning_count%  
%cmi_user_warning_points%  
%cmi_user_afk%  
%cmi_user_afk_symbol%  
%cmi_user_afk_msg%  
%cmi_user_afk_for%  
%cmi_user_afk_in%  
%cmi_user_spy%  
%cmi_user_cmdspy%  
%cmi_user_signspy%  
%cmi_user_joinedcounter%  
%cmi_user_banned%  
%cmi_p_[playerName]_banned%  
%cmi_user_maxhomes%  
%cmi_user_homeamount%  
%cmi_user_homelist%  
%cmi_user_missingexp%  
%cmi_user_missingexpp%  
%cmi_user_exp%  
%cmi_user_expp%  
%cmi_user_totalexp%  
%cmi_user_level%  
%cmi_user_ping%  
%cmi_user_gamemode%  
%cmi_user_op%  
%cmi_user_pweather%  
%cmi_user_weather%  
%cmi_user_weatherduration%  
%cmi_user_canfly%  
%cmi_user_flying%  
%cmi_user_vanished_symbol%  
%cmi_user_balance_formatted%  
%cmi_user_balance%  
%cmi_user_prefix%  
%cmi_user_suffix%  
%cmi_user_group%  
%cmi_user_nameplate_prefix%  
%cmi_user_nameplate_suffix%  
%cmi_user_tfly%  
%cmi_user_tfly_formatted%  
%cmi_user_flightcharge%  
%cmi_user_tgod%  
%cmi_user_tgod_formatted%  
%cmi_user_votecount%  
%cmi_user_dailyvotecount%  
%cmi_user_chatcolor%  
%cmi_user_rank_displayname%  
%cmi_user_rank_name%  
%cmi_user_nextranks%  
%cmi_user_nextrankpercent%  
%cmi_user_nextvalidranks%  
%cmi_user_canrankup%  
%cmi_user_country%  
%cmi_user_country_code%  
%cmi_user_city%  
%cmi_user_name_colorcode%  
%cmi_user_glow_code%  
%cmi_user_glow_name%  
%cmi_user_jailed%  
%cmi_p_[playerName]_jailed%  
%cmi_user_jailname%  
%cmi_p_[playerName]_jailname%  
%cmi_user_jailcell%  
%cmi_p_[playerName]_jailcell%  
%cmi_user_jailtime%  
%cmi_p_[playerName]_jailtime%  
%cmi_user_jailreason%  
%cmi_p_[playerName]_jailreason%  
%cmi_user_jailedby%  
%cmi_p_[playerName]_jailedby%  
%cmi_user_riding%  
%cmi_user_beingriddenby%  
%cmi_user_bungeeserver%  
%cmi_user_rt_cooldown%  
%cmi_user_rt_cooldown_[worldName]%  
%cmi_user_playtime_formatted%  
%cmi_user_playtime_days%  
%cmi_user_playtime_dayst%  
%cmi_user_playtime_hours%  
%cmi_user_playtime_hoursf%  
%cmi_user_playtime_hourst%  
%cmi_user_playtime_minutes%  
%cmi_user_playtime_minutest%  
%cmi_user_playtime_seconds%  
%cmi_user_playtime_secondst%  
%cmi_user_prewards_count%  
%cmi_user_world_formatted%  
%cmi_user_online%  
%cmi_p_[playerName]_online%  
%cmi_user_itemcount_[itemIdName(:data)]%  
%cmi_user_maxperm_[playerName]_[corePerm]_[defaultValue]%  
%cmi_user_toggle_[msg\|pay\|tp\|compass\|sospy\|sispy\|cospy\|schest\|autoflightrecharge\|totem\|shiftedit\|tagsound\|chatbubble]%  
%cmi_user_togglename_[msg\|pay\|tp\|compass\|sospy\|sispy\|cospy\|schest\|autoflightrecharge\|totem\|shiftedit\|tagsound\|chatbubble]%  
%cmi_user_holo_page_[hologramName]%  
%cmi_equation_[equation]% 计算一个算式
%cmi_equationint_[equation]%  
%cmi_color_[text]%  
%cmi_iteminhand_displayname%  
%cmi_iteminhand_realname%  
%cmi_iteminhand_type%  
%cmi_iteminhand_itemdata%  
%cmi_iteminhand_amount%  
%cmi_iteminhand_durability%  
%cmi_iteminhand_maxdurability%  
%cmi_iteminhand_custommodeldata%  
%cmi_iteminhand_worth%  
%cmi_iteminhand_worth_one%  
%cmi_iteminhand_worthc%  
%cmi_iteminhand_worthc_one%  
%cmi_schedule_nextin_[schedName]%  
%cmi_schedule_endat_[schedName]%  
%cmi_baltop_name_[1-10]%  
%cmi_baltop_money_[1-10]%  
%cmi_baltop_shortmoney_[1-10]%  
%cmi_playtimetop_name_[1-10]%  
%cmi_playtimetop_time_[1-10]%  
%cmi_votetop_[1-10]%  
%cmi_votetopcount_[1-10]%  
%cmi_worth_buy_[itemIdName(:data)]%  
%cmi_worth_sell_[itemIdName(:data)]%  
%cmi_worthc_buy_[itemIdName(:data)]%  
%cmi_worthc_sell_[itemIdName(:data)]%  
%cmi_bungee_total_[serverName]%  
%cmi_bungee_current_[serverName]%  
%cmi_bungee_motd_[serverName]%  
%cmi_bungee_onlinestatus_[serverName]%  
%cmi_tps_1% 这个不知道为什么,值为20的时候不会交替显示一个*
%cmi_tps_60%  
%cmi_tps_300%  
%cmi_tps_[range]_colored%  
%cmi_tps_[range]%  
%cmi_random_player_name%  
%cmi_lastrandom_player_name%  
%cmi_random_[from]_[to]%  
%cmi_lastrandom_[playerName]%  
%cmi_user_rank_percent[rankName]%  
%cmi_user_meta_[key]% 这两个用法见下文
%cmi_user_metaint_[key]%  
%cmi_chatmute_time%  
%cmi_chatmute_reason%  
%cmi_user_baltop%  
%cmi_user_stats_[mainStat(:optionalSubStat)]%  
%cmi_user_kitcd_[kitName]%  
%cmi_user_kit_available%  
%cmi_user_kit_available_[kitName]%  
%cmi_user_kit_hasaccess_[kitName]%  
%cmi_jail_time_[playerName]_[cellId]%  
%cmi_jail_username_[playerName]_[cellId]%  
%cmi_jail_reason_[playerName]_[cellId]%  
%cmi_weather_[worldName]%  
%cmi_weatherduration_[worldName]%  
%cmi_afk_count%  
%cmi_maintenance_state%  
%cmi_maintenance_message%  
%cmi_chat_range%  
%cmi_server_uptime% 获取服务器运行时长,需要注意是有格式的,末尾要用§r重置一下
%cmi_server_uptime_seconds%  
%cmi_server_worlds%  
%cmi_server_vanished%  
%cmi_server_users%  
%player_world%  
%cmi_player_world%  
%player_x%  
%cmi_player_x%  
%player_y%  
%cmi_player_y%  
%player_z%  
%cmi_player_z%  
%player_biome%  
%cmi_player_biome%  
%vault_eco_balance_formatted%  
%server_online%  
%cmi_server_online%  
%server_max_players%  
%cmi_server_max_players%  
%cmi_server_online_[worldName]%  
%server_unique_joins%  
%cmi_server_unique_joins%  
%onlineplayers_names%  
%cmi_onlineplayers_names%  
%onlineplayers_displaynames%  
%cmi_onlineplayers_displaynames%  
%cmi_server_time_[timeFormat]_[timeZone]%  
%cmi_server_time_[timeFormat]%  
%cmi_world_time12_[worldName]%  
%cmi_world_time24_[worldName]%  

Usermate

CMI的Usermeta可以理解为一个以玩家为核心的记分板:

项目 /scoreboard /cmi usermeta /data stroge
对象 先创建记分板再操作分数 直接将分数赋值到玩家上 操作对象的NBT数据
目标 任一实体或虚拟对象 玩家 任一实体或虚拟对象
非法玩家名支持    
UUID支持
目标选择器  
Placeholder 需要额外插件 需要额外插件
数据包友好  

Usermeta可以用Placeholder%cmi_user_meta_[key]%%cmi_user_metaint_[key]%读取,配合下方脚本操作符可以实现一些好玩的功能。

脚本操作符

CMI 的几乎所有预置命令部分都支持下方的操作符。
可以说这几乎构成了一个脚本语言……
下列场景均可以使用:

占位符

需要命令上文含有玩家

内容 描述
[playerName] 插入玩家名
[playerDisplayName] 插入玩家显示名
[lvl] 插入玩家等级
[exp] 插入玩家经验
[hp] 插入玩家血量
[maxHp] 插入玩家最大血量
[hunger] 插入玩家饥饿值
[gameMode] 插入玩家游戏模式
[randomPlayer] 等效于选择器@r,即随机玩家

子命令

内容 描述
msg! <玩家> 给玩家发私聊,等效于/tellraw <玩家> "消息"
broadcast!  
actionbar! <玩家> 给玩家展示物品栏标题
title! <玩家> 给玩家展示标题
subtitle! <玩家> 给玩家展示副标题
kickall! 以后面接的理由踢出全部玩家,OP除外(准确来说是拥有对应bypass权限节点)
delay! <秒> [名字] 暂停执行
canceldelay:<名字>! 取消暂停执行
cooldown:<秒>! 其后指令在冷却结束后才能触发
ucooldown:<秒>! 相同事件的冷却
gcooldown:<秒>! 冷却时间内全服玩家都不能二次触发

逻辑子命令

内容 描述
statement:<检测名称>! <条件1>! <条件2>! <...>!  
if:<检测名称>! <上述条件全符合后执行的指令>  
if:<检测名称>@! <上述条件不符合后执行的指令>  

条件子命令

以下条件子命令的!前面可以接符号:

内容 描述
check:<第一个值><比较符><第二个值>! 比较两个值(可以是Placeholder),只有符合条件才能执行后续指令,比较符可以是==/</<=/>/>=/!=
perm:[permissionNode]! 拥有权限节点才执行
perm:[permissionNode]@! 权限节点被拒绝时执行后方命令
moneycost:<金钱>! 有足够的钱的玩家可以触发后续指令
hasmoney:<金钱>! 检测玩家是否有足够的钱,但不扣除
expcost:<经验>! 有足够的经验的玩家可以触发后续指令
hasexp:<经验>! 检测玩家是否有足够的经验,但不扣除
item:<物品ID>! 有该物品的玩家可以触发后续的指令;可以给其增加数量参数,写成item:<物品ID>-<数量>!
hasitem:<物品ID>! 检测玩家是否有足够的物品,但不扣除;可以给其增加数量参数,写成item:<物品ID>-<数量>!
ifonline:<玩家名>! 若指定玩家在线则触发后续指令
ifoffline:<玩家名>! 若指定玩家不在线则触发后续指令
ifempty:<hand/offhand/quickbar/armor/inv/subinv>! 若玩家背包里特定格子是空的则触发后续指令;可以给其增加数量参数,例如ifempty:<位置>-<数量>
其中quickbar是快捷九格栏,armor是盔甲四格栏,inv是整个背包,subinv是除掉快捷栏9格的剩下27格栏
votes:<票数>! 玩家获得一定投票才能执行后续指令
click:<点击方式>!(仅适用于IC指令绑定) 玩家必须以某种方式点击方块才能生效,可用left/leftshift/right/rightshift