Skip to content

Commit d403b16

Browse files
committedSep 6, 2020
LunaChat v3.0.13 : Fixed issue #208
1 parent 945a270 commit d403b16

File tree

1 file changed

+43
-47
lines changed

1 file changed

+43
-47
lines changed
 

‎src/main/java/com/github/ucchyocean/lc3/channel/BukkitChannel.java

+43-47
Original file line numberDiff line numberDiff line change
@@ -65,64 +65,60 @@ protected void sendMessage(
6565
if ( isBroadcastChannel() ) {
6666
// ブロードキャストチャンネル
6767

68-
if ( isWorldRange() && player.isOnline() && player.getWorldName() != null ) {
69-
70-
if ( player instanceof ChannelMemberBukkit ) {
71-
// ↑常にtrueだと思うが、念のため。
72-
73-
World w = ((ChannelMemberBukkit)player).getWorld();
74-
75-
if ( getChatRange() > 0 ) {
76-
// 範囲チャット
77-
78-
Location origin = ((ChannelMemberBukkit)player).getLocation();
79-
for ( Player p : Bukkit.getOnlinePlayers() ) {
80-
ChannelMember cp = ChannelMember.getChannelMember(p);
81-
if ( p.getWorld().equals(w) &&
82-
origin.distance(p.getLocation()) <= getChatRange() &&
83-
!getHided().contains(cp) ) {
84-
recipients.add(ChannelMember.getChannelMember(p));
85-
}
86-
}
87-
88-
} else {
89-
// ワールドチャット
90-
91-
for ( Player p : Bukkit.getOnlinePlayers() ) {
92-
ChannelMember cp = ChannelMember.getChannelMember(p);
93-
if ( p.getWorld().equals(w) && !getHided().contains(cp) ) {
94-
recipients.add(ChannelMember.getChannelMember(p));
95-
}
96-
}
97-
}
68+
for ( Player p : Bukkit.getOnlinePlayers() ) {
69+
ChannelMember cp = ChannelMember.getChannelMember(p);
70+
if ( !getHided().contains(cp) ) {
71+
recipients.add(cp);
72+
}
73+
}
74+
} else {
75+
// 通常チャンネル
76+
77+
for ( ChannelMember mem : getMembers() ) {
78+
if ( mem != null && mem.isOnline() && !getHided().contains(mem) ) {
79+
recipients.add(mem);
80+
}
81+
}
82+
}
83+
84+
if ( isWorldRange() && player.isOnline() && player.getWorldName() != null ) {
85+
// ワールドチャットや範囲チャットの場合は、範囲外のプレイヤーをrecipientsから抜く
86+
87+
List<ChannelMember> recipientsNew = new ArrayList<>();
88+
89+
if ( getChatRange() > 0 ) {
90+
// 範囲チャット
9891

99-
// 受信者が自分以外いない場合は、メッセージを表示する
100-
if ( Messages.noRecipientMessage("", "").length > 0 && (
101-
recipients.size() == 0 ||
102-
(recipients.size() == 1 &&
103-
recipients.get(0).getName().equals(player.getName()) ) ) ) {
104-
sendNoRecipientMessage = true;
92+
@Nullable Location origin = ((ChannelMemberBukkit)player).getLocation();
93+
for ( ChannelMember recipient : recipients ) {
94+
@Nullable Location target = ((ChannelMemberBukkit)recipient).getLocation();
95+
if ( origin != null && target != null &&
96+
origin.getWorld().equals(target.getWorld()) &&
97+
origin.distance(target) <= getChatRange() ) {
98+
recipientsNew.add(recipient);
10599
}
106100
}
107101

108102
} else {
109-
// 通常ブロードキャスト(全員へ送信)
103+
// ワールドチャット
110104

111-
for ( Player p : Bukkit.getOnlinePlayers() ) {
112-
ChannelMember cp = ChannelMember.getChannelMember(p);
113-
if ( !getHided().contains(cp) ) {
114-
recipients.add(cp);
105+
@Nullable World w = ((ChannelMemberBukkit)player).getWorld();
106+
for ( ChannelMember recipient : recipients ) {
107+
@Nullable World target = ((ChannelMemberBukkit)recipient).getWorld();
108+
if ( w != null && target != null && w.equals(target) ) {
109+
recipientsNew.add(recipient);
115110
}
116111
}
117112
}
118113

119-
} else {
120-
// 通常チャンネル
114+
recipients = recipientsNew;
121115

122-
for ( ChannelMember mem : getMembers() ) {
123-
if ( mem != null && mem.isOnline() && !getHided().contains(mem) ) {
124-
recipients.add(mem);
125-
}
116+
// 受信者が自分以外いない場合は、メッセージを表示する
117+
if ( Messages.noRecipientMessage("", "").length > 0 && (
118+
recipients.size() == 0 ||
119+
(recipients.size() == 1 &&
120+
recipients.get(0).getName().equals(player.getName()) ) ) ) {
121+
sendNoRecipientMessage = true;
126122
}
127123
}
128124

0 commit comments

Comments
 (0)
Please sign in to comment.