From a45ccf810943249fd25969a059fb00cca7607cea Mon Sep 17 00:00:00 2001 From: Reider745 <70357814+Reider745@users.noreply.github.com> Date: Tue, 30 Jul 2024 09:42:42 +0300 Subject: [PATCH] =?UTF-8?q?Fixed:=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B2=20=D0=BA=D1=8D=D0=BB=D0=B1=D0=B5=D0=BA=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Исправлено деление на 0 в команде tps --- .../com/reider745/commands/TpsCommand.java | 14 +++++++++-- .../innercore/api/runtime/Callback.java | 24 +++++++++++-------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/reider745/commands/TpsCommand.java b/src/main/java/com/reider745/commands/TpsCommand.java index 05e354ce..6926a79d 100644 --- a/src/main/java/com/reider745/commands/TpsCommand.java +++ b/src/main/java/com/reider745/commands/TpsCommand.java @@ -17,11 +17,21 @@ public class TpsCommand extends Command { long innerCoreSum = 0; for(long time : innerCoreTimes) - innerCoreSum += Math.min(20, 1000 / time); + if(time != 0) + innerCoreSum += Math.min(20, 1000 / time); + else{ + commandSender.sendMessage("Not enough information"); + return true; + } long nukkitSum = 0; for(long time : nukkitTimes) - nukkitSum += Math.min(20, 1000 / time); + if(time != 0) + nukkitSum += Math.min(20, 1000 / time); + else{ + commandSender.sendMessage("Not enough information"); + return true; + } if(innerCoreSum != 0 && nukkitSum != 0) { commandSender.sendMessage("Inner core tps: " + (innerCoreSum / 20.0f)); diff --git a/src/main/java/com/zhekasmirnov/innercore/api/runtime/Callback.java b/src/main/java/com/zhekasmirnov/innercore/api/runtime/Callback.java index ded635a7..9e95e934 100644 --- a/src/main/java/com/zhekasmirnov/innercore/api/runtime/Callback.java +++ b/src/main/java/com/zhekasmirnov/innercore/api/runtime/Callback.java @@ -66,9 +66,11 @@ public class Callback { Scriptable parent; if (funcs != null) { long profilingNanos = !profilingEnabled || isTick ? 0 : System.nanoTime(); - for (CallbackFunction callback : funcs) { - parent = callback.function.getParentScope(); - callback.function.call(ctx, parent, parent, params); + synchronized (funcs) { + for (CallbackFunction callback : funcs) { + parent = callback.function.getParentScope(); + callback.function.call(ctx, parent, parent, params); + } } if (profilingNanos != 0) { profilingNanos = System.nanoTime() - profilingNanos; @@ -96,13 +98,15 @@ public class Callback { if (profilingEnabled && !isTick) { result.add(() -> profilingNanos.set(System.nanoTime())); } - for (CallbackFunction func0 : funcs) { - result.add(new Runnable() { - public void run() { - Scriptable parent = func0.function.getParentScope(); - func0.function.call(Compiler.assureContextForCurrentThread(), parent, parent, params); - } - }); + synchronized (funcs) { + for (CallbackFunction func0 : funcs) { + result.add(new Runnable() { + public void run() { + Scriptable parent = func0.function.getParentScope(); + func0.function.call(Compiler.assureContextForCurrentThread(), parent, parent, params); + } + }); + } } if (profilingNanos.get() != 0) { result.add(() -> Logger.debug("Profiling/" + name, funcs.size() + " functions in "