51 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
| 	}
 | |
| }
 |