破基岩榜改为深灰色;避免int型数据溢出污染记分板。脚本:不再缓存服务器白名单

This commit is contained in:
Harvey_Husky 2023-07-24 19:46:24 +08:00
parent 2a96a9ee3a
commit cfbd6da92a
14 changed files with 77 additions and 59 deletions

View File

@ -23,10 +23,9 @@
6. (可选)从数据包 `zip` 文件的 `scripts` 目录中解压 `.sc` 文件,将其放入 `world/scripts` 中(在客户端位于 `.minecraft/saves/<存档名>/scripts`
7. 执行 `reload` 指令(或重新打开存档;在一些第三方服务端中可能需要改为`/minecraft:reload`
# FZ生存数据包 3.1
[![数据包版本](https://img.shields.io/badge/预发布版-3.1.1.rc.1-blue.svg)](https://gitee.com/harvey-husky/FZ-sDatapack/releases) [![MC版本](https://img.shields.io/badge/Minecraft-1.20+-blue.svg)](https://minecraft.net/)
[![数据包版本](https://img.shields.io/badge/预发布版-3.1.2.rc.1-blue.svg)](https://gitee.com/harvey-husky/FZ-sDatapack/releases) [![MC版本](https://img.shields.io/badge/Minecraft-1.20+-blue.svg)](https://minecraft.net/)
> 其他版本见[发行页面](https://gitee.com/harvey-husky/FZ-sDatapack/releases)
@ -40,18 +39,18 @@
- 提供下列计分板:
| 默认名称 | 计分板ID |
| :------: | :----------------------------------------------: |
| 总榜 | fzsd.module.scoreboard.display.general |
| 活跃度 | fzsd.module.scoreboard.display.activation |
| 飞行距离 | fzsd.module.scoreboard.display.aviating_distance |
| 抖M榜 | fzsd.module.scoreboard.display.damage_taken |
| 死亡榜 | fzsd.module.scoreboard.display.death_count |
| 挖掘榜 | fzsd.module.scoreboard.display.dig_count |
| 钓鱼榜 | fzsd.module.scoreboard.display.fishing_count |
| 击杀榜 | fzsd.module.scoreboard.display.kill_count |
| 放置榜 | fzsd.module.scoreboard.display.placement_count |
| 交易榜 | fzsd.module.scoreboard.display.trade_count |
| 默认名称 | 计分板ID |
| :------: | :----------------------------------------------: |
| 总榜 | fzsd.module.scoreboard.display.general |
| 活跃度 | fzsd.module.scoreboard.display.activation |
| 飞行距离 | fzsd.module.scoreboard.display.aviating_distance |
| 抖M榜 | fzsd.module.scoreboard.display.damage_taken |
| 死亡榜 | fzsd.module.scoreboard.display.death_count |
| 挖掘榜 | fzsd.module.scoreboard.display.dig_count |
| 钓鱼榜 | fzsd.module.scoreboard.display.fishing_count |
| 击杀榜 | fzsd.module.scoreboard.display.kill_count |
| 放置榜 | fzsd.module.scoreboard.display.placement_count |
| 交易榜 | fzsd.module.scoreboard.display.trade_count |
- 兼容[破基岩榜Mod](https://gitee.com/harvey-husky/yh-bbl)
- 安装该Mod后使用连点器破基岩破基岩榜将自动显示在交互器页面
@ -60,6 +59,21 @@
| :------: | :----------------------------------------------: |
| 破基岩榜 |fzsd.module.scoreboard.display.bedrock_broken_count|
- 系统总榜计分板:`fzsd.module.scoreboard.assign.general`
- 可以在在此记分板修改总分数据,下次加分时会刷新显示分数
- 总计分项名称对照表:
| 默认名称 | 计分板ID |
| :------: | :----------------------------------------------: |
| 总活跃时间 | fzsd.module.scoreboard.total.activation |
| 总飞行距离 | fzsd.module.scoreboard.total.aviating_distance |
| 总受伤害量 | fzsd.module.scoreboard.total.damage_taken |
| 总死亡数 | fzsd.module.scoreboard.total.death_count |
| 总挖掘量 | fzsd.module.scoreboard.total.dig_count |
| 总钓鱼数 | fzsd.module.scoreboard.total.fishing_count |
| 总击杀数 | fzsd.module.scoreboard.total.kill_count |
| 总放置方块数 | fzsd.module.scoreboard.total.placement_count |
| 总交易量 | fzsd.module.scoreboard.total.trade_count |
### 地毯脚本
@ -94,4 +108,5 @@
- 见游戏内交互器按钮
## 开发者相关
- 参见[开发文档](/DEVDOC.md)
- 参见[开发文档](/DEVDOC.md)

View File

@ -1,6 +1,6 @@
{
"replace": false,
"values": [
"fzsd.extra.bbl:display/set_text/black"
"fzsd.extra.bbl:display/set_text/dark_gray"
]
}

View File

@ -1,2 +1,4 @@
scoreboard players add @s fzsd.module.scoreboard.display.activation 1
scoreboard players add fzsd.module.scoreboard.total.activation fzsd.module.scoreboard.assign.general 1
execute if score @s fzsd.module.scoreboard.display.activation matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.activation 2147483647
scoreboard players add fzsd.module.scoreboard.total.activation fzsd.module.scoreboard.assign.general 1
execute if score fzsd.module.scoreboard.total.activation fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.activation fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,2 +1,4 @@
scoreboard players operation @s fzsd.module.scoreboard.display.aviating_distance += fzsd.var.score fzsd.variable.integer
scoreboard players operation fzsd.module.scoreboard.total.aviating_distance fzsd.module.scoreboard.assign.general += fzsd.var.score fzsd.variable.integer
execute if score @s fzsd.module.scoreboard.display.aviating_distance matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.aviating_distance 2147483647
scoreboard players operation fzsd.module.scoreboard.total.aviating_distance fzsd.module.scoreboard.assign.general += fzsd.var.score fzsd.variable.integer
execute if score fzsd.module.scoreboard.total.aviating_distance fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.aviating_distance fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,2 +1,4 @@
scoreboard players operation @s fzsd.module.scoreboard.display.damage_taken += fzsd.var.score fzsd.variable.integer
scoreboard players operation fzsd.module.scoreboard.total.damage_taken fzsd.module.scoreboard.assign.general += fzsd.var.score fzsd.variable.integer
execute if score @s fzsd.module.scoreboard.display.damage_taken matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.damage_taken 2147483647
scoreboard players operation fzsd.module.scoreboard.total.damage_taken fzsd.module.scoreboard.assign.general += fzsd.var.score fzsd.variable.integer
execute if score fzsd.module.scoreboard.total.damage_taken fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.damage_taken fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,2 +1,4 @@
scoreboard players add @s fzsd.module.scoreboard.display.death_count 1
scoreboard players add fzsd.module.scoreboard.total.death_count fzsd.module.scoreboard.assign.general 1
execute if score @s fzsd.module.scoreboard.display.death_count matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.death_count 2147483647
scoreboard players add fzsd.module.scoreboard.total.death_count fzsd.module.scoreboard.assign.general 1
execute if score fzsd.module.scoreboard.total.death_count fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.death_count fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,2 +1,4 @@
scoreboard players operation @s fzsd.module.scoreboard.display.dig_count += fzsd.var.score fzsd.variable.integer
scoreboard players operation fzsd.module.scoreboard.total.dig_count fzsd.module.scoreboard.assign.general += fzsd.var.score fzsd.variable.integer
execute if score @s fzsd.module.scoreboard.display.dig_count matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.dig_count 2147483647
scoreboard players operation fzsd.module.scoreboard.total.dig_count fzsd.module.scoreboard.assign.general += fzsd.var.score fzsd.variable.integer
execute if score fzsd.module.scoreboard.total.dig_count fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.dig_count fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,2 +1,4 @@
scoreboard players add @s fzsd.module.scoreboard.display.fishing_count 1
scoreboard players add fzsd.module.scoreboard.total.fishing_count fzsd.module.scoreboard.assign.general 1
execute if score @s fzsd.module.scoreboard.display.fishing_count matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.fishing_count 2147483647
scoreboard players add fzsd.module.scoreboard.total.fishing_count fzsd.module.scoreboard.assign.general 1
execute if score fzsd.module.scoreboard.total.fishing_count fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.fishing_count fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,2 +1,4 @@
scoreboard players add @s fzsd.module.scoreboard.display.kill_count 1
scoreboard players add fzsd.module.scoreboard.total.kill_count fzsd.module.scoreboard.assign.general 1
execute if score @s fzsd.module.scoreboard.display.kill_count matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.kill_count 2147483647
scoreboard players add fzsd.module.scoreboard.total.kill_count fzsd.module.scoreboard.assign.general 1
execute if score fzsd.module.scoreboard.total.kill_count fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.kill_count fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,2 +1,4 @@
scoreboard players add @s fzsd.module.scoreboard.display.placement_count 1
scoreboard players add fzsd.module.scoreboard.total.placement_count fzsd.module.scoreboard.assign.general 1
execute if score @s fzsd.module.scoreboard.display.placement_count matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.placement_count 2147483647
scoreboard players add fzsd.module.scoreboard.total.placement_count fzsd.module.scoreboard.assign.general 1
execute if score fzsd.module.scoreboard.total.placement_count fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.placement_count fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,2 +1,4 @@
scoreboard players add @s fzsd.module.scoreboard.display.trade_count 1
scoreboard players add fzsd.module.scoreboard.total.trade_count fzsd.module.scoreboard.assign.general 1
execute if score @s fzsd.module.scoreboard.display.trade_count matches ..-1 run scoreboard players set @s fzsd.module.scoreboard.display.trade_count 2147483647
scoreboard players add fzsd.module.scoreboard.total.trade_count fzsd.module.scoreboard.assign.general 1
execute if score fzsd.module.scoreboard.total.trade_count fzsd.module.scoreboard.assign.general matches ..-1 run scoreboard players set fzsd.module.scoreboard.total.trade_count fzsd.module.scoreboard.assign.general 2147483647

View File

@ -1,6 +0,0 @@
{
"replace": false,
"values": [
"fzsd:module/join_message/default_message"
]
}

View File

@ -1,6 +1,6 @@
{
"replace": false,
"values": [
"#fzsd:module/join_message/default_message"
"fzsd:module/join_message/default_message"
]
}

View File

@ -43,7 +43,6 @@ global_current_scoreboard_list = [
'fzsd.module.scoreboard.display.aviating_distance',
'fzsd.module.scoreboard.display.placement_count'
];
global_server_whitelist_cache = null;
__config() -> {
'scope' -> 'global',
@ -184,10 +183,7 @@ __on_player_disconnects(player, reason) -> (
// 获取服务器白名单
get_server_whitelist() -> (
if(global_server_whitelist_cache == null,
global_server_whitelist_cache = keys(system_info('server_whitelist'));
);
return(global_server_whitelist_cache);
return(keys(system_info('server_whitelist')));
);
// 重载配置文件
@ -387,20 +383,14 @@ merge_score(from, to, fzsd_version) -> (
// 获取承载总榜数据的玩家名
// 因为新计分板允许玩家自定义显示的总榜名称故做复杂判断才能使脚本确定用来承载总榜数据的玩家名
get_total_score_name_new(scoreboard) -> (
INT_MIN = -2147483648;
// 获取系统总榜id
system_total_name = replace(scoreboard, 'display', 'total');
// 系统总榜id
sys_total_name = replace(scoreboard, 'display', 'total');
// 当前总分
current_score = scoreboard('fzsd.module.scoreboard.assign.general', sys_total_name);
// 将系统总榜分数加上最小int值使其成为最低分
scoreboard(
'fzsd.module.scoreboard.assign.general',
system_total_name,
scoreboard(
'fzsd.module.scoreboard.assign.general',
system_total_name
) + INT_MIN
);
// 将系统总榜分数设为INT_MIN使其成为最低分
scoreboard('fzsd.module.scoreboard.assign.general', sys_total_name, -2147483648);
// 将总分赋值到显示计分板上
display_total_score(scoreboard);
@ -419,14 +409,7 @@ get_total_score_name_new(scoreboard) -> (
);
// 恢复总榜分数
scoreboard(
'fzsd.module.scoreboard.assign.general',
system_total_name,
scoreboard(
'fzsd.module.scoreboard.assign.general',
system_total_name
) - INT_MIN
);
scoreboard('fzsd.module.scoreboard.assign.general', sys_total_name, current_score);
display_total_score(scoreboard);
// 返回榜内最低分的玩家名承载总榜数据的玩家名
@ -444,7 +427,15 @@ command_recalculate_total_score(scoreboard) -> (
total_score = 0;
for(scoreboard(scoreboard),
if(_ != total_score_name_new,
total_score += scoreboard(scoreboard, _);
current_player_score = scoreboard(scoreboard, _);
if(current_player_score < 0, // 避免溢出
current_player_score = 2147483647;
scoreboard(scoreboard, _, 2147483647);
);
total_score += current_player_score;
);
if(total_score < 0, // 避免溢出
total_score = 2147483647;
);
);
// 赋值总分到系统总分计分板
@ -521,7 +512,7 @@ restore_score(player_name, scoreboard) -> (
require_not_null(player_name);
if(scoreboard == null,
for(global_current_scoreboard_list, restore_score(player_name, _));
return();
return(true);
);
player = player(player_name);
player_is_offline = false;