This commit is contained in:
Harveykang
2020-12-27 15:33:51 +08:00
parent f4693c8aae
commit f12afa1972
6 changed files with 243 additions and 181 deletions
+16 -4
View File
@@ -10,13 +10,25 @@ A Minecraft Datapack
- 支持Minecraft1.16.x - 支持Minecraft1.16.x
- 抬头并按一下shift来打开设置界面 - 抬头并按一下shift来打开设置界面
- 压缩包中的tagplayer.sc - 压缩包中的tagplayer.sc
- 把它放在world/scripts中然后“/reload”! - 把它放在“存档名/scripts中然后“/script load tagplayer”!
- 使用/tagplayer 命令生成假人可以避免假人被数据包提供的记分板捕捉到~ - 使用/tagplayer 命令生成假人可以避免假人被数据包提供的记分板捕捉到~
- tagplayer现在需要地毯mod1.4.18或以上版本来运行 - tagplayer需要地毯mod1.4.21或以上版本来运行
- 使用帮助可以在游戏中输入“/tagplayer”查看
- 压缩包中的restore_scores.sc工具可以恢复或从1.0版本升级记分板~ - 压缩包中的restore_scores.sc工具可以恢复或从1.0版本升级记分板~
- 把它放在world/scripts中然后“/reload - 把它放在“存档名/scripts中然后“/script load restore_scores
- *该工具会先删除旧的记分板* - *该工具会先删除旧的记分板*
- 输入“/restore_scores by_whitelist”恢复白名单内的玩家的记分板 - 输入“/restore_scores by_whitelist”恢复白名单内的玩家的记分板
- *用完记得删除它并“/script unload restore_scores”*
- restore_scores需要地毯mod1.4.13或以上版本来运行
##### - v2.0.0.8(计划)
- 添加单独的记分板升级工具
##### - v2.0.0.7
- tagplayer添加了新版carpet新指令,可以为假人切换热键栏
- 现在tagplayer需要carpet1.4.21或以上版本运行!
- 现在tagplayer可以给自己设置动作了
- 添加“/tagplayer shadow”指令将自己变为前缀为“挂机”的假人
##### - v2.0.0.6
- 修复restore_scores.sc工具不能恢复受伤害榜(抖M榜)的bug
##### - v2.0.0.5 ##### - v2.0.0.5
- 修复挖掘榜部分工具不起作用的bug - 修复挖掘榜部分工具不起作用的bug
- 添加restore_scores.sc工具便于恢复或从1.0版本升级记分板 - 添加restore_scores.sc工具便于恢复或从1.0版本升级记分板
@@ -26,4 +38,4 @@ A Minecraft Datapack
- tagplayer需要地毯mod1.4.18或以上版本来运行 - tagplayer需要地毯mod1.4.18或以上版本来运行
- 优化了tagplayer体验及修复若干bug - 优化了tagplayer体验及修复若干bug
##### - v2.0.0.2 ##### - v2.0.0.2
- 重写 - 重写
+1 -4
View File
@@ -2,7 +2,4 @@
carpet setDefault commandScript true carpet setDefault commandScript true
carpet setDefault commandScriptACE ops carpet setDefault commandScriptACE ops
carpet setDefault scriptsAutoload true carpet setDefault scriptsAutoload true
carpet setDefault commandPlayer ops carpet setDefault commandPlayer ops
execute store success score tagplayer parameter run script load tagplayer
#提示已安装
execute if score tagplayer parameter matches 1 run tellraw @a {"text": "[信息]Tagplayer已启用","color": "#5fff00"}
+7 -7
View File
@@ -16,15 +16,15 @@ function fz:login/logintips/install
function fz:carpet/carpet function fz:carpet/carpet
#版本信息 #版本信息
data merge storage fz.installed {installed:1b} data merge storage fz.installed {installed:1b}
data merge storage fz {version:Beta-2.0.0.5} data merge storage fz {version:Beta-2.0.0.7}
data merge storage fz {date:2020-12.7} data merge storage fz {date:2020-12.15}
data merge storage fz {time:"04:06"} data merge storage fz {time:"19:32"}
data merge storage fz {snapshot:-SNAPSHOT} data merge storage fz {snapshot:-SNAPSHOT}
##data remove storage fz snapshot ##data remove storage fz snapshot
tellraw @a {"text": "[信息]启动完毕","color": "#5fff00"} tellraw @a {"text": "[信息]启动完毕","color": "#5fff00"}
#提示已安装 #提示已安装
tellraw @a {"text": "[信息]安装完成!","color": "#5fff00"} tellraw @a {"text": "[信息]安装完成!","color": "#5fff00"}
#info: #5fff00 #info: #5fff00
#alert: #d7ff00 #alert: #d7ff00
#warn: #ffd900 #warn: #ffd900
#error: #ff6100 #error: #ff6100
+2 -2
View File
@@ -1,8 +1,8 @@
#如果未安装且未卸载则安装 #如果未安装且未卸载则安装
execute unless data storage fz.installed {installed:1b} unless data storage fz.installed {installed:0b} run function fz:install execute unless data storage fz.installed {installed:1b} unless data storage fz.installed {installed:0b} run function fz:install
#如果版本正确且已安装则开始运行 #如果版本正确且已安装则开始运行
execute if data storage fz {version:Alpha-2.0.0.5} if data storage fz.installed {installed:1b} run function fz:start execute if data storage fz {version:Beta-2.0.0.7} if data storage fz.installed {installed:1b} run function fz:start
#如果版本不符则更新 #如果版本不符则更新
execute unless data storage fz {version:Alpha-2.0.0.5} run function fz:update execute unless data storage fz {version:Beta-2.0.0.7} run function fz:update
#输出版本信息 #输出版本信息
tellraw @a [{"text": "[版本信息]FZ's Datapack-","color": "#ffd900"},{"nbt":"version","storage":"fz","color": "#ffd900"},{"nbt": "snapshot", "storage": "fz","color": "red"}] tellraw @a [{"text": "[版本信息]FZ's Datapack-","color": "#ffd900"},{"nbt":"version","storage":"fz","color": "#ffd900"},{"nbt": "snapshot", "storage": "fz","color": "red"}]
+9 -7
View File
@@ -1,7 +1,9 @@
global_version = '1.1.0';
__config() -> { __config() -> {
'scope' -> 'global' 'scope' -> 'global',
'stay_loaded' -> false
}; };
__command() -> 'root command'; __command() -> print('版本:' + global_version);
global_bl = l('stone', 'granite', 'polished_granite', 'diorite', 'polished_diorite', 'andesite', 'polished_andesite', 'grass_block', global_bl = l('stone', 'granite', 'polished_granite', 'diorite', 'polished_diorite', 'andesite', 'polished_andesite', 'grass_block',
'dirt', 'coarse_dirt', 'podzol', 'crimson_nylium', 'warped_nylium', 'cobblestone', 'oak_planks', 'spruce_planks', 'birch_planks', 'dirt', 'coarse_dirt', 'podzol', 'crimson_nylium', 'warped_nylium', 'cobblestone', 'oak_planks', 'spruce_planks', 'birch_planks',
'jungle_planks', 'acacia_planks', 'dark_oak_planks', 'crimson_planks', 'warped_planks', 'sand', 'red_sand', 'gravel', 'gold_ore', 'jungle_planks', 'acacia_planks', 'dark_oak_planks', 'crimson_planks', 'warped_planks', 'sand', 'red_sand', 'gravel', 'gold_ore',
@@ -133,10 +135,10 @@ __restore(pl, s_player) ->(
print(actime); print(actime);
scoreboard('activation', pl:i, actime); scoreboard('activation', pl:i, actime);
total_actime += actime; total_actime += actime;
//活跃时间 //抖M榜
hurt = statistic(pl:i, 'custom', 'play_one_minute')/72000; hurt = statistic(pl:i, 'custom', 'damage_taken')/100;
print(hurt); print(hurt);
scoreboard('activation', pl:i, hurt); scoreboard('damageTaken', pl:i, hurt);
total_hurt += hurt; total_hurt += hurt;
//死亡榜 //死亡榜
death = statistic(pl:i, 'custom', 'deaths'); death = statistic(pl:i, 'custom', 'deaths');
@@ -181,8 +183,8 @@ __restore(pl, s_player) ->(
scoreboard('totalList', '全部木大', total_death); scoreboard('totalList', '全部木大', total_death);
scoreboard('activation', '总在线时间(h)', total_actime); scoreboard('activation', '总在线时间(h)', total_actime);
scoreboard('totalList', '总在线时间(h)', total_actime); scoreboard('totalList', '总在线时间(h)', total_actime);
scoreboard('damageTaken', '群p抖m', total_hurt); scoreboard('damageTaken', '群p抖M', total_hurt);
scoreboard('totalList', '群p抖m)', total_hurt); scoreboard('totalList', '群p抖M)', total_hurt);
game_tick(50); game_tick(50);
run('function fz:scoreboards/install') run('function fz:scoreboards/install')
); );
+208 -157
View File
@@ -2,16 +2,20 @@
//************请将该文件放入"world\scripts"文件夹中************ //************请将该文件放入"world\scripts"文件夹中************
//************************************************************* //*************************************************************
scoreboard_add('carpetBot'); scoreboard_add('carpetBot');
run('team add carpetBot'); team_add('carpetBot');
run('team modify carpetBot prefix "假的 "'); team_add('shadowedPlayer');
global_version = '2.0.0'; team_property('carpetBot', 'prefix', '假的');
team_property('shadowedPlayer', 'prefix', '挂机');
global_version = '2.1.0';
global_carpet_version = split('\\+v',system_info('scarpet_version'));
global_filename = system_info('app_name');
__config() -> { __config() -> {
'stay_loaded' -> true, 'stay_loaded' -> true,
'allow_command_conflicts' -> true, 'allow_command_conflicts' -> true,
'commands' -> { 'commands' -> {
'' -> 'help', '' -> 'help',
'spawn <player>' -> 'summon', 'spawn <player>' -> 'summon',
'kill <bot>' -> 'kill', 'kill <killbot>' -> 'kill',
'killall' -> 'killall', 'killall' -> 'killall',
'attack <bot>' -> 'attack_once', 'attack <bot>' -> 'attack_once',
'attack <bot> continuous' -> 'attack_continuous', 'attack <bot> continuous' -> 'attack_continuous',
@@ -66,16 +70,39 @@ __config() -> {
'move <bot> right' -> 'move_right', 'move <bot> right' -> 'move_right',
'move <bot> stop' -> 'move_stop', 'move <bot> stop' -> 'move_stop',
'stop <bot>' -> 'stop', 'stop <bot>' -> 'stop',
'check <bot>' -> 'check', 'check <player>' -> 'check',
'checkall' -> 'checkall', 'checkall' -> 'checkall',
'tp <bot> <position>' -> 'tp', 'tp <bot> <position>' -> 'tp',
'tp <bot> <position> <rotation>' -> 'tp_with_rotation', 'tp <bot> <position> <rotation>' -> 'tp_with_rotation',
'tp <bot> <player>' -> 'tp_to_player', 'tp <bot> <player>' -> 'tp_to_player',
'tp <bot> <position> atBot' -> 'tp_at_bot', 'tp <bot> <position> atBot' -> 'tp_at_bot',
'tp <bot> <position> <rotation> atBot' -> 'tp_at_bot_with_rotation', 'tp <bot> <position> <rotation> atBot' -> 'tp_at_bot_with_rotation',
'hotbar <bot> <hotbar>' -> 'hotbar',
'shadow' -> 'shadow',
}, },
'arguments' -> { 'arguments' -> {
'hotbar' -> {
'type' -> 'int',
'min' -> 1,
'max' -> 9,
'suggest' -> [1,2,3,4,5,6,7,8,9]
},
'bot' -> { 'bot' -> {
'type' -> 'term',
'suggester' -> _(args) -> (
player_list = player('all');
bot_list = l();
c_for(i = 0, i < length(player_list), i += 1,
one_player_str = player_list:i;
if (scoreboard('carpetBot', one_player_str) == 1,
put(bot_list, length(bot_list), player_list:i)
);
);
put(bot_list, length(bot_list), player());
return(bot_list)
)
},
'killbot' -> {
'type' -> 'term', 'type' -> 'term',
'suggester' -> _(args) -> ( 'suggester' -> _(args) -> (
player_list = player('all'); player_list = player('all');
@@ -106,18 +133,51 @@ __config() -> {
} }
} }
}; };
__check_offline(player_name) ->( __on_player_disconnects(player, reason) ->(
f_player = player(player_name); delete_all_files(player);
if (!f_player, if(scoreboard('carpetBot', player) == 1,
print('§4假人'+player_name+'未在线'); scoreboard_remove('actimeCounter', player);
exit() scoreboard_remove('carpetBot', player);
team_leave(player);
leaveGame = scoreboard('leaveGame', player);
scoreboard('leaveGame', player, leaveGame + 1);
); );
if (scoreboard('carpetBot', f_player) != 1, );
print('§4'+f_player+'不是假人'); __on_server_shuts_down() ->(
player_list = player('all');
c_for(i = 0, i < length(player_list), i += 1,
delete_all_files(player_list:i);
if(scoreboard('carpetBot', player) == 1,
scoreboard_remove('actimeCounter', player_list:i);
team_leave(player);
)
);
scoreboard_remove('carpetBot');
team_remove('carpetBot');
team_remove('shadowedPlayer')
);
check_fakeplayer(player_name) ->(
f_player = player(player_name);
if (!f_player,
(
print('§4假人'+player_name+'未在线');
exit()
),
scoreboard('carpetBot', f_player) != 1 && f_player != player(),
(
print('§4'+f_player+'不是假人');
exit()
)
)
);
check_offline(player_name) ->(
f_player = player(player_name);
if (!f_player,
print('§4玩家或假人'+player_name+'未在线');
exit() exit()
) )
); );
__check_online(player_name) ->( check_online(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
if (f_player, if (f_player,
if (scoreboard('carpetBot', f_player) == 1, if (scoreboard('carpetBot', f_player) == 1,
@@ -128,7 +188,7 @@ __check_online(player_name) ->(
exit() exit()
) )
); );
__check_pos(x) ->( check_pos(x) ->(
x = number(x); x = number(x);
if(x == null, if(x == null,
print('§4请输入正确的坐标'); print('§4请输入正确的坐标');
@@ -136,33 +196,13 @@ __check_pos(x) ->(
); );
return(x) return(x)
); );
__check_dim(s_player,f_player) ->( check_dim(s_player,f_player) ->(
if (s_player~'dimension' != f_player~'dimension', if (s_player~'dimension' != f_player~'dimension',
print('§4不在同一维度!'); print('§4不在同一维度!');
exit() exit()
); );
); );
__player_list(i,player_list) ->( delete_all_files(f_player) ->(
one_player_list = split(' ',join('',slice(player_list,i,i+1)));
if(slice(one_player_list,0,1) == l('假的'),
one_player_str = join('',slice(one_player_list,1,2));
''
);
if(slice(one_player_list,0,1) != l('假的'),
one_player_str = join('',one_player_list);
''
);
return(one_player_str)
);
__on_player_disconnects(player, reason) ->(
if(scoreboard('carpetBot', player) == 1,
scoreboard_remove('actimeCounter', player);
__delete_all_files(player);
scoreboard_remove('carpetBot', player);
run('team leave '+ player)
);
);
__delete_all_files(f_player) ->(
delete_file(f_player + '-' + 'attack', 'text'); delete_file(f_player + '-' + 'attack', 'text');
delete_file(f_player + '-' + 'drop', 'text'); delete_file(f_player + '-' + 'drop', 'text');
delete_file(f_player + '-' + 'drop_stack', 'text'); delete_file(f_player + '-' + 'drop_stack', 'text');
@@ -170,42 +210,48 @@ __delete_all_files(f_player) ->(
delete_file(f_player + '-' + 'swap_hands', 'text'); delete_file(f_player + '-' + 'swap_hands', 'text');
delete_file(f_player + '-' + 'use', 'text'); delete_file(f_player + '-' + 'use', 'text');
delete_file(f_player + '-' + 'move_vertical', 'text'); delete_file(f_player + '-' + 'move_vertical', 'text');
delete_file(f_player + '-' + 'move_transverse', 'text'); delete_file(f_player + '-' + 'move_transverse', 'text')
); );
help() ->( help() ->(
print('--使用帮助:'); print('--使用帮助:');
print('/tagplayer spawn <玩家名>\n - 生成假人'); print('/' + global_filename + ' spawn <玩家名>\n - 生成假人');
print('/tagplayer kill <玩家名>\n - 删除假人'); print('/' + global_filename + ' kill <玩家名>\n - 删除假人');
print('/tagplayer killall\n - 删除全部假人'); print('/' + global_filename + ' killall\n - 删除全部假人');
print('/tagplayer tp <玩家名> <x> <y> <z> (<仰俯> <偏转>) (atBot)\n - 传送假人到<x>,<y>,<z>,可选<仰俯>和<偏转>角度,如以<atBot>结尾则相对坐标以假人为原点'); print('/' + global_filename + ' tp <玩家名> <x> <y> <z> (<仰俯> <偏转>) (atBot)\n - 传送假人到<x>,<y>,<z>,可选<仰俯>和<偏转>角度,如以<atBot>结尾则相对坐标以假人为原点');
print('/tagplayer look <玩家名> <仰俯> <偏转>\n - 转动假人视角,<x>、<y>可替换为“s”来代表你的视角方向'); print('/' + global_filename + ' look <玩家名> <仰俯> <偏转>\n - 转动假人视角,<x>、<y>可替换为“s”来代表你的视角方向');
print('/tagplayer look <玩家名> <up/down/east/west/south/north>\n - 让假人向<上/下/东/西/南/北>方向看'); print('/' + global_filename + ' look <玩家名> <up/down/east/west/south/north>\n - 让假人向<上/下/东/西/南/北>方向看');
print('/tagplayer look <玩家名> <back/left/right>\n - 让假人向<后/左/右>方向看'); print('/' + global_filename + ' look <玩家名> <back/left/right>\n - 让假人向<后/左/右>方向看');
print('/tagplayer move <玩家名> <backward/forward/left/right>\n - 让假人<向前/向后/向左/向右>移动'); print('/' + global_filename + ' move <玩家名> <backward/forward/left/right>\n - 让假人<向前/向后/向左/向右>移动');
print('/tagplayer <attack/drop/dropStack/jump/swapHands/use> <玩家名> continuous\n - 让假人持续<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>'); print('/' + global_filename + ' <attack/drop/dropStack/jump/swapHands/use> <玩家名> continuous\n - 让假人持续<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>');
print('/tagplayer <attack/drop/dropStack/jump/swapHands/use> <玩家名> interval <整数>\n - 让假人每<整数>游戏刻<攻击/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次'); print('/' + global_filename + ' <attack/drop/dropStack/jump/swapHands/use> <玩家名> interval <整数>\n - 让假人每<整数>游戏刻<攻击/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次');
print('/tagplayer <attack/drop/dropStack/jump/swapHands/use> <玩家名> once\n - 让假人<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次'); print('/' + global_filename + ' <attack/drop/dropStack/jump/swapHands/use> <玩家名> once\n - 让假人<攻击或挖掘/丢一个物品/丢一组物品/跳跃/换手/使用物品>一次');
print('/tagplayer <drop/dropStack> <玩家名> <mainhand/offhand>\n - 让假人<丢一个/丢一组><主手/副手>的物品'); print('/' + global_filename + ' <hotbar> <玩家名> <1-9>\n - 更改假人使用的热键栏');
print('/tagplayer <sneak/unsneak> <玩家名>\n - 让假人<潜行/站立>'); print('/' + global_filename + ' <drop/dropStack> <玩家名> <mainhand/offhand>\n - 让假人<丢一个/丢一组><主手/副手>的物品');
print('/tagplayer <sprint/unsprint> <玩家名>\n - 让假人准备<疾跑/行走>,在水中疾跑以游泳'); print('/' + global_filename + ' <sneak/unsneak> <玩家名>\n - 让假人<潜行/站立>');
print('/tagplayer <mount/dismount> <玩家名>\n - 让假人<乘坐/卸下>'); print('/' + global_filename + ' <sprint/unsprint> <玩家名>\n - 让假人准备<疾跑/行走>,在水中疾跑以游泳');
print('/tagplayer stop <玩家名>\n - 停止假人的一切动作'); print('/' + global_filename + ' <mount/dismount> <玩家名>\n - 让假人<乘坐/卸下>');
print('/tagplayer check <玩家名>\n - 检查假人状态'); print('/' + global_filename + ' stop <玩家名>\n - 停止假人的一切动作');
print('/tagplayer checkall\n - 检查所有假人状态'); print('/' + global_filename + ' check <玩家名>\n - 检查假人状态');
print('Version: '+global_version); print('/' + global_filename + ' checkall\n - 检查所有假人状态');
print('tagplayer版本: ' + global_version);
print('carpet版本: ' + global_carpet_version:0);
if(number(global_carpet_version:1) < 201216 || global_carpet_version == null,
print('§4tagplayer需要地毯1.4.21或以上来运行!否则会出现预期之外的问题')
);
return() return()
); );
reload() ->( reload() ->(
run('script unload tagplayer'); run('script load ' + global_filename);
run('script load tagplayer'); run('tellraw @a {"text":"+ global_filename +重载成功!"}');
run('tellraw @a {"text":"tagplayer重载成功!"}');
return() return()
); );
summon(player_name) ->( summon(player_name) ->(
player_name = slice(player_name,0,15); player_name = slice(player_name,0,15);
__check_online(player_name); check_online(player_name);
s_player = player(); s_player = player();
run(str('player %s spawn at %f %f %f facing %f %f', player_name, s_player~'x', s_player~'y', s_player~'z', query(s_player, 'yaw'), query(s_player, 'pitch') run(
str('player %s spawn at %f %f %f facing %f %f',
player_name, s_player~'x', s_player~'y', s_player~'z', query(s_player, 'yaw'), query(s_player, 'pitch')
) )
); );
f_player = player(player_name); f_player = player(player_name);
@@ -213,35 +259,30 @@ summon(player_name) ->(
print('§4生成失败'); print('§4生成失败');
return() return()
); );
__delete_all_files(f_player); delete_all_files(f_player);
run('team join carpetBot '+ f_player); team_add('carpetBot', f_player);
run('tellraw @a {"text":"↑假的"}'); run('tellraw @a {"text":"↑假的"}');
scoreboard('carpetBot', f_player, 1); scoreboard('carpetBot', f_player, 1);
return() return()
); );
kill(player_name) ->( kill(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
__check_offline(player_name); check_fakeplayer(player_name);
run(str('player %s kill', f_player)); if(f_player != player(),
game_tick(50); (
run('tellraw @a {"text":"假的"}'); run('tellraw @a {"text":"假的"}');
run(str('player %s kill', f_player));
),
print('§4你不是假人')
);
return() return()
); );
killall() ->( killall() ->(
i = 0; player_list = team_list('carpetBot');
player_list = player('all'); c_for(i = 0, i < length(player_list), i += 1,
loop(2147483647,,, run(str('player %s kill', player_list:i));
one_player_str = __player_list(i,player_list);
if(one_player_str == '',
break()
);
if(scoreboard('carpetBot', one_player_str) == 1,
do_fake_player = 1
);
run(str('player %s kill', one_player_str));
i += 1
); );
if(do_fake_player != 1, if(player_list == l(),
print('§4不存在假人'); print('§4不存在假人');
return() return()
); );
@@ -249,10 +290,23 @@ killall() ->(
run('tellraw @a {"text":"已清除全部假人"}'); run('tellraw @a {"text":"已清除全部假人"}');
return() return()
); );
//挂机
shadow() ->(
f_player = player();
run(str('player %s shadow', f_player));
scoreboard('carpetBot', f_player, 1);
team_add('shadowedPlayer', f_player);
return()
);
//热键栏
hotbar(player_name, hotbar) ->(
run(str('player %s hotbar %d', player_name, hotbar));
return()
);
//攻击 //攻击
attack_continuous(player_name) ->( attack_continuous(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
__check_offline(player_name); check_fakeplayer(player_name);
run(str('player %s attack continuous', player_name)); run(str('player %s attack continuous', player_name));
delete_file(f_player + '-' + 'attack', 'text'); delete_file(f_player + '-' + 'attack', 'text');
write_file(f_player + '-' + 'attack', 'text', 0); write_file(f_player + '-' + 'attack', 'text', 0);
@@ -260,7 +314,7 @@ attack_continuous(player_name) ->(
); );
attack_interval(player_name,tick) ->( attack_interval(player_name,tick) ->(
f_player = player(player_name); f_player = player(player_name);
__check_offline(player_name); check_fakeplayer(player_name);
run(str('player %s attack interval %d', player_name, tick)); run(str('player %s attack interval %d', player_name, tick));
delete_file(f_player + '-' + 'attack', 'text'); delete_file(f_player + '-' + 'attack', 'text');
write_file(f_player + '-' + 'attack', 'text', tick); write_file(f_player + '-' + 'attack', 'text', tick);
@@ -268,14 +322,14 @@ attack_interval(player_name,tick) ->(
); );
attack_once(player_name) ->( attack_once(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
__check_offline(player_name); check_fakeplayer(player_name);
run(str('player %s attack once', player_name)); run(str('player %s attack once', player_name));
delete_file(f_player + '-' + 'attack', 'text'); delete_file(f_player + '-' + 'attack', 'text');
return() return()
); );
attack_stop(player_name) ->( attack_stop(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
__check_offline(player_name); check_fakeplayer(player_name);
run(str('player %s attack', player_name)); run(str('player %s attack', player_name));
delete_file(f_player + '-' + 'attack', 'text'); delete_file(f_player + '-' + 'attack', 'text');
return() return()
@@ -283,7 +337,7 @@ attack_stop(player_name) ->(
//丢弃 //丢弃
drop_continuous(player_name) ->( drop_continuous(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
__check_offline(player_name); check_fakeplayer(player_name);
run(str('player %s drop continuous', player_name)); run(str('player %s drop continuous', player_name));
delete_file(f_player + '-' + 'drop', 'text'); delete_file(f_player + '-' + 'drop', 'text');
write_file(f_player + '-' + 'drop', 'text', 0); write_file(f_player + '-' + 'drop', 'text', 0);
@@ -291,46 +345,46 @@ drop_continuous(player_name) ->(
); );
drop_interval(player_name,tick) ->( drop_interval(player_name,tick) ->(
f_player = player(player_name); f_player = player(player_name);
__check_offline(player_name); check_fakeplayer(player_name);
run(str('player %s drop interval %d', player_name, tick)); run(str('player %s drop interval %d', player_name, tick));
delete_file(f_player + '-' + 'drop', 'text'); delete_file(f_player + '-' + 'drop', 'text');
write_file(f_player + '-' + 'drop', 'text', tick); write_file(f_player + '-' + 'drop', 'text', tick);
return() return()
); );
drop_once(player_name) ->( drop_once(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s drop once', player_name)); run(str('player %s drop once', player_name));
delete_file(f_player + '-' + 'drop', 'text'); delete_file(f_player + '-' + 'drop', 'text');
return() return()
); );
drop_stop(player_name) ->( drop_stop(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s drop', player_name)); run(str('player %s drop', player_name));
delete_file(f_player + '-' + 'drop', 'text'); delete_file(f_player + '-' + 'drop', 'text');
return() return()
); );
drop_all(player_name) ->( drop_all(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s drop all', player_name)); run(str('player %s drop all', player_name));
return() return()
); );
drop_offhand(player_name) ->( drop_offhand(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
return() return()
); );
drop_mainhand(player_name) ->( drop_mainhand(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s drop mainhand', player_name)); run(str('player %s drop mainhand', player_name));
return() return()
); );
//丢弃一组 //丢弃一组
drop_stack_continuous(player_name) ->( drop_stack_continuous(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s dropStack continuous', player_name)); run(str('player %s dropStack continuous', player_name));
delete_file(f_player + '-' + 'drop_stack', 'text'); delete_file(f_player + '-' + 'drop_stack', 'text');
@@ -338,7 +392,7 @@ drop_stack_continuous(player_name) ->(
return() return()
); );
drop_stack_interval(player_name,tick) ->( drop_stack_interval(player_name,tick) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s dropStack interval %d', player_name, tick)); run(str('player %s dropStack interval %d', player_name, tick));
delete_file(f_player + '-' + 'drop_stack', 'text'); delete_file(f_player + '-' + 'drop_stack', 'text');
@@ -346,41 +400,40 @@ drop_stack_interval(player_name,tick) ->(
return() return()
); );
drop_stack_once(player_name) ->( drop_stack_once(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s dropStack once', player_name));
run(str('player %s dropStack once', player_name)); run(str('player %s dropStack once', player_name));
delete_file(f_player + '-' + 'drop_stack', 'text'); delete_file(f_player + '-' + 'drop_stack', 'text');
return() return()
); );
drop_stack_stop(player_name) ->( drop_stack_stop(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s dropStack', player_name)); run(str('player %s dropStack', player_name));
delete_file(f_player + '-' + 'drop_stack', 'text'); delete_file(f_player + '-' + 'drop_stack', 'text');
return() return()
); );
drop_stack_all(player_name) ->( drop_stack_all(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s dropStack all', player_name)); run(str('player %s dropStack all', player_name));
return() return()
); );
drop_stack_offhand(player_name) ->( drop_stack_offhand(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s dropStack offhand', player_name)); run(str('player %s dropStack offhand', player_name));
return() return()
); );
drop_stack_mainhand(player_name) ->( drop_stack_mainhand(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s dropStack mainhand', player_name)); run(str('player %s dropStack mainhand', player_name));
return() return()
); );
//跳跃 //跳跃
jump_continuous(player_name) ->( jump_continuous(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s jump continuous', player_name)); run(str('player %s jump continuous', player_name));
delete_file(f_player + '-' + 'jump', 'text'); delete_file(f_player + '-' + 'jump', 'text');
@@ -388,7 +441,7 @@ jump_continuous(player_name) ->(
return() return()
); );
jump_interval(player_name,tick) ->( jump_interval(player_name,tick) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s jump interval %d', player_name, tick)); run(str('player %s jump interval %d', player_name, tick));
delete_file(f_player + '-' + 'jump', 'text'); delete_file(f_player + '-' + 'jump', 'text');
@@ -396,14 +449,14 @@ jump_interval(player_name,tick) ->(
return() return()
); );
jump_once(player_name) ->( jump_once(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s jump once', player_name)); run(str('player %s jump once', player_name));
delete_file(f_player + '-' + 'jump', 'text'); delete_file(f_player + '-' + 'jump', 'text');
return() return()
); );
jump_stop(player_name) ->( jump_stop(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s jump', player_name)); run(str('player %s jump', player_name));
delete_file(f_player + '-' + 'jump', 'text'); delete_file(f_player + '-' + 'jump', 'text');
@@ -411,7 +464,7 @@ jump_stop(player_name) ->(
); );
//换手 //换手
swap_hands_continuous(player_name) ->( swap_hands_continuous(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s swapHands continuous', player_name)); run(str('player %s swapHands continuous', player_name));
delete_file(f_player + '-' + 'swap_hands', 'text'); delete_file(f_player + '-' + 'swap_hands', 'text');
@@ -419,7 +472,7 @@ swap_hands_continuous(player_name) ->(
return() return()
); );
swap_hands_interval(player_name,tick) ->( swap_hands_interval(player_name,tick) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s swapHands interval %d', player_name, tick)); run(str('player %s swapHands interval %d', player_name, tick));
delete_file(f_player + '-' + 'swap_hands', 'text'); delete_file(f_player + '-' + 'swap_hands', 'text');
@@ -427,14 +480,14 @@ swap_hands_interval(player_name,tick) ->(
return() return()
); );
swap_hands_once(player_name) ->( swap_hands_once(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s swapHands once', player_name)); run(str('player %s swapHands once', player_name));
delete_file(f_player + '-' + 'swap_hands', 'text'); delete_file(f_player + '-' + 'swap_hands', 'text');
return() return()
); );
swap_hands_stop(player_name) ->( swap_hands_stop(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s swapHands', player_name)); run(str('player %s swapHands', player_name));
delete_file(f_player + '-' + 'swap_hands', 'text'); delete_file(f_player + '-' + 'swap_hands', 'text');
@@ -442,7 +495,7 @@ swap_hands_stop(player_name) ->(
); );
//右键 //右键
use_continuous(player_name) ->( use_continuous(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s use continuous', player_name)); run(str('player %s use continuous', player_name));
delete_file(f_player + '-' + 'use', 'text'); delete_file(f_player + '-' + 'use', 'text');
@@ -450,21 +503,21 @@ use_continuous(player_name) ->(
return() return()
); );
use_interval(player_name,tick) ->( use_interval(player_name,tick) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s use interval %d', player_name, tick)); run(str('player %s use interval %d', player_name, tick));
delete_file(f_player + '-' + 'use', 'text'); delete_file(f_player + '-' + 'use', 'text');
write_file(f_player + '-' + 'use', 'text', tick); write_file(f_player + '-' + 'use', 'text', tick);
return() return()
); );
use_once(player_name) ->( use_once(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s use once', player_name)); run(str('player %s use once', player_name));
delete_file(f_player + '-' + 'use', 'text'); delete_file(f_player + '-' + 'use', 'text');
return() return()
); );
use_stop(player_name) ->( use_stop(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s use', player_name)); run(str('player %s use', player_name));
@@ -472,27 +525,27 @@ use_stop(player_name) ->(
return() return()
); );
//骑乘 //骑乘
mount(player_name) ->( mount(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s mount', player_name)); run(str('player %s mount', player_name));
return() return()
); );
dismount(player_name) ->( dismount(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s dismount', player_name)); run(str('player %s dismount', player_name));
return() return()
); );
//冲刺 //冲刺
sprint(player_name) ->( sprint(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s sprint', player_name)); run(str('player %s sprint', player_name));
write_file(f_player + '-' + 'sprint', 'text', tick); write_file(f_player + '-' + 'sprint', 'text', tick);
return() return()
); );
unsprint(player_name) ->( unsprint(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s unsprint', player_name)); run(str('player %s unsprint', player_name));
@@ -500,14 +553,14 @@ unsprint(player_name) ->(
return() return()
); );
//下蹲 //下蹲
sneak(player_name) ->( sneak(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s sneak', player_name)); run(str('player %s sneak', player_name));
write_file(f_player + '-' + 'sneak', 'text', tick); write_file(f_player + '-' + 'sneak', 'text', tick);
return() return()
); );
unsneak(player_name) ->( unsneak(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s unsneak', player_name)); run(str('player %s unsneak', player_name));
@@ -515,19 +568,19 @@ unsneak(player_name) ->(
return() return()
); );
//转向 //转向
turn_back(player_name) ->( turn_back(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s turn back', player_name)); run(str('player %s turn back', player_name));
return() return()
); );
turn_left(player_name) ->( turn_left(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s turn left', player_name)); run(str('player %s turn left', player_name));
return() return()
); );
turn_right(player_name) ->( turn_right(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s turn right', player_name)); run(str('player %s turn right', player_name));
@@ -535,7 +588,7 @@ turn_right(player_name) ->(
); );
//看向 //看向
look(player_name,rotation) ->( look(player_name,rotation) ->(
print(rotation); print(rotation);
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
s_player = player(); s_player = player();
@@ -558,50 +611,50 @@ look(player_name,rotation) ->(
print(str('已将'+player_name+'的视角指向§a[%.1f,%.1f]',x,y)); print(str('已将'+player_name+'的视角指向§a[%.1f,%.1f]',x,y));
return() return()
); );
look_up(player_name) ->( look_up(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s look up', player_name)); run(str('player %s look up', player_name));
return() return()
); );
look_down(player_name) ->( look_down(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s look down', player_name)); run(str('player %s look down', player_name));
return() return()
); );
look_east(player_name) ->( look_east(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s look east', player_name)); run(str('player %s look east', player_name));
return() return()
); );
look_north(player_name) ->( look_north(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s look north', player_name)); run(str('player %s look north', player_name));
return() return()
); );
look_south(player_name) ->( look_south(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s look south', player_name)); run(str('player %s look south', player_name));
return() return()
); );
look_west(player_name) ->( look_west(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s look west', player_name)); run(str('player %s look west', player_name));
return() return()
); );
look_pos(player_name, position) ->( look_pos(player_name, position) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s look at %f %f %f', player_name, position:0, position:1, position:2)); run(str('player %s look at %f %f %f', player_name, position:0, position:1, position:2));
return() return()
); );
//移动 //移动
move_backward(player_name) ->( move_backward(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s move backward', player_name)); run(str('player %s move backward', player_name));
@@ -609,7 +662,7 @@ move_backward(player_name) ->(
write_file(f_player + '-' + 'move_vertical', 'text', 'backward'); write_file(f_player + '-' + 'move_vertical', 'text', 'backward');
return() return()
); );
move_forward(player_name) ->( move_forward(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s move forward', player_name)); run(str('player %s move forward', player_name));
@@ -617,7 +670,7 @@ move_forward(player_name) ->(
write_file(f_player + '-' + 'move_vertical', 'text', 'forward'); write_file(f_player + '-' + 'move_vertical', 'text', 'forward');
return() return()
); );
move_left(player_name) ->( move_left(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s move left', player_name)); run(str('player %s move left', player_name));
@@ -625,7 +678,7 @@ move_left(player_name) ->(
write_file(f_player + '-' + 'move_transverse', 'text', 'left'); write_file(f_player + '-' + 'move_transverse', 'text', 'left');
return() return()
); );
move_right(player_name) ->( move_right(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s move right', player_name)); run(str('player %s move right', player_name));
@@ -633,7 +686,7 @@ move_right(player_name) ->(
write_file(f_player + '-' + 'move_transverse', 'text', 'right'); write_file(f_player + '-' + 'move_transverse', 'text', 'right');
return() return()
); );
move_stop(player_name) ->( move_stop(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
run(str('player %s move', player_name)); run(str('player %s move', player_name));
@@ -642,15 +695,15 @@ move_stop(player_name) ->(
return() return()
); );
//停止 //停止
stop(player_name) ->( stop(player_name) ->(
f_player = player(player_name); f_player = player(player_name);
__check_offline(player_name); check_fakeplayer(player_name);
run(str('player %s stop', player_name)); run(str('player %s stop', player_name));
delete_all_files(f_player); delete_all_files(f_player);
return() return()
); );
//传送 //传送
tp(player_name, position) ->( tp(player_name, position) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
s_player = player(); s_player = player();
@@ -666,7 +719,7 @@ tp(player_name, position) ->(
print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z));
return() return()
); );
tp_with_rotation(player_name, position, rotation) ->( tp_with_rotation(player_name, position, rotation) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
s_player = player(); s_player = player();
@@ -696,7 +749,7 @@ tp_with_rotation(player_name, position, rotation) ->(
print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z));
return() return()
); );
tp_to_player(player_name, target_name) ->( tp_to_player(player_name, target_name) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
s_player = player(target_name); s_player = player(target_name);
@@ -708,7 +761,7 @@ tp_to_player(player_name, target_name) ->(
print(str('已将'+player_name+'传送至'+s_player)); print(str('已将'+player_name+'传送至'+s_player));
return() return()
); );
tp_at_bot(player_name, position) ->( tp_at_bot(player_name, position) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
s_player = player(); s_player = player();
@@ -724,7 +777,7 @@ tp_at_bot(player_name, position) ->(
print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z));
return() return()
); );
tp_at_bot_with_rotation(player_name, position, rotation) ->( tp_at_bot_with_rotation(player_name, position, rotation) ->(
f_player = player(player_name); f_player = player(player_name);
check_fakeplayer(player_name); check_fakeplayer(player_name);
s_player = player(); s_player = player();
@@ -754,9 +807,14 @@ tp_at_bot_with_rotation(player_name, position, rotation) ->(
print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z)); print(str('已将'+player_name+'传送至§a[%.2f,%.2f,%.2f]',x,y,z));
return() return()
); );
//状态检查
check(player_name) ->( check(player_name) ->(
check(player_name) ->( check_offline(player_name);
f_player = player(player_name); f_player = player(player_name);
if(scoreboard('carpetBot', f_player) == 1,
(
print('假人“'+f_player+'”:');
),
print('玩家“'+f_player+'”:'); print('玩家“'+f_player+'”:');
); );
//血量 //血量
@@ -1120,26 +1178,19 @@ check(player_name) ->(
print('- 正在骑僵尸马') print('- 正在骑僵尸马')
); );
noAct = false noAct = false
); );
if(noAct == true, if(noAct == true,
print('- 无地毯动作') print('- 无地毯动作')
); );
return() return()
);
); );
i = 0; checkall() ->(
player_list = player('all'); player_list = player('all');
loop(2147483647,,,
one_player_str = __player_list(i,player_list);
if(one_player_str == '',
break()
);
if(scoreboard('carpetBot', one_player_str) == 1,
check(one_player_str);
do_fake_player = 1
);
i += 1
);
c_for(i = 0, i < length(player_list), i += 1, c_for(i = 0, i < length(player_list), i += 1,
check(player_list:i); check(player_list:i);
);
return()
);
run(str('tellraw @a {"text": "[版本信息]tagplayer版本: ' + global_version + '", "color": "#ffd900"}'));
run(str('tellraw @a {"text": "[版本信息]carpet版本: ' + global_carpet_version:0 + '", "color": "#ffd900"}'));
if(number(global_carpet_version:1) < 201216 || global_carpet_version == null, if(number(global_carpet_version:1) < 201216 || global_carpet_version == null,