Roughly same as before
This commit is contained in:
parent
021787667b
commit
7052eaf6a8
12 changed files with 432 additions and 1 deletions
|
@ -0,0 +1,431 @@
|
|||
package tk.sznp.thebuttonautoflair;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import com.palmergames.bukkit.towny.object.Town;
|
||||
import com.palmergames.bukkit.towny.object.WorldCoord;
|
||||
|
||||
public class PluginMain extends JavaPlugin
|
||||
{ //Translated to Java: 2015.07.15.
|
||||
//A user, which flair isn't obtainable:
|
||||
//https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/
|
||||
private static PluginMain Instance;
|
||||
// Fired when plugin is first enabled
|
||||
@Override
|
||||
public void onEnable()
|
||||
{
|
||||
System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)");
|
||||
getServer().getPluginManager().registerEvents(new PlayerListener(), this);
|
||||
this.getCommand("u").setExecutor(new Commands());
|
||||
this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§'));
|
||||
Instance=this; //2015.08.08.
|
||||
LoadFiles(false); //2015.08.09.
|
||||
Runnable r=new Runnable(){public void run(){ThreadMethod();}};
|
||||
Thread t=new Thread(r);
|
||||
t.start();
|
||||
}
|
||||
Boolean stop=false;
|
||||
// Fired when plugin is disabled
|
||||
@Override
|
||||
public void onDisable()
|
||||
{
|
||||
SaveFiles(); //2015.08.09.
|
||||
stop=true;
|
||||
}
|
||||
|
||||
public void ThreadMethod() //<-- 2015.07.16.
|
||||
{
|
||||
while(!stop)
|
||||
{
|
||||
try
|
||||
{
|
||||
String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000");
|
||||
JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children");
|
||||
for(Object obj : json)
|
||||
{
|
||||
JSONObject item = (JSONObject)obj;
|
||||
String author=item.getJSONObject("data").getString("author");
|
||||
String ign=item.getJSONObject("data").getString("body");
|
||||
int start = ign.indexOf("IGN:") + "IGN:".length();
|
||||
//System.out.println("Start: "+start);
|
||||
if(start==-1+"IGN:".length()) //+length: 2015.08.10.
|
||||
continue; //2015.08.09.
|
||||
int end = ign.indexOf(' ', start);
|
||||
if (end == -1 || end == start)
|
||||
end=ign.indexOf('\n', start); //2015.07.15.
|
||||
System.out.println("End: "+end);
|
||||
if (end == -1 || end == start)
|
||||
ign = ign.substring(start);
|
||||
else
|
||||
ign = ign.substring(start, end);
|
||||
//System.out.println("IGN: "+ign);
|
||||
ign = ign.trim();
|
||||
//System.out.println("Trimmed IGN: "+ign);
|
||||
if(HasIGFlair(ign))
|
||||
continue;
|
||||
try {
|
||||
Thread.sleep(10);
|
||||
} catch(InterruptedException ex) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":");
|
||||
String flair;
|
||||
if(flairdata.length > 1) //2015.07.15.
|
||||
flair = flairdata[1];
|
||||
else
|
||||
flair="";
|
||||
if (flair != "-1")
|
||||
flair = flair + "s";
|
||||
else
|
||||
flair = "non-presser";
|
||||
String flairclass;
|
||||
if(flairdata.length>2)
|
||||
flairclass = flairdata[2];
|
||||
else
|
||||
flairclass="unknown";
|
||||
SetFlair(ign, flair, flairclass, author);
|
||||
}
|
||||
Thread.sleep(10000);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
System.out.println("Error!\n"+e);
|
||||
LastException=e; //2015.08.09.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Exception LastException; //2015.08.09.
|
||||
|
||||
public String DownloadString(String urlstr) throws MalformedURLException, IOException
|
||||
{
|
||||
URL url = new URL(urlstr);
|
||||
URLConnection con = url.openConnection();
|
||||
con.setRequestProperty("User-Agent", "TheButtonAutoFlair");
|
||||
InputStream in = con.getInputStream();
|
||||
String encoding = con.getContentEncoding();
|
||||
encoding = encoding == null ? "UTF-8" : encoding;
|
||||
String body = IOUtils.toString(in, encoding);
|
||||
in.close();
|
||||
return body;
|
||||
}
|
||||
|
||||
public static Map<String, String> TownColors=new HashMap<String, String>(); //2015.07.20.
|
||||
public Boolean HasIGFlair(String playername)
|
||||
{
|
||||
MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08.
|
||||
return p.Flair!=null; //2015.08.08.
|
||||
}
|
||||
|
||||
public void SetFlair(String playername, String text, String flairclass, String username)
|
||||
{
|
||||
MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08.
|
||||
String finalflair;
|
||||
p.FlairDecided=true;
|
||||
switch(flairclass)
|
||||
{
|
||||
case "press-1":
|
||||
finalflair="§c("+text+")§r";
|
||||
break;
|
||||
case "press-2":
|
||||
finalflair="§6("+text+")§r";
|
||||
break;
|
||||
case "press-3":
|
||||
finalflair="§e("+text+")§r";
|
||||
break;
|
||||
case "press-4":
|
||||
finalflair="§a("+text+")§r";
|
||||
break;
|
||||
case "press-5":
|
||||
finalflair="§9("+text+")§r";
|
||||
break;
|
||||
case "press-6":
|
||||
finalflair="§5("+text+")§r";
|
||||
break;
|
||||
case "no-press":
|
||||
finalflair="§7(non-pr.)§r";
|
||||
break;
|
||||
case "cheater":
|
||||
finalflair="§5("+text+")§r";
|
||||
break;
|
||||
case "cant-press": //2015.08.08.
|
||||
finalflair="§r(can't press)§r";
|
||||
break;
|
||||
case "undecided": //2015.08.09.
|
||||
p.FlairDecided=false;
|
||||
finalflair="";
|
||||
break;
|
||||
default:
|
||||
finalflair="";
|
||||
break;
|
||||
}
|
||||
if(finalflair.length()==0) //<-- 2015.07.20.
|
||||
return;
|
||||
p.Flair=finalflair; //2015.08.08.
|
||||
p.UserName=username; //2015.08.08.
|
||||
System.out.println("Added new flair to "+playername+": "+finalflair);
|
||||
for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08.
|
||||
{
|
||||
if(player.getName().equals(playername))
|
||||
{
|
||||
//AppendPlayerDisplayFlair(player, username, finalflair);
|
||||
AppendPlayerDisplayFlair(p, player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static String GetFlair(Player player)
|
||||
{ //2015.07.16.
|
||||
String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08.
|
||||
return flair==null ? "" : flair;
|
||||
}
|
||||
|
||||
//public static void AppendPlayerDisplayFlair(Player player, String username, String flair)
|
||||
public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09.
|
||||
{
|
||||
|
||||
if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair)
|
||||
return;
|
||||
if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair)
|
||||
{
|
||||
AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20.
|
||||
if(!player.FlairDecided)
|
||||
p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09.
|
||||
}
|
||||
else
|
||||
p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r");
|
||||
}
|
||||
|
||||
private static void AppendPlayerDisplayFlairFinal(Player player, String flair)
|
||||
{ //2015.07.20.
|
||||
/*String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters
|
||||
String[] colors = color.substring(1).split("§");
|
||||
String displayname=player.getName(); //2015.08.08.
|
||||
ArrayList<Integer> Positions=new ArrayList<>();
|
||||
for(int i=0; i<displayname.length(); i++) {
|
||||
if(Character.isUpperCase(displayname.charAt(i))) {
|
||||
Positions.add(i);
|
||||
}
|
||||
}
|
||||
String finalname=""; //TODO
|
||||
if(Positions.size()>=colors.length)
|
||||
{
|
||||
int x=0;
|
||||
for(int i=0; i<Positions.size(); i++)
|
||||
{
|
||||
int pos=Positions.get(i);
|
||||
int nextpos;
|
||||
if(i!=Positions.size()-1)
|
||||
nextpos=Positions.get(i+1);
|
||||
else
|
||||
nextpos=displayname.length();
|
||||
String substr="§"+colors[x++]+displayname.substring(pos, nextpos)+"§r";
|
||||
finalname+=substr;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Positions.clear();
|
||||
int unit=displayname.length()/colors.length;
|
||||
int x=0;
|
||||
for(int i=0; i<displayname.length()-unit; i+=unit)
|
||||
{
|
||||
int pos=i;
|
||||
int nextpos;
|
||||
if(i<displayname.length()-unit-unit)
|
||||
nextpos=i+unit;
|
||||
else
|
||||
nextpos=displayname.length();
|
||||
String substr="§"+colors[x++]+displayname.substring(pos, nextpos)+"§r";
|
||||
finalname+=substr;
|
||||
}
|
||||
}*/
|
||||
MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair=flair; //2015.08.08.
|
||||
}
|
||||
|
||||
public static String GetColorForTown(String townname)
|
||||
{ //2015.07.20.
|
||||
if(TownColors.containsKey(townname))
|
||||
return TownColors.get(townname);
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String GetPlayerTown(Player player)
|
||||
{ //2015.07.20.
|
||||
try {
|
||||
Town town = WorldCoord.parseWorldCoord(player).getTownBlock().getTown(); //TODO
|
||||
return town.getName();
|
||||
} catch (Exception e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/*public static void RemovePlayerDisplayFlairFinal(Player player, String flair)
|
||||
{ //2015.07.20.
|
||||
MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair=null; //2015.08.08.
|
||||
}*/
|
||||
|
||||
public static Collection<? extends Player> GetPlayers()
|
||||
{
|
||||
return Instance.getServer().getOnlinePlayers();
|
||||
}
|
||||
|
||||
public static void LoadFiles(boolean reload) //<-- 2015.08.09.
|
||||
{
|
||||
if(reload)
|
||||
{ //2015.08.09.
|
||||
System.out.println("Auto-flair plugin cleanup for reloading...");
|
||||
MaybeOfflinePlayer.AllPlayers.clear();
|
||||
TownColors.clear();
|
||||
}
|
||||
System.out.println("Loading files for auto-flair plugin..."); //2015.08.09.
|
||||
try {
|
||||
File file=new File("flairsaccepted.txt");
|
||||
if(file.exists())
|
||||
{
|
||||
BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt"));
|
||||
String line;
|
||||
while ((line = br.readLine()) != null)
|
||||
{
|
||||
String name=line.replace("\n", "");
|
||||
//System.out.println("Name: " + name);
|
||||
MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08.
|
||||
}
|
||||
br.close();
|
||||
}
|
||||
file=new File("flairsignored.txt");
|
||||
if(file.exists())
|
||||
{
|
||||
BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt"));
|
||||
String line;
|
||||
while ((line = br.readLine()) != null)
|
||||
{
|
||||
String name=line.replace("\n", "");
|
||||
MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08.
|
||||
}
|
||||
br.close();
|
||||
}
|
||||
file=new File("autoflairconfig.txt");
|
||||
if(file.exists())
|
||||
{
|
||||
BufferedReader br=new BufferedReader(new FileReader(file));
|
||||
String line;
|
||||
while((line=br.readLine())!=null)
|
||||
{
|
||||
String[] s=line.split(" ");
|
||||
if(s.length>=2) //<-- 2015.08.10.
|
||||
TownColors.put(s[0], s[1]);
|
||||
}
|
||||
br.close();
|
||||
}
|
||||
file=new File("customflairs.txt"); //2015.08.09.
|
||||
if(file.exists())
|
||||
{
|
||||
BufferedReader br=new BufferedReader(new FileReader(file));
|
||||
String line;
|
||||
while((line=br.readLine())!=null)
|
||||
{
|
||||
String[] s=line.split(" ");
|
||||
if(s.length>=2) //2015.08.10.
|
||||
MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]).Flair=s[1]; //2015.08.09.
|
||||
}
|
||||
br.close();
|
||||
}
|
||||
//throw new IOException("Test"); //2015.08.09.
|
||||
System.out.println("Auto-flair plugin loaded files!");
|
||||
} catch (IOException e) {
|
||||
System.out.println("Error!\n"+e);
|
||||
LastException=e; //2015.08.09.
|
||||
}
|
||||
}
|
||||
public static void SaveFiles() //<-- 2015.08.09.
|
||||
{
|
||||
try
|
||||
{
|
||||
FileWriter fw;
|
||||
fw = new FileWriter("flairsaccepted.txt");
|
||||
fw.close();
|
||||
fw = new FileWriter("flairsignored.txt");
|
||||
fw.close();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
System.out.println("Error!\n"+e);
|
||||
LastException=e; //2015.08.09.
|
||||
}
|
||||
try {
|
||||
File file=new File("flairsaccepted.txt");
|
||||
BufferedWriter bw=new BufferedWriter(new FileWriter(file, true));
|
||||
for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08.
|
||||
{
|
||||
if(!player.AcceptedFlair)
|
||||
continue; //2015.08.08.
|
||||
bw.write(player.PlayerName+"\n");
|
||||
}
|
||||
bw.close();
|
||||
file=new File("flairsignored.txt");
|
||||
bw = new BufferedWriter(new FileWriter(file, true));
|
||||
for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08.
|
||||
{
|
||||
if(!player.IgnoredFlair)
|
||||
continue; //2015.08.08.
|
||||
bw.write(player.PlayerName+" "+player.Flair+"\n");
|
||||
}
|
||||
bw.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Error!\n"+e);
|
||||
LastException=e; //2015.08.09.
|
||||
}
|
||||
}
|
||||
public static boolean RemoveLineFromFile(String file, String line)
|
||||
{ //2015.08.09.
|
||||
File inputFile = new File(file);
|
||||
File tempFile = new File("_temp.txt");
|
||||
|
||||
if(!inputFile.exists())
|
||||
return true; //2015.08.10.
|
||||
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
|
||||
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
|
||||
|
||||
String lineToRemove = line;
|
||||
String currentLine;
|
||||
|
||||
while((currentLine = reader.readLine()) != null) {
|
||||
// trim newline when comparing with lineToRemove
|
||||
String trimmedLine = currentLine.trim();
|
||||
//if(trimmedLine.equals(lineToRemove)) continue;
|
||||
if(trimmedLine.contains(lineToRemove)) continue; //2015.08.09.
|
||||
writer.write(currentLine + System.getProperty("line.separator"));
|
||||
}
|
||||
writer.close();
|
||||
reader.close();
|
||||
return tempFile.renameTo(inputFile);
|
||||
} catch (IOException e) {
|
||||
System.out.println("Error!\n"+e);
|
||||
LastException=e; //2015.08.09.
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -72,7 +72,7 @@ public class PluginMain extends JavaPlugin
|
|||
int end = ign.indexOf(' ', start);
|
||||
if (end == -1 || end == start)
|
||||
end=ign.indexOf('\n', start); //2015.07.15.
|
||||
System.out.println("End: "+end);
|
||||
//System.out.println("End: "+end);
|
||||
if (end == -1 || end == start)
|
||||
ign = ign.substring(start);
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue