コード例 #1
0
ファイル: ItemSpawnEgg.cs プロジェクト: PocketRealms/MiNET
		public override void UseItem(Level world, Player player, BlockCoordinates blockCoordinates, BlockFace face, Vector3 faceCoords)
		{
			var coordinates = GetNewCoordinatesFromFace(blockCoordinates, face);

			Mob entity = new Mob(Metadata, world)
			{
				KnownPosition = new PlayerLocation(coordinates.X, coordinates.Y, coordinates.Z),
				//Data = -(blockId | 0 << 0x10)
			};
			entity.SpawnEntity();
		}
コード例 #2
0
ファイル: ItemSpawnEgg.cs プロジェクト: WilliamGao1/MiNET
        public override void UseItem(Level world, Player player, BlockCoordinates blockCoordinates, BlockFace face, Vector3 faceCoords)
        {
            var coordinates = GetNewCoordinatesFromFace(blockCoordinates, face);

            Mob entity = new Mob(Metadata, world)
            {
                KnownPosition = new PlayerLocation(coordinates.X, coordinates.Y, coordinates.Z),
                //Data = -(blockId | 0 << 0x10)
            };
            entity.SpawnEntity();

            world.BroadcastTextMessage(string.Format("Player {0} spawned Mob #{1}.", player.Username, Metadata));
        }
コード例 #3
0
ファイル: MobHuntLevel.cs プロジェクト: WilliamGao1/MiNET
        public override void AddPlayer(Player newPlayer, string broadcastText = null, bool spawn = true)
        {
            base.AddPlayer(newPlayer, broadcastText, false);
            Mob entity = new Mob(new Random().Next(10, 16), this) // Passive mobs
                //Mob entity = new Mob(new Random().Next(32, 39), this) // Hostile mobs
            {
                KnownPosition = newPlayer.KnownPosition,
                //Data = -(blockId | 0 << 0x10)
            };
            entity.SpawnEntity();

            // Despawn the new entity from the player himeself
            newPlayer.SendPackage(new McpeRemoveEntity()
            {
                entityId = entity.EntityId,
            });

            _playerEntities.Add(newPlayer, entity);
        }
コード例 #4
0
ファイル: NiceLobbyPlugin.cs プロジェクト: HungerBoatz/MiNET
 public void Spawn(Player player, int mobTypeId)
 {
     Mob mob = new Mob(mobTypeId, player.Level);
     mob.SpawnEntity();
 }
コード例 #5
0
ファイル: NiceLobbyPlugin.cs プロジェクト: GoldishKirby/MiNET
        public void Hide(Player player, string type)
        {
            EntityType mobType;
            try
            {
                mobType = (EntityType) Enum.Parse(typeof (EntityType), type, true);
            }
            catch (ArgumentException e)
            {
                return;
            }

            Level level = player.Level;

            HidePlayer(player, true);

            Mob entity = new Mob(mobType, level)
            {
                KnownPosition = player.KnownPosition,
                HealthManager = player.HealthManager,
                NameTag = player.NameTag,
            };
            entity.SpawnEntity();

            var remove = McpeRemoveEntity.CreateObject();
            remove.entityId = entity.EntityId;
            player.SendPackage(remove);

            _playerEntities[player] = entity;

            level.BroadcastMessage($"Player {player.Username} spawned as {mobType}.", type: MessageType.Raw);
        }
コード例 #6
0
ファイル: CoreCommands.cs プロジェクト: Hetal728/MiNET
        public void Spawn(Player player, byte id)
        {
            Level level = player.Level;

            Mob entity = new Mob(id, level)
            {
                KnownPosition = player.KnownPosition,
                //Data = -(blockId | 0 << 0x10)
            };
            entity.SpawnEntity();

            level.BroadcastTextMessage(string.Format("Player {0} spawned Mob #{1}.", player.Username, id));
        }
コード例 #7
0
ファイル: CoreCommands.cs プロジェクト: Hetal728/MiNET
        public void Hide(Player player, byte id)
        {
            Level level = player.Level;

            level.HidePlayer(player, true);

            Mob entity = new Mob(id, level)
            {
                KnownPosition = player.KnownPosition,
                //Data = -(blockId | 0 << 0x10)
            };
            entity.SpawnEntity();

            player.SendPackage(new McpeRemoveEntity()
            {
                entityId = entity.EntityId,
            });

            _playerEntities[player] = entity;

            level.BroadcastTextMessage(string.Format("Player {0} spawned as other entity.", player.Username));
        }
コード例 #8
0
ファイル: CoreCommands.cs プロジェクト: hireymage/MiNET
        public void Spawn(Player player, byte id)
        {
            Level level = player.Level;

            Mob entity = new Mob(id, level)
            {
                KnownPosition = player.KnownPosition,
                //Data = -(blockId | 0 << 0x10)
            };
            entity.SpawnEntity();
        }
コード例 #9
0
ファイル: CoreCommands.cs プロジェクト: GoldishKirby/MiNET
 public void ExperienceOrb(Player player)
 {
     Mob xpOrb = new Mob(69, player.Level);
     xpOrb.KnownPosition = (PlayerLocation) player.KnownPosition.Clone();
     xpOrb.SpawnEntity();
 }
コード例 #10
0
        public PlayerMob RenderBoundingBox(Mob theMob)
        {
            var coordinates = theMob.KnownPosition;

            byte[] skinBytes = Encoding.Default.GetBytes(new string('Z', 64 * 64 * 4));

            int geoW = (int)Math.Floor(theMob.Width * 16f);
            int geoH = (int)Math.Floor(theMob.Height * 16f);

            Log.Error($"Height={geoH}, Width={geoW}");

            var           skinGeometryName = "geometry.flat." + Guid.NewGuid();
            GeometryModel model            = new GeometryModel()
            {
                Geometry = new List <Geometry>()
                {
                    new Geometry()
                    {
                        Description = new Description()
                        {
                            Identifier = skinGeometryName
                        },
                        Name          = skinGeometryName,
                        TextureHeight = 64,
                        TextureWidth  = 64,
                        Bones         = new List <Bone>()
                        {
                            new Bone()
                            {
                                Name  = BoneName.Body,
                                Pivot = new float[3],
                                Cubes = new List <Cube>()
                                {
                                    //Origin = new float[3],
                                    //Size = new float[] {geoW, geoH, geoW},

                                    // sides

                                    new Cube()
                                    {
                                        Origin = new float[] { -(geoW / 2f), 0, -(geoW / 2f) },
                                        Size   = new float[] { 1, geoH, 1 },
                                        Uv     = new float[] { 64, 0 },
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { -(geoW / 2f), 0, +(geoW / 2f) },
                                        Size   = new float[] { 1, geoH, 1 },
                                        Uv     = new float[] { 64, 0 }
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { +(geoW / 2f), 0, -(geoW / 2f) },
                                        //Origin = new float[3],
                                        Size = new float[] { 1, geoH, 1 },
                                        Uv   = new float[] { 64, 0 }
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { +(geoW / 2f), 0, +(geoW / 2f) },
                                        //Origin = new float[3],
                                        Size = new float[] { 1, geoH, 1 },
                                        Uv   = new float[] { 64, 0 }
                                    },

                                    // bottom

                                    new Cube()
                                    {
                                        Origin = new float[] { -(geoW / 2f), 0, -(geoW / 2f) },
                                        Size   = new float[] { 1, 1, geoW },
                                        Uv     = new float[] { 64, 0 }
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { -(geoW / 2f), 0, -(geoW / 2f) },
                                        //Origin = new float[3],
                                        Size = new float[] { geoW, 1, 1 },
                                        Uv   = new float[] { 64, 0 }
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { -(geoW / 2f), 0, +(geoW / 2f) },
                                        Size   = new float[] { geoW, 1, 1 },
                                        Uv     = new float[] { 64, 0 }
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { +(geoW / 2f), 0, -(geoW / 2f) },
                                        //Origin = new float[3],
                                        Size = new float[] { 1, 1, geoW },
                                        Uv   = new float[] { 64, 0 }
                                    },

                                    // top

                                    new Cube()
                                    {
                                        Origin = new float[] { -(geoW / 2f), geoH, -(geoW / 2f) },
                                        Size   = new float[] { 1, 1, geoW },
                                        Uv     = new float[] { 64, 0 }
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { -(geoW / 2f), geoH, -(geoW / 2f) },
                                        //Origin = new float[3],
                                        Size = new float[] { geoW, 1, 1 },
                                        Uv   = new float[] { 64, 0 }
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { -(geoW / 2f), geoH, +(geoW / 2f) },
                                        Size   = new float[] { geoW, 1, 1 },
                                        Uv     = new float[] { 64, 0 }
                                    },
                                    new Cube()
                                    {
                                        Origin = new float[] { +(geoW / 2f), geoH, -(geoW / 2f) },
                                        //Origin = new float[3],
                                        Size = new float[] { 1, 1, geoW },
                                        Uv   = new float[] { 64, 0 }
                                    },
                                }
                            }
                        }
                    }
                },
            };

            PlayerMob fake = new PlayerMob(string.Empty, theMob.Level)
            {
                Width  = theMob.Width,
                Length = theMob.Width,
                Height = theMob.Height,
                Skin   = new Skin
                {
                    SkinId       = "testing" + new Guid(),
                    Slim         = false,
                    Data         = skinBytes,
                    Cape         = new Cape(),
                    GeometryName = skinGeometryName,
                    GeometryData = Skin.ToJson(model),
                },
                KnownPosition = new PlayerLocation(coordinates)
            };

            fake.SpawnEntity();

            return(fake);
        }
コード例 #11
0
        private bool Spawn(PlayerLocation position, EntityType entityType, Random random)
        {
            Level world = Level;
            Mob   mob   = null;

            switch (entityType)
            {
            case EntityType.Chicken:
                mob      = new Chicken(world);
                mob.NoAi = true;
                break;

            case EntityType.Cow:
                mob      = new Cow(world);
                mob.NoAi = true;
                break;

            case EntityType.Pig:
                mob      = new Pig(world);
                mob.NoAi = true;
                break;

            case EntityType.Sheep:
                mob      = new Sheep(world, random);
                mob.NoAi = true;
                break;

            case EntityType.Wolf:
                mob      = new Wolf(world);
                mob.NoAi = true;
                break;

            case EntityType.Horse:
                mob        = new Horse(world, random.NextDouble() < 0.10, random);
                mob.IsBaby = random.NextDouble() < 0.20;
                mob.NoAi   = true;
                break;

            case EntityType.Ocelot:
                mob      = new Ocelot(world);
                mob.NoAi = true;
                break;

            case EntityType.Rabbit:
                mob      = new Rabbit(world);
                mob.NoAi = true;
                break;

            case EntityType.Spider:
                mob      = new Spider(world);
                mob.NoAi = true;
                break;

            case EntityType.Zombie:
                mob        = new Zombie(world);
                mob.IsBaby = random.NextDouble() < 0.05;
                mob.NoAi   = true;
                break;

            case EntityType.Skeleton:
                mob      = new Skeleton(world);
                mob.NoAi = true;
                break;

            case EntityType.Enderman:
                mob      = new Enderman(world);
                mob.NoAi = true;
                break;

            case EntityType.Creeper:
                mob      = new Creeper(world);
                mob.NoAi = true;
                break;
            }

            if (mob == null)
            {
                return(false);
            }

            mob.DespawnIfNotSeenPlayer = true;
            mob.KnownPosition          = position;
            var bbox = mob.GetBoundingBox();

            if (!SpawnAreaClear(bbox))
            {
                return(false);
            }

            ThreadPool.QueueUserWorkItem(state => mob.SpawnEntity());

            if (Log.IsDebugEnabled)
            {
                Log.Debug($"Spawn mob {entityType}");
            }
            return(true);
        }