minecraft-src/net/minecraft/client/multiplayer/LevelLoadStatusManager.java
2025-07-04 01:41:11 +03:00

51 lines
1.5 KiB
Java

package net.minecraft.client.multiplayer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.LevelRenderer;
import net.minecraft.core.BlockPos;
@Environment(EnvType.CLIENT)
public class LevelLoadStatusManager {
private final LocalPlayer player;
private final ClientLevel level;
private final LevelRenderer levelRenderer;
private LevelLoadStatusManager.Status status = LevelLoadStatusManager.Status.WAITING_FOR_SERVER;
public LevelLoadStatusManager(LocalPlayer player, ClientLevel level, LevelRenderer levelRenderer) {
this.player = player;
this.level = level;
this.levelRenderer = levelRenderer;
}
public void tick() {
switch (this.status) {
case WAITING_FOR_PLAYER_CHUNK:
BlockPos blockPos = this.player.blockPosition();
boolean bl = this.level.isOutsideBuildHeight(blockPos.getY());
if (bl || this.levelRenderer.isSectionCompiled(blockPos) || this.player.isSpectator() || !this.player.isAlive()) {
this.status = LevelLoadStatusManager.Status.LEVEL_READY;
}
case WAITING_FOR_SERVER:
case LEVEL_READY:
}
}
public boolean levelReady() {
return this.status == LevelLoadStatusManager.Status.LEVEL_READY;
}
public void loadingPacketsReceived() {
if (this.status == LevelLoadStatusManager.Status.WAITING_FOR_SERVER) {
this.status = LevelLoadStatusManager.Status.WAITING_FOR_PLAYER_CHUNK;
}
}
@Environment(EnvType.CLIENT)
static enum Status {
WAITING_FOR_SERVER,
WAITING_FOR_PLAYER_CHUNK,
LEVEL_READY;
}
}