Guest User

Untitled

a guest
Dec 23rd, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.48 KB | None | 0 0
  1.  
  2.  
  3. // Add any other using statements you need up here, of course.
  4. // As a note, MCLawl is designed for .NET 3.5.
  5. using System;
  6. using System.Collections.Generic;
  7. using System.ComponentModel;
  8. using System.Data;
  9. using System.Drawing;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Windows.Forms;
  13. using System.IO;
  14.  
  15. namespace MCLawl
  16. {
  17. public class Cmdnewmain : Command
  18. {
  19. // The command's name, in all lowercase. What you'll be putting behind the slash when using it.
  20. public override string name { get { return "newmain"; } }
  21.  
  22. // Command's shortcut (please take care not to use an existing one, or you may have issues.
  23. public override string shortcut { get { return "nm"; } }
  24.  
  25. // Determines which submenu the command displays in under /help.
  26. public override string type { get { return "mod"; } }
  27.  
  28. // Determines whether or not this command can be used in a museum. Block/map altering commands should be made false to avoid errors.
  29. public override bool museumUsable { get { return false; } }
  30.  
  31. // Determines the command's default rank. Valid values are:
  32. // LevelPermission.Nobody, LevelPermission.Banned, LevelPermission.Guest
  33. // LevelPermission.Builder, LevelPermission.AdvBuilder, LevelPermission.Operator, LevelPermission.Admin
  34. public override LevelPermission defaultRank { get { return LevelPermission.Operator; } }
  35.  
  36. // This is where the magic happens, naturally.
  37. // p is the player object for the player executing the command. message is everything after the command invocation itself.
  38. public override void Use(Player p, string message)
  39. {
  40. Command.all.Find("newlvl").Use(p, message + " 512 128 256 flat");
  41. System.Threading.Thread.Sleep(10000);
  42. Command.all.Find("load").Use(p, message);
  43. System.Threading.Thread.Sleep(5000);
  44. Command.all.Find("perbuild").Use(p, message+" guest");
  45. Command.all.Find("pervisit").Use(p, message+" guest");
  46. Command.all.Find("physics").Use(p, message+" 1");
  47. Player.GlobalMessage("New main set up.");
  48. try
  49. {
  50. string[] lines = File.ReadAllLines("properties/server.properties");
  51.  
  52. foreach (string line in lines) {
  53. if (line != "" && line[0] != '#') {
  54. //int index = line.IndexOf('=') + 1; // not needed if we use Split('=')
  55. string key = line.Split('=')[0].Trim();
  56. string value = line.Split('=')[1].Trim();
  57. string color = "";
  58.  
  59. switch (key.ToLower())
  60. {
  61. case "server-name":
  62. if (ValidString(value, "![]:.,{}~-+()?_/\\ ")) txtName.Text = value;
  63. else txtName.Text = "[MCZall] Minecraft server";
  64. break;
  65. case "motd":
  66. if (ValidString(value, "![]&:.,{}~-+()?_/\\ ")) txtMOTD.Text = value;
  67. else txtMOTD.Text = "Welcome to my server!";
  68. break;
  69. case "port":
  70. try { txtPort.Text = Convert.ToInt32(value).ToString(); }
  71. catch { txtPort.Text = "25565"; }
  72. break;
  73. case "verify-names":
  74. chkVerify.Checked = (value.ToLower() == "true") ? true : false;
  75. break;
  76. case "public":
  77. chkPublic.Checked = (value.ToLower() == "true") ? true : false;
  78. break;
  79. case "world-chat":
  80. chkWorld.Checked = (value.ToLower() == "true") ? true : false;
  81. break;
  82. case "max-players":
  83. try {
  84. if (Convert.ToByte(value) > 128) {
  85. value = "128";
  86. } else if (Convert.ToByte(value) < 1) {
  87. value = "1";
  88. }
  89. txtPlayers.Text = value;
  90. } catch {
  91. Server.s.Log("max-players invalid! setting to default.");
  92. txtPlayers.Text = "12";
  93. }
  94. break;
  95. case "max-maps":
  96. try {
  97. if (Convert.ToByte(value) > 100) {
  98. value = "100";
  99. } else if (Convert.ToByte(value) < 1) {
  100. value = "1";
  101. }
  102. txtMaps.Text = value;
  103. } catch {
  104. Server.s.Log("max-maps invalid! setting to default.");
  105. txtMaps.Text = "5";
  106. }
  107. break;
  108. case "irc":
  109. chkIRC.Checked = (value.ToLower() == "true") ? true : false;
  110. break;
  111. case "irc-server":
  112. txtIRCServer.Text = value;
  113. break;
  114. case "irc-nick":
  115. txtNick.Text = value;
  116. break;
  117. case "irc-channel":
  118. txtChannel.Text = value;
  119. break;
  120. case "irc-opchannel":
  121. txtOpChannel.Text = value;
  122. break;
  123. case "anti-tunnels":
  124. ChkTunnels.Checked = (value.ToLower() == "true") ? true : false;
  125. break;
  126. case "max-depth":
  127. txtDepth.Text= value;
  128. break;
  129.  
  130. case "rplimit":
  131. try { txtRP.Text = value; } catch { txtRP.Text = "500"; }
  132. break;
  133. case "rplimit-norm":
  134. try { txtNormRp.Text = value; } catch { txtNormRp.Text = "10000"; }
  135. break;
  136.  
  137. case "log-heartbeat":
  138. chkLogBeat.Checked = (value.ToLower() == "true") ? true : false;
  139. break;
  140.  
  141. case "force-cuboid":
  142. chkForceCuboid.Checked = (value.ToLower() == "true") ? true : false;
  143. break;
  144.  
  145. case "backup-time":
  146. if (Convert.ToInt32(value) > 1) txtBackup.Text = value; else txtBackup.Text = "300";
  147. break;
  148.  
  149. case "backup-location":
  150. if (!value.Contains("System.Windows.Forms.TextBox, Text:"))
  151. txtBackupLocation.Text = value;
  152. break;
  153.  
  154. case "physicsrestart":
  155. chkPhysicsRest.Checked = (value.ToLower() == "true") ? true : false;
  156. break;
  157. case "deathcount":
  158. chkDeath.Checked = (value.ToLower() == "true") ? true : false;
  159. break;
  160.  
  161. case "defaultcolor":
  162. color = c.Parse(value);
  163. if (color == "") {
  164. color = c.Name(value); if (color != "") color = value; else { Server.s.Log("Could not find " + value); return; }
  165. }
  166. cmbDefaultColour.SelectedIndex = cmbDefaultColour.Items.IndexOf(c.Name(value)); break;
  167.  
  168. case "irc-color":
  169. color = c.Parse(value);
  170. if (color == "") {
  171. color = c.Name(value); if (color != "") color = value; else { Server.s.Log("Could not find " + value); return; }
  172. }
  173. cmbIRCColour.SelectedIndex = cmbIRCColour.Items.IndexOf(c.Name(value)); break;
  174. case "default-rank":
  175. try {
  176. if (cmbDefaultRank.Items.IndexOf(value.ToLower()) != -1)
  177. cmbDefaultRank.SelectedIndex = cmbDefaultRank.Items.IndexOf(value.ToLower());
  178. } catch { cmbDefaultRank.SelectedIndex = 1; }
  179. break;
  180.  
  181. case "old-help":
  182. chkHelp.Checked = (value.ToLower() == "true") ? true : false;
  183. break;
  184.  
  185. case "cheapmessage":
  186. chkCheap.Checked = (value.ToLower() == "true") ? true : false;
  187. break;
  188. case "cheap-message-given":
  189. txtCheap.Text = value;
  190. break;
  191.  
  192. case "rank-super":
  193. chkrankSuper.Checked = (value.ToLower() == "true") ? true : false;
  194. break;
  195.  
  196. case "custom-ban":
  197. chkBanMessage.Checked = (value.ToLower() == "true") ? true : false;
  198. break;
  199.  
  200. case "custom-ban-message":
  201. txtBanMessage.Text = value;
  202. break;
  203.  
  204. case "custom-shutdown":
  205. chkShutdown.Checked = (value.ToLower() == "true") ? true : false;
  206. break;
  207.  
  208. case "custom-shutdown-message":
  209. txtShutdown.Text = value;
  210. break;
  211.  
  212. case "auto-restart":
  213. chkRestartTime.Checked = (value.ToLower() == "true") ? true : false;
  214. break;
  215. case "restarttime":
  216. txtRestartTime.Text = value;
  217. break;
  218. case "afk-minutes":
  219. try { txtafk.Text = Convert.ToInt16(value).ToString(); } catch { txtafk.Text = "10"; }
  220. break;
  221.  
  222. case "afk-kick":
  223. try { txtAFKKick.Text = Convert.ToInt16(value).ToString(); } catch { txtAFKKick.Text = "45"; }
  224. break;
  225.  
  226. case "check-updates":
  227. chkUpdates.Checked = (value.ToLower() == "true") ? true : false;
  228. break;
  229. case "autoload":
  230. chkAutoload.Checked = (value.ToLower() == "true") ? true : false;
  231. break;
  232. case "parse-emotes":
  233. chkSmile.Checked = (value.ToLower() == "true") ? true : false;
  234. break;
  235. case "main-name":
  236. txtMain.Text = value;
  237. break;
  238. case "dollar-before-dollar":
  239. chk17Dollar.Checked = (value.ToLower() == "true") ? true : false;
  240. break;
  241. case "money-name":
  242. txtMoneys.Text = value;
  243. break;
  244. case "mono":
  245. chkMono.Checked = (value.ToLower() == "true") ? true : false;
  246. break;
  247. case "restart-on-error":
  248. chkRestart.Checked = (value.ToLower() == "true") ? true : false;
  249. break;
  250. case "repeat-messages":
  251. chkRepeatMessages.Checked = (value.ToLower() == "true") ? true : false;
  252. break;
  253. case "host-state":
  254. if (value != "") txtHost.Text = value;
  255. break;
  256. }
  257. }
  258.  
  259. }
  260. string levelMain = message;
  261. try {
  262. StreamWriter w = new StreamWriter(File.Create(givenPath));
  263. if (givenPath.IndexOf("server") != -1) {
  264. w.WriteLine("# Edit the settings below to modify how your server operates. This is an explanation of what each setting does.");
  265. w.WriteLine("# server-name\t=\tThe name which displays on minecraft.net");
  266. w.WriteLine("# motd\t=\tThe message which displays when a player connects");
  267. w.WriteLine("# port\t=\tThe port to operate from");
  268. w.WriteLine("# console-only\t=\tRun without a GUI (useful for Linux servers with mono)");
  269. w.WriteLine("# verify-names\t=\tVerify the validity of names");
  270. w.WriteLine("# public\t=\tSet to true to appear in the public server list");
  271. w.WriteLine("# max-players\t=\tThe maximum number of connections");
  272. w.WriteLine("# max-maps\t=\tThe maximum number of maps loaded at once");
  273. w.WriteLine("# world-chat\t=\tSet to true to enable world chat");
  274. w.WriteLine("# guest-goto\t=\tSet to true to give guests goto and levels commands");
  275. w.WriteLine("# irc\t=\tSet to true to enable the IRC bot");
  276. w.WriteLine("# irc-nick\t=\tThe name of the IRC bot");
  277. w.WriteLine("# irc-server\t=\tThe server to connect to");
  278. w.WriteLine("# irc-channel\t=\tThe channel to join");
  279. w.WriteLine("# irc-opchannel\t=\tThe channel to join (posts OpChat)");
  280. w.WriteLine("# irc-port\t=\tThe port to use to connect");
  281. w.WriteLine("# irc-identify\t=(true/false)\tDo you want the IRC bot to Identify itself with nickserv. Note: You will need to register it's name with nickserv manually.");
  282. w.WriteLine("# irc-password\t=\tThe password you want to use if you're identifying with nickserv");
  283. w.WriteLine("# anti-tunnels\t=\tStops people digging below max-depth");
  284. w.WriteLine("# max-depth\t=\tThe maximum allowed depth to dig down");
  285. w.WriteLine("# backup-time\t=\tThe number of seconds between automatic backups");
  286. w.WriteLine("# overload\t=\tThe higher this is, the longer the physics is allowed to lag. Default 1500");
  287. w.WriteLine("# use-whitelist\t=\tSwitch to allow use of a whitelist to override IP bans for certain players. Default false.");
  288. w.WriteLine("# force-cuboid\t=\tRun cuboid until the limit is hit, instead of canceling the whole operation. Default false.");
  289. w.WriteLine();
  290. w.WriteLine("# Host\t=\tThe host name for the database (usually 127.0.0.1)");
  291. w.WriteLine("# SQLPort\t=\tPort number to be used for MySQL. Unless you manually changed the port, leave this alone. Default 3306.");
  292. w.WriteLine("# Username\t=\tThe username you used to create the database (usually root)");
  293. w.WriteLine("# Password\t=\tThe password set while making the database");
  294. w.WriteLine("# DatabaseName\t=\tThe name of the database stored (Default = MCZall)");
  295. w.WriteLine();
  296. w.WriteLine("# defaultColor\t=\tThe color code of the default messages (Default = &e)");
  297. w.WriteLine();
  298. w.WriteLine();
  299. w.WriteLine("# Server options");
  300. w.WriteLine("server-name = " + txtName.Text);
  301. w.WriteLine("motd = " + txtMOTD.Text);
  302. w.WriteLine("port = " + txtPort.Text);
  303. w.WriteLine("verify-names = " + chkVerify.Checked.ToString().ToLower());
  304. w.WriteLine("public = " + chkPublic.Checked.ToString().ToLower());
  305. w.WriteLine("max-players = " + txtPlayers.Text);
  306. w.WriteLine("max-maps = " + txtMaps.Text);
  307. w.WriteLine("world-chat = " + chkWorld.Checked.ToString().ToLower());
  308. w.WriteLine("check-updates = " + chkUpdates.Checked.ToString().ToLower());
  309. w.WriteLine("autoload = " + chkAutoload.Checked.ToString().ToLower());
  310. w.WriteLine("auto-restart = " + chkRestartTime.Checked.ToString().ToLower());
  311. w.WriteLine("restarttime = " + txtRestartTime.Text);
  312. w.WriteLine("restart-on-error = " + chkRestart.Checked);
  313. if (Player.ValidName(levelMain)) w.WriteLine("main-name = " + levelMain);
  314. else w.WriteLine("main-name = main");
  315. w.WriteLine();
  316. w.WriteLine("# irc bot options");
  317. w.WriteLine("irc = " + chkIRC.Checked.ToString());
  318. w.WriteLine("irc-nick = " + txtNick.Text);
  319. w.WriteLine("irc-server = " + txtIRCServer.Text);
  320. w.WriteLine("irc-channel = " + txtChannel.Text);
  321. w.WriteLine("irc-opchannel = " + txtOpChannel.Text);
  322. w.WriteLine("irc-port = " + Server.ircPort.ToString());
  323. w.WriteLine("irc-identify = " + Server.ircIdentify.ToString());
  324. w.WriteLine("irc-password = " + Server.ircPassword);
  325. w.WriteLine();
  326. w.WriteLine("# other options");
  327. w.WriteLine("anti-tunnels = " + ChkTunnels.Checked.ToString().ToLower());
  328. w.WriteLine("max-depth = " + txtDepth.Text);
  329. w.WriteLine("rplimit = " + txtRP.Text);
  330. w.WriteLine("physicsrestart = " + chkPhysicsRest.Checked.ToString().ToLower());
  331. w.WriteLine("old-help = " + chkHelp.Checked.ToString().ToLower());
  332. w.WriteLine("deathcount = " + chkDeath.Checked.ToString().ToLower());
  333. w.WriteLine("afk-minutes = " + txtafk.Text);
  334. w.WriteLine("afk-kick = " + txtAFKKick.Text);
  335. w.WriteLine("parse-emotes = " + chkSmile.Checked.ToString().ToLower());
  336. w.WriteLine("dollar-before-dollar = " + chk17Dollar.Checked.ToString().ToLower());
  337. w.WriteLine("use-whitelist = " + Server.useWhitelist.ToString().ToLower());
  338. w.WriteLine("money-name = " + txtMoneys.Text);
  339. w.WriteLine("opchat-perm = " + ((sbyte)Group.GroupList.Find(grp => grp.name == cmbOpChat.Items[cmbOpChat.SelectedIndex].ToString()).Permission).ToString());
  340. w.WriteLine("log-heartbeat = " + chkLogBeat.Checked.ToString().ToLower());
  341. w.WriteLine("force-cuboid = " + chkForceCuboid.Checked.ToString().ToLower());
  342. w.WriteLine("repeat-messages = " + chkRepeatMessages.Checked.ToString());
  343. w.WriteLine("host-state = " + txtHost.Text.ToString());
  344. w.WriteLine();
  345. w.WriteLine("# backup options");
  346. w.WriteLine("backup-time = " + txtBackup.Text);
  347. w.WriteLine("backup-location = " + txtBackupLocation.Text);
  348. w.WriteLine();
  349. w.WriteLine("#Error logging");
  350. w.WriteLine("report-back = " + Server.reportBack.ToString().ToLower());
  351. w.WriteLine();
  352. w.WriteLine("#MySQL information");
  353. w.WriteLine("UseMySQL = " + Server.useMySQL);
  354. w.WriteLine("Host = " + Server.MySQLHost);
  355. w.WriteLine("SQLPort = " + Server.MySQLPort);
  356. w.WriteLine("Username = " + Server.MySQLUsername);
  357. w.WriteLine("Password = " + Server.MySQLPassword);
  358. w.WriteLine("DatabaseName = " + Server.MySQLDatabaseName);
  359. w.WriteLine("Pooling = " + Server.MySQLPooling);
  360. w.WriteLine();
  361. w.WriteLine("#Colors");
  362. w.WriteLine("defaultColor = " + cmbDefaultColour.Items[cmbDefaultColour.SelectedIndex].ToString());
  363. w.WriteLine("irc-color = " + cmbIRCColour.Items[cmbIRCColour.SelectedIndex].ToString());
  364. w.WriteLine();
  365. w.WriteLine("#Running on mono?");
  366. w.WriteLine("mono = " + chkMono.Checked.ToString().ToLower());
  367. w.WriteLine();
  368. w.WriteLine("#Custom Messages");
  369. w.WriteLine("custom-ban = " + chkBanMessage.Checked.ToString().ToLower());
  370. w.WriteLine("custom-ban-message = " + txtBanMessage.Text);
  371. w.WriteLine("custom-shutdown = " + chkShutdown.Checked.ToString().ToLower());
  372. w.WriteLine("custom-shutdown-message = " + txtShutdown.Text);
  373. w.WriteLine();
  374. w.WriteLine("cheapmessage = " + chkCheap.Checked.ToString().ToLower());
  375. w.WriteLine("cheap-message-given = " + txtCheap.Text);
  376. w.WriteLine("rank-super = " + chkrankSuper.Checked.ToString().ToLower());
  377. w.WriteLine("default-rank = " + cmbDefaultRank.Items[cmbDefaultRank.SelectedIndex].ToString());
  378. }
  379. w.Flush();
  380. w.Close();
  381. w.Dispose();
  382. }
  383. catch
  384. {
  385. Server.s.Log("SAVE FAILED! " + givenPath);
  386. }
  387.  
  388. Player.GlobalMessage("Level "+message+" set to main");
  389.  
  390. Command.all.Find("restart").Use(p, "");
  391.  
  392.  
  393.  
  394.  
  395. } catch (Exception e) {
  396. Player.SendMessage(p, "Something went wrong")
  397. }
  398. }
  399.  
  400. // This one controls what happens when you use /help [commandname].
  401. public override void Help(Player p)
  402. {
  403. Player.SendMessage(p, "/newmain [mapname]; makes a new map ready to be main (and sets it to main?).");
  404. }
  405. }
  406. }
Add Comment
Please, Sign In to add comment