/// <summary> /// Pure chat completion /// </summary> public static void ParseClientChat(Client player, TabCompleteClient tab) { if (tab.Command.StartsWith(".")) { Client p = PlayerList.GetPlayerByName(tab.Command.Substring(1)); if (p != null) { player.SendToClient(TabComplete.Single("." + p.Name + " ")); } return; } string last = tab.Command; if (last.StartsWith("co")) { player.SendToClient(TabComplete.Single(last + " " + player.Session.Position.ToString("0"))); return; } { Client p = PlayerList.GetPlayerByName(last); if (p != null) { player.Queue.Queue(TabComplete.Single(p.Name)); return; } } player.SendToClient(TabComplete.Single(last + " /love " + player.Name + " ")); }
/// <summary> /// Completes the command. /// </summary> /// <returns>The completion or null if no match was found.</returns> /// <param name="player">Player.</param> /// <param name="c">command without the leading /</param> public void CompleteCommand(Client player, string c, TabComplete tab) { if (player.Admin()) { Complete(AdminStrings, c, tab); } Complete(CommandStrings, c, tab); }
void ParseTab(Client player, string[] cmd, int iarg, TabComplete tab) { if (cmd.Length <= iarg) { return; } c.CompleteCommand(player, cmd [iarg - 1], tab); }
void TabResize(Client player, string[] cmd, int iarg, TabComplete tab) { var r = player.Session.CurrentRegion; if (r == null) { player.TellSystem(Chat.Red, "No region here"); } else { tab.Alternatives.Add(r.MinX + " " + r.MaxX + " " + r.MinY + " " + r.MaxY + " " + r.MinZ + " " + r.MaxZ); } }
void TabMessage(Client player, string[] cmd, int iarg, TabComplete tab) { var r = player.Session.CurrentRegion; if (r == null) { player.TellSystem(Chat.Red, "No region here"); } else { tab.Alternatives.Add(player.Session.CurrentRegion.Message); } }
void GameRuleComplete(Client player, string[] cmd, int iarg, TabComplete tab) { if (cmd.Length != 2) { return; } string[] rules = new string[] { "doFireTick", "mobGriefing", "keepInventory", "doMobSpawning", "doMobLoot", "doTileDrops", }; CommandManager.Complete(rules, cmd [1], tab); }
void TabSet(Client player, string[] cmd, int iarg, TabComplete tab) { if (regionStart.ContainsKey(player.MinecraftUsername)) { int a = (int)regionStart [player.MinecraftUsername].Y; int b = (int)player.Session.Position.Y; if (a > b) { int t = a; a = b; b = t; } tab.Alternatives.Add(a + " " + b); } else { tab.Alternatives.Add("50 256"); } }
public static void ParseClientTab(Client player, TabCompleteClient tab) { string[] cmd = tab.Command.Substring(1).Replace(" ", " ").Split(' '); cmd [0] = cmd [0].Trim().Trim('/'); var tc = new TabComplete(); var commander = player.Session.World.Commands; if (commander != null) { player.Session.World.Commands.ParseTab(player, cmd, 1, tc); if (tc.Alternatives.Count > 0) { player.Queue.Queue(tc); return; } } Instance.ParseTab(player, cmd, 1, tc); if (tc.Alternatives.Count > 0) { player.Queue.Queue(tc); return; } if (cmd.Length > 1) { Client p; if (player.Admin(Permissions.AnyAdmin)) { p = PlayerList.GetPlayerByUsernameOrName(cmd [cmd.Length - 1]); } else { p = PlayerList.GetPlayerByName(cmd [cmd.Length - 1]); } if (p != null) { player.Queue.Queue(TabComplete.Single(p.Name)); } } }
public static void Complete(IEnumerable <string> list, string cmd, TabComplete tab) { if (cmd == "") { foreach (string s in list) { tab.Alternatives.Add("/" + s); } } else { foreach (string s in list) { if (s.StartsWith(cmd)) { tab.Alternatives.Add("/" + s); } } } }
public virtual void ParseTab(Client player, string[] cmd, int iarg, TabComplete tab) { if (cmd.Length < iarg) //Show all commands { CompleteCommand(player, "", tab); return; } if (cmd.Length == iarg) //Complete command { cmd [iarg - 1] = cmd [iarg - 1].ToLowerInvariant(); CompleteCommand(player, cmd [iarg - 1], tab); } if (CommandTabs.ContainsKey(cmd [iarg - 1])) { //Debug.WriteLine("TC: " + cmd.JoinFrom(0)); CommandTabs [cmd [iarg - 1]](player, cmd, iarg, tab); } }
void RegionTab(Client player, string[] cmd, int iarg, TabComplete tab) { base.ParseTab(player, cmd, iarg + 1, tab); }
public static void SetTabComplete(TabComplete completer) { instance.tabComplete = completer; }
private void InvokeTabComplete(TabComplete packet) { packetListener.OnTabComplete(packet); }
public void OnTabComplete(TabComplete packet) { }
public void NetThread() { SessionIDRequest sessionID = new SessionIDRequest(Storage.Network.UserName, Storage.Network.Password); sessionID.SendRequest(); SharedSecretGenerator sharedSecret = new SharedSecretGenerator(); //random byte[16] gen Timer positionUpdater = new Timer(PositionSender, null, Timeout.Infinite, 50); //create position updater Socket networkSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); networkSocket.Connect(Storage.Network.Server, Storage.Network.Port); _stream = new EnhancedStream(networkSocket); Handshake handshake = new Handshake(_stream); handshake.Send(Storage.Network.UserName, Storage.Network.Server, Storage.Network.Port); // connect Storage.Network.IsConnected = true; while (Storage.Network.IsConnected) { switch (_packetIDbuffer = (byte)_stream.ReadByte()) { case 0x00: KeepAlive keepAlive = new KeepAlive(_stream); break; case 0x01: LoginRequest loginRequest = new LoginRequest(_stream); //positionUpdater.Change(0, 50); ClientSettings clientSettings = new ClientSettings(_stream); clientSettings.Send(); break; case 0x03: ChatMessage chatMessage = new ChatMessage(_stream); break; case 0x04: TimeUpdate timeUpdate = new TimeUpdate(_stream); break; case 0x05: EntityEquipment entityEquipment = new EntityEquipment(_stream); break; case 0x06: SpawnPosition spawnPosition = new SpawnPosition(_stream); break; case 0x08: UpdateHealth updateHealth = new UpdateHealth(_stream); break; case 0x09: RespawnPacket respawnPacket = new RespawnPacket(_stream); break; case 0x0D: _playerPositionLook = new PlayerPositionLook(_stream); break; case 0x10: HeldItemChange heldItemChange = new HeldItemChange(_stream); break; case 0x11: UseBed useBed = new UseBed(_stream); break; case 0x12: Animation animation = new Animation(_stream); break; case 0x14: SpawnNamedEntity spawnNamedEntity = new SpawnNamedEntity(_stream); break; case 0x16: CollectItem collectItem = new CollectItem(_stream); break; case 0x17: SpawnObjectVehicle spawnObjectVehicle = new SpawnObjectVehicle(_stream); break; case 0x18: SpawnMob spawnMob = new SpawnMob(_stream); break; case 0x19: SpawnPainting spawnPainting = new SpawnPainting(_stream); break; case 0x1A: SpawnExperienceOrb spawnExperienceOrb = new SpawnExperienceOrb(_stream); break; case 0x1C: EntityVelocity entityVelocity = new EntityVelocity(_stream); break; case 0x1D: DestroyEntity destroyEntity = new DestroyEntity(_stream); break; case 0x1E: Entity entity = new Entity(_stream); break; case 0x1F: EntityRelativeMove entityRelativeMove = new EntityRelativeMove(_stream); break; case 0x20: EntityLook entityLook = new EntityLook(_stream); break; case 0x21: EntityLookRelativeMove entityLookRelativeMove = new EntityLookRelativeMove(_stream); break; case 0x22: EntityTeleport entityTeleport = new EntityTeleport(_stream); break; case 0x23: EntityHeadLook entityHeadLook = new EntityHeadLook(_stream); break; case 0x26: EntityStatus entityStatus = new EntityStatus(_stream); break; case 0x27: AttachEntity attachEntity = new AttachEntity(_stream); break; case 0x28: EntityMetadata entityMetadata = new EntityMetadata(_stream); break; case 0x29: EntityEffect entityEffect = new EntityEffect(_stream); break; case 0x2A: RemoveEntityEffect removeEntityEffect = new RemoveEntityEffect(_stream); break; case 0x2B: SetExperience setExperience = new SetExperience(_stream); break; case 0x33: ChunkData mapChunk = new ChunkData(_stream); break; case 0x34: MultiBlockChange multiBlockChange = new MultiBlockChange(_stream); break; case 0x35: BlockChange blockChange = new BlockChange(_stream); break; case 0x36: BlockAction blockAction = new BlockAction(_stream); break; case 0x37: BlockBreakAnimation blockBreakAnimation = new BlockBreakAnimation(_stream); break; case 0x38: MapChunkBulk mapChunkBulk = new MapChunkBulk(_stream); break; case 0x3C: Explosion explosion = new Explosion(_stream); break; case 0x3D: SoundParticleEffect soundParticleEffect = new SoundParticleEffect(_stream); break; case 0x3E: NamedSoundEffect namedSoundEffect = new NamedSoundEffect(_stream); break; case 0x46: ChangeGameState changeGameState = new ChangeGameState(_stream); break; case 0x47: Thunderbolt thunderbolt = new Thunderbolt(_stream); break; case 0x64: OpenWindow openWindow = new OpenWindow(_stream); break; case 0x65: CloseWindow closeWindow = new CloseWindow(_stream); break; case 0x67: SetSlot setSlot = new SetSlot(_stream); break; case 0x68: SetWindowItems setWindowItems = new SetWindowItems(_stream); break; case 0x69: UpdateWindowProperty updateWindowProperty = new UpdateWindowProperty(_stream); break; case 0x6A: ConfirmTransaction confirmTransaction = new ConfirmTransaction(_stream); break; case 0x6B: CreativeInventoryAction creativeInventoryAction = new CreativeInventoryAction(_stream); break; case 0x6C: EnchantItem enchantItem = new EnchantItem(_stream); break; case 0x82: UpdateSign updateSign = new UpdateSign(_stream); break; case 0x83: ItemData itemData = new ItemData(_stream); break; case 0x84: UpdateTileEntity updateTileEntity = new UpdateTileEntity(_stream); break; case 0xC8: IncrementStatistic incrementStatistic = new IncrementStatistic(_stream); break; case 0xC9: PlayerListItem playerListItem = new PlayerListItem(_stream); break; case 0xCA: PlayerAbilities playerAbilities = new PlayerAbilities(_stream); break; case 0xCB: TabComplete tabcomplete = new TabComplete(_stream); break; case 0xFA: PluginMessage pluginMessage = new PluginMessage(_stream); break; case 0xFC: EncryptionKeyResponse encryptionKeyResponse = new EncryptionKeyResponse(_stream); encryptionKeyResponse.Get(); _stream = new AesStream(networkSocket, _stream, sharedSecret.Get); ClientStatuses clientStatuses = new ClientStatuses(_stream); clientStatuses.Send(0); break; case 0xFD: EncryptionKeyRequest encryptionKeyRequest = new EncryptionKeyRequest(_stream, sharedSecret.Get, sessionID.GetID(), Storage.Network.UserName); // encryptionKeyResponse = new EncryptionKeyResponse(_stream); encryptionKeyResponse.Send(encryptionKeyRequest.GetEncSharedSecret(), encryptionKeyRequest.GetEncToken()); break; case 0xFF: positionUpdater = null; DisconnectKick disconnectKick = new DisconnectKick(_stream); networkSocket.Disconnect(false); break; default: throw new Exception("We got a Unknown Packet (" + _packetIDbuffer + ")from the Server. This should not happen: Error in Packet parser"); } } }
public virtual void OnTabComplete(TabComplete packet) { }