111 lines
3.4 KiB
Java
111 lines
3.4 KiB
Java
|
package com.gmail.mikeundead;
|
||
|
|
||
|
import java.util.HashMap;
|
||
|
import java.util.Map;
|
||
|
|
||
|
import org.bukkit.ChatColor;
|
||
|
import org.bukkit.entity.Player;
|
||
|
import org.bukkit.event.EventHandler;
|
||
|
import org.bukkit.event.Listener;
|
||
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||
|
|
||
|
public class HandlePlayerPrefix implements Listener {
|
||
|
private final DatabaseHandler databaseHandler;
|
||
|
private final Ranks ranks;
|
||
|
@SuppressWarnings("unused")
|
||
|
private final PvPTitles pvpTitles;
|
||
|
|
||
|
Map<String, Integer> map = new HashMap<String, Integer>();
|
||
|
|
||
|
public HandlePlayerPrefix(final DatabaseHandler databaseHandler, final Ranks ranks, final PvPTitles pvpTitles) {
|
||
|
this.databaseHandler = databaseHandler;
|
||
|
this.ranks = ranks;
|
||
|
this.pvpTitles = pvpTitles;
|
||
|
}
|
||
|
|
||
|
@EventHandler
|
||
|
public void onKill(final PlayerDeathEvent death) {
|
||
|
int kills = 0;
|
||
|
|
||
|
if (death.getEntity().getKiller() != null) {
|
||
|
final String killed = death.getEntity().getName();
|
||
|
final Player player = death.getEntity().getKiller();
|
||
|
|
||
|
if (this.map.containsKey(player.getName())) {
|
||
|
kills = this.map.get(player.getName());
|
||
|
}
|
||
|
if (this.map.containsKey(killed)) {
|
||
|
this.map.put(killed, 0);
|
||
|
}
|
||
|
|
||
|
this.databaseHandler.LoadPlayerFame(player.getName());
|
||
|
final int fame = this.databaseHandler.PlayerFame();
|
||
|
|
||
|
if (!player.getName().equalsIgnoreCase(killed)) {
|
||
|
this.calculateFame(killed, player, fame, kills);
|
||
|
}
|
||
|
|
||
|
kills++;
|
||
|
this.map.put(player.getName(), kills);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@EventHandler
|
||
|
public void onPlayerChat(final AsyncPlayerChatEvent event) {
|
||
|
String rank = null;
|
||
|
|
||
|
this.databaseHandler.LoadPlayerFame(event.getPlayer().getName());
|
||
|
this.databaseHandler.LoadConfig();
|
||
|
|
||
|
rank = this.ranks.GetRank(this.databaseHandler.PlayerFame());
|
||
|
|
||
|
if (rank != null && rank != "") {
|
||
|
final String a = String.format(ChatColor.WHITE + "[" + this.databaseHandler.PrefixColor + rank + ChatColor.WHITE + "] ");
|
||
|
final String format = event.getFormat();
|
||
|
event.setFormat(a + format);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@EventHandler
|
||
|
public void onPlayerLogin(final PlayerLoginEvent event) {
|
||
|
final Player player = event.getPlayer();
|
||
|
|
||
|
try {
|
||
|
this.databaseHandler.FirstRun(player.getName());
|
||
|
} catch (final Exception e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@EventHandler
|
||
|
public void onPlayerQuit(final PlayerQuitEvent event) {
|
||
|
final Player player = event.getPlayer();
|
||
|
|
||
|
this.map.put(player.getName(), 0);
|
||
|
}
|
||
|
|
||
|
private void calculateFame(final String killed, final Player player, int fame, final int kills) {
|
||
|
final int a = this.databaseHandler.PlayerFame();
|
||
|
final String tag = this.databaseHandler.getTag();
|
||
|
if (kills == 0) {
|
||
|
fame++;
|
||
|
player.sendMessage(ChatColor.GREEN + "You killed " + killed + " and received 1 " + tag + ".");
|
||
|
}
|
||
|
if (kills >= 1) {
|
||
|
fame = fame + 1;
|
||
|
player.sendMessage(ChatColor.GREEN + "You killed " + killed + " and received 1 " + tag + ".");
|
||
|
}
|
||
|
this.databaseHandler.SavePlayerFame(player.getName(), fame);
|
||
|
this.databaseHandler.LoadPlayerFame(player.getName());
|
||
|
|
||
|
final String currentRank = this.ranks.GetRank(a);
|
||
|
final String newRank = this.ranks.GetRank(fame);
|
||
|
|
||
|
if (!currentRank.equalsIgnoreCase(newRank)) {
|
||
|
player.sendMessage(ChatColor.GREEN + "Congrats! You are now a " + newRank);
|
||
|
}
|
||
|
}
|
||
|
}
|