public override MetadataDictionary GetMetadata() { MetadataDictionary metadata = new MetadataDictionary(); metadata[16] = new MetadataByte(Fuse); return metadata; }
public virtual 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 ?? string.Empty); metadata[3] = new MetadataByte(1); metadata[4] = new MetadataByte(0); metadata[15] = new MetadataByte(0); //metadata[16] = new MetadataByte(0); return metadata; }
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 MetadataIntCoordinates(0, 0, 0); return metadata; }
public static MetadataDictionary FromStream(BinaryReader stream) { MetadataDictionary metadata = new MetadataDictionary(); while (true) { byte key = stream.ReadByte(); if (key == 0x7F) break; byte type = (byte) ((key & 0xE0) >> 5); byte index = (byte) (key & 0x1F); var entry = EntryTypes[type](); //if (index == 17 && type != 6) //{ // entry = new MetadataLong {id = type}; //} entry.FromStream(stream); entry.Index = index; metadata[index] = entry; } return metadata; }
public static MetadataDictionary FromStream(BinaryReader stream) { var value = new MetadataDictionary(); while (true) { byte key = stream.ReadByte(); if (key == 127) break; byte type = (byte) ((key & 0xE0) >> 5); byte index = (byte) (key & 0x1F); var entry = EntryTypes[type](); if (index == 17) { entry = new MetadataLong {id = type}; } entry.FromStream(stream); entry.Index = index; value[index] = entry; } return value; }
public void Write(MetadataDictionary metadata) { if (metadata != null) { metadata.WriteTo(_writer); } }
/// <summary> /// Handles the player action. /// </summary> /// <param name="message">The message.</param> protected virtual void HandlePlayerAction(McpePlayerAction message) { Log.DebugFormat("Player action: {0}", message.actionId); Log.DebugFormat("Entity ID: {0}", message.entityId); Log.DebugFormat("Action ID: {0}", message.actionId); Log.DebugFormat("x: {0}", message.x); Log.DebugFormat("y: {0}", message.y); Log.DebugFormat("z: {0}", message.z); Log.DebugFormat("Face: {0}", message.face); switch ((PlayerAction) message.actionId) { case PlayerAction.StartBreak: break; case PlayerAction.AbortBreak: break; case PlayerAction.StopBreak: break; case PlayerAction.ReleaseItem: if (_itemUseTimer == null) return; Item itemInHand = Inventory.GetItemInHand().Item; if (itemInHand == null) return; // Cheat(?) _itemUseTimer.Stop(); itemInHand.Release(Level, this, new BlockCoordinates(message.x, message.y, message.z), _itemUseTimer.ElapsedMilliseconds); _itemUseTimer = null; break; case PlayerAction.StopSleeping: break; case PlayerAction.Respawn: ThreadPool.QueueUserWorkItem(delegate(object state) { HandleRespawn(null); }); break; case PlayerAction.Jump: break; case PlayerAction.StartSprint: IsSprinting = true; //Speed = 0.15f; //SendSetHealth(); break; case PlayerAction.StopSprint: IsSprinting = false; Speed = 0.1f; SendSetHealth(); break; case PlayerAction.StartSneak: IsSneaking = true; //SendSetHealth(); break; case PlayerAction.StopSneak: IsSneaking = false; //SendSetHealth(); break; case PlayerAction.DimensionChange: break; default: throw new ArgumentOutOfRangeException(); } IsInAction = false; MetadataDictionary metadata = new MetadataDictionary { [0] = GetDataValue() }; var setEntityData = McpeSetEntityData.CreateObject(); setEntityData.entityId = EntityId; setEntityData.metadata = metadata; Level?.RelayBroadcast(this, setEntityData); }
public override MetadataDictionary GetMetadata() { MetadataDictionary metadata = new MetadataDictionary(); metadata[0] = new MetadataByte(GetDataValue()); metadata[1] = new MetadataShort(HealthManager.Air); metadata[2] = new MetadataString("\u2764 \u2665 " + (NameTag ?? Username)); 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); return metadata; }
protected virtual void HandleUseItem(McpeUseItem message) { //Log.DebugFormat("Use item: {0}", message.item.Value.Id); //Log.DebugFormat("item meta: {0}", message.item.Value.Metadata); //Log.DebugFormat("x: {0}", message.x); //Log.DebugFormat("y: {0}", message.y); //Log.DebugFormat("z: {0}", message.z); //Log.DebugFormat("face: {0}", message.face); //Log.DebugFormat("fx: {0}", message.fx); //Log.DebugFormat("fy: {0}", message.fy); //Log.DebugFormat("fz: {0}", message.fz); //Log.DebugFormat("px: {0}", message.positionX); //Log.DebugFormat("py: {0}", message.positionY); //Log.DebugFormat("pz: {0}", message.positionZ); if (message.face <= 5) { if (GameMode != GameMode.Creative) { ItemStack itemStack = message.item.Value; if (itemStack != null && !VerifyItemStack(itemStack)) { Log.Error($"Kicked {Username} for use item hacking."); Disconnect("Error #324. Please report this error."); return; } } // Right click Vector3 faceCoords = new Vector3(message.fx, message.fy, message.fz); Level.Interact(Level, this, message.item.Value.Id, new BlockCoordinates(message.x, message.y, message.z), message.item.Value.Metadata, (BlockFace) message.face, faceCoords); } else { // Snowballs and shit _itemUseTimer = new Stopwatch(); _itemUseTimer.Start(); Level.Interact(Level, this, message.item.Value.Id, new BlockCoordinates(message.x, message.y, message.z), message.item.Value.Metadata); IsInAction = true; MetadataDictionary metadata = new MetadataDictionary { [0] = GetDataValue() }; var setEntityData = McpeSetEntityData.CreateObject(); setEntityData.entityId = EntityId; setEntityData.metadata = metadata; Level.RelayBroadcast(this, setEntityData); } }
public static string MetadataToCode(MetadataDictionary metadata) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); sb.AppendLine("MetadataDictionary metadata = new MetadataDictionary();"); foreach (var kvp in metadata._entries) { int idx = kvp.Key; MetadataEntry entry = kvp.Value; sb.Append($"metadata[{idx}] = new "); switch (entry.Identifier) { case 0: { var e = (MetadataByte)entry; sb.Append($"{e.GetType().Name}({e.Value});"); break; } case 1: { var e = (MetadataShort)entry; sb.Append($"{e.GetType().Name}({e.Value});"); break; } case 2: { var e = (MetadataInt)entry; sb.Append($"{e.GetType().Name}({e.Value});"); break; } case 3: { var e = (MetadataFloat)entry; sb.Append($"{e.GetType().Name}({e.Value.ToString(NumberFormatInfo.InvariantInfo)}f);"); break; } case 4: { var e = (MetadataString)entry; sb.Append($"{e.GetType().Name}(\"{e.Value}\");"); break; } case 5: { var e = (MetadataSlot)entry; sb.Append($"{e.GetType().Name}({e.Value});"); break; } case 6: { var e = (MetadataIntCoordinates)entry; sb.Append($"{e.GetType().Name}({e.Value});"); break; } case 7: { var e = (MetadataLong)entry; sb.Append($"{e.GetType().Name}({e.Value});"); if (idx == 0) { sb.Append($" // {Convert.ToString(e.Value, 2)}"); } break; } case 8: { var e = (MetadataVector3)entry; sb.Append($"{e.GetType().Name}({e.Value});"); break; } } sb.AppendLine(); } return(sb.ToString()); }
protected virtual void HandleUseItem(McpeUseItem message) { Log.DebugFormat("Use item: {0}", message.item); Log.DebugFormat("Entity ID: {0}", message.entityId); Log.DebugFormat("meta: {0}", message.meta); Log.DebugFormat("x: {0}", message.x); Log.DebugFormat("y: {0}", message.y); Log.DebugFormat("z: {0}", message.z); Log.DebugFormat("face: {0}", message.face); Log.DebugFormat("fx: {0}", message.fx); Log.DebugFormat("fy: {0}", message.fy); Log.DebugFormat("fz: {0}", message.fz); Log.DebugFormat("px: {0}", message.positionX); Log.DebugFormat("py: {0}", message.positionY); Log.DebugFormat("pz: {0}", message.positionZ); if (message.face <= 5) { Level.RelayBroadcast(this, new McpeAnimate() { actionId = 1, entityId = EntityId }); Vector3 faceCoords = new Vector3(message.fx, message.fy, message.fz); Level.Interact(Level, this, message.item, new BlockCoordinates(message.x, message.y, message.z), message.meta, (BlockFace) message.face, faceCoords); } else { _itemUseTimer = new Stopwatch(); _itemUseTimer.Start(); // Snowballs and shit Level.Interact(Level, this, message.item, new BlockCoordinates(message.x, message.y, message.z), message.meta); MetadataDictionary metadata = new MetadataDictionary(); metadata[0] = new MetadataByte(16); Level.RelayBroadcast(this, new McpeSetEntityData { entityId = EntityId, metadata = metadata, }); } }
/// <summary> /// Handles the player action. /// </summary> /// <param name="message">The message.</param> protected virtual void HandlePlayerAction(McpePlayerAction message) { Log.DebugFormat("Player action: {0}", message.actionId); Log.DebugFormat("Entity ID: {0}", message.entityId); Log.DebugFormat("Action ID: {0}", message.actionId); Log.DebugFormat("x: {0}", message.x); Log.DebugFormat("y: {0}", message.y); Log.DebugFormat("z: {0}", message.z); Log.DebugFormat("Face: {0}", message.face); switch (message.actionId) { case 5: // Shoot arrow { if (_itemUseTimer == null) return; Item itemInHand = Inventory.ItemInHand; if (itemInHand == null) return; // Cheat(?) _itemUseTimer.Stop(); itemInHand.Release(Level, this, new BlockCoordinates(message.x, message.y, message.z), _itemUseTimer.ElapsedMilliseconds); _itemUseTimer = null; MetadataDictionary metadata = new MetadataDictionary(); metadata[0] = new MetadataByte(0); Level.RelayBroadcast(this, new McpeSetEntityData { entityId = EntityId, metadata = metadata, }); break; } case 7: // Respawn ThreadPool.QueueUserWorkItem(delegate(object state) { HandleRespawn(null); }); break; default: return; } }
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 ?? 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; }
/// <summary> /// Handles the player action. /// </summary> /// <param name="message">The message.</param> private void HandlePlayerAction(McpePlayerAction message) { Log.DebugFormat("Player action: {0}", message.actionId); Log.DebugFormat("Entity ID: {0}", message.entityId); Log.DebugFormat("Action ID: {0}", message.actionId); Log.DebugFormat("x: {0}", message.x); Log.DebugFormat("y: {0}", message.y); Log.DebugFormat("z: {0}", message.z); Log.DebugFormat("face: {0}", message.face); if (message.entityId != EntityId) return; switch (message.actionId) { case 5: // Shoot arrow { if (_itemUseTimer == null) return; MetadataSlot itemSlot = Inventory.ItemInHand; Item itemInHand = ItemFactory.GetItem(itemSlot.Value.Id); if (itemInHand == null) return; // Cheat(?) _itemUseTimer.Stop(); itemInHand.Release(Level, this, new BlockCoordinates(message.x, message.y, message.z), _itemUseTimer.ElapsedMilliseconds); _itemUseTimer = null; MetadataDictionary metadata = new MetadataDictionary(); metadata[0] = new MetadataByte(0); Level.RelayBroadcast(this, new McpeSetEntityData { entityId = EntityId, metadata = metadata, }); break; } case 7: // Respawn HandleRespawn(null); break; default: return; } }
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; }