aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/cowtipper/cowlection/util
diff options
context:
space:
mode:
authorCow <cow@volloeko.de>2020-12-18 13:41:20 +0100
committerCow <cow@volloeko.de>2020-12-18 13:41:20 +0100
commitca1cf885f9c7e2c6fcdf31c697a22f0e984d7525 (patch)
tree443a6089020e1d3e4a3ff8bb6c62d1b5e504c190 /src/main/java/de/cowtipper/cowlection/util
parent1b1b1c6293a184066e30cb98349f472a41e1c66d (diff)
downloadCowlection-ca1cf885f9c7e2c6fcdf31c697a22f0e984d7525.tar.gz
Cowlection-ca1cf885f9c7e2c6fcdf31c697a22f0e984d7525.tar.bz2
Cowlection-ca1cf885f9c7e2c6fcdf31c697a22f0e984d7525.zip
Fixed some possible problems with bad server connection
- Fixed sending offline messages - Fixed rare occurrence of repeated triggering of server join and leave events
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);
}
}
}