RuneHive-Game
Loading...
Searching...
No Matches
ChatMessage.java
Go to the documentation of this file.
1package com.runehive.game.world.entity.mob.player.relations;
2
3import com.runehive.util.ChatCodec;
4
5/**
6 * Represents a chat message that can be displayed over an entities head.
7 *
8 * @author nshusa
9 */
10public final class ChatMessage {
11
12 /**
13 * When a chat message decoded there's a character buffer that can only hold 100 characters
14 **/
15 public static final int CHARACTER_LIMIT = 100;
16
17 private final ChatColor color;
18 private final ChatEffect effect;
19 private final byte[] encoded;
20
21 private ChatMessage(byte[] encoded) {
23 }
24
26 this.encoded = encoded;
27 this.color = color;
28 this.effect = effect;
29 }
30
31 public static ChatMessage create(String message) {
32 return create(message, ChatColor.YELLOW, ChatEffect.NONE);
33 }
34
35 public static ChatMessage create(String message, ChatColor color) {
36 return create(message, color, ChatEffect.NONE);
37 }
38
39 public static ChatMessage create(String message, ChatColor color, ChatEffect effect) {
40 return new ChatMessage(ChatCodec.encode(message.isEmpty() || message.length() > CHARACTER_LIMIT ? "Cabbage" : message), color, effect);
41 }
42
43 public boolean isValid() {
44 if (color.getCode() < 0 || color.getCode() >= ChatColor.values().length) {
45 return false;
46 }
47 if (effect.getCode() < 0 || effect.getCode() >= ChatColor.values().length) {
48 return false;
49 }
50 return encoded.length != 0 && encoded.length <= CHARACTER_LIMIT;
51 }
52
54 return color;
55 }
56
58 return effect;
59 }
60
61 public byte[] getEncoded() {
62 return encoded;
63 }
64
65}
static final int CHARACTER_LIMIT
When a chat message decoded there's a character buffer that can only hold 100 characters.
static ChatMessage create(String message, ChatColor color)
static ChatMessage create(String message, ChatColor color, ChatEffect effect)
ChatMessage(byte[] encoded, ChatColor color, ChatEffect effect)