Advertisement
Guest User

Untitled

a guest
Nov 3rd, 2015
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.44 KB | None | 0 0
  1. package me.assist.randommobnames;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.concurrent.ThreadLocalRandom;
  6.  
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.configuration.ConfigurationSection;
  9. import org.bukkit.configuration.file.FileConfiguration;
  10. import org.bukkit.entity.EntityType;
  11. import static org.bukkit.entity.EntityType.*;
  12. import org.bukkit.entity.LivingEntity;
  13. import org.bukkit.event.EventHandler;
  14. import org.bukkit.event.Listener;
  15. import org.bukkit.event.entity.CreatureSpawnEvent;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17.  
  18. public class RandomMobNames extends JavaPlugin implements Listener {
  19.  
  20.     private FileConfiguration config;
  21.     private HashMap<String, ArrayList<String>> mobNames = new HashMap<>();
  22.  
  23.     public void onEnable() {
  24.         saveDefaultConfig();
  25.         config = getConfig();
  26.  
  27.         final EntityType[] livingEntities = new EntityType[] { BAT, BLAZE, CAVE_SPIDER, CHICKEN, COW, CREEPER, ENDER_DRAGON, ENDERMAN, GHAST, GIANT, IRON_GOLEM, HORSE, MAGMA_CUBE, MUSHROOM_COW, OCELOT, PIG, PIG_ZOMBIE, SHEEP, SILVERFISH, SKELETON, SLIME, SNOWMAN, SPIDER, SQUID, VILLAGER, WITCH, WITHER, WOLF, ZOMBIE };
  28.  
  29.         for (EntityType entity : livingEntities) {
  30.             String name = entity.name();
  31.  
  32.             if (!config.contains(name)) {
  33.                 continue;
  34.             }
  35.  
  36.             ArrayList<String> names = findInheritedNames(name, (ArrayList<String>) config.getStringList(name + ".names"));
  37.             mobNames.put(name, names);
  38.  
  39.             getLogger().info("Loaded " + names.size() + " custom names for mob: " + name);
  40.         }
  41.  
  42.         getServer().getPluginManager().registerEvents(this, this);
  43.     }
  44.  
  45.     private ArrayList<String> findInheritedNames(String name, ArrayList<String> names) {
  46.         String inherit = config.getString(name + ".inherit", null);
  47.  
  48.         if (inherit == null) {
  49.             return names;
  50.         }
  51.  
  52.         ConfigurationSection section = config.getConfigurationSection(inherit);
  53.  
  54.         if (section.contains("names")) {
  55.             names.addAll(section.getStringList("names"));
  56.         }
  57.  
  58.         return findInheritedNames(inherit, names);
  59.     }
  60.  
  61.     @EventHandler
  62.     public void onSpawn(CreatureSpawnEvent event) {
  63.         LivingEntity entity = event.getEntity();
  64.         String name = entity.getType().name();
  65.  
  66.         if (!mobNames.containsKey(name)) {
  67.             return;
  68.         }
  69.  
  70.         ArrayList<String> names = mobNames.get(name);
  71.         String randomName = names.get(ThreadLocalRandom.current().nextInt(names.size()));
  72.  
  73.         entity.setCustomName(ChatColor.translateAlternateColorCodes('&', randomName));
  74.         entity.setCustomNameVisible(true);
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement