diff options
| author | Cow <cow@volloeko.de> | 2020-03-03 00:26:40 +0100 |
|---|---|---|
| committer | Cow <cow@volloeko.de> | 2020-03-03 00:26:40 +0100 |
| commit | 508f872ba076f4e767ff2c374656bc47637eb229 (patch) | |
| tree | 18f6b3505e878bca7c39ce8415f110917264c222 /src/main/java/eu/olli/cowmoonication/util | |
| parent | ea5963ad660c91640ec72bddd046d2e465f55f3f (diff) | |
| download | Cowlection-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.java | 29 | ||||
| -rw-r--r-- | src/main/java/eu/olli/cowmoonication/util/Utils.java | 58 |
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(""); + } +} |
