It uses the players IP address and sends it to a website, where the website will return the IP's country information to Minecraft and display it when a player joins!
Hope you like it! (I havn't been able to test online with a few players)
Code:
- Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;
using System.Xml.Serialization;
using System.Xml;
namespace MCDzienny
{
public class CmdPushed : Command
{
public override string name { get { return ""; } }
public override string shortcut { get { return ""; } }
public override string type { get { return ""; } }
public override bool museumUsable { get { return false; } }
public override LevelPermission defaultRank { get { return LevelPermission.Guest; } }
public override void Use(Player p, string message)
{
}
public override void Init()
{
Player.Joined += (object sender, PlayerEventArgs e) =>
{
string userIP = e.Player.ip;
string apiKey = "5d3d0cdbc95df34b9db4a7b4fb754e738bce4ac914ca8909ace8d3ece39cee3b";
string url = "http://api.ipinfodb.com/v3/ip-country/?key=" + apiKey + "&ip=" + userIP;
WebRequest request = WebRequest.Create(url);
using (var response = (HttpWebResponse)request.GetResponse())
{
Encoding encoding = response.CharacterSet != null ? Encoding.GetEncoding(response.CharacterSet) : null;
using (var sr = encoding != null ? new StreamReader(response.GetResponseStream(), encoding) :
new StreamReader(response.GetResponseStream(), true))
{
var response2 = sr.ReadToEnd();
var parts = response2.Split(';');
if (parts.Length != 5)
{
throw new Exception();
}
string okError = parts[0];
string message_ = parts[1];
string ip = parts[2];
string code = parts[3];
string country = parts[4];
if (country == "-" || country == null || country == "")
{
return;
}
else
{
Player.GlobalMessage(Server.DefaultColor + "has joined from: %a" + country);
/*Player.SendMessage(e.Player, Server.DefaultColor + "Code: %a" + code);
Player.SendMessage(e.Player, Server.DefaultColor + "Message: %a" + message_);
Player.SendMessage(e.Player, Server.DefaultColor + "IP Address: %a" + ip);*/
}
}
}
};
}
public override void Help(Player p)
{
Player.SendMessage(p, "");
}
}
}
Please give suggestions!
Next update plans:
+ Detect country from a list of country codes and make it not show all caps.