diff --git a/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java b/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java new file mode 100644 index 0000000000..3934f74e96 --- /dev/null +++ b/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2017, Seth + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.api; + +public enum ChatMessageType +{ + SERVER(0), + PUBLIC(2), + PRIVATE_MESSAGE_RECEIVED(3), + TRADE_RECEIVED(4), + PRIVATE_MESSAGE_INFO(5), + PRIVATE_MESSAGE_SENT(6), + CLANCHAT(9), + TRADE_SENT(12), + EXAMINE_ITEM(27), + EXAMINE_NPC(28), + EXAMINE_OBJECT(29), + TRADE(101), + DUEL(103), + FILTERED(105), + ACTION(109), + UNKNOWN(-1); + + private final int type; + + ChatMessageType(int type) + { + this.type = type; + } + + public static ChatMessageType of(int type) + { + for (ChatMessageType ct : ChatMessageType.values()) + { + if (ct.type == type) + { + return ct; + } + } + return UNKNOWN; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java index dcf0e89157..75fdfd1d55 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java @@ -28,12 +28,7 @@ import java.awt.Graphics; import java.awt.image.BufferedImage; import net.runelite.api.Skill; import net.runelite.client.RuneLite; -import net.runelite.client.events.ExperienceChanged; -import net.runelite.client.events.MapRegionChanged; -import net.runelite.client.events.MenuOptionClicked; -import net.runelite.client.events.PlayerMenuOptionsChanged; -import net.runelite.client.events.AnimationChanged; -import net.runelite.client.events.GameStateChanged; +import net.runelite.client.events.*; import net.runelite.client.game.DeathChecker; import net.runelite.client.ui.overlay.OverlayRenderer; import net.runelite.rs.api.MainBufferProvider; @@ -160,4 +155,11 @@ public class Hooks runelite.getEventBus().post(playerMenuOptionClicked); } + + public static void addChatMessage(int type, String sender, String message, String clan) + { + ChatMessage chatMessage = new ChatMessage(type, sender, message, clan); + + runelite.getEventBus().post(chatMessage); + } } diff --git a/runelite-client/src/main/java/net/runelite/client/events/ChatMessage.java b/runelite-client/src/main/java/net/runelite/client/events/ChatMessage.java new file mode 100644 index 0000000000..f924ae4d15 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/events/ChatMessage.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2017, Seth + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.events; + +import net.runelite.api.ChatMessageType; + +public class ChatMessage +{ + private ChatMessageType type; + private String sender; + private String message; + private String clan; + + public ChatMessage(int type, String sender, String message, String clan) + { + this.type = ChatMessageType.of(type); + this.sender = sender; + this.message = message; + this.clan = clan; + } + + public ChatMessageType getType() + { + return this.type; + } + + public String getSender() + { + return this.sender; + } + + public String getMessage() + { + return this.message; + } + + public String getClan() + { + return this.clan; + } + +}