Exemple #1
0
        public override void AddSpectator(SkyPlayer player)
        {
            player.IsGameSpectator = true;

            //Set an invisibily effect on top of the scale to completely 'remove' the player
            player.SetEffect(new Invisibility {
                Duration = int.MaxValue, Particles = false
            });

            player.SetNameTagVisibility(false);

            McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();

            mcpeSetEntityData.runtimeEntityId = player.EntityId;
            mcpeSetEntityData.metadata        = player.GetMetadata();
            mcpeSetEntityData.metadata[(int)Entity.MetadataFlags.Scale] = new MetadataFloat(0.5f);              // Scale

            //Avoid changing the local player's scale
            foreach (SkyPlayer gamePlayer in GetAllPlayers())
            {
                if (gamePlayer == player)
                {
                    continue;
                }

                gamePlayer.SendPackage(mcpeSetEntityData);
            }

            //Update slot held for other players
            player.Inventory.SetHeldItemSlot(player.Inventory.InHandSlot, false);
        }
Exemple #2
0
        public override void OnTick(Entity[] entities)
        {
            Fuse--;

            if (Fuse == 0)
            {
                DespawnEntity();
                Explode();
            }
            else
            {
                PositionCheck();

                if (KnownPosition.Y > -1 && _checkPosition)
                {
                    Velocity -= new Vector3(0, (float)Gravity, 0);
                    Velocity *= (float)(1.0f - Drag);
                }

                var entityData = McpeSetEntityData.CreateObject();
                entityData.runtimeEntityId = EntityId;
                entityData.metadata        = GetMetadata();
                Level.RelayBroadcast(entityData);
            }
        }
Exemple #3
0
        public virtual void SpawnEntity()
        {
            Level.AddEntity(this);

            var addEntity = McpeAddEntity.CreateObject();

            addEntity.entityType = EntityTypeId;
            addEntity.entityId   = EntityId;
            addEntity.x          = KnownPosition.X;
            addEntity.y          = KnownPosition.Y;
            addEntity.z          = KnownPosition.Z;
            addEntity.yaw        = KnownPosition.Yaw;
            addEntity.pitch      = KnownPosition.Pitch;
            addEntity.metadata   = GetMetadata();
            addEntity.speedX     = (float)Velocity.X;
            addEntity.speedY     = (float)Velocity.Y;
            addEntity.speedZ     = (float)Velocity.Z;

            Level.RelayBroadcast(addEntity);

            IsSpawned = true;

            McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();

            mcpeSetEntityData.entityId = EntityId;
            mcpeSetEntityData.metadata = GetMetadata();
            Level.RelayBroadcast(mcpeSetEntityData);
        }
Exemple #4
0
		public virtual void BroadcastSetEntityData()
		{
			McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();
			mcpeSetEntityData.entityId = EntityId;
			mcpeSetEntityData.metadata = GetMetadata();
			Level.RelayBroadcast(this, mcpeSetEntityData);
		}
Exemple #5
0
        public virtual void BroadcastSetEntityData(MetadataDictionary metadata)
        {
            McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();

            mcpeSetEntityData.runtimeEntityId = EntityId;
            mcpeSetEntityData.metadata        = metadata;
            Level?.RelayBroadcast(mcpeSetEntityData);
        }
Exemple #6
0
        public void SendName(Player player, string Name)
        {
            MetadataDictionary metadata = GetMetadata();

            metadata[(int)MetadataFlags.NameTag] = Name;
            McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();

            mcpeSetEntityData.runtimeEntityId = EntityId;
            mcpeSetEntityData.metadata        = metadata;
            player.SendPackage(mcpeSetEntityData);
        }
Exemple #7
0
        public void SendName(Level level, string Name)
        {
            MetadataDictionary metadata = GetMetadata();

            metadata[(int)MetadataFlags.NameTag] = Name;
            McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();

            mcpeSetEntityData.runtimeEntityId = EntityId;
            mcpeSetEntityData.metadata        = metadata;
            //player.SendPackage(mcpeSetEntityData);
            level.RelayBroadcast(mcpeSetEntityData);
        }
Exemple #8
0
        public override void OnTick()
        {
            Fuse--;

            if (Fuse == 0)
            {
                DespawnEntity();
                Explode();
            }
            else
            {
                var entityData = McpeSetEntityData.CreateObject();
                entityData.entityId = EntityId;
                entityData.metadata = GetMetadata();
                Level.RelayBroadcast(entityData);
                if (CheckPosition)
                {
                    PositionCheck();
                }
            }
        }
Exemple #9
0
        public virtual void SpawnToPlayer(Player player)
        {
            var addEntity = McpeAddEntity.CreateObject();

            addEntity.entityType = EntityTypeId;
            addEntity.entityId   = EntityId;
            addEntity.x          = KnownPosition.X;
            addEntity.y          = KnownPosition.Y;
            addEntity.z          = KnownPosition.Z;
            addEntity.yaw        = KnownPosition.Yaw;
            addEntity.pitch      = KnownPosition.Pitch;
            addEntity.metadata   = GetMetadata();
            addEntity.speedX     = (float)Velocity.X;
            addEntity.speedY     = (float)Velocity.Y;
            addEntity.speedZ     = (float)Velocity.Z;
            player.SendPackage(addEntity);

            McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();

            mcpeSetEntityData.entityId = EntityId;
            mcpeSetEntityData.metadata = GetMetadata();
            player.SendPackage(mcpeSetEntityData);
        }
Exemple #10
0
        public override void SpawnEntity()
        {
            lock (_spawnSync)
            {
                if (IsSpawned)
                {
                    throw new Exception("Invalid state. Tried to spawn projectile more than one time.");
                }


                Level.AddEntity(this);

                IsSpawned = true;

                if (Shooter == null)
                {
                    var addEntity = McpeAddEntity.CreateObject();
                    addEntity.entityType = EntityTypeId;
                    addEntity.entityId   = EntityId;
                    addEntity.x          = KnownPosition.X;
                    addEntity.y          = KnownPosition.Y;
                    addEntity.z          = KnownPosition.Z;
                    addEntity.yaw        = KnownPosition.Yaw;
                    addEntity.pitch      = KnownPosition.Pitch;
                    addEntity.metadata   = GetMetadata();
                    addEntity.speedX     = (float)Velocity.X;
                    addEntity.speedY     = (float)Velocity.Y;
                    addEntity.speedZ     = (float)Velocity.Z;

                    Level.RelayBroadcast(addEntity);

                    McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();
                    mcpeSetEntityData.entityId = EntityId;
                    mcpeSetEntityData.metadata = GetMetadata();
                    Level.RelayBroadcast(mcpeSetEntityData);
                }
                else
                {
                    {
                        var addEntity = McpeAddEntity.CreateObject();
                        addEntity.entityType = EntityTypeId;
                        addEntity.entityId   = EntityId;
                        addEntity.x          = KnownPosition.X;
                        addEntity.y          = KnownPosition.Y;
                        addEntity.z          = KnownPosition.Z;
                        addEntity.yaw        = KnownPosition.Yaw;
                        addEntity.pitch      = KnownPosition.Pitch;
                        addEntity.metadata   = GetMetadata();
                        addEntity.speedX     = (float)Velocity.X;
                        addEntity.speedY     = (float)Velocity.Y;
                        addEntity.speedZ     = (float)Velocity.Z;

                        Level.RelayBroadcast(Shooter, addEntity);

                        McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();
                        mcpeSetEntityData.entityId = EntityId;
                        mcpeSetEntityData.metadata = GetMetadata();
                        Level.RelayBroadcast(Shooter, mcpeSetEntityData);
                    }
                    {
                        MetadataDictionary metadata = GetMetadata();
                        metadata[17] = new MetadataLong(0);

                        var addEntity = McpeAddEntity.CreateObject();
                        addEntity.entityType = EntityTypeId;
                        addEntity.entityId   = EntityId;
                        addEntity.x          = KnownPosition.X;
                        addEntity.y          = KnownPosition.Y;
                        addEntity.z          = KnownPosition.Z;
                        addEntity.yaw        = KnownPosition.Yaw;
                        addEntity.pitch      = KnownPosition.Pitch;
                        addEntity.metadata   = metadata;
                        addEntity.speedX     = (float)Velocity.X;
                        addEntity.speedY     = (float)Velocity.Y;
                        addEntity.speedZ     = (float)Velocity.Z;

                        Shooter.SendPackage(addEntity);

                        McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();
                        mcpeSetEntityData.entityId = EntityId;
                        mcpeSetEntityData.metadata = metadata;
                        Shooter.SendPackage(mcpeSetEntityData);
                    }
                }
            }
        }
Exemple #11
0
        public override void SpawnToPlayers(Player[] players)
        {
            {
                var fake = new Player(null, null)
                {
                    ClientUuid  = ClientUuid,
                    EntityId    = EntityId,
                    NameTag     = NameTag,
                    DisplayName = NameTag,
                    Username    = NameTag,
                    Skin        = Skin,
                    PlayerInfo  = new PlayerInfo
                    {
                        DeviceOS       = 7,
                        PlatformChatId = NameTag,
                    }
                };

                var playerList = McpePlayerList.CreateObject();
                playerList.records = new PlayerAddRecords {
                    fake
                };
                Level.RelayBroadcast(players, Level.CreateMcpeBatch(playerList.Encode()));
                playerList.records = null;
                playerList.PutPool();
            }

            {
                var message = McpeAddPlayer.CreateObject();
                message.uuid            = ClientUuid;
                message.username        = NameTag;
                message.entityIdSelf    = EntityId;
                message.runtimeEntityId = EntityId;
                message.x        = KnownPosition.X;
                message.y        = KnownPosition.Y;
                message.z        = KnownPosition.Z;
                message.yaw      = KnownPosition.Yaw;
                message.headYaw  = KnownPosition.HeadYaw;
                message.pitch    = KnownPosition.Pitch;
                message.metadata = GetMetadata();
                message.userId   = -1;
                Level.RelayBroadcast(players, message);
            }

            {
                var message = McpeMobEquipment.CreateObject();
                message.runtimeEntityId = EntityId;
                message.item            = ItemInHand;
                message.slot            = 0;
                Level.RelayBroadcast(players, message);
            }
            {
                var armorEquipment = McpeMobArmorEquipment.CreateObject();
                armorEquipment.runtimeEntityId = EntityId;
                armorEquipment.helmet          = Helmet;
                armorEquipment.chestplate      = Chest;
                armorEquipment.leggings        = Leggings;
                armorEquipment.boots           = Boots;
                Level.RelayBroadcast(players, armorEquipment);
            }

            {
                var fake = new Player(null, null)
                {
                    ClientUuid = ClientUuid,
                    EntityId   = EntityId,
                    NameTag    = NameTag,
                    Skin       = Skin
                };

                var playerList = McpePlayerList.CreateObject();
                playerList.records = new PlayerRemoveRecords {
                    fake
                };
                Level.RelayBroadcast(players, Level.CreateMcpeBatch(playerList.Encode()));
                playerList.records = null;
                playerList.PutPool();
            }

            {
                var setEntityData = McpeSetEntityData.CreateObject();
                setEntityData.runtimeEntityId = EntityId;
                setEntityData.metadata        = GetMetadata();
                Level?.RelayBroadcast(players, setEntityData);
            }
        }
        public override void SpawnToPlayers(Player[] players)
        {
            {
                Player fake = new Player(null, null)
                {
                    ClientUuid = Uuid,
                    EntityId   = EntityId,
                    NameTag    = NameTag,
                    Skin       = Skin
                };

                McpePlayerList playerList = McpePlayerList.CreateObject();
                playerList.records = new PlayerAddRecords {
                    fake
                };
                Level.RelayBroadcast(players, Level.CreateMcpeBatch(playerList.Encode()));
                playerList.records = null;
                playerList.PutPool();
            }

            {
                McpeAddPlayer message = McpeAddPlayer.CreateObject();
                message.uuid            = Uuid;
                message.username        = NameTag;
                message.entityIdSelf    = EntityId;
                message.runtimeEntityId = EntityId;
                message.x        = KnownPosition.X;
                message.y        = KnownPosition.Y;
                message.z        = KnownPosition.Z;
                message.yaw      = KnownPosition.Yaw;
                message.headYaw  = KnownPosition.HeadYaw;
                message.pitch    = KnownPosition.Pitch;
                message.metadata = GetMetadata();
                Level.RelayBroadcast(players, message);
            }
            {
                McpeMobEquipment message = McpeMobEquipment.CreateObject();
                message.runtimeEntityId = EntityId;
                message.item            = ItemInHand;
                message.slot            = 0;
                Level.RelayBroadcast(players, message);
            }
            {
                McpeMobArmorEquipment armorEquipment = McpeMobArmorEquipment.CreateObject();
                armorEquipment.runtimeEntityId = EntityId;
                armorEquipment.helmet          = ItemFactory.GetItem(Helmet);
                armorEquipment.chestplate      = ItemFactory.GetItem(Chest);
                armorEquipment.leggings        = ItemFactory.GetItem(Leggings);
                armorEquipment.boots           = ItemFactory.GetItem(Boots);
                Level.RelayBroadcast(players, armorEquipment);
            }

            //{
            //	Player fake = new Player(null, null)
            //	{
            //		ClientUuid = Uuid,
            //		EntityId = EntityId,
            //		NameTag = NameTag,
            //		Skin = Skin
            //	};

            //	McpePlayerList playerList = McpePlayerList.CreateObject();
            //	playerList.records = new PlayerRemoveRecords {fake};
            //	Level.RelayBroadcast(players, Level.CreateMcpeBatch(playerList.Encode()));
            //	playerList.records = null;
            //	playerList.PutPool();
            //}

            {
                McpeSetEntityData setEntityData = McpeSetEntityData.CreateObject();
                setEntityData.runtimeEntityId = EntityId;
                setEntityData.metadata        = GetMetadata();
                Level?.RelayBroadcast(players, setEntityData);
            }
        }
Exemple #13
0
        public override void SpawnEntity()
        {
            Level.AddEntity(this);

            if (Shooter == null)
            {
                var addEntity = McpeAddEntity.CreateObject();
                addEntity.entityType = EntityTypeId;
                addEntity.entityId   = EntityId;
                addEntity.x          = KnownPosition.X;
                addEntity.y          = KnownPosition.Y;
                addEntity.z          = KnownPosition.Z;
                addEntity.yaw        = KnownPosition.Yaw;
                addEntity.pitch      = KnownPosition.Pitch;
                //addEntity.metadata = GetMetadata();
                addEntity.speedX = (float)Velocity.X;
                addEntity.speedY = (float)Velocity.Y;
                addEntity.speedZ = (float)Velocity.Z;

                Level.RelayBroadcast(addEntity);

                IsSpawned = true;

                McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();
                mcpeSetEntityData.entityId = EntityId;
                mcpeSetEntityData.metadata = GetMetadata();
                Level.RelayBroadcast(mcpeSetEntityData);
            }
            else
            {
                {
                    var addEntity = McpeAddEntity.CreateObject();
                    addEntity.entityType = EntityTypeId;
                    addEntity.entityId   = EntityId;
                    addEntity.x          = KnownPosition.X;
                    addEntity.y          = KnownPosition.Y;
                    addEntity.z          = KnownPosition.Z;
                    addEntity.yaw        = KnownPosition.Yaw;
                    addEntity.pitch      = KnownPosition.Pitch;
                    //addEntity.metadata = GetMetadata();
                    addEntity.speedX = (float)Velocity.X;
                    addEntity.speedY = (float)Velocity.Y;
                    addEntity.speedZ = (float)Velocity.Z;

                    Level.RelayBroadcast(Shooter, addEntity);

                    McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();
                    mcpeSetEntityData.entityId = EntityId;
                    mcpeSetEntityData.metadata = GetMetadata();
                    Level.RelayBroadcast(Shooter, mcpeSetEntityData);
                }
                {
                    MetadataDictionary metadata = GetMetadata();
                    metadata[17] = new MetadataLong(0);

                    var addEntity = McpeAddEntity.CreateObject();
                    addEntity.entityType = EntityTypeId;
                    addEntity.entityId   = EntityId;
                    addEntity.x          = KnownPosition.X;
                    addEntity.y          = KnownPosition.Y;
                    addEntity.z          = KnownPosition.Z;
                    addEntity.yaw        = KnownPosition.Yaw;
                    addEntity.pitch      = KnownPosition.Pitch;
                    //addEntity.metadata = metadata;
                    addEntity.speedX = (float)Velocity.X;
                    addEntity.speedY = (float)Velocity.Y;
                    addEntity.speedZ = (float)Velocity.Z;

                    Shooter.SendPackage(addEntity);

                    McpeSetEntityData mcpeSetEntityData = McpeSetEntityData.CreateObject();
                    mcpeSetEntityData.entityId = EntityId;
                    mcpeSetEntityData.metadata = metadata;
                    Shooter.SendPackage(mcpeSetEntityData);
                }
            }
        }