Skip to content

Commit a61c4c7

Browse files
committed
Renamed message event type "alive" to "idle"
Added event listeners for entity spawn and player entity interaction Always add new config values to config.yml Some cleanup
1 parent ddf67d6 commit a61c4c7

File tree

5 files changed

+107
-85
lines changed

5 files changed

+107
-85
lines changed

pom.xml

+11-11
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@
4141
<directory>src/main/resources</directory>
4242
</resource>
4343
</resources>
44-
<plugins>
45-
<plugin>
46-
<groupId>org.apache.maven.plugins</groupId>
47-
<artifactId>maven-compiler-plugin</artifactId>
48-
<version>2.3.2</version>
49-
<configuration>
50-
<source>1.7</source>
51-
<target>1.7</target>
52-
</configuration>
53-
</plugin>
54-
</plugins>
44+
<plugins>
45+
<plugin>
46+
<groupId>org.apache.maven.plugins</groupId>
47+
<artifactId>maven-compiler-plugin</artifactId>
48+
<version>2.3.2</version>
49+
<configuration>
50+
<source>1.7</source>
51+
<target>1.7</target>
52+
</configuration>
53+
</plugin>
54+
</plugins>
5555
</build>
5656
</project>

src/main/java/net/minearea/talkingmobs/EventListener.java

+17-4
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
import org.bukkit.entity.Player;
66
import org.bukkit.event.EventHandler;
77
import org.bukkit.event.Listener;
8+
import org.bukkit.event.entity.CreatureSpawnEvent;
89
import org.bukkit.event.entity.EntityDamageByEntityEvent;
910
import org.bukkit.event.entity.EntityDeathEvent;
11+
import org.bukkit.event.player.PlayerInteractEntityEvent;
1012

1113
/**
1214
* Class providing all event listeners required for the plugin
@@ -27,12 +29,17 @@ public EventListener(TalkingMobs pluginInstance, Message messageInstance)
2729
message = messageInstance;
2830
}
2931

30-
// TODO: Prevent spam
31-
/*@EventHandler
32+
@EventHandler
3233
public void onCreatureSpawn(CreatureSpawnEvent event)
3334
{
34-
message.sendMessage(event.getEntity(), Message.MessageType.spawn);
35-
}*/
35+
Entity entity = event.getEntity();
36+
CreatureSpawnEvent.SpawnReason spawnReason = event.getSpawnReason();
37+
38+
if (spawnReason == CreatureSpawnEvent.SpawnReason.SPAWNER || spawnReason == CreatureSpawnEvent.SpawnReason.SPAWNER_EGG)
39+
{
40+
message.sendMessage(entity, Message.EventType.spawned);
41+
}
42+
}
3643

3744
@EventHandler
3845
public void onEntityAttacked(EntityDamageByEntityEvent event)
@@ -57,4 +64,10 @@ public void onEntityKilled(EntityDeathEvent event)
5764
message.sendMessage(entity, (Player) killer, Message.EventType.killed);
5865
}
5966
}
67+
68+
@EventHandler
69+
public void onPlayerInteractEntity(PlayerInteractEntityEvent event)
70+
{
71+
message.sendMessage(event.getRightClicked(), event.getPlayer(), Message.EventType.interacted);
72+
}
6073
}

src/main/java/net/minearea/talkingmobs/Message.java

+13-9
Original file line numberDiff line numberDiff line change
@@ -19,26 +19,26 @@ public class Message
1919
*/
2020
public enum EventType
2121
{
22-
/**
23-
* Mob is alive (Currently unused)
24-
*/
25-
alive,
2622
/**
2723
* Mob has been attacked by a player
2824
*/
2925
attacked,
3026
/**
31-
* Player interacted with the mob (Currently unused)
27+
* Mob is idle (Is just standing/walking/running around) -> Unused
28+
*/
29+
idle,
30+
/**
31+
* Player interacted with the mob (Right clicked on mob)
3232
*/
3333
interacted,
3434
/**
3535
* Mob has been killed by a player
3636
*/
3737
killed,
3838
/**
39-
* Mob has been spawned
39+
* Mob has been spawned (Currently only mob spawner or egg)
4040
*/
41-
spawn
41+
spawned
4242
}
4343

4444
/**
@@ -64,19 +64,23 @@ private String getMessage(Entity mob, EventType eventType)
6464
{
6565
Random randomGenerator = new Random();
6666

67-
String message = plugin.getConfig().getString("messageformat." + eventType.toString());
67+
String message = plugin.getConfig().getString("messageFormat." + eventType.toString());
6868

6969
if (message == null)
7070
{
7171
message = "[&a%mobname%&r] %message%";
72-
plugin.getLogger().log(Level.WARNING, "Message format for event type '{0}' not defined!", eventType.toString());
72+
plugin.getLogger().log(Level.WARNING, "Message format for event type ''{0}'' not defined!", eventType.toString());
7373
}
7474

7575
message = message.replaceAll("%message%", messages.get(randomGenerator.nextInt(messages.size())));
7676
message = message.replaceAll("%mobname%", mob.getType().getName());
7777

7878
return message;
7979
}
80+
else
81+
{
82+
plugin.getLogger().log(Level.WARNING, "No messages for event ''{0}'' of mob ''{1}'' defined!", new Object[]{eventType.toString(), mob.getType().getName()});
83+
}
8084

8185
return null;
8286
}

src/main/java/net/minearea/talkingmobs/TalkingMobs.java

+10-5
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ public final class TalkingMobs extends JavaPlugin
1717
@Override
1818
public void onEnable()
1919
{
20-
this.saveDefaultConfig();
20+
getConfig().options().copyDefaults(true);
21+
saveConfig();
2122

2223
PluginManager pluginManager = getServer().getPluginManager();
2324
pluginManager.registerEvents(new EventListener(this, message), this);
@@ -33,9 +34,11 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
3334
switch (args[0])
3435
{
3536
case "help":// TODO: Messages are in wrong order
37+
List<String> lines = new ArrayList<>();
38+
3639
if (sender.hasPermission("talkingmobs.reload"))
3740
{
38-
sender.sendMessage("/talkingmobs reload - Reload the configuration");
41+
lines.add("/talkingmobs reload - Reload the configuration");
3942
}
4043

4144
List<String> eventTypes = new ArrayList<>();
@@ -44,9 +47,11 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
4447
eventTypes.add(eventType.toString());
4548
}
4649

47-
sender.sendMessage("/talkingmobs toggle <type> - Toggle messages sent by mobs (Type is optional and can be used to only toggle the specified message type)");
48-
sender.sendMessage("");
49-
sender.sendMessage("Message types: " + StringUtils.join(eventTypes, ", "));
50+
lines.add("/talkingmobs toggle <type> - Toggle messages sent by mobs (Type is optional and can be used to only toggle the specified message type)");
51+
lines.add("");
52+
lines.add("Message types: " + StringUtils.join(eventTypes, ", "));
53+
54+
sender.sendMessage(lines.toArray(new String[0]));
5055

5156
return true;
5257
case "reload":

0 commit comments

Comments
 (0)