mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-08-04 05:16:21 -04:00
Removed getObjectByFirstName from ChatService (deprecated), Changed getting object by names methods to account for all type cases
These changes should fix a lot of issues (mainly chat related like mails, tells, chat channels) for anything that was using the out-dated getObjectByFirstName() in chatservice. Also it'll allow us to not have to go through uppercase and lowercase versions every time we try and pull an object by names.
This commit is contained in:
committed by
CharonInferar
parent
1b6ad100f3
commit
667b9161d2
@@ -50,6 +50,7 @@ import resources.common.*;
|
||||
import resources.datatables.DisplayType;
|
||||
import resources.guild.Guild;
|
||||
import resources.objects.creature.CreatureObject;
|
||||
import resources.objects.group.GroupObject;
|
||||
import resources.objects.player.PlayerObject;
|
||||
import protocol.swg.AddIgnoreMessage;
|
||||
import protocol.swg.ObjControllerMessage;
|
||||
@@ -222,7 +223,7 @@ public class ChatService implements INetworkDispatch {
|
||||
|
||||
SWGObject recipient = getObjectByFirstName(firstName);
|
||||
|
||||
if (recipient == null)
|
||||
if (recipient == null || !recipient.isInQuadtree())
|
||||
return;
|
||||
|
||||
PlayerObject recipientGhost = (PlayerObject) recipient.getSlottedObject("ghost");
|
||||
@@ -266,29 +267,34 @@ public class ChatService implements INetworkDispatch {
|
||||
|
||||
if(sender == null)
|
||||
return;
|
||||
// TODO: Recipient handling for values: citizens, group, guild ranks (ace, boot, admiral, etc.)
|
||||
|
||||
if (packet.getRecipient().equals("guild")) {
|
||||
Guild guild = core.guildService.getGuildById(((CreatureObject) sender).getGuildId());
|
||||
if (guild == null || !guild.getMembers().containsKey(sender.getObjectID())) {
|
||||
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(4, packet.getCounter());
|
||||
|
||||
switch (packet.getRecipient()) {
|
||||
case "citizens": break;
|
||||
case "guild":
|
||||
Guild guild = core.guildService.getGuildById(((CreatureObject) sender).getGuildId());
|
||||
if (guild == null || !guild.getMembers().containsKey(sender.getObjectID())) {
|
||||
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(4, packet.getCounter());
|
||||
session.write(response.serialize());
|
||||
return;
|
||||
}
|
||||
|
||||
if (!guild.getMember(sender.getObjectID()).hasMailPermission()) {
|
||||
((CreatureObject) sender).sendSystemMessage("@guild:generic_fail_no_permission", (byte) 0);
|
||||
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(4, packet.getCounter());
|
||||
session.write(response.serialize());
|
||||
return;
|
||||
}
|
||||
guild.sendGuildMail(sender.getCustomName(), packet.getSubject(), packet.getMessage());
|
||||
|
||||
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(0, packet.getCounter());
|
||||
session.write(response.serialize());
|
||||
return;
|
||||
}
|
||||
case "group": break;
|
||||
|
||||
if (!guild.getMember(sender.getObjectID()).hasMailPermission()) {
|
||||
((CreatureObject) sender).sendSystemMessage("@guild:generic_fail_no_permission", (byte) 0);
|
||||
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(4, packet.getCounter());
|
||||
session.write(response.serialize());
|
||||
return;
|
||||
}
|
||||
guild.sendGuildMail(sender.getCustomName(), packet.getSubject(), packet.getMessage());
|
||||
|
||||
ChatOnSendPersistentMessage response = new ChatOnSendPersistentMessage(0, packet.getCounter());
|
||||
session.write(response.serialize());
|
||||
return;
|
||||
default: break;
|
||||
// TODO: Guild ranks
|
||||
}
|
||||
|
||||
|
||||
SWGObject recipient = core.objectService.getObjectByFirstName(packet.getRecipient());
|
||||
|
||||
if (recipient == null)
|
||||
@@ -750,25 +756,6 @@ public class ChatService implements INetworkDispatch {
|
||||
|
||||
}
|
||||
|
||||
public SWGObject getObjectByFirstName(String name) {
|
||||
ConcurrentHashMap<IoSession, Client> clients = core.getActiveConnectionsMap();
|
||||
|
||||
if(name.contains(" "))
|
||||
name = name.split(" ")[0];
|
||||
|
||||
for(Client client : clients.values()) {
|
||||
if(client.getParent() == null)
|
||||
continue;
|
||||
|
||||
String fullName = client.getParent().getCustomName();
|
||||
String firstName = fullName.split(" ")[0];
|
||||
|
||||
if(firstName.equalsIgnoreCase(name))
|
||||
return client.getParent();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public int generateMailId() {
|
||||
Random rand = new Random();
|
||||
|
||||
@@ -1077,4 +1064,10 @@ public class ChatService implements INetworkDispatch {
|
||||
return message;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public SWGObject getObjectByFirstName(String name) {
|
||||
return core.objectService.getObjectByFirstName(name);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ import resources.datatables.PlayerFlags;
|
||||
import resources.guild.Guild;
|
||||
import resources.harvest.SurveyTool;
|
||||
|
||||
import org.apache.commons.lang3.text.WordUtils;
|
||||
import org.apache.mina.core.buffer.IoBuffer;
|
||||
import org.apache.mina.core.session.IoSession;
|
||||
import org.python.core.Py;
|
||||
@@ -606,7 +607,7 @@ public class ObjectService implements INetworkDispatch {
|
||||
for(SWGObject obj : objectList.values()) {
|
||||
if(obj.getCustomName() == null)
|
||||
continue;
|
||||
if(obj.getCustomName().equals(customName))
|
||||
if(obj.getCustomName().equalsIgnoreCase(customName))
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -621,7 +622,7 @@ public class ObjectService implements INetworkDispatch {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (object.getCustomName() != null && customName.length() > 0 && object.getCustomName().equals(customName)) {
|
||||
if (object.getCustomName() != null && customName.length() > 0 && object.getCustomName().equalsIgnoreCase(customName)) {
|
||||
return object;
|
||||
}
|
||||
}
|
||||
@@ -640,7 +641,7 @@ public class ObjectService implements INetworkDispatch {
|
||||
continue;
|
||||
if(obj.getCustomName() == null)
|
||||
continue;
|
||||
if(obj.getCustomName().startsWith(customName))
|
||||
if(obj.getCustomName().startsWith(customName) || obj.getCustomName().toUpperCase().startsWith(WordUtils.capitalize(customName)))
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -655,7 +656,7 @@ public class ObjectService implements INetworkDispatch {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (object.getCustomName() != null && customName.length() > 0 && object.getCustomName().startsWith(customName)) {
|
||||
if (object.getCustomName() != null && customName.length() > 0 && (object.getCustomName().startsWith(customName) || object.getCustomName().toUpperCase().startsWith(WordUtils.capitalize(customName)))) {
|
||||
return object;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user