public override void OnTick(Entity[] entities) { PositionCheck(); if (KnownPosition.Y > -1 && _checkPosition) { Velocity -= new Vector3(0, (float)Gravity, 0); Velocity *= (float)(1.0f - Drag); } else { McpeUpdateBlockSynced updateBlock = McpeUpdateBlockSynced.CreateObject(); updateBlock.coordinates = new BlockCoordinates(KnownPosition); updateBlock.blockRuntimeId = _original.GetRuntimeId(); updateBlock.blockPriority = 3; updateBlock.dataLayerId = 0; updateBlock.unknown0 = EntityId; updateBlock.unknown1 = 2; Level.RelayBroadcast(updateBlock); DespawnEntity(); var block = BlockFactory.GetBlockById(_original.Id); block.Metadata = _original.Metadata; block.Coordinates = new BlockCoordinates(KnownPosition); Level.SetBlock(block, false); } }
public override void SpawnToPlayers(Player[] players) { //McpeUpdateBlockSynced updateBlock = McpeUpdateBlockSynced.CreateObject(); //updateBlock.coordinates = _original.Coordinates; //updateBlock.blockRuntimeId = 0; //updateBlock.blockPriority = 3; //updateBlock.dataLayerId = 0; //updateBlock.unknown0 = EntityId; //updateBlock.unknown1 = 1; //Level.RelayBroadcast(players, updateBlock); //base.SpawnToPlayers(players); foreach (var player in players) { McpeUpdateBlockSynced updateBlock = McpeUpdateBlockSynced.CreateObject(); updateBlock.coordinates = _original.Coordinates; updateBlock.blockRuntimeId = 0; updateBlock.blockPriority = 3; updateBlock.dataLayerId = 0; updateBlock.unknown0 = EntityId; updateBlock.unknown1 = 1; var addEntity = McpeAddEntity.CreateObject(); addEntity.entityType = (byte)EntityTypeId; addEntity.entityIdSelf = EntityId; addEntity.runtimeEntityId = EntityId; addEntity.x = KnownPosition.X; addEntity.y = KnownPosition.Y; addEntity.z = KnownPosition.Z; addEntity.pitch = KnownPosition.Pitch; addEntity.yaw = KnownPosition.Yaw; addEntity.headYaw = KnownPosition.HeadYaw; addEntity.metadata = GetMetadata(); addEntity.speedX = Velocity.X; addEntity.speedY = Velocity.Y; addEntity.speedZ = Velocity.Z; addEntity.attributes = GetEntityAttributes(); player.SendPacket(updateBlock); player.SendPacket(addEntity); } }