public void SendSetTime() { // started == true ? 0x80 : 0x00); McpeSetTime message = McpeSetTime.CreateObject(); message.time = (int)Level.CurrentWorldTime; message.started = (byte)(Level.IsWorldTimeStarted ? 0x80 : 0x00); SendPackage(message); }
public string TimeSet(Player commander, DayNight time) { Level level = commander.Level; level.WorldTime = (int)time; McpeSetTime message = McpeSetTime.CreateObject(); message.time = (int)level.WorldTime; level.RelayBroadcast(message); return($"{commander.Username} sets time to {time}"); }
public string Daylock(Player player, bool value) { Level level = player.Level; level.SetGameRule(GameRulesEnum.DoDaylightcycle, !value); level.BroadcastGameRules(); level.WorldTime = 5000; McpeSetTime message = McpeSetTime.CreateObject(); message.time = (int)level.WorldTime; level.RelayBroadcast(message); return($"{player.Username} set day to 5000 and locked time."); }
public SimpleResponse TimeSet(Player commander, DayNight time) { Level level = commander.Level; level.CurrentWorldTime = (int)time; McpeSetTime message = McpeSetTime.CreateObject(); message.time = (int)level.CurrentWorldTime; message.started = level.IsWorldTimeStarted; level.RelayBroadcast(message); return(new SimpleResponse { Body = $"{commander.Username} sets time to {time}" }); }
private void LevelTick(object state) { if (m > 0) { //if (_tick%random.Next(1, 4) == 0) Level level = Context.LevelManager.Levels.FirstOrDefault(); if (level == null) { return; } Random random = level.Random; PlayerLocation point1 = level.SpawnPoint; PlayerLocation point2 = level.SpawnPoint; point2.X += 10; PlayerLocation point3 = level.SpawnPoint; point3.X -= 10; if (Math.Abs(m - 3) < 0.1) { McpeSetTime timeDay = McpeSetTime.CreateObject(); timeDay.time = 0; //timeDay.started = true; level.RelayBroadcast(timeDay); ThreadPool.QueueUserWorkItem(delegate(object o) { Thread.Sleep(100); McpeSetTime timeReset = McpeSetTime.CreateObject(); timeReset.time = (int)level.WorldTime; level.RelayBroadcast(timeDay); //Thread.Sleep(200); //{ // var mcpeExplode = McpeExplode.CreateObject(); // mcpeExplode.position = point1.ToVector3(); // mcpeExplode.radius = 100; // mcpeExplode.records = new Records(); // level.RelayBroadcast(mcpeExplode); //} //Thread.Sleep(250); //{ // var mcpeExplode = McpeExplode.CreateObject(); // mcpeExplode.position = point2.ToVector3(); // mcpeExplode.radius = 100; // mcpeExplode.records = new Records(); // level.RelayBroadcast(mcpeExplode); //} //Thread.Sleep(250); //{ // var mcpeExplode = McpeExplode.CreateObject(); // mcpeExplode.position = point3.ToVector3(); // mcpeExplode.radius = 100; // mcpeExplode.records = new Records(); // level.RelayBroadcast(mcpeExplode); //} }); } if (m < 0.4 || m > 3) { for (int i = 0; i < 15 + (30 * m); i++) { GenerateParticles(random, level, point1, m < 0.6 ? 0 : 20, new Vector3(m * (m / 2), m + 10, m * (m / 2)), m); GenerateParticles(random, level, point2, m < 0.4 ? 0 : 12, new Vector3(m, m + 6, m), m); GenerateParticles(random, level, point3, m < 0.2 ? 0 : 9, new Vector3(m / 2, m / 2 + 6, m / 2), m); } } } m += 0.1f; if (m > 3.8) { m = -5; } }
public virtual void HandleMcpeSetTime(McpeSetTime message) { }
private void LevelTick(object state) { if (m > 0) { //if (_tick%random.Next(1, 4) == 0) Level level = Context.LevelManager.Levels.First(); Random random = level.Random; PlayerLocation point1 = level.SpawnPoint; PlayerLocation point2 = level.SpawnPoint; point2.X += 10; PlayerLocation point3 = level.SpawnPoint; point3.X -= 10; if (Math.Abs(m - 3) < 0.1) { McpeSetTime timeDay = McpeSetTime.CreateObject(); timeDay.time = 0; timeDay.started = 0x80; level.RelayBroadcast(timeDay, true); ThreadPool.QueueUserWorkItem(delegate(object o) { Thread.Sleep(100); McpeSetTime timeReset = McpeSetTime.CreateObject(); timeReset.time = (int)level.CurrentWorldTime; timeReset.started = (byte)(level.IsWorldTimeStarted ? 1 : 0); level.RelayBroadcast(timeDay, true); Thread.Sleep(200); { var mcpeExplode = McpeExplode.CreateObject(); mcpeExplode.x = point1.X; mcpeExplode.y = point1.Y; mcpeExplode.z = point1.Z; mcpeExplode.radius = 100; mcpeExplode.records = new Records(); level.RelayBroadcast(mcpeExplode, true); } Thread.Sleep(250); { var mcpeExplode = McpeExplode.CreateObject(); mcpeExplode.x = point2.X; mcpeExplode.y = point2.Y; mcpeExplode.z = point2.Z; mcpeExplode.radius = 100; mcpeExplode.records = new Records(); level.RelayBroadcast(mcpeExplode, true); } Thread.Sleep(250); { var mcpeExplode = McpeExplode.CreateObject(); mcpeExplode.x = point3.X; mcpeExplode.y = point3.Y; mcpeExplode.z = point3.Z; mcpeExplode.radius = 100; mcpeExplode.records = new Records(); level.RelayBroadcast(mcpeExplode, true); } }); } if (m < 0.4 || m > 3) { for (int i = 0; i < 15 + (30 * m); i++) { GenerateParticles(random, level, point1, m < 0.6 ? 0 : 20, new Vector3(m * (m / 2), m + 10, m * (m / 2)), m); GenerateParticles(random, level, point2, m < 0.4 ? 0 : 12, new Vector3(m, m + 6, m), m); GenerateParticles(random, level, point3, m < 0.2 ? 0 : 9, new Vector3(m / 2, m / 2 + 6, m / 2), m); } } } m += 0.1; if (m > 3.8) { m = -5; } }
public abstract void HandleMcpeSetTime(McpeSetTime message);
public override void HandleMcpeSetTime(McpeSetTime message) { }
//New GameLevel Method public void AddPlayer(SkyPlayer player) { if (player.Level != this && player.Level is GameLevel level) { level.RemovePlayer(player, true); //Clear from old world } //Remove a player from _incomingPlayers only if it's non-empty. //Avoid claiming a lock for a useless check if (_incomingPlayers.Count > 0) { lock (_incomingPlayers) { if (_incomingPlayers.ContainsKey(player.Username)) { _incomingPlayers.Remove(player.Username); } } } GameTeam defaultTeam = GetDefaultTeam(); SetPlayerTeam(player, defaultTeam); //SkyUtil.log($"Added {player.Username} to team {defaultTeam.DisplayName} in game {GameId}"); /*if (player.Level != this) * { * //Only show the level transition screen to players changing games on this instance * //player.SpawnLevel(this, GameLevelInfo.LobbyLocation, !_incomingPlayers.ContainsKey(player.Username)); * player.SpawnLevel(this, GameLevelInfo.LobbyLocation, false); //Remove loading screen to prevent 'building terrain' issue * } * else //Still teleport the player to the spawn location * { * player.Teleport(GameLevelInfo.LobbyLocation); * }*/ //Fix for maps on first join to an instance player.SpawnLevel(this, GameLevelInfo.LobbyLocation, false); //Remove loading screen to prevent 'building terrain' issue try { CurrentState.InitializePlayer(this, player); } catch (Exception e) { BugSnagUtil.ReportBug(e, this, CurrentState, player); } //Update Time McpeSetTime message = McpeSetTime.CreateObject(); message.time = GameLevelInfo.WorldTime; player.SendPackage(message); // //Pending Tasks //Attempts to execute tasks like spawning NPCs in once a single player has loaded the world if (_shouldSchedule) { _shouldSchedule = false; if (_pendingTasks.Count > 0) { foreach (SkyCoreAPI.PendingTask pendingTask in _pendingTasks) { RunnableTask.RunTaskLater(() => { try { pendingTask.Invoke(); } catch (Exception e) { BugSnagUtil.ReportBug(e, new AnonMetadatable((metadata) => { metadata.AddToTab("PendingTask", "Target", pendingTask.Target); metadata.AddToTab("PendingTask", "Method", pendingTask.Method); })); } }, 250); //Small delay for the level to initialize } _pendingTasks.Clear(); } } }
public override void HandleMcpeSetTime(McpeSetTime message) { BaseClient.WorldReceiver?.SetTime(message.time); _changeDimensionResetEvent.Set(); }