예제 #1
0
        public override MetadataDictionary GetMetadata()
        {
            MetadataDictionary metadata = base.GetMetadata();

            metadata[1] = new MetadataInt(12);
            metadata[2] = new MetadataInt(0);
            metadata[3] = new MetadataByte(CollarColor);
            //metadata[4] = new MetadataString("Testing");
            if (Owner != null)
            {
                metadata[5] = new MetadataLong(Owner.EntityId);
            }
            metadata[7]  = new MetadataShort(300);
            metadata[8]  = new MetadataInt(0);
            metadata[9]  = new MetadataByte(0);
            metadata[38] = new MetadataLong(0);
            metadata[39] = new MetadataFloat(1.0f);
            metadata[44] = new MetadataShort(300);
            metadata[45] = new MetadataInt(0);
            metadata[46] = new MetadataByte(0);
            metadata[47] = new MetadataInt(0);
            metadata[53] = new MetadataFloat(0.6f);
            metadata[54] = new MetadataFloat(0.8f);
            metadata[56] = new MetadataVector3(0, 0, 0);
            metadata[57] = new MetadataByte(0);
            metadata[58] = new MetadataFloat(0f);
            metadata[59] = new MetadataFloat(0f);

            return(metadata);
        }
예제 #2
0
        public void FlagToStringTest()
        {
            long value = new MetadataLong(8590508032).Value;             // 1000000000000010001100000000000000

            BitArray bits = new BitArray(BitConverter.GetBytes(value));

            byte[] bytes = new byte[8];
            bits.CopyTo(bytes, 0);

            long dataValue = BitConverter.ToInt64(bytes, 0);

            Assert.AreEqual(value, dataValue);

            Assert.IsTrue(bits[14]);
            Assert.IsTrue(bits[15]);

            List <Entity.DataFlags> flags = new List <Entity.DataFlags>();

            foreach (var val in Enum.GetValues(typeof(Entity.DataFlags)))
            {
                if (bits[(int)val])
                {
                    flags.Add((Entity.DataFlags)val);
                }
            }

            Assert.AreEqual(4, flags.Count);

            StringBuilder sb = new StringBuilder();

            sb.Append(string.Join(", ", flags));
            Assert.AreEqual("", sb.ToString());
        }
예제 #3
0
        public override MetadataDictionary GetMetadata()
        {
            MetadataDictionary metadata = new MetadataDictionary();

            metadata[0]  = new MetadataLong(0);            // 0
            metadata[1]  = new MetadataInt(1);
            metadata[2]  = new MetadataInt(12);
            metadata[3]  = new MetadataByte(0);
            metadata[4]  = new MetadataString("");
            metadata[5]  = new MetadataLong(-1);
            metadata[7]  = new MetadataShort(300);
            metadata[39] = new MetadataFloat(1f);
            metadata[44] = new MetadataShort(300);
            metadata[45] = new MetadataInt(0);
            metadata[46] = new MetadataByte(0);
            metadata[47] = new MetadataInt(0);
            metadata[53] = new MetadataFloat(0.98f);
            metadata[54] = new MetadataFloat(0.98f);
            metadata[56] = new MetadataVector3(0, 0, 0);
            metadata[57] = new MetadataByte(0);
            metadata[58] = new MetadataFloat(0f);
            metadata[59] = new MetadataFloat(0f);

            return(metadata);
        }
예제 #4
0
        public override MetadataDictionary GetMetadata()
        {
            //[0] byte 0 0,
            //[1] short 1 300,
            //[2] string 4 Client12,
            //[3] byte 0 1,
            //[4] byte 0 0,
            //[7] int 2 0,
            //[8] byte 0 0,
            //[15] byte 0 0,
            //[16] byte 0 0,
            //[17] long 6 0

            MetadataDictionary metadata = new MetadataDictionary();

            metadata[0]  = new MetadataByte((byte)(HealthManager.IsOnFire ? 1 : 0));
            metadata[1]  = new MetadataShort(HealthManager.Air);
            metadata[2]  = new MetadataString(Username);
            metadata[3]  = new MetadataByte(1);
            metadata[4]  = new MetadataByte(0);
            metadata[7]  = new MetadataInt(0);
            metadata[8]  = new MetadataByte(0);
            metadata[15] = new MetadataByte(0);
            metadata[16] = new MetadataByte(0);
            metadata[17] = new MetadataLong(0);

            return(metadata);
        }
예제 #5
0
        public override MetadataDictionary GetMetadata()
        {
            MetadataDictionary metadata = base.GetMetadata();

            metadata[0] = new MetadataLong(549755846656);             // 1000000000000000000000001000000000000000; AlwaysShowName
            if (Owner != null)
            {
                metadata[5] = new MetadataLong(Owner.EntityId);
            }
            return(metadata);
        }
예제 #6
0
        public override MetadataDictionary GetMetadata()
        {
            var metadata = base.GetMetadata();

            if (Shooter != null)
            {
                metadata[5] = new MetadataLong(Shooter.EntityId);
            }

            return(metadata);
        }
예제 #7
0
        public override MetadataDictionary GetMetadata()
        {
            IsInWater   = true;
            IsUsingItem = false;

            var metadata = base.GetMetadata();

            if (Shooter != null)
            {
                metadata[5] = new MetadataLong(Shooter.EntityId);
            }
            Log.Debug($"Projectile metadata: \n{MetadataDictionary.MetadataToCode(metadata)}");

            return(metadata);
        }
예제 #8
0
        // Metadata:
        //[0] long 7 536870912,
        //[1] int 2 1,
        //[2] int 2 0,
        //[3] byte 0 0,
        //[4] string 4 ,
        //[5] long 7 1,
        //[6] long 7 0,
        //[7] short 1 300,
        //[8] int 2 0,
        //[9] byte 0 0,
        //[38] long 7 0,
        //[39] float 3 1,
        //[44] short 1 300,
        //[45] int 2 0,
        //[46] byte 0 0,
        //[47] int 2 0,
        //[53] float 3 1,99,
        //[54] float 3 1,99,
        //[56] vector3 8 <0� 0� 0>,
        //[57] byte 0 0,
        //[58] float 3 0,
        //[59] float 3 0

        public override MetadataDictionary GetMetadata()
        {
            MetadataDictionary metadata = base.GetMetadata();

            //MetadataDictionary metadata = new MetadataDictionary();
            metadata[0]  = new MetadataLong(GetDataValue());
            metadata[39] = new MetadataFloat(1.0f);
            metadata[44] = new MetadataShort(300);
            metadata[53] = new MetadataFloat(1.99f);
            metadata[54] = new MetadataFloat(1.99f);
            metadata[57] = new MetadataByte(0);
            metadata[58] = new MetadataFloat(0);
            metadata[59] = new MetadataFloat(0);

            return(metadata);
        }
예제 #9
0
파일: Projectile.cs 프로젝트: qtx0213/MiNET
        public override MetadataDictionary GetMetadata()
        {
            var metadata = base.GetMetadata();

            if (IsCritical)
            {
                metadata[16] = new MetadataByte(1);
            }

            if (Shooter != null)
            {
                metadata[17] = new MetadataLong(Shooter.EntityId);
            }

            return(metadata);
        }
예제 #10
0
파일: Wither.cs 프로젝트: kennyvv/MiNET-1.2
        public override MetadataDictionary GetMetadata()
        {
            MetadataDictionary metadata = new MetadataDictionary();

            metadata[0]  = new MetadataLong(8592556032);            // 1000000000001010000000000000000000; CanClimb, CanFly, Breathing
            metadata[1]  = new MetadataInt(1);
            metadata[2]  = new MetadataInt(0);
            metadata[3]  = new MetadataByte(0);
            metadata[4]  = new MetadataString("");
            metadata[5]  = new MetadataLong(-1);
            metadata[7]  = new MetadataShort(300);
            metadata[8]  = new MetadataInt(0);
            metadata[9]  = new MetadataByte(0);
            metadata[10] = new MetadataByte(0);
            metadata[22] = new MetadataByte(0);
            metadata[38] = new MetadataLong(0);
            metadata[39] = new MetadataFloat(1f);
            metadata[43] = new MetadataShort(300);
            metadata[44] = new MetadataInt(0);
            metadata[45] = new MetadataByte(0);
            metadata[46] = new MetadataInt(0);
            metadata[47] = new MetadataInt(0);
            metadata[49] = new MetadataInt(AnimationStep);
            metadata[50] = new MetadataLong(-1);
            metadata[51] = new MetadataLong(-1);
            metadata[52] = new MetadataLong(-1);
            metadata[53] = new MetadataShort((short)(ShowAuora ? 0 : 1));
            metadata[54] = new MetadataFloat(1f);
            metadata[55] = new MetadataFloat(3f);
            metadata[58] = new MetadataByte(0);
            metadata[59] = new MetadataFloat(0f);
            metadata[60] = new MetadataFloat(0f);
            metadata[70] = new MetadataByte(0);
            metadata[71] = new MetadataString("");
            metadata[72] = new MetadataString("");
            metadata[73] = new MetadataByte(1);
            metadata[74] = new MetadataByte(0);
            metadata[75] = new MetadataInt(0);
            metadata[76] = new MetadataInt(0);
            metadata[77] = new MetadataInt(0);
            metadata[78] = new MetadataInt(-1);

            //metadata[49] = new MetadataInt(0);
            //metadata[53] = new MetadataShort(0);

            return(metadata);
        }
예제 #11
0
        public override MetadataDictionary GetMetadata()
        {
            MetadataDictionary metadata = new MetadataDictionary();

            metadata[0]  = new MetadataByte((byte)(HealthManager.IsOnFire ? 1 : 0));
            metadata[1]  = new MetadataShort(HealthManager.Air);
            metadata[2]  = new MetadataString(NameTag ?? Name);
            metadata[3]  = new MetadataByte(!HideNameTag);
            metadata[4]  = new MetadataByte(Silent);
            metadata[7]  = new MetadataInt(0);            // Potion Color
            metadata[8]  = new MetadataByte(0);           // Potion Ambient
            metadata[15] = new MetadataByte(NoAi);
            metadata[16] = new MetadataByte(0);           // Player flags
            metadata[17] = new MetadataLong(0);

            return(metadata);
        }
예제 #12
0
        public virtual MetadataDictionary GetMetadata()
        {
            MetadataDictionary metadata = new MetadataDictionary();

            metadata[0]  = new MetadataByte(GetDataValue());
            metadata[2]  = new MetadataString(NameTag ?? string.Empty);
            metadata[3]  = new MetadataByte(!HideNameTag);
            metadata[4]  = new MetadataByte(Silent);
            metadata[7]  = new MetadataInt(0);            // Potion Color
            metadata[8]  = new MetadataByte(0);           // Potion Ambient
            metadata[15] = new MetadataByte(NoAi);
            metadata[16] = new MetadataByte(0);           // Player flags
            //metadata[17] = new MetadataIntCoordinates(0, 0, 0);
            metadata[23] = new MetadataLong(-1);          // Leads EID (target or holder?)
            metadata[24] = new MetadataByte(0);           // Leads on/off
            return(metadata);
        }
예제 #13
0
        public override MetadataDictionary GetMetadata()
        {
            Log.Warn("Metadata");
            MetadataDictionary metadata = new MetadataDictionary();

            //metadata[38] = new MetadataLong(0);
            //metadata[39] = new MetadataFloat(1f);
            //metadata[44] = new MetadataShort(300);

            //MetadataDictionary metadata = new MetadataDictionary();
            metadata[0]  = new MetadataLong(8388608);            // 100000000000000000000000; Sitting
            metadata[1]  = new MetadataInt(1);
            metadata[2]  = new MetadataInt(0);
            metadata[3]  = new MetadataByte(0);
            metadata[4]  = new MetadataString("");
            metadata[5]  = new MetadataLong(-1);
            metadata[7]  = new MetadataShort(300);
            metadata[8]  = new MetadataInt(0);
            metadata[9]  = new MetadataByte(0);
            metadata[10] = new MetadataByte(0);
            metadata[22] = new MetadataByte(0);
            metadata[38] = new MetadataLong(0);
            metadata[39] = new MetadataFloat(1f);
            metadata[43] = new MetadataShort(300);
            metadata[44] = new MetadataInt(0);
            metadata[45] = new MetadataByte(0);
            metadata[46] = new MetadataInt(0);
            metadata[47] = new MetadataInt(0);
            metadata[54] = new MetadataFloat(13f);
            metadata[55] = new MetadataFloat(4f);
            metadata[58] = new MetadataByte(0);
            metadata[59] = new MetadataFloat(0f);
            metadata[60] = new MetadataFloat(0f);
            metadata[70] = new MetadataByte(0);
            metadata[71] = new MetadataString("");
            metadata[72] = new MetadataString("");
            metadata[73] = new MetadataByte(1);
            metadata[74] = new MetadataByte(0);
            metadata[75] = new MetadataInt(0);
            metadata[76] = new MetadataInt(0);
            metadata[77] = new MetadataInt(0);
            metadata[78] = new MetadataInt(-1);

            return(metadata);
        }
예제 #14
0
        public override MetadataDictionary GetMetadata()
        {
            MetadataDictionary metadata = new MetadataDictionary();

            metadata[0]  = new MetadataLong(4398046511104);            // 1000000000000000000000000000000000000000000;
            metadata[1]  = new MetadataInt(1);
            metadata[2]  = new MetadataInt(0);
            metadata[3]  = new MetadataByte(0);
            metadata[4]  = new MetadataString("");
            metadata[5]  = new MetadataLong(-1);
            metadata[7]  = new MetadataShort(300);
            metadata[8]  = new MetadataInt(0);
            metadata[9]  = new MetadataByte(0);
            metadata[10] = new MetadataByte(0);
            metadata[22] = new MetadataByte(0);
            metadata[38] = new MetadataLong(0);
            metadata[39] = new MetadataFloat(1f);
            metadata[43] = new MetadataShort(300);
            metadata[44] = new MetadataInt(0);
            metadata[45] = new MetadataByte(0);
            metadata[46] = new MetadataInt(0);
            metadata[47] = new MetadataInt(0);
            metadata[54] = new MetadataFloat(0.4f);
            metadata[55] = new MetadataFloat(0.8f);
            metadata[58] = new MetadataByte(0);
            metadata[59] = new MetadataFloat(0f);
            metadata[60] = new MetadataFloat(0f);
            metadata[70] = new MetadataByte(0);
            metadata[71] = new MetadataString("");
            metadata[72] = new MetadataString("");
            metadata[73] = new MetadataByte(1);
            metadata[74] = new MetadataByte(0);
            metadata[75] = new MetadataInt(0);
            metadata[76] = new MetadataInt(0);
            metadata[77] = new MetadataInt(0);
            metadata[78] = new MetadataInt(-1);

            return(metadata);
        }
예제 #15
0
파일: Projectile.cs 프로젝트: qtx0213/MiNET
        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);
                    }
                }
            }
        }
예제 #16
0
        public static MetadataDictionary ReadMetadataDictionaryAlternate(this Packet packet)
        {
            MetadataDictionary metadata = new MetadataDictionary();
            uint count = 0;
            int  index;
            uint type;

            try
            {
                //var stream = (Stream)ReflectionHelper.GetPrivateFieldValue<MemoryStreamReader>(typeof(Packet), packet, "_reader");
                count = packet.ReadUnsignedVarInt();                 //VarInt.ReadInt32(stream);

                for (int i = 0; i < count; ++i)
                {
                    index = (int)packet.ReadUnsignedVarInt();                //VarInt.ReadInt32(stream);
                    type  = packet.ReadUnsignedVarInt();                     //VarInt.ReadInt32(stream);

                    switch (type)
                    {
                    case 0:
                        metadata[index] = new MetadataByte(packet.ReadByte());

                        break;

                    case 1:
                        metadata[index] = new MetadataShort(packet.ReadShort());

                        break;

                    case 2:
                        metadata[index] = new MetadataInt(packet.ReadVarInt());

                        break;

                    case 3:
                        metadata[index] = new MetadataFloat(packet.ReadFloat());

                        break;

                    case 4:
                        metadata[index] = new MetadataString(packet.ReadString());

                        break;

                    case 5:
                        metadata[index] = new MetadataNbt(packet.ReadNbt());

                        break;

                    case 6:
                        metadata[index] = new MetadataIntCoordinates(
                            packet.ReadVarInt(), packet.ReadVarInt(), packet.ReadVarInt());

                        break;

                    case 7:
                        metadata[index] = new MetadataLong(packet.ReadVarLong());

                        break;

                    case 8:
                        metadata[index] = new MetadataVector3(packet.ReadVector3());

                        break;

                    default:
                        Log.Warn($"Unknown metadata type: {type} at index {index}");
                        break;
                    }
                }


                return(metadata);
            }
            catch (Exception ex)
            {
                Log.Warn(ex, $"Incomplete metadata: {ex.ToString()}");
                return(metadata);
            }
        }
예제 #17
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);
                }
            }
        }