Skip to content

Commit 3d6f70b

Browse files
committed
Allow to configure which events should show a message
1 parent a51e7b6 commit 3d6f70b

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

src/main/java/com/selfcoders/talkingmobs/EventListener.java

+20-2
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,43 @@
1010
import org.bukkit.event.entity.EntityDeathEvent;
1111
import org.bukkit.event.player.PlayerInteractEntityEvent;
1212

13+
import java.util.List;
14+
1315
/**
1416
* Class providing all event listeners required for the plugin
1517
*/
1618
class EventListener implements Listener {
1719
private final Message message;
20+
private final TalkingMobs plugin;
1821

1922
/**
2023
* Constructor of the class
2124
*
2225
* @param messageInstance The instance of the Message class
2326
*/
24-
EventListener(Message messageInstance) {
27+
EventListener(Message messageInstance, TalkingMobs pluginInstance) {
2528
message = messageInstance;
29+
plugin = pluginInstance;
2630
}
2731

2832
@EventHandler
2933
public void onCreatureSpawn(CreatureSpawnEvent event) {
3034
Entity entity = event.getEntity();
3135
CreatureSpawnEvent.SpawnReason spawnReason = event.getSpawnReason();
3236

33-
if (spawnReason == CreatureSpawnEvent.SpawnReason.SPAWNER || spawnReason == CreatureSpawnEvent.SpawnReason.SPAWNER_EGG || spawnReason == CreatureSpawnEvent.SpawnReason.CUSTOM) {
37+
List<String> allowedSpawnReasons = plugin.getConfig().getStringList("events.spawned");
38+
39+
if (allowedSpawnReasons.contains(spawnReason.name())) {
3440
message.sendMessage(entity, Message.EventType.spawned);
3541
}
3642
}
3743

3844
@EventHandler
3945
public void onEntityAttacked(EntityDamageByEntityEvent event) {
46+
if (!plugin.getConfig().getBoolean("events.attacked")) {
47+
return;
48+
}
49+
4050
Entity damager = event.getDamager();
4151
Entity entity = event.getEntity();
4252

@@ -47,6 +57,10 @@ public void onEntityAttacked(EntityDamageByEntityEvent event) {
4757

4858
@EventHandler
4959
public void onEntityKilled(EntityDeathEvent event) {
60+
if (!plugin.getConfig().getBoolean("events.killed")) {
61+
return;
62+
}
63+
5064
LivingEntity entity = event.getEntity();
5165
Player killer = entity.getKiller();
5266

@@ -57,6 +71,10 @@ public void onEntityKilled(EntityDeathEvent event) {
5771

5872
@EventHandler
5973
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
74+
if (!plugin.getConfig().getBoolean("events.interacted")) {
75+
return;
76+
}
77+
6078
message.sendMessage(event.getRightClicked(), event.getPlayer(), Message.EventType.interacted);
6179
}
6280
}

src/main/java/com/selfcoders/talkingmobs/TalkingMobs.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public void onEnable() {
2020
saveConfig();
2121

2222
PluginManager pluginManager = getServer().getPluginManager();
23-
pluginManager.registerEvents(new EventListener(message), this);
23+
pluginManager.registerEvents(new EventListener(message, this), this);
2424
}
2525

2626
@Override

src/main/resources/config.yml

+12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22
# Only players in this range to the talking mob will see the message
33
maxDistance: 0
44

5+
# Define which events should show messages
6+
# Everything except for "spawned" is a boolean (true or false).
7+
# The "spawned" event expects a list of spawn reasons (see https://jd.bukkit.org/org/bukkit/event/entity/CreatureSpawnEvent.SpawnReason.html for possible spawn reasons).
8+
events:
9+
attacked: true
10+
interacted: true
11+
killed: true
12+
spawned:
13+
- CUSTOM
14+
- SPAWNER
15+
- SPAWNER_EGG
16+
517
# How to format the messages
618
# %mobname% is replaced with the name of the talking mob
719
# %message% is replaced with the message

0 commit comments

Comments
 (0)