From a112e43b424337ee9ca14d168c7fdc44c3c37622 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 6 Dec 2019 20:08:20 +0000 Subject: [PATCH 1/8] 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) { From 73a9eddf7f3346fa392fda204f602e33895e0356 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 6 Dec 2019 20:56:03 +0000 Subject: [PATCH 2/8] Fixed up Now doesn't accept special chars and added imgbot --- .../Slimefun/SlimefunPlugin.java | 8 ++--- .../Slimefun/guides/GuideSettings.java | 6 ++-- .../hooks/github/ContributionsConnector.java | 18 ++++++---- .../Slimefun/hooks/github/Contributor.java | 36 +++++++++++++------ 4 files changed, 45 insertions(+), 23 deletions(-) diff --git a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java index 045166651..e072a5c22 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/SlimefunPlugin.java @@ -310,14 +310,12 @@ public final class SlimefunPlugin extends JavaPlugin { getServer().getScheduler().runTaskTimerAsynchronously(this, () -> { utilities.connectors.forEach(GitHubConnector::pullFile); - + for (Contributor contributor: utilities.contributors.values()) { if (!contributor.hasTexture()) { - String name = contributor.getName(); - try { - Optional uuid = MinecraftAccount.getUUID(name); - + Optional uuid = MinecraftAccount.getUUID(contributor.getMinecraftName()); + if (uuid.isPresent()) { Optional skin = MinecraftAccount.getSkin(uuid.get()); contributor.setTexture(skin); diff --git a/src/main/java/me/mrCookieSlime/Slimefun/guides/GuideSettings.java b/src/main/java/me/mrCookieSlime/Slimefun/guides/GuideSettings.java index e899244d1..64ccd4767 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/guides/GuideSettings.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/guides/GuideSettings.java @@ -185,11 +185,13 @@ public final class GuideSettings { try { skull = CustomSkull.getItem(contributor.getTexture()); } catch (Exception e) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while inserting a Contributors head.", e); + Slimefun.getLogger().log(Level.SEVERE, "An Error occurred while inserting a Contributors head.", e); } SkullMeta meta = (SkullMeta) skull.getItemMeta(); - meta.setDisplayName(ChatColor.GRAY + contributor.getName()); + meta.setDisplayName(ChatColor.GRAY + contributor.getName() + + (!contributor.getName().equals(contributor.getMinecraftName()) ? " (MC: " + contributor.getMinecraftName() + ")" : "") + ); List lore = new LinkedList<>(); lore.add(""); 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 fd333d8c2..91af076b3 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java @@ -1,23 +1,29 @@ package me.mrCookieSlime.Slimefun.hooks.github; -import java.util.Collections; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; 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 { - + + private static final Pattern nameFormat = Pattern.compile("[\\w_]+"); + // 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 = Collections.singletonList( - "invalid-email-address" + private static final List blacklist = Arrays.asList( + "invalid-email-address", + "renovate-bot", + "ImgBotApp", + "TheBusyBot", + "imgbot" ); // Matches a GitHub name with a Minecraft name. @@ -66,7 +72,7 @@ public class ContributionsConnector extends GitHubConnector { int commits = object.get("contributions").getAsInt(); String profile = object.get("html_url").getAsString(); - if (!name.toLowerCase().contains("bot") && !blacklist.contains(name)) { + if (nameFormat.matcher(name).matches() && !blacklist.contains(name)) { Contributor contributor = SlimefunPlugin.getUtilities().contributors.computeIfAbsent( name, key -> new Contributor(aliases.getOrDefault(name, name), profile) 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 a4ccb51c1..4fc5b58c7 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/Contributor.java @@ -13,15 +13,17 @@ import java.util.concurrent.ConcurrentMap; public class Contributor { private static final String PLACEHOLDER_HEAD = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDZiYTYzMzQ0ZjQ5ZGQxYzRmNTQ4OGU5MjZiZjNkOWUyYjI5OTE2YTZjNTBkNjEwYmI0MGE1MjczZGM4YzgyIn19fQ=="; - - private String name; - private String profile; - private Optional headTexture = Optional.empty(); + + private final String ghName; + private final String mcName; + private String profileLink; + private Optional headTexture; private final ConcurrentMap contributions = new ConcurrentHashMap<>(); public Contributor(String name, String profile) { - this.name = name; - this.profile = profile; + this.ghName = profile.substring(profile.lastIndexOf('/') + 1); + this.mcName = name; + this.profileLink = profile; } public void setContribution(String role, int commits) { @@ -35,7 +37,16 @@ public class Contributor { * @since 4.1.13 */ public String getName() { - return this.name; + return this.ghName; + } + + /** + * Returns the MC name of the contributor. This may be the same as {@link #getName()}. + * + * @return The MC username of this contributor. + */ + public String getMinecraftName() { + return this.mcName; } /** @@ -45,7 +56,7 @@ public class Contributor { * @since 4.1.13 */ public String getProfile() { - return this.profile; + return this.profileLink; } public Map getContributions() { @@ -57,11 +68,16 @@ public class Contributor { * @return A Base64-Head Texture */ public String getTexture() { - return headTexture.orElse(PLACEHOLDER_HEAD); + if (headTexture == null || !headTexture.isPresent()) { + return PLACEHOLDER_HEAD; + } + else { + return headTexture.get(); + } } public boolean hasTexture() { - return headTexture.isPresent(); + return headTexture != null; } public void setTexture(Optional skin) { From 724c5502041daccde6ce1938ba4aee2da0e1d490 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 6 Dec 2019 20:57:17 +0000 Subject: [PATCH 3/8] Pasting is a true gem --- .../Slimefun/hooks/github/ContributionsConnector.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 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 91af076b3..eb6ee5ba4 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java @@ -19,11 +19,11 @@ public class ContributionsConnector extends GitHubConnector { // 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", - "imgbot" + "invalid-email-address", + "renovate-bot", + "ImgBotApp", + "TheBusyBot", + "imgbot" ); // Matches a GitHub name with a Minecraft name. From 3f179f9eaa7dd9abe1d7487f63a4fa866b048084 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 6 Dec 2019 21:03:56 +0000 Subject: [PATCH 4/8] oops, revert dis --- .../Slimefun/hooks/github/ContributionsConnector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 eb6ee5ba4..066e3cc32 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java @@ -16,7 +16,7 @@ public class ContributionsConnector extends GitHubConnector { private static final Pattern nameFormat = Pattern.compile("[\\w_]+"); - // All names including "bot" are automatically blacklisted. But, others can be too right here. + // GitHub Bots that do not count as Contributors // (includes "invalid-email-address" because it is an invalid contributor) private static final List blacklist = Arrays.asList( "invalid-email-address", From 9156d478ef233fcbced3075f9223e102a433541d Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 6 Dec 2019 21:35:17 +0000 Subject: [PATCH 5/8] Add ajan-12 and LinoxGH --- .../Slimefun/hooks/github/ContributionsConnector.java | 2 ++ 1 file changed, 2 insertions(+) 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 066e3cc32..e5c43379b 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java @@ -32,6 +32,8 @@ public class ContributionsConnector extends GitHubConnector { static { aliases.put("WalshyDev", "HumanRightsAct"); aliases.put("J3fftw1", "_lagpc_"); + aliases.put("ajan-12", "ajan_12"); + aliases.put("LinoxGH", "ajan_12"); } private final String prefix; From 5b9e9a4fb7b1f3b2a750d1590a6586676bef84e4 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 6 Dec 2019 21:45:06 +0000 Subject: [PATCH 6/8] *screams internally* --- .../Slimefun/hooks/github/ContributionsConnector.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 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 e5c43379b..c2283e4bd 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java @@ -74,10 +74,12 @@ public class ContributionsConnector extends GitHubConnector { int commits = object.get("contributions").getAsInt(); String profile = object.get("html_url").getAsString(); + final String alias = aliases.getOrDefault(name, name); + if (nameFormat.matcher(name).matches() && !blacklist.contains(name)) { Contributor contributor = SlimefunPlugin.getUtilities().contributors.computeIfAbsent( - name, - key -> new Contributor(aliases.getOrDefault(name, name), profile) + alias, + key -> new Contributor(alias, profile) ); contributor.setContribution(role, commits); } From cafc78b3fee95a6c16baf55f808af9ad868e2876 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 6 Dec 2019 21:47:18 +0000 Subject: [PATCH 7/8] Revert 5b9e9a4fb7b1f3b2a750d1590a6586676bef84e4 --- .../Slimefun/hooks/github/ContributionsConnector.java | 6 ++---- 1 file changed, 2 insertions(+), 4 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 c2283e4bd..e5c43379b 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java @@ -74,12 +74,10 @@ public class ContributionsConnector extends GitHubConnector { int commits = object.get("contributions").getAsInt(); String profile = object.get("html_url").getAsString(); - final String alias = aliases.getOrDefault(name, name); - if (nameFormat.matcher(name).matches() && !blacklist.contains(name)) { Contributor contributor = SlimefunPlugin.getUtilities().contributors.computeIfAbsent( - alias, - key -> new Contributor(alias, profile) + name, + key -> new Contributor(aliases.getOrDefault(name, name), profile) ); contributor.setContribution(role, commits); } From f1ee2bd0924c4e36efd6ae0e09412c29610d0f6c Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Sat, 7 Dec 2019 12:59:56 +0000 Subject: [PATCH 8/8] Added @NihilistBrew --- .../Slimefun/hooks/github/ContributionsConnector.java | 1 + 1 file changed, 1 insertion(+) 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 e5c43379b..c3e586ca4 100644 --- a/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java +++ b/src/main/java/me/mrCookieSlime/Slimefun/hooks/github/ContributionsConnector.java @@ -34,6 +34,7 @@ public class ContributionsConnector extends GitHubConnector { aliases.put("J3fftw1", "_lagpc_"); aliases.put("ajan-12", "ajan_12"); aliases.put("LinoxGH", "ajan_12"); + aliases.put("NihilistBrew", "ma1yang2"); } private final String prefix;