1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

More GitHub Integration

This commit is contained in:
TheBusyBiscuit 2017-01-16 16:28:41 +01:00
parent 02828ec155
commit 3dd3cd7d69
4 changed files with 149 additions and 48 deletions

View File

@ -8,34 +8,51 @@ import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.nio.channels.Channels; import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel; import java.nio.channels.ReadableByteChannel;
import java.util.HashSet;
import java.util.Set;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import me.mrCookieSlime.Slimefun.SlimefunGuide; public abstract class GitHubConnector {
public class GitHubConnector { public static Set<GitHubConnector> connectors = new HashSet<GitHubConnector>();
private File file; private File file;
public GitHubConnector() { public GitHubConnector() {
this.file = new File("plugins/Slimefun/cache/contributors.json");; this.file = new File("plugins/Slimefun/cache/github/" + this.getFileName() + ".json");
this.pullFile();
connectors.add(this);
} }
public abstract String getFileName();
public abstract String getRepository();
public abstract String getURLSuffix();
public abstract void onSuccess(JsonElement element);
public abstract void onFailure();
public void pullFile() { public void pullFile() {
System.out.println("[Slimefun - GitHub] Downloading 'contributors.json' from GitHub..."); System.out.println("[Slimefun - GitHub] Downloading '" + this.getFileName() + ".json' from GitHub...");
try { try {
URL website = new URL("https://api.github.com/repos/TheBusyBiscuit/Slimefun4/contributors"); URL website = new URL("https://api.github.com/repos/" + this.getRepository() + this.getURLSuffix());
ReadableByteChannel rbc = Channels.newChannel(website.openStream()); ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(file); FileOutputStream fos = new FileOutputStream(file);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close(); fos.close();
System.out.println("[Slimefun - GitHub] Finished download: 'contributors.json'"); System.out.println("[Slimefun - GitHub] Finished download: '" + this.getFileName() + ".json'");
this.parseData();
} catch (IOException e) { } catch (IOException e) {
System.err.println("[Slimefun - GitHub] ERROR - Could not connect to GitHub in time."); System.err.println("[Slimefun - GitHub] ERROR - Could not connect to GitHub in time.");
if (hasData()) {
this.parseData();
}
else {
this.onFailure();
}
} }
} }
@ -61,22 +78,12 @@ public class GitHubConnector {
reader.close(); reader.close();
JsonElement element = new JsonParser().parse(full); JsonElement element = new JsonParser().parse(full);
JsonArray array = element.getAsJsonArray();
for (int i = 0; i < array.size(); i++) { this.onSuccess(element);
JsonObject object = array.get(i).getAsJsonObject(); }
catch (IOException e) {
String name = object.get("login").getAsString();
String job = "&cAuthor";
int commits = object.get("contributions").getAsInt();
if (!name.equals("invalid-email-address")) {
SlimefunGuide.contributors.add(new Contributor(name, job, commits));
}
}
} catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
this.onFailure();
} }
} }
} }

View File

@ -20,7 +20,6 @@ import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapedRecipe; import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.inventory.ShapelessRecipe; import org.bukkit.inventory.ShapelessRecipe;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.material.MaterialData; import org.bukkit.material.MaterialData;
import me.mrCookieSlime.CSCoreLibPlugin.PlayerRunnable; import me.mrCookieSlime.CSCoreLibPlugin.PlayerRunnable;
@ -59,6 +58,8 @@ public class SlimefunGuide {
public static int month = 0; public static int month = 0;
public static List<Contributor> contributors = new ArrayList<Contributor>(); public static List<Contributor> contributors = new ArrayList<Contributor>();
public static int issues = 0;
public static int forks = 0;
static boolean all_recipes = true; static boolean all_recipes = true;
private static final int category_size = 36; private static final int category_size = 36;
@ -83,8 +84,8 @@ public class SlimefunGuide {
} }
}); });
for (int i = 0; i < 9; i++) { for (int i = 0; i < 18; i++) {
if (i != 4) { if (i != 1 && i != 3 && i != 4 && i != 5) {
menu.addItem(i, new CustomItem(new MaterialData(Material.STAINED_GLASS_PANE, (byte) 7), " ")); menu.addItem(i, new CustomItem(new MaterialData(Material.STAINED_GLASS_PANE, (byte) 7), " "));
menu.addMenuClickHandler(i, new MenuClickHandler() { menu.addMenuClickHandler(i, new MenuClickHandler() {
@ -95,8 +96,8 @@ public class SlimefunGuide {
}); });
} }
else { else {
menu.addItem(4, new CustomItem(new MaterialData(Material.EMERALD), "&7\u21E6 Back to normal view")); menu.addItem(1, new CustomItem(new MaterialData(Material.EMERALD), "&7\u21E6 Back to normal view"));
menu.addMenuClickHandler(4, new MenuClickHandler() { menu.addMenuClickHandler(1, new MenuClickHandler() {
@Override @Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) { public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
@ -112,8 +113,8 @@ public class SlimefunGuide {
} }
} }
menu.addItem(9, new CustomItem(new MaterialData(SlimefunManager.isItemSimiliar(guide, SlimefunGuide.getItem(true), true) ? Material.BOOK_AND_QUILL: Material.CHEST), "&7Guide Layout: &e" + (SlimefunManager.isItemSimiliar(guide, SlimefunGuide.getItem(true), true) ? "Book": "Chest"), "", "&7\u21E8 Click to change to: &b" + (SlimefunManager.isItemSimiliar(guide, SlimefunGuide.getItem(true), true) ? "Chest": "Book"))); menu.addItem(18, new CustomItem(new MaterialData(SlimefunManager.isItemSimiliar(guide, SlimefunGuide.getItem(true), true) ? Material.BOOK_AND_QUILL: Material.CHEST), "&7Guide Layout: &e" + (SlimefunManager.isItemSimiliar(guide, SlimefunGuide.getItem(true), true) ? "Book": "Chest"), "", "&7\u21E8 Click to change to: &b" + (SlimefunManager.isItemSimiliar(guide, SlimefunGuide.getItem(true), true) ? "Chest": "Book")));
menu.addMenuClickHandler(9, new MenuClickHandler() { menu.addMenuClickHandler(18, new MenuClickHandler() {
@Override @Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) { public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
@ -129,8 +130,8 @@ public class SlimefunGuide {
} }
}); });
menu.addItem(10, new CustomItem(new MaterialData(Material.COMPASS), "&7Credits", "", "&7\u21E8 Click to see the people behind this Plugin")); menu.addItem(3, new CustomItem(new MaterialData(Material.BOOK_AND_QUILL), "&aCredits", "", "&7\u21E8 Click to see the people behind this Plugin"));
menu.addMenuClickHandler(10, new MenuClickHandler() { menu.addMenuClickHandler(3, new MenuClickHandler() {
@Override @Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) { public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
@ -139,9 +140,39 @@ public class SlimefunGuide {
} }
}); });
try {
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&eSource Code", "", "&7Forks: &e" + forks, "", "&7&oSlimefun 4 is a community project,", "&7&othe source code is available on GitHub", "&7&oand if you want to keep this Plugin alive,", "&7&othen please consider contributing to it", "", "&7\u21E8 Click to go to GitHub"));
menu.addMenuClickHandler(4, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
p.closeInventory();
p.sendMessage("");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&ohttps://github.com/TheBusyBiscuit/Slimefun4"));
p.sendMessage("");
return false;
}
});
} catch (Exception e) {
e.printStackTrace();
}
menu.addItem(5, new CustomItem(new MaterialData(Material.REDSTONE), "&4Bug Tracker", "", "&7Unsolved Issues: &a" + issues, "", "&7\u21E8 Click to go to the Slimefun Bug Tracker"));
menu.addMenuClickHandler(5, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
p.closeInventory();
p.sendMessage("");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&ohttps://github.com/TheBusyBiscuit/Slimefun4/issues"));
p.sendMessage("");
return false;
}
});
for (int i = 0; i < 9; i++) { for (int i = 0; i < 9; i++) {
menu.addItem(18 + i, new CustomItem(new MaterialData(Material.STAINED_GLASS_PANE, (byte) 7), " ")); menu.addItem(27 + i, new CustomItem(new MaterialData(Material.STAINED_GLASS_PANE, (byte) 7), " "));
menu.addMenuClickHandler(18 + i, new MenuClickHandler() { menu.addMenuClickHandler(27 + i, new MenuClickHandler() {
@Override @Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) { public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
@ -200,7 +231,7 @@ public class SlimefunGuide {
for (Contributor contributor: contributors) { for (Contributor contributor: contributors) {
ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short) 3); ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short) 3);
SkullMeta meta = (SkullMeta) skull.getItemMeta(); ItemMeta meta = skull.getItemMeta();
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&a" + contributor.name)); meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&a" + contributor.name));
if (contributor.commits > 0) { if (contributor.commits > 0) {
@ -212,7 +243,6 @@ public class SlimefunGuide {
meta.setLore(Arrays.asList("", ChatColor.translateAlternateColorCodes('&', "&7Role: &r" + contributor.job))); meta.setLore(Arrays.asList("", ChatColor.translateAlternateColorCodes('&', "&7Role: &r" + contributor.job)));
} }
meta.setOwner(contributor.name);
skull.setItemMeta(meta); skull.setItemMeta(meta);
menu.addItem(index, skull); menu.addItem(index, skull);

View File

@ -31,6 +31,10 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.PluginUtils; import me.mrCookieSlime.CSCoreLibPlugin.PluginUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
@ -168,7 +172,7 @@ public class SlimefunStartup extends JavaPlugin {
if (!new File("plugins/Slimefun/scripts").exists()) new File("plugins/Slimefun/scripts").mkdirs(); if (!new File("plugins/Slimefun/scripts").exists()) new File("plugins/Slimefun/scripts").mkdirs();
if (!new File("plugins/Slimefun/generators").exists()) new File("plugins/Slimefun/generators").mkdirs(); if (!new File("plugins/Slimefun/generators").exists()) new File("plugins/Slimefun/generators").mkdirs();
if (!new File("plugins/Slimefun/error-reports").exists()) new File("plugins/Slimefun/error-reports").mkdirs(); if (!new File("plugins/Slimefun/error-reports").exists()) new File("plugins/Slimefun/error-reports").mkdirs();
if (!new File("plugins/Slimefun/cache").exists()) new File("plugins/Slimefun/cache").mkdirs(); if (!new File("plugins/Slimefun/cache/github").exists()) new File("plugins/Slimefun/cache/github").mkdirs();
SlimefunManager.plugin = this; SlimefunManager.plugin = this;
@ -197,18 +201,78 @@ public class SlimefunStartup extends JavaPlugin {
// Connecting to GitHub... // Connecting to GitHub...
GitHubConnector github = new GitHubConnector(); new GitHubConnector() {
github.pullFile(); @Override
public void onSuccess(JsonElement element) {
JsonArray array = element.getAsJsonArray();
if (github.hasData()) { for (int i = 0; i < array.size(); i++) {
github.parseData(); JsonObject object = array.get(i).getAsJsonObject();
}
else { String name = object.get("login").getAsString();
SlimefunGuide.contributors.add(new Contributor("TheBusyBiscuit", "&cAuthor", 1)); String job = "&cAuthor";
} int commits = object.get("contributions").getAsInt();
if (!name.equals("invalid-email-address")) {
SlimefunGuide.contributors.add(new Contributor(name, job, commits));
}
}
SlimefunGuide.contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0));
}
@Override
public void onFailure() {
SlimefunGuide.contributors.add(new Contributor("TheBusyBiscuit", "&cAuthor", 3));
SlimefunGuide.contributors.add(new Contributor("John000708", "&cAuthor", 2));
SlimefunGuide.contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0));
}
@Override
public String getRepository() {
return "TheBusyBiscuit/Slimefun4";
}
@Override
public String getFileName() {
return "contributors";
}
@Override
public String getURLSuffix() {
return "/contributors";
}
};
new GitHubConnector() {
@Override
public void onSuccess(JsonElement element) {
JsonObject object = element.getAsJsonObject();
SlimefunGuide.issues = object.get("open_issues_count").getAsInt();
SlimefunGuide.forks = object.get("forks").getAsInt();
}
@Override
public void onFailure() {
}
@Override
public String getRepository() {
return "TheBusyBiscuit/Slimefun4";
}
@Override
public String getFileName() {
return "repo";
}
@Override
public String getURLSuffix() {
return "";
}
};
SlimefunGuide.contributors.add(new Contributor("AquaLazuryt", "&6Lead Head Artist", 0));
// All Slimefun Listeners // All Slimefun Listeners
new ArmorListener(this); new ArmorListener(this);
@ -553,6 +617,7 @@ public class SlimefunStartup extends JavaPlugin {
TickerTask.block_timings = null; TickerTask.block_timings = null;
OreGenSystem.map = null; OreGenSystem.map = null;
SlimefunGuide.contributors = null; SlimefunGuide.contributors = null;
GitHubConnector.connectors = null;
for (Player p: Bukkit.getOnlinePlayers()) { for (Player p: Bukkit.getOnlinePlayers()) {
p.closeInventory(); p.closeInventory();

View File

@ -33,7 +33,6 @@ public class AutoSavingTask implements Runnable {
storage.save(false); storage.save(false);
} }
} }
} }
} }