timescale updated

This commit is contained in:
ZXMushroom63 2025-05-30 19:21:01 +08:00
parent 442a33d222
commit 623c5b057a

View File

@ -2,20 +2,28 @@
ModAPI.meta.title("Timescale Command"); ModAPI.meta.title("Timescale Command");
ModAPI.meta.description("/timescale 0.5 to halve the speed of time"); ModAPI.meta.description("/timescale 0.5 to halve the speed of time");
ModAPI.meta.credits("By ZXMushroom63"); ModAPI.meta.credits("By ZXMushroom63");
globalThis.timeScale = 1n;
globalThis.timeScaleDividing = false;
PluginAPI.addEventListener("sendchatmessage", (event) => { PluginAPI.addEventListener("sendchatmessage", (event) => {
if (event.message.toLowerCase().startsWith("/timescale")) { if (event.message.toLowerCase().startsWith("/timescale")) {
var speed = parseFloat(event.message.split(" ")[1]); var speed = parseFloat(event.message.split(" ")[1]);
if (!speed) { if (!speed) {
speed = 1; globalThis.timeScale = 1n;
globalThis.timeScaleDividing = false;
PluginAPI.mc.timer.timerSpeed = 1; PluginAPI.mc.timer.timerSpeed = 1;
} else { } else {
if (speed < 1) { if (speed < 1) {
speed = 1 / Math.round(1 / speed); globalThis.timeScaleDividing = true;
globalThis.timeScale = BigInt(Math.round(1 / speed));
} else { } else {
speed = Math.round(speed); globalThis.timeScaleDividing = false;
globalThis.timeScale = BigInt(Math.round(speed));
} }
PluginAPI.mc.timer.timerSpeed = speed; PluginAPI.mc.timer.timerSpeed = speed;
} }
PluginAPI.mc.systemTime = PluginAPI.hooks.methods[ModAPI.util.getMethodFromPackage("net.minecraft.client.Minecraft", "getSystemTime")]();
PluginAPI.mc.debugUpdateTime = PluginAPI.hooks.methods[ModAPI.util.getMethodFromPackage("net.minecraft.client.Minecraft", "getSystemTime")]() - 1000n;
PluginAPI.mc.timer.lastSyncSysClock = PluginAPI.hooks.methods[ModAPI.util.getMethodFromPackage("net.minecraft.client.Minecraft", "getSystemTime")]();
PluginAPI.displayToChat("[Timescale] Set world timescale to " + speed.toFixed(2) + "."); PluginAPI.displayToChat("[Timescale] Set world timescale to " + speed.toFixed(2) + ".");
} }
}); });
@ -52,4 +60,12 @@
} }
}; };
}); });
const original_getSystemTime = ModAPI.hooks.methods[ModAPI.util.getMethodFromPackage("net.minecraft.client.Minecraft", "getSystemTime")];
PluginAPI.hooks.methods[ModAPI.util.getMethodFromPackage("net.minecraft.client.Minecraft", "getSystemTime")] = function () {
if (globalThis.timeScaleDividing) {
return original_getSystemTime() / globalThis.timeScale;
} else {
return original_getSystemTime() * globalThis.timeScale;
}
};
})(); })();