Advertisement
Dudemister1999

Plugin #0001

Nov 9th, 2014
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.64 KB | None | 0 0
  1. import com.google.common.base.Joiner;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.util.logging.Level;
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.OfflinePlayer;
  8. import org.bukkit.command.Command;
  9. import org.bukkit.command.CommandSender;
  10. import org.bukkit.configuration.file.YamlConfiguration;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.EventHandler;
  13. import org.bukkit.event.Listener;
  14. import org.bukkit.event.entity.PlayerDeathEvent;
  15. import org.bukkit.plugin.PluginManager;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17. import org.bukkit.scheduler.BukkitRunnable;
  18.  
  19. public class ExamplePlugin extends JavaPlugin implements Listener
  20. {
  21.     private static String lastKilledPlayer = "Notch";
  22.     private File configFile;
  23.     private YamlConfiguration config;
  24.    
  25.     private String deathMessage = "&cYou were killed by &4{killer}&c!";
  26.     private String deathCommand = "/say {killer} is a murderer!";
  27.    
  28.     @Override
  29.     public void onEnable()
  30.     {
  31.         createData();
  32.         registerListeners();
  33.        
  34.         new BukkitRunnable()
  35.         {
  36.             @Override
  37.             public void run()
  38.             {
  39.                 deathMessage = getDeathMessage();
  40.                 deathCommand = getDeathCommand();
  41.             }
  42.         }.runTaskTimerAsynchronously(this, 0L, ((20 * 60) * 60));
  43.     }
  44.    
  45.     @Override
  46.     public void onDisable()
  47.     {
  48.         Bukkit.getScheduler().cancelTasks(this);
  49.         save();
  50.     }
  51.    
  52.     private void registerListeners()
  53.     {
  54.         PluginManager pm = Bukkit.getPluginManager();
  55.         pm.registerEvents(this, this);
  56.     }
  57.    
  58.     @EventHandler
  59.     public void death(PlayerDeathEvent event)
  60.     {
  61.         Player player = event.getEntity();
  62.        
  63.         if(player.getKiller() != null) //What if the player was pricked to death? NullPointerException, that's what if.
  64.         {
  65.             Player killer = player.getKiller();
  66.            
  67.             if(isRandom()) //1 in 100 chance.
  68.             {
  69.                 Bukkit.dispatchCommand(Bukkit.getConsoleSender(), deathCommand.replaceFirst("/", "").replaceAll("{killer}", killer.getName()).replaceAll("{killed}", player.getName()));
  70.                 Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "eco give {killer} 10".replaceAll("{killer}", killer.getName()));
  71.             }
  72.             else
  73.             {
  74.                 killer.sendMessage(format("&6Bad luck! (GG)"));
  75.                 Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "eco give {killer} 1".replaceAll("{killer}", killer.getName()));
  76.             }
  77.             event.setDeathMessage(format("&6{killer} &ajust destroyed &3{killed}").replaceAll("{killer}", killer.getName()).replaceAll("{killed}", player.getName()));
  78.             lastKilledPlayer = player.getName();
  79.         }
  80.     }
  81.    
  82.     @Override
  83.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
  84.     {
  85.         String cmd = command.getName();
  86.         if(cmd.equalsIgnoreCase("killmessage") || cmd.equalsIgnoreCase("km"))
  87.         {
  88.             String message = Joiner.on(" ").join(args);
  89.            
  90.             OfflinePlayer potentialPlayer = Bukkit.getOfflinePlayer(lastKilledPlayer);
  91.             if(potentialPlayer.isOnline())
  92.             {
  93.                 Player player = (Player)potentialPlayer;
  94.                 player.sendMessage(format(message).replaceAll("{killer}", player.getKiller().getName()));
  95.             }
  96.             else
  97.             {
  98.                 sender.sendMessage(ChatColor.RED + "Sorry, that player is no longer online!");
  99.             }
  100.             return true;
  101.         }
  102.         else
  103.         {
  104.             return false;
  105.         }
  106.     }
  107.    
  108.     private String format(String in)
  109.     {
  110.         return ChatColor.translateAlternateColorCodes('&', in);
  111.     }
  112.    
  113.     public static String getLastDeath()
  114.     {
  115.         return lastKilledPlayer;
  116.     }
  117.    
  118.     private boolean isRandom()
  119.     {
  120.         return (Math.random() * 100) == 0;
  121.     }
  122.    
  123.     private void createData()
  124.     {
  125.         getDataFolder().mkdirs();
  126.         configFile = new File(getDataFolder(), "config.yml");
  127.         if(!configFile.exists())
  128.         {
  129.             try
  130.             {
  131.                 configFile.createNewFile();
  132.             }
  133.             catch (IOException ex)
  134.             {
  135.                 getLogger().log(Level.SEVERE, "{0}There was a problem creating the configuration file.", ChatColor.RED);
  136.                 ex.printStackTrace();
  137.             }
  138.         }
  139.         config = YamlConfiguration.loadConfiguration(configFile);
  140.     }
  141.    
  142.     private String getDeathMessage()
  143.     {
  144.         if(config.contains("lang.death_message"))
  145.         {
  146.             return config.getString("lang.death_message");
  147.         }
  148.         else
  149.         {
  150.             config.set("lang.death_message", "&cYou were killed by &4{killer}&c!");
  151.             save();
  152.             return "&cYou were killed by &4{killer}&c!";
  153.         }
  154.     }
  155.    
  156.     private String getDeathCommand()
  157.     {
  158.         if(config.contains("command.death"))
  159.         {
  160.             return config.getString("command.death");
  161.         }
  162.         else
  163.         {
  164.             config.set("command.death", "/say {killer} is a murderer!");
  165.             save();
  166.             return "/say {killer} is a murderer!";
  167.         }
  168.     }
  169.    
  170.     private void save()
  171.     {
  172.         try
  173.         {
  174.             config.save(configFile);
  175.         }
  176.         catch(IOException ex)
  177.         {
  178.             getLogger().log(Level.SEVERE, "{0}There was a problem saving the configuration file.", ChatColor.RED);
  179.             ex.printStackTrace();
  180.         }
  181.     }
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement