mirror of
https://github.com/ClassiCube/MCGalaxy.git
synced 2025-09-27 15:30:58 -04:00
Allow adding/removing/listing IRC controllers from in game only. (Thanks Rollir025)
This commit is contained in:
parent
3133384af9
commit
42c32f6057
@ -132,6 +132,7 @@ namespace MCGalaxy
|
|||||||
all.Add(new CmdInfected());
|
all.Add(new CmdInfected());
|
||||||
all.Add(new CmdInfo());
|
all.Add(new CmdInfo());
|
||||||
all.Add(new CmdInvincible());
|
all.Add(new CmdInvincible());
|
||||||
|
all.Add(new CmdIrcControllers());
|
||||||
all.Add(new CmdJail());
|
all.Add(new CmdJail());
|
||||||
all.Add(new CmdJoker());
|
all.Add(new CmdJoker());
|
||||||
all.Add(new CmdKick());
|
all.Add(new CmdKick());
|
||||||
|
74
Commands/Moderation/CmdIrcControllers.cs
Normal file
74
Commands/Moderation/CmdIrcControllers.cs
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 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;
|
||||||
|
|
||||||
|
namespace MCGalaxy.Commands {
|
||||||
|
|
||||||
|
public sealed class CmdIrcControllers : Command {
|
||||||
|
|
||||||
|
public override string name { get { return "irccontrollers"; } }
|
||||||
|
public override string shortcut { get { return "ircctrl"; } }
|
||||||
|
public override string type { get { return CommandTypes.Moderation; } }
|
||||||
|
public override bool museumUsable { get { return true; } }
|
||||||
|
public override LevelPermission defaultRank { get { return LevelPermission.Admin; } }
|
||||||
|
public CmdIrcControllers() { }
|
||||||
|
|
||||||
|
public override void Use(Player p, string message) {
|
||||||
|
if (message == "") { Help(p); return; }
|
||||||
|
string[] parts = message.Split(' ');
|
||||||
|
|
||||||
|
switch (parts[0].ToLower()) {
|
||||||
|
case "reload":
|
||||||
|
Server.ircControllers = PlayerList.Load("IRC_Controllers.txt", null);
|
||||||
|
Player.SendMessage(p, "IRC Controllers reloaded!");
|
||||||
|
break;
|
||||||
|
case "add":
|
||||||
|
if (parts.Length < 2) { Player.SendMessage(p, "You need to provide a name to add."); return; }
|
||||||
|
if (Server.ircControllers.Contains(parts[1])) {
|
||||||
|
Player.SendMessage(p, parts[1] + " is already an IRC controller."); return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Server.ircControllers.Add(parts[1]);
|
||||||
|
Server.ircControllers.Save("IRC_Controllers.txt", true);
|
||||||
|
Player.SendMessage(p, parts[1] + " added to the IRC controller list.");
|
||||||
|
break;
|
||||||
|
case "remove":
|
||||||
|
if (parts.Length < 2) { Player.SendMessage(p, "You need to provide a name to remove."); return; }
|
||||||
|
if (!Server.ircControllers.Contains(parts[1])) {
|
||||||
|
Player.SendMessage(p, parts[1] + " is not an IRC controller."); return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Server.ircControllers.Remove(parts[1]);
|
||||||
|
Server.ircControllers.Save("IRC_Controllers.txt", true);
|
||||||
|
Player.SendMessage(p, parts[1] + " removed from the IRC controller list.");
|
||||||
|
break;
|
||||||
|
case "list":
|
||||||
|
List<string> players = Server.ircControllers.All();
|
||||||
|
string names = String.Join(", ", players);
|
||||||
|
Player.SendMessage(p, "IRC controllers list:");
|
||||||
|
Player.SendMessage(p, names);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Help(Player p) {
|
||||||
|
Player.SendMessage(p, "/ircctrl <reload/add/remove/list> [name]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2010 MCSharp team (Modified for use with MCZall/MCLawl/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.
|
|
||||||
*/
|
|
||||||
namespace MCGalaxy.Commands
|
|
||||||
{
|
|
||||||
public sealed class CmdReloadControllers : Command
|
|
||||||
{
|
|
||||||
public override string name { get { return "reloadcontrollers"; } }
|
|
||||||
public override string shortcut { get { return "rlctl"; } }
|
|
||||||
public override string type { get { return CommandTypes.Moderation; } }
|
|
||||||
public override bool museumUsable { get { return true; } }
|
|
||||||
public override LevelPermission defaultRank { get { return LevelPermission.Operator; } }
|
|
||||||
public CmdReloadControllers() { }
|
|
||||||
|
|
||||||
public override void Use(Player p, string message)
|
|
||||||
{
|
|
||||||
Server.ircControllers = PlayerList.Load("IRC_Controllers.txt", null);
|
|
||||||
Player.SendMessage(p, "IRC Controllers reloaded!");
|
|
||||||
}
|
|
||||||
public override void Help(Player p)
|
|
||||||
{
|
|
||||||
Player.SendMessage(p, "/reloadcontrollers - Reloads IRC Controllers.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -46,7 +46,7 @@ namespace MCGalaxy.Commands
|
|||||||
}
|
}
|
||||||
Server.whiteList.Add(player);
|
Server.whiteList.Add(player);
|
||||||
Chat.GlobalMessageOps(p.color + p.prefix + p.name + Server.DefaultColor + " added &f" + player + Server.DefaultColor + " to the whitelist.");
|
Chat.GlobalMessageOps(p.color + p.prefix + p.name + Server.DefaultColor + " added &f" + player + Server.DefaultColor + " to the whitelist.");
|
||||||
Server.whiteList.Save("whitelist.txt");
|
Server.whiteList.Save("whitelist.txt", true);
|
||||||
Server.s.Log("WHITELIST: Added " + player);
|
Server.s.Log("WHITELIST: Added " + player);
|
||||||
break;
|
break;
|
||||||
case "del":
|
case "del":
|
||||||
@ -57,7 +57,7 @@ namespace MCGalaxy.Commands
|
|||||||
}
|
}
|
||||||
Server.whiteList.Remove(player);
|
Server.whiteList.Remove(player);
|
||||||
Chat.GlobalMessageOps(p.color + p.prefix + p.name + Server.DefaultColor + " removed &f" + player + Server.DefaultColor + " from the whitelist.");
|
Chat.GlobalMessageOps(p.color + p.prefix + p.name + Server.DefaultColor + " removed &f" + player + Server.DefaultColor + " from the whitelist.");
|
||||||
Server.whiteList.Save("whitelist.txt");
|
Server.whiteList.Save("whitelist.txt", true);
|
||||||
Server.s.Log("WHITELIST: Removed " + player);
|
Server.s.Log("WHITELIST: Removed " + player);
|
||||||
break;
|
break;
|
||||||
case "list":
|
case "list":
|
||||||
|
@ -42,7 +42,10 @@ namespace MCGalaxy {
|
|||||||
this.channel = channel.Trim(); this.opchannel = opchannel.Trim(); this.nick = nick.Replace(" ", ""); this.server = server;
|
this.channel = channel.Trim(); this.opchannel = opchannel.Trim(); this.nick = nick.Replace(" ", ""); this.server = server;
|
||||||
banCmd = new List<string>();
|
banCmd = new List<string>();
|
||||||
banCmd.Add("resetbot");
|
banCmd.Add("resetbot");
|
||||||
|
banCmd.Add("resetirc");
|
||||||
banCmd.Add("oprules");
|
banCmd.Add("oprules");
|
||||||
|
banCmd.Add("irccontrollers");
|
||||||
|
banCmd.Add("ircctrl");
|
||||||
|
|
||||||
if (Server.irc) {
|
if (Server.irc) {
|
||||||
|
|
||||||
@ -167,7 +170,7 @@ namespace MCGalaxy {
|
|||||||
void Listener_OnPrivate(UserInfo user, string message) {
|
void Listener_OnPrivate(UserInfo user, string message) {
|
||||||
message = Colors.IrcToMinecraftColors(message);
|
message = Colors.IrcToMinecraftColors(message);
|
||||||
message = CP437Reader.ConvertToRaw(message);
|
message = CP437Reader.ConvertToRaw(message);
|
||||||
string[] parts = message.Split(trimChars, 3);
|
string[] parts = message.Split(trimChars, 2);
|
||||||
string ircCmd = parts[0].ToLower();
|
string ircCmd = parts[0].ToLower();
|
||||||
if (ircCmd == ".who" || ircCmd == ".players") {
|
if (ircCmd == ".who" || ircCmd == ".players") {
|
||||||
try {
|
try {
|
||||||
@ -179,14 +182,14 @@ namespace MCGalaxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!Server.ircControllers.Contains(user.Nick)) { Pm(user.Nick, "You are not an IRC controller!"); return; }
|
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 (banCmd.Contains(ircCmd)) { 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; }
|
if (Player.CommandHasBadColourCodes(null, message)) { Pm(user.Nick, "Your command had invalid color codes!"); return; }
|
||||||
|
|
||||||
Command cmd = Command.all.Find(message.Split(' ')[0]);
|
Command cmd = Command.all.Find(ircCmd);
|
||||||
if (cmd != null) {
|
if (cmd != null) {
|
||||||
Server.s.Log("IRC Command: /" + message);
|
Server.s.Log("IRC Command: /" + message);
|
||||||
usedCmd = user.Nick;
|
usedCmd = user.Nick;
|
||||||
try { cmd.Use(new Player("IRC"), message.Split(' ').Length > 1 ? message.Substring(message.IndexOf(' ')).Trim() : ""); }
|
try { cmd.Use(new Player("IRC"), parts.Length > 1 ? parts[1] : ""); }
|
||||||
catch { Pm(user.Nick, "Failed command!"); }
|
catch { Pm(user.Nick, "Failed command!"); }
|
||||||
usedCmd = "";
|
usedCmd = "";
|
||||||
}
|
}
|
||||||
@ -195,8 +198,8 @@ namespace MCGalaxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Listener_OnPublic(UserInfo user, string channel, string message) {
|
void Listener_OnPublic(UserInfo user, string channel, string message) {
|
||||||
message = Colors.IrcToMinecraftColors(message);
|
message = Colors.IrcToMinecraftColors(message);
|
||||||
message = CP437Reader.ConvertToRaw(message);
|
message = CP437Reader.ConvertToRaw(message);
|
||||||
string[] parts = message.Split(trimChars, 3);
|
string[] parts = message.Split(trimChars, 3);
|
||||||
string ircCmd = parts[0].ToLower();
|
string ircCmd = parts[0].ToLower();
|
||||||
if (ircCmd == ".who" || ircCmd == ".players") {
|
if (ircCmd == ".who" || ircCmd == ".players") {
|
||||||
@ -223,7 +226,7 @@ namespace MCGalaxy {
|
|||||||
Server.IRC.Say("You must be at least a half-op on the channel to use commands from IRC."); return;
|
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] : "";
|
string cmdName = parts.Length >= 2 ? parts[1].ToLower() : "";
|
||||||
if (banCmd.Contains(cmdName)) {
|
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;
|
||||||
}
|
}
|
||||||
|
@ -246,6 +246,7 @@
|
|||||||
<Compile Include="Commands\Moderation\CmdHacks.cs" />
|
<Compile Include="Commands\Moderation\CmdHacks.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdHide.cs" />
|
<Compile Include="Commands\Moderation\CmdHide.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdHighlight.cs" />
|
<Compile Include="Commands\Moderation\CmdHighlight.cs" />
|
||||||
|
<Compile Include="Commands\Moderation\CmdIrcControllers.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdJail.cs" />
|
<Compile Include="Commands\Moderation\CmdJail.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdJoker.cs" />
|
<Compile Include="Commands\Moderation\CmdJoker.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdKick.cs" />
|
<Compile Include="Commands\Moderation\CmdKick.cs" />
|
||||||
@ -269,7 +270,6 @@
|
|||||||
<Compile Include="Commands\Moderation\CmdPUnload.cs" />
|
<Compile Include="Commands\Moderation\CmdPUnload.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdRankInfo.cs" />
|
<Compile Include="Commands\Moderation\CmdRankInfo.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdReferee.cs" />
|
<Compile Include="Commands\Moderation\CmdReferee.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdReloadControllers.cs" />
|
|
||||||
<Compile Include="Commands\Moderation\CmdRenameLvl.cs" />
|
<Compile Include="Commands\Moderation\CmdRenameLvl.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdResetBot.cs" />
|
<Compile Include="Commands\Moderation\CmdResetBot.cs" />
|
||||||
<Compile Include="Commands\Moderation\CmdRestart.cs" />
|
<Compile Include="Commands\Moderation\CmdRestart.cs" />
|
||||||
|
@ -1,62 +1,79 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2010 MCSharp team (Modified for use with MCZall/MCLawl/MCGalaxy)
|
Copyright 2010 MCSharp team (Modified for use with MCZall/MCLawl/MCGalaxy)
|
||||||
|
|
||||||
Dual-licensed under the Educational Community License, Version 2.0 and
|
Dual-licensed under the Educational Community License, Version 2.0 and
|
||||||
the GNU General Public License, Version 3 (the "Licenses"); you may
|
the GNU General Public License, Version 3 (the "Licenses"); you may
|
||||||
not use this file except in compliance with the Licenses. You may
|
not use this file except in compliance with the Licenses. You may
|
||||||
obtain a copy of the Licenses at
|
obtain a copy of the Licenses at
|
||||||
|
|
||||||
http://www.opensource.org/licenses/ecl2.php
|
http://www.opensource.org/licenses/ecl2.php
|
||||||
http://www.gnu.org/licenses/gpl-3.0.html
|
http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing,
|
Unless required by applicable law or agreed to in writing,
|
||||||
software distributed under the Licenses are distributed on an "AS IS"
|
software distributed under the Licenses are distributed on an "AS IS"
|
||||||
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
||||||
or implied. See the Licenses for the specific language governing
|
or implied. See the Licenses for the specific language governing
|
||||||
permissions and limitations under the Licenses.
|
permissions and limitations under the Licenses.
|
||||||
*/
|
*/
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
namespace MCGalaxy
|
|
||||||
{
|
namespace MCGalaxy {
|
||||||
public sealed class PlayerList
|
|
||||||
{
|
public sealed class PlayerList {
|
||||||
//public string name;
|
|
||||||
public Group group;
|
public Group group;
|
||||||
List<string> players = new List<string>();
|
List<string> players = new List<string>();
|
||||||
|
readonly object locker = new object();
|
||||||
public PlayerList() { }
|
public PlayerList() { }
|
||||||
public void Add(string p) { players.Add(p.ToLower()); }
|
|
||||||
public bool Remove(string p)
|
public void Add(string p) {
|
||||||
{
|
lock (locker)
|
||||||
return players.Remove(p.ToLower());
|
players.Add(p.ToLower());
|
||||||
}
|
}
|
||||||
public bool Contains(string p) { return players.Contains(p.ToLower()); }
|
|
||||||
public List<string> All() { return new List<string>(players); }
|
public bool Remove(string p) {
|
||||||
public void Save(string path) { Save(path, true); }
|
lock (locker)
|
||||||
public void Save() {
|
return players.Remove(p.ToLower());
|
||||||
Save(group.fileName);
|
|
||||||
}
|
}
|
||||||
public void Save(string path, bool console)
|
|
||||||
{
|
public bool Contains(string p) {
|
||||||
StreamWriter file = File.CreateText("ranks/" + path);
|
lock (locker)
|
||||||
players.ForEach(delegate(string p) { file.WriteLine(p); });
|
return players.Contains(p.ToLower());
|
||||||
file.Close(); if (console) { Server.s.Log("SAVED: " + path); }
|
|
||||||
}
|
}
|
||||||
public static PlayerList Load(string path, Group groupName)
|
|
||||||
{
|
public List<string> All() {
|
||||||
if (!Directory.Exists("ranks")) { Directory.CreateDirectory("ranks"); }
|
lock (locker)
|
||||||
|
return new List<string>(players);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save() { Save(group.fileName, true); }
|
||||||
|
|
||||||
|
public void Save(string path, bool console) {
|
||||||
|
using (StreamWriter w = File.CreateText("ranks/" + path)) {
|
||||||
|
lock (locker) {
|
||||||
|
foreach (string p in players)
|
||||||
|
w.WriteLine(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (console)
|
||||||
|
Server.s.Log("SAVED: " + path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PlayerList Load(string path, Group groupName) {
|
||||||
|
if (!Directory.Exists("ranks"))
|
||||||
|
Directory.CreateDirectory("ranks");
|
||||||
path = "ranks/" + path;
|
path = "ranks/" + path;
|
||||||
PlayerList list = new PlayerList();
|
PlayerList list = new PlayerList();
|
||||||
list.group = groupName;
|
list.group = groupName;
|
||||||
if (File.Exists(path))
|
|
||||||
{
|
if (File.Exists(path)) {
|
||||||
foreach (string line in File.ReadAllLines(path)) { list.Add(line); }
|
foreach (string line in File.ReadAllLines(path)) { list.Add(line); }
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
File.Create(path).Close();
|
File.Create(path).Close();
|
||||||
Server.s.Log("CREATED NEW: " + path);
|
Server.s.Log("CREATED NEW: " + path);
|
||||||
} return list;
|
}
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user