aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/de/cowtipper/cowlection/command/MooCommand.java16
-rw-r--r--src/main/java/de/cowtipper/cowlection/command/exception/MooCommandException.java9
-rw-r--r--src/main/java/de/cowtipper/cowlection/error/ApiHttpErrorEvent.java5
-rw-r--r--src/main/java/de/cowtipper/cowlection/listener/PlayerListener.java16
-rw-r--r--src/main/java/de/cowtipper/cowlection/util/ApiUtils.java6
5 files changed, 31 insertions, 21 deletions
diff --git a/src/main/java/de/cowtipper/cowlection/command/MooCommand.java b/src/main/java/de/cowtipper/cowlection/command/MooCommand.java
index 04c1eb1..ae79603 100644
--- a/src/main/java/de/cowtipper/cowlection/command/MooCommand.java
+++ b/src/main/java/de/cowtipper/cowlection/command/MooCommand.java
@@ -202,7 +202,7 @@ public class MooCommand extends CommandBase {
//region sub commands: Best friends, friends & other players
private void handleStalking(String[] args) throws CommandException {
if (!CredentialStorage.isMooValid) {
- throw new MooCommandException("[Cowlection] You haven't set your Hypixel API key yet or the API key is invalid. Use " + EnumChatFormatting.DARK_RED + "/" + this.getCommandName() + " apikey <key>" + EnumChatFormatting.RED + " to manually set your existing API key.");
+ throw new MooCommandException("[Cowlection] You haven't set your Hypixel API key yet or the API key is invalid. Use " + EnumChatFormatting.DARK_RED + "/" + this.getCommandName() + " apikey " + EnumChatFormatting.RED + "to manually set your existing API key.");
}
if (args.length != 2) {
throw new WrongUsageException("/" + getCommandName() + " stalk <playerName>");
@@ -296,7 +296,7 @@ public class MooCommand extends CommandBase {
//region sub commands: SkyBlock
private void handleStalkingSkyBlock(String[] args) throws CommandException {
if (!CredentialStorage.isMooValid) {
- throw new MooCommandException("[Cowlection] You haven't set your Hypixel API key yet or the API key is invalid. Use " + EnumChatFormatting.DARK_RED + "/" + this.getCommandName() + " apikey <key>" + EnumChatFormatting.RED + " to manually set your existing API key.");
+ throw new MooCommandException("[Cowlection] You haven't set your Hypixel API key yet or the API key is invalid. Use " + EnumChatFormatting.DARK_RED + "/" + this.getCommandName() + " apikey " + EnumChatFormatting.RED + "to manually set your existing API key.");
}
if (args.length != 2) {
throw new WrongUsageException("/" + getCommandName() + " skyblockstalk <playerName>");
@@ -827,7 +827,7 @@ public class MooCommand extends CommandBase {
} else if ((args.length == 2 && (args[1].equalsIgnoreCase("party") || args[1].equalsIgnoreCase("p")))
|| args.length == 1 && args[0].equalsIgnoreCase("dp")) {
if (!CredentialStorage.isMooValid) {
- throw new MooCommandException("[Cowlection] You haven't set your Hypixel API key yet or the API key is invalid. Use " + EnumChatFormatting.DARK_RED + "/" + this.getCommandName() + " apikey <key>" + EnumChatFormatting.RED + " to manually set your existing API key.");
+ throw new MooCommandException("[Cowlection] You haven't set your Hypixel API key yet or the API key is invalid. Use " + EnumChatFormatting.DARK_RED + "/" + this.getCommandName() + " apikey " + EnumChatFormatting.RED + "to manually set your existing API key.");
} else if (dungeonsPartyListener != null) {
throw new MooCommandException("Please wait a few seconds before using this command again.");
}
@@ -872,19 +872,21 @@ public class MooCommand extends CommandBase {
private void handleApiKey(String[] args) throws CommandException {
if (args.length == 1) {
- String firstSentence;
+ MooChatComponent msg;
EnumChatFormatting color;
EnumChatFormatting colorSecondary;
if (CredentialStorage.isMooValid && StringUtils.isNotEmpty(CredentialStorage.moo)) {
- firstSentence = EnumChatFormatting.GREEN + "[Cowlection] You already set your Hypixel API key.";
+ msg = new MooChatComponent("[Cowlection] You already set your Hypixel API key.").green();
color = EnumChatFormatting.GRAY;
colorSecondary = EnumChatFormatting.YELLOW;
} else {
- firstSentence = "[Cowlection] You haven't set your Hypixel API key yet or the API key is invalid.";
+ msg = new MooChatComponent("[Cowlection] You haven't set your Hypixel API key yet or the API key is invalid.").red();
color = EnumChatFormatting.RED;
colorSecondary = EnumChatFormatting.DARK_RED;
}
- main.getChatHelper().sendMessage(color, firstSentence + color + " Use " + colorSecondary + "/" + this.getCommandName() + " apikey <key>" + color + " to manually set your API key.");
+ main.getChatHelper().sendMessage(msg.appendSibling(new MooChatComponent(color + " Use " + colorSecondary + "/" + this.getCommandName() + " apikey <key>" + color + " to manually set your API key."))
+ .appendFreshSibling(new MooChatComponent(" ❢ ").lightPurple().setUrl("https://github.com/cow-mc/Cowlection/blob/master/CHANGELOG.md#note-on-api-keys-")
+ .appendSibling(new MooChatComponent("[open 'Note on API keys']").darkAqua().underline())));
} else {
String key = args[1];
if (Utils.isValidUuid(key)) {
diff --git a/src/main/java/de/cowtipper/cowlection/command/exception/MooCommandException.java b/src/main/java/de/cowtipper/cowlection/command/exception/MooCommandException.java
index f16e488..fcf2283 100644
--- a/src/main/java/de/cowtipper/cowlection/command/exception/MooCommandException.java
+++ b/src/main/java/de/cowtipper/cowlection/command/exception/MooCommandException.java
@@ -1,9 +1,18 @@
package de.cowtipper.cowlection.command.exception;
import net.minecraft.command.CommandException;
+import net.minecraft.util.EnumChatFormatting;
public class MooCommandException extends CommandException {
+ private final String msg;
+
public MooCommandException(String msg) {
super("cowlection.commands.generic.exception", msg);
+ this.msg = msg;
+ }
+
+ @Override
+ public String getLocalizedMessage() {
+ return EnumChatFormatting.getTextWithoutFormattingCodes(this.msg);
}
}
diff --git a/src/main/java/de/cowtipper/cowlection/error/ApiHttpErrorEvent.java b/src/main/java/de/cowtipper/cowlection/error/ApiHttpErrorEvent.java
index 757a2bf..45bb07f 100644
--- a/src/main/java/de/cowtipper/cowlection/error/ApiHttpErrorEvent.java
+++ b/src/main/java/de/cowtipper/cowlection/error/ApiHttpErrorEvent.java
@@ -21,11 +21,6 @@ public class ApiHttpErrorEvent extends Event {
return url;
}
- public String getBaseUrl() {
- int queryParamStart = url.indexOf('?', 10);
- return queryParamStart > 0 ? url.substring(0, queryParamStart) : url;
- }
-
public boolean wasUsingApiKey() {
return wasUsingApiKey;
}
diff --git a/src/main/java/de/cowtipper/cowlection/listener/PlayerListener.java b/src/main/java/de/cowtipper/cowlection/listener/PlayerListener.java
index 4478f1b..713902a 100644
--- a/src/main/java/de/cowtipper/cowlection/listener/PlayerListener.java
+++ b/src/main/java/de/cowtipper/cowlection/listener/PlayerListener.java
@@ -124,13 +124,17 @@ public class PlayerListener {
public void onApiHttpError(ApiHttpErrorEvent e) {
if (nextApiErrorMessage < System.currentTimeMillis() && Minecraft.getMinecraft().thePlayer != null) {
this.nextApiErrorMessage = System.currentTimeMillis() + 3000;
- MooChatComponent hoverComponent = new MooChatComponent.KeyValueTooltipComponent("Click to visit", e.getBaseUrl());
+ MooChatComponent hoverComponent = new MooChatComponent.KeyValueTooltipComponent("Click to visit", e.getUrl());
if (e.wasUsingApiKey()) {
- String eyeCatcher = "" + EnumChatFormatting.LIGHT_PURPLE + EnumChatFormatting.OBFUSCATED + "#" + EnumChatFormatting.RESET + EnumChatFormatting.RED;
- hoverComponent.appendFreshSibling(new MooChatComponent(eyeCatcher + " Request was using your API-Key.").red());
+ hoverComponent.appendFreshSibling(new MooChatComponent(EnumChatFormatting.LIGHT_PURPLE + " ❢ " + EnumChatFormatting.RED + " Request was using your API-Key.").red());
}
- main.getChatHelper().sendMessage(new MooChatComponent(e.getMessage()).red()
- .setUrl(e.getUrl(), hoverComponent));
+ MooChatComponent errorMsg = new MooChatComponent(e.getMessage()).red()
+ .setUrl(e.getUrl(), hoverComponent);
+ if (e.wasUsingApiKey()) {
+ errorMsg.appendFreshSibling(new MooChatComponent(" ❢ ").lightPurple().setUrl("https://github.com/cow-mc/Cowlection/blob/master/CHANGELOG.md#note-on-api-keys-")
+ .appendSibling(new MooChatComponent("[open 'Note on API keys']").darkAqua().underline()));
+ }
+ main.getChatHelper().sendMessage(errorMsg);
}
}
@@ -223,7 +227,7 @@ public class PlayerListener {
}
};
- new TickDelay(checkScoreboard, 40); // 2 second delay + retrying for 20 seconds, making sure scoreboard got sent
+ new TickDelay(checkScoreboard, 40); // 2-second delay + retrying for 20 seconds, making sure scoreboard got sent
} else if (MooConfig.getEnableSkyBlockOnlyFeatures() == MooConfig.Setting.DISABLED) {
isOnSkyBlock = false;
unregisterSkyBlockListeners();
diff --git a/src/main/java/de/cowtipper/cowlection/util/ApiUtils.java b/src/main/java/de/cowtipper/cowlection/util/ApiUtils.java
index b8fa4a5..89c979b 100644
--- a/src/main/java/de/cowtipper/cowlection/util/ApiUtils.java
+++ b/src/main/java/de/cowtipper/cowlection/util/ApiUtils.java
@@ -164,7 +164,7 @@ public class ApiUtils {
private static BufferedReader makeApiCall(String url, boolean sendApiKey, String key) throws IOException {
if (sendApiKey && !CredentialStorage.isMooValid) {
- throw new ApiHttpErrorException("Your current Hypixel API key is invalid. Use /moo apikey to manually set your existing API key.", url);
+ throw new ApiHttpErrorException("Your current Hypixel API key is invalid. Use §4/moo apikey §cto manually set your API key.", url, true);
}
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
@@ -182,10 +182,10 @@ public class ApiUtils {
if (connection.getResponseCode() == HttpStatus.SC_NO_CONTENT) { // http status 204
return null;
} else if (connection.getResponseCode() == HttpStatus.SC_BAD_GATEWAY && url.startsWith("https://api.hypixel.net/")) { // http status 502 (cloudflare)
- throw new ApiHttpErrorException("Couldn't contact Hypixel API (502 Bad Gateway). API might be down, check https://status.hypixel.net for info.", "https://status.hypixel.net");
+ throw new ApiHttpErrorException("Couldn't contact Hypixel API (502 Bad Gateway). API might be down, check https://status.hypixel.net for info.", "https://status.hypixel.net", sendApiKey);
} else if (connection.getResponseCode() == HttpStatus.SC_FORBIDDEN && sendApiKey && url.startsWith("https://api.hypixel.net/")) { // http status 403 Forbidden
Cowlection.getInstance().getMoo().setMooValidity(false);
- throw new ApiHttpErrorException("Your current Hypixel API key seems to be invalid. Use /moo apikey to manually set your existing API key.", url);
+ throw new ApiHttpErrorException("Your current Hypixel API key seems to be invalid. Use §4/moo apikey §cto manually set your API key.", url, true);
} else if (connection.getResponseCode() == HttpStatus.SC_SERVICE_UNAVAILABLE) { // http status 503 Service Unavailable
throw new ApiHttpErrorException("Couldn't contact the API (503 Service unavailable). API might be down, or you might be blocked by Cloudflare, check if you can reach: " + url, url, sendApiKey);
} else if (connection.getResponseCode() == HttpStatus.SC_BAD_GATEWAY && url.startsWith("https://moulberry.codes/")) { // http status 502 (cloudflare)