public void ChangeDimension(Player player) { McpeChangeDimension change = McpeChangeDimension.CreateObject(); change.dimension = 1; change.unknown = false; player.SendPackage(change); }
public virtual void HandleMcpeChangeDimension(McpeChangeDimension message) { Thread.Sleep(3000); McpePlayerAction action = McpePlayerAction.CreateObject(); action.runtimeEntityId = Client.EntityId; action.actionId = (int)PlayerAction.DimensionChangeAck; Client.SendPacket(action); }
public override void HandleMcpeChangeDimension(McpeChangeDimension message) { base.HandleMcpeChangeDimension(message); if (BaseClient.WorldProvider is BedrockWorldProvider provider) { LoadingWorldState loadingWorldState = new LoadingWorldState(); AlexInstance.GameStateManager.SetActiveState(loadingWorldState, true); loadingWorldState.UpdateProgress(LoadingState.LoadingChunks, 0); foreach (var loadedChunk in provider.LoadedChunks) { provider.UnloadChunk(loadedChunk); } ThreadPool.QueueUserWorkItem(async o => { double radiusSquared = Math.Pow(Client.ChunkRadius, 2); var target = radiusSquared * 3; int percentage = 0; bool ready = false; do { percentage = (int)(provider.LoadedChunks.Count() / target) * 100; loadingWorldState.UpdateProgress(LoadingState.LoadingChunks, percentage); if (!ready) { if (_changeDimensionResetEvent.WaitOne(0)) { ready = true; } } else { await Task.Delay(50); } } while (!ready || percentage < 99); AlexInstance.GameStateManager.Back(); }); } }
public override void HandleMcpeChangeDimension(McpeChangeDimension message) { }