aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/eu/olli/cowmoonication/util
diff options
context:
space:
mode:
authorCow <cow@volloeko.de>2020-03-03 00:26:40 +0100
committerCow <cow@volloeko.de>2020-03-03 00:26:40 +0100
commit508f872ba076f4e767ff2c374656bc47637eb229 (patch)
tree18f6b3505e878bca7c39ce8415f110917264c222 /src/main/java/eu/olli/cowmoonication/util
parentea5963ad660c91640ec72bddd046d2e465f55f3f (diff)
downloadCowlection-508f872ba076f4e767ff2c374656bc47637eb229.tar.gz
Cowlection-508f872ba076f4e767ff2c374656bc47637eb229.tar.bz2
Cowlection-508f872ba076f4e767ff2c374656bc47637eb229.zip
Replaced best friend add and remove commands with a config gui
Diffstat (limited to 'src/main/java/eu/olli/cowmoonication/util')
-rw-r--r--src/main/java/eu/olli/cowmoonication/util/TickDelay.java29
-rw-r--r--src/main/java/eu/olli/cowmoonication/util/Utils.java58
2 files changed, 87 insertions, 0 deletions
diff --git a/src/main/java/eu/olli/cowmoonication/util/TickDelay.java b/src/main/java/eu/olli/cowmoonication/util/TickDelay.java
new file mode 100644
index 0000000..d5d164a
--- /dev/null
+++ b/src/main/java/eu/olli/cowmoonication/util/TickDelay.java
@@ -0,0 +1,29 @@
+package eu.olli.cowmoonication.util;
+
+import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+
+public class TickDelay {
+ private Runnable task;
+ private int waitingTicks;
+
+ public TickDelay(Runnable task, int ticks) {
+ this.task = task;
+ this.waitingTicks = ticks;
+
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent e) {
+ if (e.phase == TickEvent.Phase.START) {
+ if (waitingTicks < 1) {
+ // we're done waiting! Do stuff and exit.
+ task.run();
+ MinecraftForge.EVENT_BUS.unregister(this);
+ }
+ waitingTicks--;
+ }
+ }
+}
diff --git a/src/main/java/eu/olli/cowmoonication/util/Utils.java b/src/main/java/eu/olli/cowmoonication/util/Utils.java
new file mode 100644
index 0000000..d10c2ed
--- /dev/null
+++ b/src/main/java/eu/olli/cowmoonication/util/Utils.java
@@ -0,0 +1,58 @@
+package eu.olli.cowmoonication.util;
+
+import eu.olli.cowmoonication.Cowmoonication;
+import net.minecraft.client.Minecraft;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.IChatComponent;
+import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.common.MinecraftForge;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Utils {
+ public static final Pattern VALID_USERNAME = Pattern.compile("^[\\w]{1,16}$");
+ private static final Pattern USELESS_JSON_CONTENT_PATTERN = Pattern.compile("\"[A-Za-z]+\":false,?");
+ private final Cowmoonication main;
+ private String[] aboveChatMessage;
+ private long aboveChatMessageExpiration;
+
+ public Utils(Cowmoonication main) {
+ this.main = main;
+ }
+
+ public void sendMessage(String text) {
+ sendMessage(new ChatComponentText(text));
+ }
+
+ public void sendMessage(IChatComponent chatComponent) {
+ ClientChatReceivedEvent event = new ClientChatReceivedEvent((byte) 1, chatComponent);
+ MinecraftForge.EVENT_BUS.post(event);
+ if (!event.isCanceled()) {
+ Minecraft.getMinecraft().thePlayer.addChatMessage(event.message);
+ }
+ }
+
+ public void sendAboveChatMessage(String... text) {
+ aboveChatMessage = text;
+ aboveChatMessageExpiration = Minecraft.getSystemTime() + 5000;
+ }
+
+ public String[] getAboveChatMessage() {
+ if (aboveChatMessageExpiration < Minecraft.getSystemTime()) {
+ // message expired
+ aboveChatMessage = null;
+ }
+ return aboveChatMessage;
+ }
+
+ public boolean isValidMcName(String username) {
+ return VALID_USERNAME.matcher(username).matches();
+ }
+
+ public String cleanChatComponent(IChatComponent chatComponent) {
+ String component = IChatComponent.Serializer.componentToJson(chatComponent);
+ Matcher jsonMatcher = USELESS_JSON_CONTENT_PATTERN.matcher(component);
+ return jsonMatcher.replaceAll("");
+ }
+}