mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-19 09:03:02 -04:00
Added ability to kick, ban, and unban players from chat rooms
This commit is contained in:
@@ -135,6 +135,9 @@ public enum PacketType {
|
||||
CHAT_SYSTEM_MESSAGE (ChatSystemMessage.CRC, ChatSystemMessage.class),
|
||||
CHAT_INVITE_AVATAR_TO_ROOM (ChatInviteAvatarToRoom.CRC, ChatInviteAvatarToRoom.class),
|
||||
CHAT_UNINVITE_FROM_ROOM (ChatUninviteFromRoom.CRC, ChatUninviteFromRoom.class),
|
||||
CHAT_KICK_AVATAR_FROM_ROOM (ChatKickAvatarFromRoom.CRC, ChatKickAvatarFromRoom.class),
|
||||
CHAT_BAN_AVATAR_FROM_ROOM (ChatBanAvatarFromRoom.CRC, ChatBanAvatarFromRoom.class),
|
||||
CHAT_UNBAN_AVATAR_FROM_ROOM (ChatUnbanAvatarFromRoom.CRC, ChatUnbanAvatarFromRoom.class),
|
||||
CON_GENERIC_MESSAGE (ConGenericMessage.CRC, ConGenericMessage.class),
|
||||
VOICE_CHAT_STATUS (VoiceChatStatus.CRC, VoiceChatStatus.class),
|
||||
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2015 /// Project SWG /// www.projectswg.com
|
||||
*
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies.
|
||||
* Our goal is to create an emulator which will provide a server for players to
|
||||
* continue playing a game similar to the one they used to play. We are basing
|
||||
* it on the final publish of the game prior to end-game events.
|
||||
*
|
||||
* This file is part of Holocore.
|
||||
*
|
||||
* --------------------------------------------------------------------------------
|
||||
*
|
||||
* Holocore is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Holocore is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>
|
||||
******************************************************************************/
|
||||
|
||||
package network.packets.swg.zone.chat;
|
||||
|
||||
import network.packets.swg.SWGPacket;
|
||||
import resources.chat.ChatAvatar;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* @author Waverunner
|
||||
*/
|
||||
public class ChatBanAvatarFromRoom extends SWGPacket {
|
||||
public static final int CRC = getCrc("ChatBanAvatarFromRoom");
|
||||
|
||||
private ChatAvatar avatar;
|
||||
private String room;
|
||||
private int sequence;
|
||||
|
||||
public ChatBanAvatarFromRoom() {}
|
||||
|
||||
@Override
|
||||
public void decode(ByteBuffer data) {
|
||||
if (!super.decode(data, CRC))
|
||||
return;
|
||||
avatar = getEncodable(data, ChatAvatar.class);
|
||||
room = getAscii(data);
|
||||
sequence = getInt(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer encode() {
|
||||
ByteBuffer bb = ByteBuffer.allocate(12 + avatar.encode().length + room.length());
|
||||
addShort(bb, 4);
|
||||
addInt(bb, CRC);
|
||||
addEncodable(bb, avatar);
|
||||
addAscii(bb, room);
|
||||
addInt(bb, sequence);
|
||||
return bb;
|
||||
}
|
||||
|
||||
public ChatAvatar getAvatar() {
|
||||
return avatar;
|
||||
}
|
||||
|
||||
public String getRoom() {
|
||||
return room;
|
||||
}
|
||||
|
||||
public int getSequence() {
|
||||
return sequence;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2015 /// Project SWG /// www.projectswg.com
|
||||
*
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies.
|
||||
* Our goal is to create an emulator which will provide a server for players to
|
||||
* continue playing a game similar to the one they used to play. We are basing
|
||||
* it on the final publish of the game prior to end-game events.
|
||||
*
|
||||
* This file is part of Holocore.
|
||||
*
|
||||
* --------------------------------------------------------------------------------
|
||||
*
|
||||
* Holocore is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Holocore is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>
|
||||
******************************************************************************/
|
||||
|
||||
package network.packets.swg.zone.chat;
|
||||
|
||||
import network.packets.swg.SWGPacket;
|
||||
import resources.chat.ChatAvatar;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* @author Waverunner
|
||||
*/
|
||||
public class ChatKickAvatarFromRoom extends SWGPacket {
|
||||
public static final int CRC = getCrc("ChatKickAvatarFromRoom");
|
||||
|
||||
private ChatAvatar avatar;
|
||||
private String room;
|
||||
|
||||
public ChatKickAvatarFromRoom() {}
|
||||
|
||||
@Override
|
||||
public void decode(ByteBuffer data) {
|
||||
if (!super.decode(data, CRC))
|
||||
return;
|
||||
avatar = getEncodable(data, ChatAvatar.class);
|
||||
room = getAscii(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer encode() {
|
||||
ByteBuffer bb = ByteBuffer.allocate(8 + avatar.encode().length);
|
||||
addShort(bb, 3);
|
||||
addInt(bb, CRC);
|
||||
addEncodable(bb, avatar);
|
||||
addAscii(bb, room);
|
||||
return bb;
|
||||
}
|
||||
|
||||
public ChatAvatar getAvatar() {
|
||||
return avatar;
|
||||
}
|
||||
|
||||
public String getRoom() {
|
||||
return room;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2015 /// Project SWG /// www.projectswg.com
|
||||
*
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies.
|
||||
* Our goal is to create an emulator which will provide a server for players to
|
||||
* continue playing a game similar to the one they used to play. We are basing
|
||||
* it on the final publish of the game prior to end-game events.
|
||||
*
|
||||
* This file is part of Holocore.
|
||||
*
|
||||
* --------------------------------------------------------------------------------
|
||||
*
|
||||
* Holocore is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Holocore is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>
|
||||
******************************************************************************/
|
||||
|
||||
package network.packets.swg.zone.chat;
|
||||
|
||||
import network.packets.swg.SWGPacket;
|
||||
import resources.chat.ChatAvatar;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* @author Waverunner
|
||||
*/
|
||||
public class ChatOnBanAvatarFromRoom extends SWGPacket {
|
||||
public static final int CRC = getCrc("ChatOnBanAvatarFromRoom");
|
||||
|
||||
private String room;
|
||||
private ChatAvatar moderator;
|
||||
private ChatAvatar target;
|
||||
private int result;
|
||||
private int sequence;
|
||||
|
||||
public ChatOnBanAvatarFromRoom(String room, ChatAvatar moderator, ChatAvatar target, int result, int sequence) {
|
||||
this.room = room;
|
||||
this.moderator = moderator;
|
||||
this.target = target;
|
||||
this.result = result;
|
||||
this.sequence = sequence;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decode(ByteBuffer data) {
|
||||
if (!super.decode(data, CRC))
|
||||
return;
|
||||
room = getAscii(data);
|
||||
moderator = getEncodable(data, ChatAvatar.class);
|
||||
target = getEncodable(data, ChatAvatar.class);
|
||||
result = getInt(data);
|
||||
sequence = getInt(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer encode() {
|
||||
ByteBuffer bb = ByteBuffer.allocate(16 + moderator.encode().length + target.encode().length + room.length());
|
||||
addShort(bb, 6);
|
||||
addInt(bb, CRC);
|
||||
addAscii(bb, room);
|
||||
addEncodable(bb, moderator);
|
||||
addEncodable(bb, target);
|
||||
addInt(bb, result);
|
||||
addInt(bb, sequence);
|
||||
return bb;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2015 /// Project SWG /// www.projectswg.com
|
||||
*
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies.
|
||||
* Our goal is to create an emulator which will provide a server for players to
|
||||
* continue playing a game similar to the one they used to play. We are basing
|
||||
* it on the final publish of the game prior to end-game events.
|
||||
*
|
||||
* This file is part of Holocore.
|
||||
*
|
||||
* --------------------------------------------------------------------------------
|
||||
*
|
||||
* Holocore is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Holocore is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>
|
||||
******************************************************************************/
|
||||
|
||||
package network.packets.swg.zone.chat;
|
||||
|
||||
import network.packets.swg.SWGPacket;
|
||||
import resources.chat.ChatAvatar;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* @author Waverunner
|
||||
*/
|
||||
public class ChatOnKickAvatarFromRoom extends SWGPacket {
|
||||
public static final int CRC = getCrc("ChatOnKickAvatarFromRoom");
|
||||
|
||||
private ChatAvatar target;
|
||||
private ChatAvatar moderator;
|
||||
private int result;
|
||||
private String room;
|
||||
|
||||
public ChatOnKickAvatarFromRoom(ChatAvatar target, ChatAvatar moderator, int result, String room) {
|
||||
this.target = target;
|
||||
this.moderator = moderator;
|
||||
this.result = result;
|
||||
this.room = room;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decode(ByteBuffer data) {
|
||||
if (!super.decode(data, CRC))
|
||||
return;
|
||||
target = getEncodable(data, ChatAvatar.class);
|
||||
moderator = getEncodable(data, ChatAvatar.class);
|
||||
result = getInt(data);
|
||||
room = getAscii(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer encode() {
|
||||
ByteBuffer bb = ByteBuffer.allocate(16 + target.encode().length + moderator.encode().length + room.length());
|
||||
addShort(bb, 6);
|
||||
addInt(bb, CRC);
|
||||
addEncodable(bb, target);
|
||||
addEncodable(bb, moderator);
|
||||
addInt(bb, result);
|
||||
addAscii(bb, room);
|
||||
return bb;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2015 /// Project SWG /// www.projectswg.com
|
||||
*
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies.
|
||||
* Our goal is to create an emulator which will provide a server for players to
|
||||
* continue playing a game similar to the one they used to play. We are basing
|
||||
* it on the final publish of the game prior to end-game events.
|
||||
*
|
||||
* This file is part of Holocore.
|
||||
*
|
||||
* --------------------------------------------------------------------------------
|
||||
*
|
||||
* Holocore is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Holocore is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>
|
||||
******************************************************************************/
|
||||
|
||||
package network.packets.swg.zone.chat;
|
||||
|
||||
import network.packets.swg.SWGPacket;
|
||||
import resources.chat.ChatAvatar;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* @author Waverunner
|
||||
*/
|
||||
public class ChatOnUnbanAvatarFromRoom extends SWGPacket {
|
||||
public static final int CRC = getCrc("ChatOnUnbanAvatarFromRoom");
|
||||
|
||||
private String room;
|
||||
private ChatAvatar moderator;
|
||||
private ChatAvatar target;
|
||||
private int result;
|
||||
private int sequence;
|
||||
|
||||
public ChatOnUnbanAvatarFromRoom(String room, ChatAvatar moderator, ChatAvatar target, int result, int sequence) {
|
||||
this.room = room;
|
||||
this.moderator = moderator;
|
||||
this.target = target;
|
||||
this.result = result;
|
||||
this.sequence = sequence;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decode(ByteBuffer data) {
|
||||
if (!super.decode(data, CRC))
|
||||
return;
|
||||
room = getAscii(data);
|
||||
moderator = getEncodable(data, ChatAvatar.class);
|
||||
target = getEncodable(data, ChatAvatar.class);
|
||||
result = getInt(data);
|
||||
sequence = getInt(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer encode() {
|
||||
ByteBuffer bb = ByteBuffer.allocate(16 + moderator.encode().length + target.encode().length + room.length());
|
||||
addShort(bb, 6);
|
||||
addInt(bb, CRC);
|
||||
addAscii(bb, room);
|
||||
addEncodable(bb, moderator);
|
||||
addEncodable(bb, target);
|
||||
addInt(bb, result);
|
||||
addInt(bb, sequence);
|
||||
return bb;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2015 /// Project SWG /// www.projectswg.com
|
||||
*
|
||||
* ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on
|
||||
* July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies.
|
||||
* Our goal is to create an emulator which will provide a server for players to
|
||||
* continue playing a game similar to the one they used to play. We are basing
|
||||
* it on the final publish of the game prior to end-game events.
|
||||
*
|
||||
* This file is part of Holocore.
|
||||
*
|
||||
* --------------------------------------------------------------------------------
|
||||
*
|
||||
* Holocore is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Holocore is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with Holocore. If not, see <http://www.gnu.org/licenses/>
|
||||
******************************************************************************/
|
||||
|
||||
package network.packets.swg.zone.chat;
|
||||
|
||||
import network.packets.swg.SWGPacket;
|
||||
import resources.chat.ChatAvatar;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* @author Waverunner
|
||||
*/
|
||||
public class ChatUnbanAvatarFromRoom extends SWGPacket {
|
||||
public static final int CRC = getCrc("ChatUnbanAvatarFromRoom");
|
||||
|
||||
private ChatAvatar avatar;
|
||||
private String room;
|
||||
private int sequence;
|
||||
|
||||
@Override
|
||||
public void decode(ByteBuffer data) {
|
||||
if (!super.decode(data, CRC))
|
||||
return;
|
||||
avatar = getEncodable(data, ChatAvatar.class);
|
||||
room = getAscii(data);
|
||||
sequence = getInt(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuffer encode() {
|
||||
ByteBuffer bb = ByteBuffer.allocate(12 + avatar.encode().length + room.length());
|
||||
addShort(bb, 4);
|
||||
addInt(bb, CRC);
|
||||
addEncodable(bb, avatar);
|
||||
addAscii(bb, room);
|
||||
addInt(bb, sequence);
|
||||
return bb;
|
||||
}
|
||||
|
||||
public ChatAvatar getAvatar() {
|
||||
return avatar;
|
||||
}
|
||||
|
||||
public String getRoom() {
|
||||
return room;
|
||||
}
|
||||
|
||||
public int getSequence() {
|
||||
return sequence;
|
||||
}
|
||||
}
|
||||
@@ -183,6 +183,14 @@ public class ChatRoom implements Encodable, Serializable {
|
||||
return avatar.equals(owner) || moderators.contains(avatar);
|
||||
}
|
||||
|
||||
public boolean isMember(ChatAvatar avatar) {
|
||||
return members.contains(avatar);
|
||||
}
|
||||
|
||||
public boolean isBanned(ChatAvatar avatar) {
|
||||
return banned.contains(avatar);
|
||||
}
|
||||
|
||||
public void sendMessage(ChatAvatar sender, String message, OutOfBandPackage oob, PlayerManager playerManager) {
|
||||
ChatRoomMessage chatRoomMessage = new ChatRoomMessage(sender, getId(), message, oob);
|
||||
sendPacketToMembers(playerManager, chatRoomMessage);
|
||||
|
||||
@@ -32,23 +32,29 @@ import intents.chat.ChatRoomUpdateIntent;
|
||||
import intents.network.GalacticPacketIntent;
|
||||
import network.packets.Packet;
|
||||
import network.packets.swg.SWGPacket;
|
||||
import network.packets.swg.zone.chat.ChatBanAvatarFromRoom;
|
||||
import network.packets.swg.zone.chat.ChatCreateRoom;
|
||||
import network.packets.swg.zone.chat.ChatDestroyRoom;
|
||||
import network.packets.swg.zone.chat.ChatEnterRoomById;
|
||||
import network.packets.swg.zone.chat.ChatInviteAvatarToRoom;
|
||||
import network.packets.swg.zone.chat.ChatKickAvatarFromRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnBanAvatarFromRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnCreateRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnDestroyRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnEnteredRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnInviteToRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnKickAvatarFromRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnLeaveRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnReceiveRoomInvitation;
|
||||
import network.packets.swg.zone.chat.ChatOnSendRoomMessage;
|
||||
import network.packets.swg.zone.chat.ChatOnUnbanAvatarFromRoom;
|
||||
import network.packets.swg.zone.chat.ChatOnUninviteFromRoom;
|
||||
import network.packets.swg.zone.chat.ChatQueryRoom;
|
||||
import network.packets.swg.zone.chat.ChatQueryRoomResults;
|
||||
import network.packets.swg.zone.chat.ChatRemoveAvatarFromRoom;
|
||||
import network.packets.swg.zone.chat.ChatRequestRoomList;
|
||||
import network.packets.swg.zone.chat.ChatSendToRoom;
|
||||
import network.packets.swg.zone.chat.ChatUnbanAvatarFromRoom;
|
||||
import network.packets.swg.zone.chat.ChatUninviteFromRoom;
|
||||
import network.packets.swg.zone.insertion.ChatRoomList;
|
||||
import resources.Terrain;
|
||||
@@ -128,8 +134,7 @@ public class ChatRoomService extends Service {
|
||||
enterChatChannel(player, enterRoomById.getRoomId(), enterRoomById.getSequence());
|
||||
break; }
|
||||
case CHAT_REMOVE_AVATAR_FROM_ROOM:
|
||||
if (p instanceof ChatRemoveAvatarFromRoom)
|
||||
leaveChatChannel(player, ((ChatRemoveAvatarFromRoom) p).getPath());
|
||||
if (p instanceof ChatRemoveAvatarFromRoom) leaveChatChannel(player, ((ChatRemoveAvatarFromRoom) p).getPath());
|
||||
break;
|
||||
case CHAT_SEND_TO_ROOM:
|
||||
if (p instanceof ChatSendToRoom) handleChatSendToRoom(player, (ChatSendToRoom) p);
|
||||
@@ -149,6 +154,14 @@ public class ChatRoomService extends Service {
|
||||
case CHAT_UNINVITE_FROM_ROOM:
|
||||
if (p instanceof ChatUninviteFromRoom) handleChatUninviteFromRoom(player, (ChatUninviteFromRoom) p);
|
||||
break;
|
||||
case CHAT_KICK_AVATAR_FROM_ROOM:
|
||||
if (p instanceof ChatKickAvatarFromRoom) handleChatKickAvatarFromRoom(player, (ChatKickAvatarFromRoom) p);
|
||||
break;
|
||||
case CHAT_BAN_AVATAR_FROM_ROOM:
|
||||
if (p instanceof ChatBanAvatarFromRoom) handleChatBanAvatarFromRoom(player, (ChatBanAvatarFromRoom) p);
|
||||
break;
|
||||
case CHAT_UNBAN_AVATAR_FROM_ROOM:
|
||||
if (p instanceof ChatUnbanAvatarFromRoom) handleChatUnbanAvatarFromRoom(player, (ChatUnbanAvatarFromRoom) p);
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
@@ -163,6 +176,107 @@ public class ChatRoomService extends Service {
|
||||
|
||||
/* Chat Rooms */
|
||||
|
||||
private void handleChatUnbanAvatarFromRoom(Player player, ChatUnbanAvatarFromRoom p) {
|
||||
String path = p.getRoom();
|
||||
ChatAvatar target = p.getAvatar();
|
||||
int sequence = p.getSequence();
|
||||
|
||||
ChatRoom room = getRoom(path);
|
||||
ChatAvatar sender = ChatAvatar.getFromPlayer(player);
|
||||
|
||||
if (room == null) {
|
||||
player.sendPacket(new ChatOnUnbanAvatarFromRoom(path, sender, target, ChatResult.ROOM_INVALID_NAME.getCode(), sequence));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.isModerator(sender)) {
|
||||
player.sendPacket(new ChatOnUnbanAvatarFromRoom(path, sender, target, ChatResult.ROOM_AVATAR_NO_PERMISSION.getCode(), sequence));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.getBanned().remove(target)) {
|
||||
player.sendPacket(new ChatOnUnbanAvatarFromRoom(path, sender, target, ChatResult.ROOM_AVATAR_BANNED.getCode(), sequence));
|
||||
return;
|
||||
}
|
||||
|
||||
room.sendPacketToMembers(player.getPlayerManager(), new ChatOnUnbanAvatarFromRoom(path, sender, target, ChatResult.SUCCESS.getCode(), sequence));
|
||||
}
|
||||
|
||||
private void handleChatBanAvatarFromRoom(Player player, ChatBanAvatarFromRoom p) {
|
||||
String path = p.getRoom();
|
||||
ChatAvatar target = p.getAvatar();
|
||||
int sequence = p.getSequence();
|
||||
|
||||
ChatRoom room = getRoom(path);
|
||||
ChatAvatar sender = ChatAvatar.getFromPlayer(player);
|
||||
|
||||
if (room == null) {
|
||||
player.sendPacket(new ChatOnBanAvatarFromRoom(path, sender, target, ChatResult.ROOM_INVALID_NAME.getCode(), sequence));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.isModerator(sender)) {
|
||||
player.sendPacket(new ChatOnBanAvatarFromRoom(path, sender, target, ChatResult.ROOM_AVATAR_NO_PERMISSION.getCode(), sequence));
|
||||
return;
|
||||
}
|
||||
|
||||
if (room.isBanned(target)) {
|
||||
player.sendPacket(new ChatOnBanAvatarFromRoom(path, sender, target, ChatResult.ROOM_AVATAR_BANNED.getCode(), sequence));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.isMember(target)) {
|
||||
player.sendPacket(new ChatOnBanAvatarFromRoom(path, sender, target, ChatResult.TARGET_AVATAR_DOESNT_EXIST.getCode(), sequence));
|
||||
return;
|
||||
}
|
||||
|
||||
if (room.isModerator(target))
|
||||
room.getModerators().remove(target);
|
||||
|
||||
if (room.getInvited().contains(target))
|
||||
room.getInvited().remove(target);
|
||||
|
||||
room.getBanned().add(target);
|
||||
|
||||
room.sendPacketToMembers(player.getPlayerManager(), new ChatOnBanAvatarFromRoom(path, sender, target, ChatResult.SUCCESS.getCode(), sequence));
|
||||
}
|
||||
|
||||
private void handleChatKickAvatarFromRoom(Player player, ChatKickAvatarFromRoom p) {
|
||||
String path = p.getRoom();
|
||||
ChatAvatar target = p.getAvatar();
|
||||
|
||||
ChatRoom room = getRoom(path);
|
||||
ChatAvatar sender = ChatAvatar.getFromPlayer(player);
|
||||
|
||||
if (room == null) {
|
||||
player.sendPacket(new ChatOnKickAvatarFromRoom(target, sender, ChatResult.ROOM_INVALID_NAME.getCode(), path));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.isModerator(sender)) {
|
||||
player.sendPacket(new ChatOnKickAvatarFromRoom(target, sender, ChatResult.ROOM_AVATAR_NO_PERMISSION.getCode(), path));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.isMember(target)) {
|
||||
player.sendPacket(new ChatOnKickAvatarFromRoom(target, sender, ChatResult.TARGET_AVATAR_DOESNT_EXIST.getCode(), path));
|
||||
return;
|
||||
}
|
||||
|
||||
Player targetPlayer = player.getPlayerManager().getPlayerByCreatureFirstName(target.getName());
|
||||
if (targetPlayer == null) {
|
||||
player.sendPacket(new ChatOnKickAvatarFromRoom(target, sender, ChatResult.TARGET_AVATAR_DOESNT_EXIST.getCode(), path));
|
||||
return;
|
||||
}
|
||||
|
||||
if (room.isMember(target)) {
|
||||
player.sendPacket(new ChatOnKickAvatarFromRoom(target, sender, ChatResult.NONE.getCode(), path));
|
||||
return;
|
||||
}
|
||||
|
||||
room.sendPacketToMembers(player.getPlayerManager(), new ChatOnKickAvatarFromRoom(target, sender, ChatResult.SUCCESS.getCode(), path));
|
||||
}
|
||||
|
||||
private void handleChatUninviteFromRoom(Player player, ChatUninviteFromRoom p) {
|
||||
String path = p.getRoom();
|
||||
ChatRoom room = getRoom(path);
|
||||
@@ -175,18 +289,18 @@ public class ChatRoomService extends Service {
|
||||
return;
|
||||
}
|
||||
|
||||
if (room.isPublic()) {
|
||||
player.sendPacket(new ChatOnUninviteFromRoom(path, sender, invitee, ChatResult.NONE.getCode(), p.getSequence()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.isModerator(sender)) {
|
||||
player.sendPacket(new ChatOnUninviteFromRoom(path, sender, invitee, ChatResult.ROOM_AVATAR_NO_PERMISSION.getCode(), p.getSequence()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.getInvited().contains(invitee)) {
|
||||
player.sendPacket(new ChatOnUninviteFromRoom(path, sender, invitee, ChatResult.ROOM_PRIVATE.getCode(), p.getSequence()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.getInvited().remove(invitee)) {
|
||||
player.sendPacket(new ChatOnUninviteFromRoom(path, sender, invitee, ChatResult.NONE.getCode(), p.getSequence()));
|
||||
player.sendPacket(new ChatOnUninviteFromRoom(path, sender, invitee, ChatResult.ROOM_PRIVATE.getCode(), p.getSequence()));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -203,6 +317,11 @@ public class ChatRoomService extends Service {
|
||||
return;
|
||||
}
|
||||
|
||||
if (room.isPublic()) {
|
||||
player.sendPacket(new ChatOnInviteToRoom(path, sender, p.getAvatar(), ChatResult.NONE.getCode()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!room.isModerator(sender)) {
|
||||
player.sendPacket(new ChatOnInviteToRoom(path, sender, p.getAvatar(), ChatResult.ROOM_AVATAR_NO_PERMISSION.getCode()));
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user