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(); }
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)); }
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); }
public void Spawn(Player player, int mobTypeId) { Mob mob = new Mob(mobTypeId, player.Level); mob.SpawnEntity(); }
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); }
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)); }
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)); }
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(); }
public void ExperienceOrb(Player player) { Mob xpOrb = new Mob(69, player.Level); xpOrb.KnownPosition = (PlayerLocation) player.KnownPosition.Clone(); xpOrb.SpawnEntity(); }
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); }
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); }