2017-12-30 08:36:36 +01:00
|
|
|
package net.citizensnpcs.trait.waypoint.triggers;
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import org.bukkit.Location;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
|
|
|
|
import com.google.common.base.Joiner;
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
2022-12-03 17:59:16 +01:00
|
|
|
import net.citizensnpcs.api.CitizensAPI;
|
2018-10-07 07:20:56 +02:00
|
|
|
import net.citizensnpcs.api.npc.NPC;
|
|
|
|
import net.citizensnpcs.api.persistence.Persist;
|
|
|
|
import net.citizensnpcs.api.util.Messaging;
|
|
|
|
|
2017-12-30 08:36:36 +01:00
|
|
|
public class ChatTrigger implements WaypointTrigger {
|
|
|
|
@Persist(required = true)
|
|
|
|
private List<String> lines;
|
|
|
|
@Persist
|
|
|
|
private double radius = -1;
|
|
|
|
|
|
|
|
public ChatTrigger() {
|
|
|
|
}
|
|
|
|
|
|
|
|
public ChatTrigger(double radius, Collection<String> chatLines) {
|
|
|
|
this.radius = radius;
|
|
|
|
lines = Lists.newArrayList(chatLines);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String description() {
|
2019-08-29 11:22:53 +02:00
|
|
|
return String.format("[[Chat]] [radius %f, %s]", radius, Joiner.on(", ").join(lines));
|
2017-12-30 08:36:36 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onWaypointReached(NPC npc, Location waypoint) {
|
2023-03-25 14:47:42 +01:00
|
|
|
if (radius <= 0) {
|
2017-12-30 08:36:36 +01:00
|
|
|
for (Player player : npc.getEntity().getWorld().getPlayers()) {
|
2022-12-03 17:59:16 +01:00
|
|
|
for (String line : lines) {
|
2017-12-30 08:36:36 +01:00
|
|
|
Messaging.send(player, line);
|
2022-12-03 17:59:16 +01:00
|
|
|
}
|
2017-12-30 08:36:36 +01:00
|
|
|
}
|
|
|
|
} else {
|
2024-03-23 16:46:09 +01:00
|
|
|
for (Player player : CitizensAPI.getLocationLookup().getNearbyVisiblePlayers(npc.getEntity(), radius)) {
|
2022-12-03 17:59:16 +01:00
|
|
|
for (String line : lines) {
|
|
|
|
Messaging.send(player, line);
|
|
|
|
}
|
2017-12-30 08:36:36 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|