ChatManager.java 2.15 KB
Newer Older
Melledy's avatar
Melledy committed
1
2
package emu.grasscutter.game.managers;

3
import emu.grasscutter.Grasscutter;
Melledy's avatar
Melledy committed
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import emu.grasscutter.commands.PlayerCommands;
import emu.grasscutter.game.GenshinPlayer;
import emu.grasscutter.net.packet.GenshinPacket;
import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.packet.send.PacketPlayerChatNotify;
import emu.grasscutter.server.packet.send.PacketPrivateChatNotify;

public class ChatManager {
	private final GameServer server;
	
	public ChatManager(GameServer server) {
		this.server = server;
	}

	public GameServer getServer() {
		return server;
	}

	public void sendPrivChat(GenshinPlayer player, int targetUid, String message) {
		// Sanity checks
		if (message == null || message.length() == 0) {
			return;
		}
				
		// Check if command
29
		if (message.charAt(0) == '!' || message.charAt(0) == '/') {
Melledy's avatar
Melledy committed
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
			PlayerCommands.handle(player, message);
			return;
		}
		
		// Get target
		GenshinPlayer target = getServer().getPlayerById(targetUid);
		
		if (target == null) {
			return;
		}
		
		// Create chat packet
		GenshinPacket packet = new PacketPrivateChatNotify(player.getId(), target.getId(), message);
		
		player.sendPacket(packet);
		target.sendPacket(packet);
	}
	
	public void sendPrivChat(GenshinPlayer player, int targetUid, int emote) {
		// Get target
		GenshinPlayer target = getServer().getPlayerById(targetUid);
		
		if (target == null) {
			return;
		}
		
		// Create chat packet
		GenshinPacket packet = new PacketPrivateChatNotify(player.getId(), target.getId(), emote);
		
		player.sendPacket(packet);
		target.sendPacket(packet);
	}
	
	public void sendTeamChat(GenshinPlayer player, int channel, String message) {
		// Sanity checks
		if (message == null || message.length() == 0) {
			return;
		}
				
		// Check if command
		if (message.charAt(0) == '!') {
			PlayerCommands.handle(player, message);
			return;
		}

		// Create and send chat packet
		player.getWorld().broadcastPacket(new PacketPlayerChatNotify(player, channel, message));
	}

	public void sendTeamChat(GenshinPlayer player, int channel, int icon) {
		// Create and send chat packet
		player.getWorld().broadcastPacket(new PacketPlayerChatNotify(player, channel, icon));
	}
}