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:
parent
02828ec155
commit
3dd3cd7d69
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
@ -33,7 +33,6 @@ public class AutoSavingTask implements Runnable {
|
|||||||
storage.save(false);
|
storage.save(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user