(Minecraft Realms) world.getTimeOfDay();上午 7 点、上午 10 点操作栏错误

问题描述 投票:0回答:1

我正在创建一个插件,用于显示 Minecraft Bedrock 中的时间、日期和年份。它在多人游戏和单人游戏世界中都能正常工作,但当放置在领域中时,操作栏文本在上午 7 点到 10 点之间为空。上午 10 点后,该文本重新出现,但在上午 7 点再次消失,如此循环下去。可能是什么问题?

上午 7 点:

screenshot showing no date or time

上午 10 点:

screenshot showing date and time

import { world, system } from '@minecraft/server';
function formatGameTime(ticks) {
    let hours = Math.floor((ticks / 1000 + 6) % 24);
    let minutes = Math.floor((ticks % 1000) / 16.6667);
    return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
}
function calculateDate(days) {
    const startYear = 500;
    const daysPerYear = 360;
    const daysPerMonth = 30;
    const yearsPassed = Math.floor(days / daysPerYear);
    const currentYear = startYear + yearsPassed;
    const remainingDaysAfterYears = days % daysPerYear;
    const monthsPassed = Math.floor(remainingDaysAfterYears / daysPerMonth);
    const currentMonth = monthsPassed + 1;
    const currentDay = remainingDaysAfterYears % daysPerMonth + 1;
    return { day: currentDay, month: currentMonth, year: currentYear };
}
function calculateDayOfWeek(days) {
    const daysOfWeek = ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"];
    return daysOfWeek[days % 7];
}
function updateGameTime() {
    const players = world.getAllPlayers();
    const gameTime = world.getTimeOfDay();
    const formattedTime = formatGameTime(gameTime);
    const currentDayInGame = world.getDay();
    const currentDate = calculateDate(currentDayInGame);
    const dayOfWeek = calculateDayOfWeek(currentDayInGame);
    const spacePadding = " ".repeat(20);
    const timeText = `${spacePadding}${formattedTime}${spacePadding}`;
    const dateText = `${dayOfWeek} ${currentDate.day.toString().padStart(2, '0')}/${currentDate.month.toString().padStart(2, '0')}/${currentDate.year}`;

    // Enviar mensagem de log para o chat do jogo
    players.forEach(player => {
        player.runCommand(`title @s actionbar ${timeText}\\n${dateText}`);
    });
}
system.runInterval(updateGameTime, 20);

我没有找到任何解决该问题的文档。

javascript minecraft
1个回答
0
投票

我通过合并文本并删除换行符解决了这个问题。

const combinedText = ${formattedTime} - ${dayOfWeek} ${currentDate.day.toString().padStart(2, '0')}/${currentDate.month.toString().padStart(2, '0')}/${currentDate.year};


    players.forEach(player => {
        player.runCommand(`title @s actionbar ${combinedText}`);
    });

© www.soinside.com 2019 - 2024. All rights reserved.