From a112e43b424337ee9ca14d168c7fdc44c3c37622 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 6 Dec 2019 20:08:20 +0000 Subject: [PATCH] Allow for different GH and MC names + small improvements --- .../hooks/github/ContributionsConnector.java | 33 ++++++++++++------- .../Slimefun/hooks/github/Contributor.java | 11 ++----- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java index 2aad6ce22..fd333d8c2 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java @@ -1,24 +1,32 @@ package me.mrCookieSlime.Slimefun.hooks.github; -import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import org.bukkit.Bukkit; public class ContributionsConnector extends GitHubConnector { - // GitHub Bots that do not count as Contributors + // All names including "bot" are automatically blacklisted. But, others can be too right here. // (includes "invalid-email-address" because it is an invalid contributor) - private static final List blacklist = Arrays.asList( - "invalid-email-address", - "renovate-bot", - "ImgBotApp", - "TheBusyBot" + private static final List blacklist = Collections.singletonList( + "invalid-email-address" ); + + // Matches a GitHub name with a Minecraft name. + private static final Map aliases = new HashMap<>(); + + static { + aliases.put("WalshyDev", "HumanRightsAct"); + aliases.put("J3fftw1", "_lagpc_"); + } private final String prefix; private final String repository; @@ -53,13 +61,16 @@ public class ContributionsConnector extends GitHubConnector { private void computeContributors(JsonArray array) { for (int i = 0; i < array.size(); i++) { JsonObject object = array.get(i).getAsJsonObject(); - + String name = object.get("login").getAsString(); int commits = object.get("contributions").getAsInt(); String profile = object.get("html_url").getAsString(); - - if (!blacklist.contains(name)) { - Contributor contributor = SlimefunPlugin.getUtilities().contributors.computeIfAbsent(name, key -> new Contributor(name, profile)); + + if (!name.toLowerCase().contains("bot") && !blacklist.contains(name)) { + Contributor contributor = SlimefunPlugin.getUtilities().contributors.computeIfAbsent( + name, + key -> new Contributor(aliases.getOrDefault(name, name), profile) + ); contributor.setContribution(role, commits); } } diff --git a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java index b32a9cd4f..a4ccb51c1 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java @@ -16,7 +16,7 @@ public class Contributor { private String name; private String profile; - private Optional headTexture; + private Optional headTexture = Optional.empty(); private final ConcurrentMap contributions = new ConcurrentHashMap<>(); public Contributor(String name, String profile) { @@ -57,16 +57,11 @@ public class Contributor { * @return A Base64-Head Texture */ public String getTexture() { - if (headTexture == null || !headTexture.isPresent()) { - return PLACEHOLDER_HEAD; - } - else { - return headTexture.get(); - } + return headTexture.orElse(PLACEHOLDER_HEAD); } public boolean hasTexture() { - return headTexture != null; + return headTexture.isPresent(); } public void setTexture(Optional skin) {