moar client-server tick speed separation

This commit is contained in:
gnembon committed 2023-05-16 10:35:40 +02:00
1 parent e0a3060339
commit df786605c2
23 files changed
+166 -148

No files matched your search

@@ -1,7 +1,8 @@
package carpet.patches;
import carpet.CarpetServer;
import carpet.helpers.TickSpeed;
import carpet.fakes.MinecraftServerInterface;
import carpet.helpers.TickRateManager;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.Mth;
import net.minecraft.world.level.border.BorderChangeListener;
@@ -89,13 +90,19 @@ public class TickSyncedBorderExtent implements WorldBorder.BorderExtent
double ms;
if (server == null)
{
ms = TickSpeed.mspt();
// can this even happen?
ms = 50.0;
}
else
{
ms = Arrays.stream(server.tickTimes).average().orElseThrow(IllegalStateException::new) * 1.0E-6D;
TickRateManager trm = ((MinecraftServerInterface)server).getTickRateManager();
if (trm.time_warp_start_time == 0) // not in time warp
{
ms = Math.max(ms, trm.mspt);
}
}
double tps = 1_000.0D / Math.max((TickSpeed.gTRM().map(trm -> trm.time_warp_start_time).orElse(0L) != 0) ? 0.0 : TickSpeed.mspt(), ms);
double tps = 1_000.0D / ms;
return (long) ((this.tickDuration - this.ticks) / tps * 1_000);
}