From b9eb8d09ea9cd21a0507bcfa1ef962a7ccd2c866 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 5 Jan 2016 18:08:30 +1100 Subject: [PATCH] Remove some of the old WoM direct code, also cleanup IRC and fix an issue with it (Thanks WhatIDoHere) --- Commands/other/CmdServer.cs | 4 - GUI/PropertyWindow.Designer.cs | 119 +--- GUI/PropertyWindow.cs | 43 -- GUI/WoM.Designer.cs | 135 ---- GUI/WoM.cs | 59 -- GUI/WoM.resx | 1150 -------------------------------- IRC/ForgeBot.cs | 583 +++++++++------- MCGalaxy_.csproj | 10 - Network/WOMBeat.cs | 112 ---- Server/Server.cs | 1 - 10 files changed, 347 insertions(+), 1869 deletions(-) delete mode 100644 GUI/WoM.Designer.cs delete mode 100644 GUI/WoM.cs delete mode 100644 GUI/WoM.resx delete mode 100644 Network/WOMBeat.cs diff --git a/Commands/other/CmdServer.cs b/Commands/other/CmdServer.cs index cd9b2718e..b5ac2c43f 100644 --- a/Commands/other/CmdServer.cs +++ b/Commands/other/CmdServer.cs @@ -300,7 +300,6 @@ namespace MCGalaxy.Commands Server.adminsjoinsilent = false; //Server.mono = false; Server.server_owner = "Notch"; - Server.WomDirect = false; Server.flipHead = false; @@ -313,9 +312,6 @@ namespace MCGalaxy.Commands Server.showEmptyRanks = false; - //WOM Direct - Server.WomDirect = false; - #endregion } diff --git a/GUI/PropertyWindow.Designer.cs b/GUI/PropertyWindow.Designer.cs index 05b7cf2fc..7693c85a5 100644 --- a/GUI/PropertyWindow.Designer.cs +++ b/GUI/PropertyWindow.Designer.cs @@ -133,10 +133,6 @@ namespace MCGalaxy.Gui this.lsNudRoundTime = new System.Windows.Forms.NumericUpDown(); this.lsNudFloodTime = new System.Windows.Forms.NumericUpDown(); this.lsCmbControlRank = new System.Windows.Forms.ComboBox(); - this.cmbGrieferStoneType = new System.Windows.Forms.ComboBox(); - this.chkGrieferStoneBan = new System.Windows.Forms.CheckBox(); - this.txtGrieferStone = new System.Windows.Forms.TextBox(); - this.cmbGrieferStoneRank = new System.Windows.Forms.ComboBox(); this.lsNudLives = new System.Windows.Forms.NumericUpDown(); this.cmbAFKKickPerm = new System.Windows.Forms.ComboBox(); this.chkGuestLimitNotify = new System.Windows.Forms.CheckBox(); @@ -179,8 +175,6 @@ namespace MCGalaxy.Gui this.lblGlobalChatColor = new System.Windows.Forms.Label(); this.chkGlobalChat = new System.Windows.Forms.CheckBox(); this.groupBox13 = new System.Windows.Forms.GroupBox(); - this.label48 = new System.Windows.Forms.Label(); - this.label47 = new System.Windows.Forms.Label(); this.chkShowEmptyRanks = new System.Windows.Forms.CheckBox(); this.chkIgnoreGlobal = new System.Windows.Forms.CheckBox(); this.chkNotifyOnJoinLeave = new System.Windows.Forms.CheckBox(); @@ -192,7 +186,6 @@ namespace MCGalaxy.Gui this.chkSmile = new System.Windows.Forms.CheckBox(); this.label34 = new System.Windows.Forms.Label(); this.groupBox12 = new System.Windows.Forms.GroupBox(); - this.chkGrieferStone = new System.Windows.Forms.CheckBox(); this.chkShutdown = new System.Windows.Forms.CheckBox(); this.txtShutdown = new System.Windows.Forms.TextBox(); this.hackrank_kick_time = new System.Windows.Forms.TextBox(); @@ -253,10 +246,8 @@ namespace MCGalaxy.Gui this.groupBox2 = new System.Windows.Forms.GroupBox(); this.label30 = new System.Windows.Forms.Label(); this.txechx = new System.Windows.Forms.CheckBox(); - this.button3 = new System.Windows.Forms.Button(); this.editTxtsBt = new System.Windows.Forms.Button(); this.txtHost = new System.Windows.Forms.TextBox(); - this.chkWomDirect = new System.Windows.Forms.CheckBox(); this.chkRestart = new System.Windows.Forms.CheckBox(); this.groupBox3 = new System.Windows.Forms.GroupBox(); this.label7 = new System.Windows.Forms.Label(); @@ -1507,46 +1498,6 @@ namespace MCGalaxy.Gui this.lsCmbControlRank.TabIndex = 9; this.toolTip.SetToolTip( this.lsCmbControlRank, "Minimum rank required to administrate Lava Survival." ); // - // cmbGrieferStoneType - // - this.cmbGrieferStoneType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbGrieferStoneType.FormattingEnabled = true; - this.cmbGrieferStoneType.Location = new System.Drawing.Point( 110, 138 ); - this.cmbGrieferStoneType.Name = "cmbGrieferStoneType"; - this.cmbGrieferStoneType.Size = new System.Drawing.Size( 94, 21 ); - this.cmbGrieferStoneType.TabIndex = 13; - this.toolTip.SetToolTip( this.cmbGrieferStoneType, "The block type that griefer_stone will look like in-game." ); - // - // chkGrieferStoneBan - // - this.chkGrieferStoneBan.Appearance = System.Windows.Forms.Appearance.Button; - this.chkGrieferStoneBan.AutoSize = true; - this.chkGrieferStoneBan.Location = new System.Drawing.Point( 210, 137 ); - this.chkGrieferStoneBan.Name = "chkGrieferStoneBan"; - this.chkGrieferStoneBan.Size = new System.Drawing.Size( 127, 23 ); - this.chkGrieferStoneBan.TabIndex = 43; - this.chkGrieferStoneBan.Text = "Griefer_stone Tempban"; - this.toolTip.SetToolTip( this.chkGrieferStoneBan, "Should griefer_stone tempban the player or just kick them?" ); - this.chkGrieferStoneBan.UseVisualStyleBackColor = true; - // - // txtGrieferStone - // - this.txtGrieferStone.Location = new System.Drawing.Point( 186, 129 ); - this.txtGrieferStone.Name = "txtGrieferStone"; - this.txtGrieferStone.Size = new System.Drawing.Size( 134, 21 ); - this.txtGrieferStone.TabIndex = 36; - this.toolTip.SetToolTip( this.txtGrieferStone, "Kick message for griefer_stone. Only works if tempban is off!" ); - // - // cmbGrieferStoneRank - // - this.cmbGrieferStoneRank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbGrieferStoneRank.FormattingEnabled = true; - this.cmbGrieferStoneRank.Location = new System.Drawing.Point( 148, 112 ); - this.cmbGrieferStoneRank.Name = "cmbGrieferStoneRank"; - this.cmbGrieferStoneRank.Size = new System.Drawing.Size( 87, 21 ); - this.cmbGrieferStoneRank.TabIndex = 45; - this.toolTip.SetToolTip( this.cmbGrieferStoneRank, "The maximum rank that griefer_stone will kick or ban." ); - // // lsNudLives // this.lsNudLives.Location = new System.Drawing.Point( 71, 133 ); @@ -1991,11 +1942,6 @@ namespace MCGalaxy.Gui this.groupBox13.AutoSize = true; this.groupBox13.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.groupBox13.Controls.Add( this.chkGuestLimitNotify ); - this.groupBox13.Controls.Add( this.cmbGrieferStoneRank ); - this.groupBox13.Controls.Add( this.label48 ); - this.groupBox13.Controls.Add( this.chkGrieferStoneBan ); - this.groupBox13.Controls.Add( this.cmbGrieferStoneType ); - this.groupBox13.Controls.Add( this.label47 ); this.groupBox13.Controls.Add( this.chkShowEmptyRanks ); this.groupBox13.Controls.Add( this.chkIgnoreGlobal ); this.groupBox13.Controls.Add( this.chkNotifyOnJoinLeave ); @@ -2015,24 +1961,6 @@ namespace MCGalaxy.Gui this.groupBox13.TabStop = false; this.groupBox13.Text = "Extra"; // - // label48 - // - this.label48.AutoSize = true; - this.label48.Location = new System.Drawing.Point( 6, 115 ); - this.label48.Name = "label48"; - this.label48.Size = new System.Drawing.Size( 140, 13 ); - this.label48.TabIndex = 44; - this.label48.Text = "Griefer_stone kick/ban rank:"; - // - // label47 - // - this.label47.AutoSize = true; - this.label47.Location = new System.Drawing.Point( 6, 140 ); - this.label47.Name = "label47"; - this.label47.Size = new System.Drawing.Size( 98, 13 ); - this.label47.TabIndex = 42; - this.label47.Text = "Griefer_stone type:"; - // // chkShowEmptyRanks // this.chkShowEmptyRanks.Appearance = System.Windows.Forms.Appearance.Button; @@ -2137,8 +2065,6 @@ namespace MCGalaxy.Gui // this.groupBox12.AutoSize = true; this.groupBox12.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.groupBox12.Controls.Add( this.txtGrieferStone ); - this.groupBox12.Controls.Add( this.chkGrieferStone ); this.groupBox12.Controls.Add( this.chkShutdown ); this.groupBox12.Controls.Add( this.txtShutdown ); this.groupBox12.Controls.Add( this.hackrank_kick ); @@ -2155,16 +2081,6 @@ namespace MCGalaxy.Gui this.groupBox12.TabStop = false; this.groupBox12.Text = "Messages"; // - // chkGrieferStone - // - this.chkGrieferStone.AutoSize = true; - this.chkGrieferStone.Location = new System.Drawing.Point( 12, 132 ); - this.chkGrieferStone.Name = "chkGrieferStone"; - this.chkGrieferStone.Size = new System.Drawing.Size( 174, 17 ); - this.chkGrieferStone.TabIndex = 35; - this.chkGrieferStone.Text = "Custom griefer_stone message:"; - this.chkGrieferStone.UseVisualStyleBackColor = true; - // // chkShutdown // this.chkShutdown.AutoSize = true; @@ -2755,10 +2671,8 @@ namespace MCGalaxy.Gui this.groupBox2.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.groupBox2.Controls.Add( this.label30 ); this.groupBox2.Controls.Add( this.txechx ); - this.groupBox2.Controls.Add( this.button3 ); this.groupBox2.Controls.Add( this.editTxtsBt ); this.groupBox2.Controls.Add( this.txtHost ); - this.groupBox2.Controls.Add( this.chkWomDirect ); this.groupBox2.Controls.Add( this.chkRestart ); this.groupBox2.Controls.Add( this.chkPublic ); this.groupBox2.Controls.Add( this.chkVerify ); @@ -2791,16 +2705,6 @@ namespace MCGalaxy.Gui this.txechx.UseVisualStyleBackColor = true; this.txechx.CheckedChanged += new System.EventHandler( this.txechx_CheckedChanged ); // - // button3 - // - this.button3.Location = new System.Drawing.Point( 10, 49 ); - this.button3.Name = "button3"; - this.button3.Size = new System.Drawing.Size( 120, 27 ); - this.button3.TabIndex = 43; - this.button3.Text = "Edit WoM Direct Options"; - this.button3.UseVisualStyleBackColor = true; - this.button3.Click += new System.EventHandler( this.button3_Click ); - // // editTxtsBt // this.editTxtsBt.Cursor = System.Windows.Forms.Cursors.Hand; @@ -2821,18 +2725,6 @@ namespace MCGalaxy.Gui this.txtHost.TabIndex = 2; this.txtHost.TextChanged += new System.EventHandler( this.txtPort_TextChanged ); // - // chkWomDirect - // - this.chkWomDirect.Appearance = System.Windows.Forms.Appearance.Button; - this.chkWomDirect.AutoSize = true; - this.chkWomDirect.Location = new System.Drawing.Point( 135, 49 ); - this.chkWomDirect.Name = "chkWomDirect"; - this.chkWomDirect.Size = new System.Drawing.Size( 107, 23 ); - this.chkWomDirect.TabIndex = 25; - this.chkWomDirect.Text = "Enable WoM Direct"; - this.chkWomDirect.UseVisualStyleBackColor = true; - this.chkWomDirect.CheckedChanged += new System.EventHandler( this.chkWomDirect_CheckedChanged ); - // // chkRestart // this.chkRestart.Appearance = System.Windows.Forms.Appearance.Button; @@ -4911,8 +4803,6 @@ namespace MCGalaxy.Gui private System.Windows.Forms.Label lblGlobalChatColor; private System.Windows.Forms.TextBox txtMaxUndo; private System.Windows.Forms.Label label52; - private System.Windows.Forms.TextBox txtGrieferStone; - private System.Windows.Forms.CheckBox chkGrieferStone; private System.Windows.Forms.GroupBox groupBox20; private System.Windows.Forms.Label label54; private System.Windows.Forms.Label label53; @@ -4958,14 +4848,8 @@ namespace MCGalaxy.Gui private System.Windows.Forms.ComboBox lsCmbControlRank; private System.Windows.Forms.Label label68; private System.Windows.Forms.Button lsBtnEndVote; - private System.Windows.Forms.ComboBox cmbGrieferStoneType; - private System.Windows.Forms.Label label47; - private System.Windows.Forms.CheckBox chkGrieferStoneBan; - private System.Windows.Forms.ComboBox cmbGrieferStoneRank; - private System.Windows.Forms.Label label48; private System.Windows.Forms.NumericUpDown numCountReset; private System.Windows.Forms.Label label69; - private System.Windows.Forms.CheckBox chkWomDirect; private System.Windows.Forms.NumericUpDown lsNudLives; private System.Windows.Forms.TextBox txtSQLPort; private System.Windows.Forms.Label label70; @@ -4987,7 +4871,6 @@ namespace MCGalaxy.Gui private System.Windows.Forms.Label label75; private System.Windows.Forms.Label label76; private System.Windows.Forms.ComboBox cmbAFKKickPerm; - private System.Windows.Forms.Button button3; private System.Windows.Forms.CheckBox chkGuestLimitNotify; private System.Windows.Forms.TextBox levelList; private System.Windows.Forms.Label label78; @@ -5066,4 +4949,4 @@ namespace MCGalaxy.Gui private System.Windows.Forms.ListBox lstCommands; private System.Windows.Forms.GroupBox groupBox24; } -} +} \ No newline at end of file diff --git a/GUI/PropertyWindow.cs b/GUI/PropertyWindow.cs index b337d76b9..b0c783117 100644 --- a/GUI/PropertyWindow.cs +++ b/GUI/PropertyWindow.cs @@ -62,7 +62,6 @@ namespace MCGalaxy.Gui { cmbIRCColour.Items.AddRange(colors); cmbColor.Items.AddRange(colors); cmbGlobalChatColor.Items.AddRange(colors); - button3.Enabled = Server.WomDirect; grpIRC.BackColor = Server.irc ? Color.White : Color.LightGray; grpSQL.BackColor = Server.useMySQL ? Color.White : Color.LightGray; @@ -85,7 +84,6 @@ namespace MCGalaxy.Gui { cmbVerificationRank.Items.Add(grp.name); lsCmbSetupRank.Items.Add(grp.name); lsCmbControlRank.Items.Add(grp.name); - cmbGrieferStoneRank.Items.Add(grp.name); cmbAFKKickPerm.Items.Add(grp.name); cmbViewQueue.Items.Add(grp.name); cmbEnterQueue.Items.Add(grp.name); @@ -125,7 +123,6 @@ namespace MCGalaxy.Gui { cmbOpChat.SelectedIndex = ( opchatperm != String.Empty ? cmbOpChat.Items.IndexOf(opchatperm) : 1 ); cmbAdminChat.SelectedIndex = ( adminchatperm != String.Empty ? cmbAdminChat.Items.IndexOf(adminchatperm) : 1 ); cmbVerificationRank.SelectedIndex = ( verifyadminsperm != String.Empty ? cmbVerificationRank.Items.IndexOf(verifyadminsperm) : 1 ); - cmbGrieferStoneRank.SelectedIndex = ( grieferstonerank != String.Empty ? cmbGrieferStoneRank.Items.IndexOf(grieferstonerank) : 1 ); cmbAFKKickPerm.SelectedIndex = ( afkkickrank != String.Empty ? cmbAFKKickPerm.Items.IndexOf(afkkickrank) : 1 ); cmbEnterQueue.SelectedIndex = ( enterqueuerank != String.Empty ? cmbEnterQueue.Items.IndexOf(enterqueuerank) : 1 ); cmbLeaveQueue.SelectedIndex = ( leavequeuerank != String.Empty ? cmbLeaveQueue.Items.IndexOf(leavequeuerank) : 1 ); @@ -133,9 +130,6 @@ namespace MCGalaxy.Gui { cmbClearQueue.SelectedIndex = ( clearqueuerank != String.Empty ? cmbClearQueue.Items.IndexOf(clearqueuerank) : 1 ); cmbGotoNext.SelectedIndex = ( gotonextrank != String.Empty ? cmbGotoNext.Items.IndexOf(gotonextrank) : 1 ); - for ( byte b = 1; b < 50; b++ ) - cmbGrieferStoneType.Items.Add(Block.Name(b)); - //Load server stuff LoadProp("properties/server.properties"); LoadRanks(); @@ -458,14 +452,6 @@ namespace MCGalaxy.Gui { txtShutdown.Text = value; break; - case "custom-griefer-stone": - chkGrieferStone.Checked = ( value.ToLower() == "true" ); - break; - - case "custom-griefer-stone-message": - txtGrieferStone.Text = value; - break; - case "auto-restart": chkRestartTime.Checked = ( value.ToLower() == "true" ); break; @@ -646,21 +632,6 @@ namespace MCGalaxy.Gui { color = c.Name(value); if ( color != "" ) color = value; else { Server.s.Log("Could not find " + value); return; } } cmbGlobalChatColor.SelectedIndex = cmbGlobalChatColor.Items.IndexOf(c.Name(color)); break; - - case "griefer-stone-tempban": - chkGrieferStoneBan.Checked = value.ToLower() == "true"; - break; - - case "griefer-stone-type": - try { cmbGrieferStoneType.SelectedIndex = cmbGrieferStoneType.Items.IndexOf(value); } - catch { - try { cmbGrieferStoneType.SelectedIndex = cmbGrieferStoneType.Items.IndexOf(Block.Name(Convert.ToByte(value))); } - catch { Server.s.Log("Could not find " + value); } - } - break; - case "wom-direct": - chkWomDirect.Checked = value.ToLower() == "true"; - break; case "premium-only": chkPrmOnly.Checked = value.ToLower() == "true"; break; @@ -813,8 +784,6 @@ namespace MCGalaxy.Gui { Server.customBanMessage = txtBanMessage.Text; Server.customShutdown = chkShutdown.Checked; Server.customShutdownMessage = txtShutdown.Text; - Server.customGrieferStone = chkGrieferStone.Checked; - Server.customGrieferStoneMessage = txtGrieferStone.Text; Server.higherranktp = chkTpToHigherRanks.Checked; Server.globalignoreops = chkIgnoreGlobal.Checked; // Wasn't in previous setting-saver @@ -844,10 +813,6 @@ namespace MCGalaxy.Gui { Server.UseGlobalChat = chkGlobalChat.Checked; Server.GlobalChatColor = cmbGlobalChatColor.SelectedItem.ToString(); - Server.WomDirect = chkWomDirect.Checked; - //Server.Server_ALT = ; - //Server.Server_Disc = ; - //Server.Server_Flag = ; Server.PremiumPlayersOnly = chkPrmOnly.Checked; Server.reviewview = Group.GroupList.Find(grp => grp.name == cmbViewQueue.SelectedItem.ToString()).Permission; @@ -1677,14 +1642,6 @@ txtBackupLocation.Text = folderDialog.SelectedPath; } - private void button3_Click(object sender, EventArgs e) { - new GUI.WoM().Show(); - } - - private void chkWomDirect_CheckedChanged(object sender, EventArgs e) { - button3.Enabled = chkWomDirect.Checked; - } - private void forceUpdateBtn_Click(object sender, EventArgs e) { forceUpdateBtn.Enabled = false; if ( MessageBox.Show("Would you like to force update MCGalaxy now?", "Force Update", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK ) { diff --git a/GUI/WoM.Designer.cs b/GUI/WoM.Designer.cs deleted file mode 100644 index 3eb0a9f5c..000000000 --- a/GUI/WoM.Designer.cs +++ /dev/null @@ -1,135 +0,0 @@ -namespace MCGalaxy.GUI -{ - partial class WoM - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WoM)); - this.label1 = new System.Windows.Forms.Label(); - this.textBox1 = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.textBox2 = new System.Windows.Forms.TextBox(); - this.textBox3 = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(31, 29); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(69, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Server Name"; - this.label1.Click += new System.EventHandler(this.label1_Click); - // - // textBox1 - // - this.textBox1.Location = new System.Drawing.Point(12, 45); - this.textBox1.Name = "textBox1"; - this.textBox1.Size = new System.Drawing.Size(100, 20); - this.textBox1.TabIndex = 1; - this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(31, 78); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(60, 13); - this.label2.TabIndex = 2; - this.label2.Text = "Description"; - // - // textBox2 - // - this.textBox2.Location = new System.Drawing.Point(12, 94); - this.textBox2.Name = "textBox2"; - this.textBox2.Size = new System.Drawing.Size(100, 20); - this.textBox2.TabIndex = 3; - // - // textBox3 - // - this.textBox3.Location = new System.Drawing.Point(12, 135); - this.textBox3.Name = "textBox3"; - this.textBox3.Size = new System.Drawing.Size(100, 20); - this.textBox3.TabIndex = 4; - this.textBox3.TextChanged += new System.EventHandler(this.textBox3_TextChanged); - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(46, 119); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(27, 13); - this.label3.TabIndex = 5; - this.label3.Text = "Flag"; - // - // button1 - // - this.button1.Location = new System.Drawing.Point(25, 165); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(75, 23); - this.button1.TabIndex = 6; - this.button1.Text = "Save"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // WoM - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(130, 200); - this.Controls.Add(this.button1); - this.Controls.Add(this.label3); - this.Controls.Add(this.textBox3); - this.Controls.Add(this.textBox2); - this.Controls.Add(this.label2); - this.Controls.Add(this.textBox1); - this.Controls.Add(this.label1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MaximizeBox = false; - this.Name = "WoM"; - this.Text = "WoM Direct"; - this.Load += new System.EventHandler(this.WoM_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TextBox textBox1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox textBox2; - private System.Windows.Forms.TextBox textBox3; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button button1; - } -} \ No newline at end of file diff --git a/GUI/WoM.cs b/GUI/WoM.cs deleted file mode 100644 index 325c06dfd..000000000 --- a/GUI/WoM.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Windows.Forms; - -namespace MCGalaxy.GUI -{ - public partial class WoM : Form - { - public WoM() - { - InitializeComponent(); - } - - private void label1_Click(object sender, EventArgs e) - { - - } - - private void textBox1_TextChanged(object sender, EventArgs e) - { - - } - - private void textBox3_TextChanged(object sender, EventArgs e) - { - if (textBox3.Text.ToCharArray().Length > 15) - { - MessageBox.Show("Only 15 characters allowed!", "Warning"); - return; - } - } - - private void button1_Click(object sender, EventArgs e) - { - if (WOMBeat.SetSettings(Server.IP, "" + Server.port, textBox1.Text, textBox2.Text, textBox3.Text)) - { - MessageBox.Show("Your settings have been saved!", "Results", MessageBoxButtons.OK, MessageBoxIcon.Information); - Server.Server_ALT = textBox1.Text; - Server.Server_Disc = textBox2.Text; - Server.Server_Flag = textBox3.Text; - this.Close(); - } - else - MessageBox.Show("There was an error, check the error log for more details!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - - private void WoM_Load(object sender, EventArgs e) - { - textBox1.Text = Server.Server_ALT; - textBox2.Text = Server.Server_Disc; - textBox3.Text = Server.Server_Flag; - } - } -} diff --git a/GUI/WoM.resx b/GUI/WoM.resx deleted file mode 100644 index 4b2287ade..000000000 --- a/GUI/WoM.resx +++ /dev/null @@ -1,1150 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACx4o/wse - KP8LHij/Cx4o/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAVNkn/FTZJ/ydnif8nZ4n/Cx4o/wseKP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAABU2Sf8VNkn/J2eJ/ydnif8LHij/Cx4o/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVNkn/FTZJ/ydnif8nZ4n/Cx4o/wseKP8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU2Sf8VNkn/J2eJ/ydnif8LHij/Cx4o/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVNkn/FTZJ/x5O - aP8eTmj/Cx4o/wseKP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU2 - Sf8VNkn/Hk5o/x5OaP8LHij/Cx4o/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAVNkn/FTZJ/ydnif8nZ4n/Cx4o/wseKP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAERERP9ERET/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAABU2Sf8VNkn/J2eJ/ydnif8LHij/Cx4o/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAARERE/0RERP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVNkn/FTZJ/x5OaP8eTmj/Cx4o/wse - KP8AAAAAAAAAAAAAAAAAAAAARERE/0RERP///////////xU2Sf8VNkn//P39//z9/f8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU2Sf8VNkn/Hk5o/x5O - aP8LHij/Cx4o/wAAAAAAAAAAAAAAAAAAAABERET/RERE////////////FTZJ/xU2Sf/8/f3//P39/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAVNkn/FTZJ/ydnif8nZ4n/Cx4o/wseKP9ERET/RERE////////////2NjY/9jY2P/BwcH/wcHB/wse - KP8LHij/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAABU2Sf8VNkn/J2eJ/ydnif8LHij/Cx4o/0RERP9ERET////////////Y2Nj/2NjY/8HB - wf/BwcH/Cx4o/wseKP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVNkn/FTZJ/0RERP9ERET////////////Y2Nj/2NjY/8HB - wf/BwcH/2NjY/9jY2P///////////0RERP9ERET/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU2Sf8VNkn/RERE/0RERP///////////9jY - 2P/Y2Nj/wcHB/8HBwf/Y2Nj/2NjY////////////RERE/0RERP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARERE/0RERP////////////// - ////////wcHB/8HBwf/Y2Nj/2NjY////////////RERE/0RERP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERET/RERE//// - ///////////////////BwcH/wcHB/9jY2P/Y2Nj///////////9ERET/RERE/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABERET/RERE//// - ////////2NjY/9jY2P/BwcH/wcHB//////////////////////9ERET/RERE/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERE - RP9ERET////////////Y2Nj/2NjY/8HBwf/BwcH//////////////////////0RERP9ERET/AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERE - RP9ERET////////////Y2Nj/2NjY/8HBwf/BwcH/2NjY/9jY2P///////////0RERP9ERET/Cx4o/wse - KP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAARERE/0RERP///////////9jY2P/Y2Nj/wcHB/8HBwf/Y2Nj/2NjY////////////RERE/0RE - RP8LHij/Cx4o/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAseKP8LHij/wcHB/8HBwf/Y2Nj/2NjY////////////RERE/0RE - RP8VNkn/FTZJ/ydnif8nZ4n/+Pn5//j5+f8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACx4o/wseKP/BwcH/wcHB/9jY2P/Y2Nj///////// - //9ERET/RERE/xU2Sf8VNkn/J2eJ/ydnif/4+fn/+Pn5/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/f3//P39/xU2Sf8VNkn///////// - //9ERET/RERE/wAAAAAAAAAAAAAAAAAAAADJ0NX/ydDV/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz9/f/8/f3/FTZJ/xU2 - Sf///////////0RERP9ERET/AAAAAAAAAAAAAAAAAAAAAMnQ1f/J0NX/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAERERP9ERET/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAARERE/0RERP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////8P////D////wP///8D/ - ///wP///8D////wP///8D////wP8//8D/P//wPAP/8DwD//wAA//8AAP//wAA//8AAP//AAP//wAD//w - AD//8AA//8AAP//AAD//8AAP//AAD//wDz//8A8///8/////P////////////w== - - - \ No newline at end of file diff --git a/IRC/ForgeBot.cs b/IRC/ForgeBot.cs index caa5457bb..c33676b49 100644 --- a/IRC/ForgeBot.cs +++ b/IRC/ForgeBot.cs @@ -1,19 +1,19 @@ /* - Copyright 2011 MCGalaxy - - Dual-licensed under the Educational Community License, Version 2.0 and - the GNU General Public License, Version 3 (the "Licenses"); you may - not use this file except in compliance with the Licenses. You may - obtain a copy of the Licenses at - - http://www.opensource.org/licenses/ecl2.php - http://www.gnu.org/licenses/gpl-3.0.html - - Unless required by applicable law or agreed to in writing, - software distributed under the Licenses are distributed on an "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - or implied. See the Licenses for the specific language governing - permissions and limitations under the Licenses. + Copyright 2011 MCGalaxy + + Dual-licensed under the Educational Community License, Version 2.0 and + the GNU General Public License, Version 3 (the "Licenses"); you may + not use this file except in compliance with the Licenses. You may + obtain a copy of the Licenses at + + http://www.opensource.org/licenses/ecl2.php + http://www.gnu.org/licenses/gpl-3.0.html + + Unless required by applicable law or agreed to in writing, + software distributed under the Licenses are distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the Licenses for the specific language governing + permissions and limitations under the Licenses. */ using System; using System.Collections.Generic; @@ -23,153 +23,162 @@ using MCGalaxy.Commands; using Sharkbite.Irc; namespace MCGalaxy { - public sealed class ForgeBot { - public static readonly string ColorSignal = "\x03"; + public sealed class ForgeBot { + public static readonly string ColorSignal = "\x03"; public static readonly string ColorSignal2 = "\x030"; - public static readonly string ResetSignal = "\x03"; - private Connection connection; - private List banCmd; - private string channel, opchannel; - private string nick; - private string server; - private bool reset = false; - private byte retries = 0; - public string usedCmd = ""; - public ForgeBot(string channel, string opchannel, string nick, string server) { - /*if (!File.Exists("Sharkbite.Thresher.dll")) - { - Server.irc = false; - Server.s.Log("[IRC] The IRC dll was not found!"); - return; - }*/ - this.channel = channel.Trim(); this.opchannel = opchannel.Trim(); this.nick = nick.Replace(" ", ""); this.server = server; - banCmd = new List(); - banCmd.Add("resetbot"); - banCmd.Add("oprules"); - - if (Server.irc) { + public static readonly string ResetSignal = "\x03"; + private Connection connection; + private List banCmd; + private string channel, opchannel; + private string nick; + private string server; + private bool reset = false; + private byte retries = 0; + public string usedCmd = ""; + Dictionary> users = new Dictionary>(); + + public ForgeBot(string channel, string opchannel, string nick, string server) { + this.channel = channel.Trim(); this.opchannel = opchannel.Trim(); this.nick = nick.Replace(" ", ""); this.server = server; + banCmd = new List(); + banCmd.Add("resetbot"); + banCmd.Add("oprules"); + + if (Server.irc) { ConnectionArgs con = new ConnectionArgs(nick, server); con.Port = Server.ircPort; connection = new Connection(con, false, false); - // Regster events for outgoing - Player.PlayerChat += new Player.OnPlayerChat(Player_PlayerChat); - Player.PlayerConnect += new Player.OnPlayerConnect(Player_PlayerConnect); - Player.PlayerDisconnect += new Player.OnPlayerDisconnect(Player_PlayerDisconnect); + // Regster events for outgoing + Player.PlayerChat += new Player.OnPlayerChat(Player_PlayerChat); + Player.PlayerConnect += new Player.OnPlayerConnect(Player_PlayerConnect); + Player.PlayerDisconnect += new Player.OnPlayerDisconnect(Player_PlayerDisconnect); - // Regster events for incoming - connection.Listener.OnNick += new NickEventHandler(Listener_OnNick); - connection.Listener.OnRegistered += new RegisteredEventHandler(Listener_OnRegistered); - connection.Listener.OnPublic += new PublicMessageEventHandler(Listener_OnPublic); - connection.Listener.OnPrivate += new PrivateMessageEventHandler(Listener_OnPrivate); - connection.Listener.OnError += new ErrorMessageEventHandler(Listener_OnError); - connection.Listener.OnQuit += new QuitEventHandler(Listener_OnQuit); - connection.Listener.OnJoin += new JoinEventHandler(Listener_OnJoin); - connection.Listener.OnPart += new PartEventHandler(Listener_OnPart); - connection.Listener.OnDisconnected += new DisconnectedEventHandler(Listener_OnDisconnected); + // Regster events for incoming + connection.Listener.OnNick += new NickEventHandler(Listener_OnNick); + connection.Listener.OnRegistered += new RegisteredEventHandler(Listener_OnRegistered); + connection.Listener.OnPublic += new PublicMessageEventHandler(Listener_OnPublic); + connection.Listener.OnPrivate += new PrivateMessageEventHandler(Listener_OnPrivate); + connection.Listener.OnError += new ErrorMessageEventHandler(Listener_OnError); + connection.Listener.OnQuit += new QuitEventHandler(Listener_OnQuit); + connection.Listener.OnJoin += new JoinEventHandler(Listener_OnJoin); + connection.Listener.OnPart += new PartEventHandler(Listener_OnPart); + connection.Listener.OnDisconnected += new DisconnectedEventHandler(Listener_OnDisconnected); + connection.Listener.OnChannelModeChange += new ChannelModeChangeEventHandler(Listener_OnChannelModeChange); + connection.Listener.OnNames += new NamesEventHandler(Listener_OnNames); + connection.Listener.OnKick += new KickEventHandler(Listener_OnKick); + connection.Listener.OnKill += new KillEventHandler(Listener_OnKill); - // Load banned commands list - if (File.Exists("text/ircbancmd.txt")) // Backwards compatibility - { - using (StreamWriter sw = File.CreateText("text/irccmdblacklist.txt")) { - sw.WriteLine("#Here you can put commands that cannot be used from the IRC bot."); - sw.WriteLine("#Lines starting with \"#\" are ignored."); - foreach (string line in File.ReadAllLines("text/ircbancmd.txt")) - sw.WriteLine(line); - } - File.Delete("text/ircbancmd.txt"); - } - else { - if (!File.Exists("text/irccmdblacklist.txt")) - File.WriteAllLines("text/irccmdblacklist.txt", new String[] { "#Here you can put commands that cannot be used from the IRC bot.", "#Lines starting with \"#\" are ignored." }); - foreach (string line in File.ReadAllLines("text/irccmdblacklist.txt")) - if (line[0] != '#') banCmd.Add(line); - } - } - } - public void Say(string message, bool opchat = false, bool color = true) { - if (!Server.irc || !IsConnected()) return; + // Load banned commands list + if (File.Exists("text/ircbancmd.txt")) { // Backwards compatibility + using (StreamWriter sw = File.CreateText("text/irccmdblacklist.txt")) { + sw.WriteLine("#Here you can put commands that cannot be used from the IRC bot."); + sw.WriteLine("#Lines starting with \"#\" are ignored."); + foreach (string line in File.ReadAllLines("text/ircbancmd.txt")) + sw.WriteLine(line); + } + File.Delete("text/ircbancmd.txt"); + } else { + if (!File.Exists("text/irccmdblacklist.txt")) + File.WriteAllLines("text/irccmdblacklist.txt", new String[] { "#Here you can put commands that cannot be used from the IRC bot.", "#Lines starting with \"#\" are ignored." }); + foreach (string line in File.ReadAllLines("text/irccmdblacklist.txt")) + if (line[0] != '#') banCmd.Add(line); + } + } + } - if(String.IsNullOrEmpty(message.Trim())) - message = "."; + public void Say(string message, bool opchat = false, bool color = true) { + if (!Server.irc || !IsConnected()) return; - if (color) { - message = c.MinecraftToIrcColors(message.Replace("%r", ResetSignal)); - } + if(String.IsNullOrEmpty(message.Trim())) + message = "."; - connection.Sender.PublicMessage(opchat ? opchannel : channel, message); - } - public void Pm(string user, string message) { - if (Server.irc && IsConnected()) - connection.Sender.PrivateMessage(user, message); - } - public void Reset() { - if (!Server.irc) return; - reset = true; - retries = 0; - Disconnect("IRC Bot resetting..."); - Connect(); - } - void Listener_OnJoin(UserInfo user, string channel) { - doJoinLeaveMessage(user.Nick, "joined", channel); - } - void Listener_OnPart(UserInfo user, string channel, string reason) { - if (user.Nick == nick) return; - doJoinLeaveMessage(user.Nick, "left", channel); - } + if (color) { + message = c.MinecraftToIrcColors(message.Replace("%r", ResetSignal)); + } - private void doJoinLeaveMessage(string who, string verb, string channel) { - Server.s.Log(String.Format("{0} has {1} channel {2}", who, verb, channel)); - Player.GlobalMessage(String.Format("%I[IRC] {0} has {1} the{2} channel", who, verb, (channel.ToLower() == opchannel.ToLower() ? " operator" : ""))); - } - void Player_PlayerDisconnect(Player p, string reason) { - if (Server.irc && IsConnected()) - if (Server.guestLeaveNotify == false && p.group.Permission <= LevelPermission.Guest) { - return; - } - connection.Sender.PublicMessage(channel, p.name + " left the game (" + reason + ")"); - } + connection.Sender.PublicMessage(opchat ? opchannel : channel, message); + } + + public void Pm(string user, string message) { + if (Server.irc && IsConnected()) + connection.Sender.PrivateMessage(user, message); + } + + public void Reset() { + if (!Server.irc) return; + reset = true; + retries = 0; + Disconnect("IRC Bot resetting..."); + Connect(); + } + + void Listener_OnJoin(UserInfo user, string channel) { + connection.Sender.Names(channel); + doJoinLeaveMessage(user.Nick, "joined", channel); + } + + void Listener_OnPart(UserInfo user, string channel, string reason) { + List chanNicks = GetNicks(channel); + RemoveNick(user.Nick, chanNicks); + if (user.Nick == nick) return; + doJoinLeaveMessage(user.Nick, "left", channel); + } - void Player_PlayerConnect(Player p) { - if (Server.irc && IsConnected()) - if (Server.guestJoinNotify == false && p.group.Permission <= LevelPermission.Guest) { - return; - } - connection.Sender.PublicMessage(channel, p.name + " joined the game"); - } + private void doJoinLeaveMessage(string who, string verb, string channel) { + Server.s.Log(String.Format("{0} has {1} channel {2}", who, verb, channel)); + Player.GlobalMessage(String.Format("%I[IRC] {0} has {1} the{2} channel", who, verb, (channel.ToLower() == opchannel.ToLower() ? " operator" : ""))); + } + + void Player_PlayerDisconnect(Player p, string reason) { + if (Server.irc && IsConnected()) + if (Server.guestLeaveNotify == false && p.group.Permission <= LevelPermission.Guest) { + return; + } + connection.Sender.PublicMessage(channel, p.name + " left the game (" + reason + ")"); + } - void Listener_OnQuit(UserInfo user, string reason) { - if (user.Nick == nick) return; - Server.s.Log(user.Nick + " has left IRC"); - Player.GlobalMessage("%I" + user.Nick + Server.DefaultColor + " has left IRC"); - } + void Player_PlayerConnect(Player p) { + if (Server.irc && IsConnected()) + if (Server.guestJoinNotify == false && p.group.Permission <= LevelPermission.Guest) { + return; + } + connection.Sender.PublicMessage(channel, p.name + " joined the game"); + } - void Listener_OnError(ReplyCode code, string message) { - Server.s.Log("IRC Error: " + message); - } + void Listener_OnQuit(UserInfo user, string reason) { + List chanNicks = GetNicks(channel); + RemoveNick(user.Nick, chanNicks); + if (user.Nick == nick) return; + Server.s.Log(user.Nick + " has left IRC"); + Player.GlobalMessage("%I" + user.Nick + Server.DefaultColor + " has left IRC"); + } - void Listener_OnPrivate(UserInfo user, string message) { - if (!Server.ircControllers.Contains(user.Nick)) { Pm(user.Nick, "You are not an IRC controller!"); return; } - if (message.Split(' ')[0] == "resetbot" || banCmd.Contains(message.Split(' ')[0])) { Pm(user.Nick, "You cannot use this command from IRC!"); return; } - if (Player.CommandHasBadColourCodes(null, message)) { Pm(user.Nick, "Your command had invalid color codes!"); return; } + void Listener_OnError(ReplyCode code, string message) { + Server.s.Log("IRC Error: " + message); + } - Command cmd = Command.all.Find(message.Split(' ')[0]); - if (cmd != null) { - Server.s.Log("IRC Command: /" + message); - usedCmd = user.Nick; - try { cmd.Use(new Player("IRC"), message.Split(' ').Length > 1 ? message.Substring(message.IndexOf(' ')).Trim() : ""); } - catch { Pm(user.Nick, "Failed command!"); } - usedCmd = ""; - } - else - Pm(user.Nick, "Unknown command!"); - } + void Listener_OnPrivate(UserInfo user, string message) { + if (!Server.ircControllers.Contains(user.Nick)) { Pm(user.Nick, "You are not an IRC controller!"); return; } + if (message.Split(' ')[0] == "resetbot" || banCmd.Contains(message.Split(' ')[0])) { Pm(user.Nick, "You cannot use this command from IRC!"); return; } + if (Player.CommandHasBadColourCodes(null, message)) { Pm(user.Nick, "Your command had invalid color codes!"); return; } - void Listener_OnPublic(UserInfo user, string channel, string message) { - string[] parts = message.Split(new char[] { ' ' }, 3); - //string allowedchars = "1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./!@#$%^*()_+QWERTYUIOPASDFGHJKL:\"ZXCVBNM<>? "; - // Allowed chars are any ASCII char between 20h/32 and 7Ah/122 inclusive, except for 26h/38 (&) and 60h/96 (`) + Command cmd = Command.all.Find(message.Split(' ')[0]); + if (cmd != null) { + Server.s.Log("IRC Command: /" + message); + usedCmd = user.Nick; + try { cmd.Use(new Player("IRC"), message.Split(' ').Length > 1 ? message.Substring(message.IndexOf(' ')).Trim() : ""); } + catch { Pm(user.Nick, "Failed command!"); } + usedCmd = ""; + } + else + Pm(user.Nick, "Unknown command!"); + } + + void Listener_OnPublic(UserInfo user, string channel, string message) { + string[] parts = message.Split(new char[] { ' ' }, 3); + //string allowedchars = "1234567890-=qwertyuiop[]\\asdfghjkl;'zxcvbnm,./!@#$%^*()_+QWERTYUIOPASDFGHJKL:\"ZXCVBNM<>? "; + // Allowed chars are any ASCII char between 20h/32 and 7Ah/122 inclusive, except for 26h/38 (&) and 60h/96 (`) string ircCommand = parts[0].ToLower(); if (ircCommand == ".who" || ircCommand == ".players") { try { @@ -181,13 +190,26 @@ namespace MCGalaxy { if (ircCommand == ".x") { if (Server.ircControllers.Contains(user.Nick)) { - string cmdName = parts.Length >= 2 ? parts[1] : ""; + List chanNicks; + if (!users.TryGetValue(channel, out chanNicks)) + return; + int index = GetNickIndex(user.Nick, chanNicks); + if (index < 0) { + Server.IRC.Say("You are not on the bot's list of " + + "users for some reason, please leave and rejoin."); return; + } + string prefix = GetPrefix(chanNicks[index]); + if (prefix == "" || prefix == "+") { + Server.IRC.Say("You must be at least a half-op on the channel to use commands from IRC."); return; + } + + string cmdName = parts.Length >= 2 ? parts[1] : ""; if (banCmd.Contains(cmdName)) { - Server.IRC.Say("You are not allowed to use this command from IRC."); return; - } + Server.IRC.Say("You are not allowed to use this command from IRC."); return; + } if (Player.CommandHasBadColourCodes(null, message)) { - Server.IRC.Say("Your command had invalid color codes!"); return; - } + Server.IRC.Say("Your command had invalid color codes!"); return; + } Command cmd = Command.all.Find(cmdName); if (cmdName != "" && cmd != null) @@ -208,110 +230,197 @@ namespace MCGalaxy { } message = c.IrcToMinecraftColors(message); - if(String.IsNullOrEmpty(message.Trim())) - message = "."; + if(String.IsNullOrEmpty(message.Trim())) + message = "."; - if (channel.ToLower() == opchannel.ToLower()) { - Server.s.Log(String.Format("(OPs): [IRC] {0}: {1}", user.Nick, message)); - Chat.GlobalMessageOps(String.Format("To Ops &f-%I[IRC] {0}&f- {1}", user.Nick, Server.profanityFilter ? ProfanityFilter.Parse(message) : message)); - } else { - Server.s.Log(String.Format("[IRC] {0}: {1}", user.Nick, message)); - Player.GlobalMessage(String.Format("%I[IRC] {0}: &f{1}", user.Nick, Server.profanityFilter ? ProfanityFilter.Parse(message) : message)); - } - } + if (channel.ToLower() == opchannel.ToLower()) { + Server.s.Log(String.Format("(OPs): [IRC] {0}: {1}", user.Nick, message)); + Chat.GlobalMessageOps(String.Format("To Ops &f-%I[IRC] {0}&f- {1}", user.Nick, Server.profanityFilter ? ProfanityFilter.Parse(message) : message)); + } else { + Server.s.Log(String.Format("[IRC] {0}: {1}", user.Nick, message)); + Player.GlobalMessage(String.Format("%I[IRC] {0}: &f{1}", user.Nick, Server.profanityFilter ? ProfanityFilter.Parse(message) : message)); + } + } - void Listener_OnRegistered() { - Server.s.Log("Connected to IRC!"); - reset = false; - retries = 0; - if (Server.ircIdentify && Server.ircPassword != "") { - Server.s.Log("Identifying with NickServ"); - connection.Sender.PrivateMessage("NickServ", "IDENTIFY " + Server.ircPassword); - } + void Listener_OnRegistered() { + Server.s.Log("Connected to IRC!"); + reset = false; + retries = 0; + if (Server.ircIdentify && Server.ircPassword != "") { + Server.s.Log("Identifying with NickServ"); + connection.Sender.PrivateMessage("NickServ", "IDENTIFY " + Server.ircPassword); + } - Server.s.Log("Joining channels..."); + Server.s.Log("Joining channels..."); - if (!String.IsNullOrEmpty(channel)) - connection.Sender.Join(channel); - if (!String.IsNullOrEmpty(opchannel)) - connection.Sender.Join(opchannel); - } + if (!String.IsNullOrEmpty(channel)) + connection.Sender.Join(channel); + if (!String.IsNullOrEmpty(opchannel)) + connection.Sender.Join(opchannel); + } - void Listener_OnDisconnected() { - if (!reset && retries < 3) { retries++; Connect(); } - } + void Listener_OnDisconnected() { + if (!reset && retries < 3) { retries++; Connect(); } + } - void Listener_OnNick(UserInfo user, string newNick) { - //Player.GlobalMessage(Server.IRCColour + "[IRC] " + user.Nick + " changed nick to " + newNick); + void Listener_OnNick(UserInfo user, string newNick) { + //Player.GlobalMessage(Server.IRCColour + "[IRC] " + user.Nick + " changed nick to " + newNick); - if (newNick.Trim() == "") { - this.Pm(user.Nick, "You cannot have that username"); - return; - } + if (newNick.Trim() == "") { + this.Pm(user.Nick, "You cannot have that username"); + return; + } + + foreach (var kvp in users) { + int index = GetNickIndex(user.Nick, kvp.Value); + if (index >= 0) { + string prefix = GetPrefix(kvp.Value[index]); + kvp.Value[index] = prefix + newNick; + } else { + // should never happen, but just in case. + connection.Sender.Names(kvp.Key); + } + } - string key; - if (newNick.Split('|').Length == 2) { - key = newNick.Split('|')[1]; - if (key != null && key != "") { - switch (key) { - case "AFK": - Player.GlobalMessage("[IRC] %I" + user.Nick + Server.DefaultColor + " is AFK"); Server.ircafkset.Add(user.Nick); break; - case "Away": - Player.GlobalMessage("[IRC] %I" + user.Nick + Server.DefaultColor + " is Away"); Server.ircafkset.Add(user.Nick); break; - } - } - } - else if (Server.ircafkset.Contains(newNick)) { - Player.GlobalMessage("[IRC] %I" + newNick + Server.DefaultColor + " is back"); - Server.ircafkset.Remove(newNick); - } - else - Player.GlobalMessage("[IRC] %I" + user.Nick + Server.DefaultColor + " is now known as " + newNick); - } - void Player_PlayerChat(Player p, string message) { + string key; + if (newNick.Split('|').Length == 2) { + key = newNick.Split('|')[1]; + if (key != null && key != "") { + switch (key) { + case "AFK": + Player.GlobalMessage("[IRC] %I" + user.Nick + Server.DefaultColor + " is AFK"); Server.ircafkset.Add(user.Nick); break; + case "Away": + Player.GlobalMessage("[IRC] %I" + user.Nick + Server.DefaultColor + " is Away"); Server.ircafkset.Add(user.Nick); break; + } + } + } + else if (Server.ircafkset.Contains(newNick)) { + Player.GlobalMessage("[IRC] %I" + newNick + Server.DefaultColor + " is back"); + Server.ircafkset.Remove(newNick); + } + else + Player.GlobalMessage("[IRC] %I" + user.Nick + Server.DefaultColor + " is now known as " + newNick); + } + + void Player_PlayerChat(Player p, string message) { + if (String.IsNullOrEmpty(message.Trim())) { + Player.SendMessage(p, "You cannot send that message"); + return; + } - - if (String.IsNullOrEmpty(message.Trim())) { - Player.SendMessage(p, "You cannot send that message"); - return; - } - - - if (Server.ircColorsEnable && Server.irc && IsConnected()) - Say(p.color + p.prefix + p.DisplayName + "%r: " + message, p.opchat); + if (Server.ircColorsEnable && Server.irc && IsConnected()) + Say(p.color + p.prefix + p.DisplayName + "%r: " + message, p.opchat); if (Server.ircColorsEnable == false && Server.irc && IsConnected()) { Say(p.DisplayName + ": " + message, p.opchat); } - } - public void Connect() { - if (!Server.irc || Server.shuttingDown) return; + } + + public void Connect() { + if (!Server.irc || Server.shuttingDown) return; - /*new Thread(new ThreadStart(delegate - { - try { connection.Connect(); } - catch (Exception e) - { - Server.s.Log("Failed to connect to IRC"); - Server.ErrorLog(e); - } - })).Start();*/ + /*new Thread(new ThreadStart(delegate + { + try { connection.Connect(); } + catch (Exception e) + { + Server.s.Log("Failed to connect to IRC"); + Server.ErrorLog(e); + } + })).Start();*/ - Server.s.Log("Connecting to IRC..."); + Server.s.Log("Connecting to IRC..."); - try { connection.Connect(); } - catch (Exception e) { - Server.s.Log("Failed to connect to IRC!"); - Server.ErrorLog(e); - } - } - public void Disconnect(string reason) { - if (IsConnected()) { connection.Disconnect(reason); Server.s.Log("Disconnected from IRC!"); } - } - public bool IsConnected() { - if (!Server.irc) return false; - try { return connection.Connected; } - catch { return false; } + try { connection.Connect(); } + catch (Exception e) { + Server.s.Log("Failed to connect to IRC!"); + Server.ErrorLog(e); + } + } + + public void Disconnect(string reason) { + if (IsConnected()) { + connection.Disconnect(reason); + Server.s.Log("Disconnected from IRC!"); + users.Clear(); + } + } + + public bool IsConnected() { + if (!Server.irc) return false; + try { return connection.Connected; } + catch { return false; } + } + + + void Listener_OnNames(string channel, string[] nicks, bool last) { + List chanNicks = GetNicks(channel); + foreach (string n in nicks) + UpdateNick(n, chanNicks); + } + + void Listener_OnChannelModeChange(UserInfo who, string channel, ChannelModeInfo[] modes) { + connection.Sender.Names(channel); + } + + void Listener_OnKick(UserInfo user, string channel, string kickee, string reason) { + List chanNicks = GetNicks(channel); + RemoveNick(user.Nick, chanNicks); + } + + void Listener_OnKill(UserInfo user, string nick, string reason) { + foreach (var kvp in users) + RemoveNick(user.Nick, kvp.Value); + } + + List GetNicks(string channel) { + List chanNicks; + if (!users.TryGetValue(channel, out chanNicks)) { + chanNicks = new List(); + users[channel] = chanNicks; + } + return chanNicks; + } + + void UpdateNick(string n, List chanNicks) { + string unprefixNick = Unprefix(n); + for (int i = 0; i < chanNicks.Count; i++ ) { + if (unprefixNick == Unprefix(chanNicks[i])) { + chanNicks[i] = n; return; + } + } + chanNicks.Add(n); + } + + void RemoveNick(string n, List chanNicks) { + int index = GetNickIndex(n, chanNicks); + if (index >= 0) chanNicks.RemoveAt(index); + } + + int GetNickIndex(string n, List chanNicks) { + string unprefixNick = Unprefix(n); + for (int i = 0; i < chanNicks.Count; i++ ) { + if (unprefixNick == Unprefix(chanNicks[i])) + return i; + } + return -1; + } + + string Unprefix(string nick) { + if (nick.Length == 0 || IsNickChar(nick[0])) + return nick; + return nick.Substring(1); + } + + string GetPrefix(string nick) { + if (nick.Length == 0 || IsNickChar(nick[0])) + return ""; + return nick.Substring(0, 1); + } + + bool IsNickChar(char c) { + return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || + c == '[' || c == ']' || c == '{' || c == '}' || c == '^' || c == '`' || c == '_' || c == '|'; } } } diff --git a/MCGalaxy_.csproj b/MCGalaxy_.csproj index a15055348..115328a66 100644 --- a/MCGalaxy_.csproj +++ b/MCGalaxy_.csproj @@ -501,12 +501,6 @@ - - Form - - - WoM.cs - @@ -522,7 +516,6 @@ EditText.cs - @@ -611,9 +604,6 @@ Window.cs Designer - - WoM.cs - diff --git a/Network/WOMBeat.cs b/Network/WOMBeat.cs deleted file mode 100644 index d30c17a34..000000000 --- a/Network/WOMBeat.cs +++ /dev/null @@ -1,112 +0,0 @@ -/* - Copyright 2011 MCGalaxy - - Dual-licensed under the Educational Community License, Version 2.0 and - the GNU General Public License, Version 3 (the "Licenses"); you may - not use this file except in compliance with the Licenses. You may - obtain a copy of the Licenses at - - http://www.opensource.org/licenses/ecl2.php - http://www.gnu.org/licenses/gpl-3.0.html - - Unless required by applicable law or agreed to in writing, - software distributed under the Licenses are distributed on an "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - or implied. See the Licenses for the specific language governing - permissions and limitations under the Licenses. -*/ -using System; -using System.IO; -using System.Net; -using System.Text; -namespace MCGalaxy -{ - internal sealed class WOMBeat : IBeat - { - - public string URL - { - get - { - return "http://direct.worldofminecraft.com/hb.php"; - } - } - - public bool Persistance - { - get - { - return true; - } - } - - public static bool SetSettings(string IP, string Port, string Name, string Disc, string flags) - { - - string url = "http://direct.worldofminecraft.com/server.php"; - HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url)); - string flag = "&flags=%5B" + flags + "%5D"; - if (flags.StartsWith("[")) - flag = "&flags=" + flags; - string Parameters = "ip=" + IP + "&port=" + Port + "&salt=" + Server.salt + "&alt=" + Name.Replace(' ', '+') + "&desc=" + Disc.Replace(' ', '+') + "&noforward=1" + flag; - - int totalTries = 0; - int totalTriesStream = 0; - try - { - totalTries++; - totalTriesStream = 0; - // Set all the request settings - //Server.s.Log(beat.Parameters); - request.Method = "POST"; - request.ContentType = "application/x-www-form-urlencoded"; - request.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.NoCacheNoStore); - byte[] formData = Encoding.ASCII.GetBytes(Parameters); - request.ContentLength = formData.Length; - request.Timeout = 15000; // 15 seconds - try - { - totalTriesStream++; - using (Stream requestStream = request.GetRequestStream()) - { - requestStream.Write(formData, 0, formData.Length); - requestStream.Flush(); - requestStream.Close(); - requestStream.Dispose(); - } - return true; - } - catch (Exception e) - { - Server.ErrorLog(e); - return false; - } - } - catch (Exception e) - { - Server.ErrorLog(e); - return false; - } - } - - public string Prepare() - { - return "&port=" + Server.port + - "&max=" + Server.players + - "&name=" + Heart.EncodeUrl(Server.name) + - "&public=" + Server.pub + - "&version=" + Server.version + - "&salt=" + Server.salt + - "&users=" + Player.number + - "&alt=" + Server.Server_ALT + - "&desc=" + Server.Server_Disc + - "&flags=" + Server.Server_Flag; - } - - public void OnResponse(string line) - { - - } - - } -} diff --git a/Server/Server.cs b/Server/Server.cs index bd30777de..8b5ba5e1e 100644 --- a/Server/Server.cs +++ b/Server/Server.cs @@ -349,7 +349,6 @@ namespace MCGalaxy public static bool adminsjoinsilent = false; public static bool mono { get { return (Type.GetType("Mono.Runtime") != null); } } public static string server_owner = "Notch"; - public static bool WomDirect = false; public static bool UseSeasons = false; public static bool guestLimitNotify = false; public static bool guestJoinNotify = true;