fix: conflict with log and tui, position parse nothing

fix:
- fix ui conflict with log and tui
- fix player position parse failed
This commit is contained in:
2025-10-14 23:26:53 +08:00
parent da2c6c1ebb
commit b9ce947b9b
2 changed files with 25 additions and 20 deletions

View File

@@ -79,7 +79,7 @@ const defaultConfig: AccessConfig = {
color: "red", color: "red",
}, },
msg: { msg: {
text: "Unfamiliar player %playerName% appeared at\n Position %PlayerPosX%, %PlayerPosY%, %PlayerPosZ%", text: "Unfamiliar player %playerName% appeared at Position %playerPosX%, %playerPosY%, %playerPosZ%",
color: "red", color: "red",
}, },
prefix: "Taohuayuan", prefix: "Taohuayuan",

View File

@@ -8,13 +8,14 @@ const DEBUG = false;
const args = [...$vararg]; const args = [...$vararg];
// Init Log // Init Log
const log = new CCLog("accesscontrol.log", true, DAY); const logger = new CCLog("accesscontrol.log", true, DAY);
// Load Config // Load Config
const configFilepath = `${shell.dir()}/access.config.json`; const configFilepath = `${shell.dir()}/access.config.json`;
const config = loadConfig(configFilepath); const config = loadConfig(configFilepath);
log.info("Load config successfully!"); logger.info("Load config successfully!");
if (DEBUG) log.debug(textutils.serialise(config, { allow_repetitions: true })); if (DEBUG)
logger.debug(textutils.serialise(config, { allow_repetitions: true }));
const groupNames = config.usersGroups.map((value) => value.groupName); const groupNames = config.usersGroups.map((value) => value.groupName);
let noticeTargetPlayers: string[]; let noticeTargetPlayers: string[];
const playerDetector = peripheralManager.findByNameRequired("playerDetector"); const playerDetector = peripheralManager.findByNameRequired("playerDetector");
@@ -103,7 +104,7 @@ function sendNotice(player: string, playerInfo?: PlayerInfo) {
function sendWarn(player: string) { function sendWarn(player: string) {
const warnMsg = `Not Allowed Player ${player} Break in Home `; const warnMsg = `Not Allowed Player ${player} Break in Home `;
log.warn(warnMsg); logger.warn(warnMsg);
sendToast(config.warnToastConfig, player, { name: player }); sendToast(config.warnToastConfig, player, { name: player });
chatBox.sendFormattedMessageToPlayer( chatBox.sendFormattedMessageToPlayer(
@@ -133,7 +134,7 @@ function watchLoop() {
if (config.isWarn) sendWarn(player.name); if (config.isWarn) sendWarn(player.name);
// Record // Record
log.warn( logger.warn(
`${player.name} appear at ${playerInfo?.x}, ${playerInfo?.y}, ${playerInfo?.z}`, `${player.name} appear at ${playerInfo?.x}, ${playerInfo?.y}, ${playerInfo?.z}`,
); );
} else { } else {
@@ -141,6 +142,7 @@ function watchLoop() {
watchPlayersInfo = watchPlayersInfo.filter( watchPlayersInfo = watchPlayersInfo.filter(
(value) => value.name != player.name, (value) => value.name != player.name,
); );
logger.info(`${player.name} has left the range`);
} }
} }
@@ -153,14 +155,14 @@ function mainLoop() {
const players = playerDetector.getPlayersInRange(config.detectRange); const players = playerDetector.getPlayersInRange(config.detectRange);
if (DEBUG) { if (DEBUG) {
const playersList = "[ " + players.join(",") + " ]"; const playersList = "[ " + players.join(",") + " ]";
log.debug(`Detected ${players.length} players: ${playersList}`); logger.debug(`Detected ${players.length} players: ${playersList}`);
} }
for (const player of players) { for (const player of players) {
if (inRangePlayers.includes(player)) continue; if (inRangePlayers.includes(player)) continue;
if (config.adminGroupConfig.groupUsers.includes(player)) { if (config.adminGroupConfig.groupUsers.includes(player)) {
log.info(`Admin ${player} appear`); logger.info(`Admin ${player} appear`);
continue; continue;
} }
@@ -177,7 +179,7 @@ function mainLoop() {
if (!userGroupConfig.groupUsers.includes(player)) continue; if (!userGroupConfig.groupUsers.includes(player)) continue;
groupConfig = userGroupConfig; groupConfig = userGroupConfig;
log.info( logger.info(
`${groupConfig.groupName} ${player} appear at ${playerInfo?.x}, ${playerInfo?.y}, ${playerInfo?.z}`, `${groupConfig.groupName} ${player} appear at ${playerInfo?.x}, ${playerInfo?.y}, ${playerInfo?.z}`,
); );
@@ -185,7 +187,7 @@ function mainLoop() {
} }
if (groupConfig.isAllowed) continue; if (groupConfig.isAllowed) continue;
log.warn( logger.warn(
`${groupConfig.groupName} ${player} appear at ${playerInfo?.x}, ${playerInfo?.y}, ${playerInfo?.z}`, `${groupConfig.groupName} ${player} appear at ${playerInfo?.x}, ${playerInfo?.y}, ${playerInfo?.z}`,
); );
if (config.isWarn) sendWarn(player); if (config.isWarn) sendWarn(player);
@@ -201,26 +203,29 @@ function keyboardLoop() {
while (true) { while (true) {
const [eventType, key] = os.pullEvent("key"); const [eventType, key] = os.pullEvent("key");
if (eventType === "key" && key === keys.c) { if (eventType === "key" && key === keys.c) {
log.info("Launching Access Control TUI..."); logger.info("Launching Access Control TUI...");
try { try {
logger.setInTerminal(false);
launchAccessControlTUI(); launchAccessControlTUI();
log.info("TUI closed, resuming normal operation"); logger.info("TUI closed, resuming normal operation");
} catch (error) { } catch (error) {
log.error(`TUI error: ${textutils.serialise(error as object)}`); logger.error(`TUI error: ${textutils.serialise(error as object)}`);
} finally {
logger.setInTerminal(true);
} }
} }
} }
} }
function main(args: string[]) { function main(args: string[]) {
log.info("Starting access control system, get args: " + args.join(", ")); logger.info("Starting access control system, get args: " + args.join(", "));
if (args.length == 1) { if (args.length == 1) {
if (args[0] == "start") { if (args[0] == "start") {
// 创建CLI处理器 // 创建CLI处理器
const cli = createAccessControlCLI( const cli = createAccessControlCLI(
config, config,
configFilepath, configFilepath,
log, logger,
chatBox, chatBox,
groupNames, groupNames,
); );
@@ -244,12 +249,12 @@ function main(args: string[]) {
); );
return; return;
} else if (args[0] == "config") { } else if (args[0] == "config") {
log.info("Launching Access Control TUI..."); logger.info("Launching Access Control TUI...");
log.setInTerminal(false); logger.setInTerminal(false);
try { try {
launchAccessControlTUI(); launchAccessControlTUI();
} catch (error) { } catch (error) {
log.error(`TUI error: ${textutils.serialise(error as object)}`); logger.error(`TUI error: ${textutils.serialise(error as object)}`);
} }
return; return;
} }
@@ -263,7 +268,7 @@ function main(args: string[]) {
try { try {
main(args); main(args);
} catch (error: unknown) { } catch (error: unknown) {
log.error(textutils.serialise(error as object)); logger.error(textutils.serialise(error as object));
} finally { } finally {
log.close(); logger.close();
} }