aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/cowtipper/cowlection/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/cowtipper/cowlection/util')
-rw-r--r--src/main/java/de/cowtipper/cowlection/util/ChatHelper.java43
-rw-r--r--src/main/java/de/cowtipper/cowlection/util/VersionChecker.java3
2 files changed, 31 insertions, 15 deletions
diff --git a/src/main/java/de/cowtipper/cowlection/util/ChatHelper.java b/src/main/java/de/cowtipper/cowlection/util/ChatHelper.java
index 42a5790..eef9ca7 100644
--- a/src/main/java/de/cowtipper/cowlection/util/ChatHelper.java
+++ b/src/main/java/de/cowtipper/cowlection/util/ChatHelper.java
@@ -8,9 +8,10 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.common.MinecraftForge;
+import net.minecraftforge.event.entity.EntityJoinWorldEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -30,27 +31,43 @@ public class ChatHelper {
}
public void sendMessage(IChatComponent chatComponent) {
- ClientChatReceivedEvent event = new ClientChatReceivedEvent((byte) 1, chatComponent);
- MinecraftForge.EVENT_BUS.post(event);
- if (!event.isCanceled()) {
- if (Minecraft.getMinecraft().thePlayer == null) {
- offlineMessages.add(event.message);
- } else {
+ if (Minecraft.getMinecraft().thePlayer == null) {
+ putOfflineMessage(chatComponent);
+ } else {
+ ClientChatReceivedEvent event = new ClientChatReceivedEvent((byte) 1, chatComponent);
+ MinecraftForge.EVENT_BUS.post(event);
+ if (!event.isCanceled()) {
Minecraft.getMinecraft().thePlayer.addChatMessage(event.message);
}
}
}
- public void sendOfflineMessages() {
+ private void putOfflineMessage(IChatComponent chatComponent) {
+ if (offlineMessages.size() == 0) {
+ // had no offline messages before
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+ offlineMessages.add(chatComponent);
+ }
+
+ @SubscribeEvent
+ public void onPlayerWorldJoin(EntityJoinWorldEvent e) {
+ if (e.entity == Minecraft.getMinecraft().thePlayer) {
+ new TickDelay(this::sendOfflineMessages, 6 * 20);
+ }
+ }
+
+ private void sendOfflineMessages() {
if (Minecraft.getMinecraft().thePlayer != null) {
- Iterator<IChatComponent> offlineMessages = this.offlineMessages.iterator();
- if (offlineMessages.hasNext()) {
+ if (offlineMessages.size() > 0) {
Minecraft.getMinecraft().thePlayer.playSound("random.levelup", 0.4F, 0.8F);
}
- while (offlineMessages.hasNext()) {
- Minecraft.getMinecraft().thePlayer.addChatMessage(offlineMessages.next());
- offlineMessages.remove();
+
+ for (IChatComponent offlineMessage : offlineMessages) {
+ sendMessage(offlineMessage);
}
+ offlineMessages.clear();
+ MinecraftForge.EVENT_BUS.unregister(this);
}
}
diff --git a/src/main/java/de/cowtipper/cowlection/util/VersionChecker.java b/src/main/java/de/cowtipper/cowlection/util/VersionChecker.java
index 7f859a6..4fd465e 100644
--- a/src/main/java/de/cowtipper/cowlection/util/VersionChecker.java
+++ b/src/main/java/de/cowtipper/cowlection/util/VersionChecker.java
@@ -124,8 +124,7 @@ public class VersionChecker {
main.getChatHelper().sendMessage(statusMsg);
} else {
IChatComponent finalStatusMsg = statusMsg;
- new TickDelay(() -> main.getChatHelper().sendMessage(finalStatusMsg)
- , 6 * 20);
+ new TickDelay(() -> main.getChatHelper().sendMessage(finalStatusMsg), 6 * 20);
}
}
}