1
0
mirror of https://e.coding.net/circlecloud/PvPTitles.git synced 2025-11-24 21:36:20 +00:00

新玩家自动添加默认点数 被击杀玩家无点数将不会获得点数...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092
2016-01-08 21:02:16 +08:00
parent 1973fd217e
commit 2381eb7268
4 changed files with 264 additions and 254 deletions

View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.gmail.mikeundead</groupId> <groupId>com.gmail.mikeundead</groupId>
<artifactId>PvPTitles</artifactId> <artifactId>PvPTitles</artifactId>
<version>1.3</version> <version>1.3.1</version>
<build> <build>
<finalName>${project.name}</finalName> <finalName>${project.name}</finalName>
<resources> <resources>

View File

@@ -6,6 +6,7 @@ import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@@ -13,201 +14,204 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
public class DatabaseHandler { public class DatabaseHandler {
private final PvPTitles pvpTitles; private final PvPTitles pvpTitles;
private int Fame; private int Fame;
private int Points; private int Points;
private final Map<Integer, String> rankList; private int defaultPoints;
private final Map<Integer, Integer> reqFame; private final Map<Integer, String> rankList;
private final Map<Integer, String> cashList; private final Map<Integer, Integer> reqFame;
public ChatColor PrefixColor; private final Map<Integer, String> cashList;
public ChatColor PrefixColor;
private String tag; private String tag;
private String ptag; private String ptag;
public DatabaseHandler(final PvPTitles pvpTitles) { public DatabaseHandler(final PvPTitles pvpTitles) {
this.rankList = new HashMap<>(); this.rankList = new HashMap<>();
this.reqFame = new HashMap<>(); this.reqFame = new HashMap<>();
this.cashList = new HashMap<>(); this.cashList = new HashMap<>();
this.pvpTitles = pvpTitles; this.pvpTitles = pvpTitles;
this.SaveConfig(); this.SaveConfig();
} }
public void FirstRun(final String playername) { public void FirstRun(final String playername) {
final File file = new File((new StringBuilder()) final File file = new File((new StringBuilder())
.append(this.pvpTitles.getDataFolder()) .append(this.pvpTitles.getDataFolder())
.append(File.separator) .append(File.separator)
.append("players") .append("players")
.append(File.separator) .append(File.separator)
.append(playername) .append(playername)
.append(".yml") .append(".yml")
.toString()); .toString());
if (!file.exists()) { if (!file.exists()) {
this.pvpTitles.getDataFolder().mkdirs(); this.pvpTitles.getDataFolder().mkdirs();
final FileConfiguration config = new YamlConfiguration(); final FileConfiguration config = new YamlConfiguration();
config.set("Fame", 0); config.set("Fame", 0);
config.set("Points", new Random().nextInt(25) + 25);
try {
config.save(file);
} catch (final IOException e) {
e.printStackTrace();
}
}
}
try { /**
config.save(file); * @return cashList
} catch (final IOException e) { */
e.printStackTrace(); public Map<Integer, String> getCashList() {
} return cashList;
} }
}
/** public int getFame() {
* @return cashList return this.Fame;
*/ }
public Map<Integer, String> getCashList() {
return cashList;
}
public int getFame() { public int getPoints() {
return this.Fame; return Points;
} }
public int getPoints() { public String getPtag() {
return Points; return ptag;
} }
public String getPtag() { public String getTag() {
return ptag; return this.tag;
} }
public String getTag() { public void LoadConfig() {
return this.tag; final File file = new File(this.pvpTitles.getDataFolder(), "config.yml");
} final FileConfiguration config = YamlConfiguration.loadConfiguration(file);
final List<String> configList = config.getStringList("RankNames");
defaultPoints = config.getInt("defaultPoints");
for (int i = 0; i < configList.size(); i++) {
this.rankList.put(i, configList.get(i));
}
@SuppressWarnings("unchecked")
final List<Integer> derp = (List<Integer>) config.getList("ReqFame");
for (int i = 0; i < derp.size(); i++) {
this.reqFame.put(i, derp.get(i));
}
this.GetPrefixColor(config.getString("PrefixColor"));
final ConfigurationSection cash = config.getConfigurationSection("Cash");
for (final String key : cash.getKeys(false)) {
try {
final Integer num = Integer.valueOf(key);
cashList.put(num, cash.getString(key));
} catch (final Exception e) {
pvpTitles.getLogger().warning(key + "不是一个数字 已忽略!");
}
}
tag = config.getString("Tag");
if (configList.size() != derp.size()) {
this.pvpTitles.log.info("WARNING - RankNames and ReqFame are not equal in their numbers.");
this.pvpTitles.log.info("WARNING - RankNames and ReqFame are not equal in their numbers.");
this.pvpTitles.log.info("WARNING - RankNames and ReqFame are not equal in their numbers.");
}
}
public void LoadConfig() { public void LoadPlayerData(final String playername) {
final File file = new File(this.pvpTitles.getDataFolder(), "config.yml"); final File file = new File((new StringBuilder())
final FileConfiguration config = YamlConfiguration.loadConfiguration(file); .append(this.pvpTitles.getDataFolder())
final List<String> configList = config.getStringList("RankNames"); .append(File.separator)
for (int i = 0; i < configList.size(); i++) { .append("players")
this.rankList.put(i, configList.get(i)); .append(File.separator)
} .append(playername)
@SuppressWarnings("unchecked") .append(".yml")
final List<Integer> derp = (List<Integer>) config.getList("ReqFame"); .toString());
for (int i = 0; i < derp.size(); i++) { final FileConfiguration config = YamlConfiguration.loadConfiguration(file);
this.reqFame.put(i, derp.get(i)); this.Fame = config.getInt("Fame");
} this.Points = config.getInt("Points");
this.GetPrefixColor(config.getString("PrefixColor")); }
final ConfigurationSection cash = config.getConfigurationSection("Cash");
for (final String key : cash.getKeys(false)) {
try {
final Integer num = Integer.valueOf(key);
cashList.put(num, cash.getString(key));
} catch (final Exception e) {
pvpTitles.getLogger().warning(key + "不是一个数字 已忽略!");
}
}
tag = config.getString("Tag");
if (configList.size() != derp.size()) {
this.pvpTitles.log.info("WARNING - RankNames and ReqFame are not equal in their numbers.");
this.pvpTitles.log.info("WARNING - RankNames and ReqFame are not equal in their numbers.");
this.pvpTitles.log.info("WARNING - RankNames and ReqFame are not equal in their numbers.");
}
}
public void LoadPlayerData(final String playername) { public Map<Integer, String> RankList() {
final File file = new File((new StringBuilder()) return this.rankList;
.append(this.pvpTitles.getDataFolder()) }
.append(File.separator)
.append("players")
.append(File.separator)
.append(playername)
.append(".yml")
.toString());
final FileConfiguration config = YamlConfiguration.loadConfiguration(file);
this.Fame = config.getInt("Fame");
this.Points = config.getInt("Points");
}
public Map<Integer, String> RankList() { public Map<Integer, Integer> reqFame() {
return this.rankList; return this.reqFame;
} }
public Map<Integer, Integer> reqFame() { public void SaveConfig() {
return this.reqFame; final File file = new File(this.pvpTitles.getDataFolder(), "config.yml");
}
public void SaveConfig() { if (!file.exists()) {
final File file = new File(this.pvpTitles.getDataFolder(), "config.yml"); this.pvpTitles.getDataFolder().mkdirs();
final FileConfiguration config = new YamlConfiguration();
final String[] ranks = { "None",
"Hero",
"Fierce Hero",
"Mighty Hero",
"Deadly Hero",
"Terrifying Hero",
"Conquering Hero",
"Subjugating Hero",
"Vanquishing Hero",
"Renowned Hero",
"Illustrious Hero",
"Eminent Hero",
"King's Hero",
"Emperor's Hero",
"Balthazar's Hero",
"Legendary Hero" };
final Integer[] reqfame = { 0, 25, 75, 180, 360, 600, 1000, 1680, 2800, 4665, 7750, 12960, 21600, 36000, 60000, 100000 };
config.set("Tag", "Fame");
config.set("PrefixColor", "green");
config.set("defaultPoints", 50);
config.set("RankNames", Arrays.asList(ranks));
config.set("ReqFame", Arrays.asList(reqfame));
config.set("Cash.10", "give {player} 1 1");
config.set("Cash.20", "give {player} 1 2");
config.set("Cash.30", "give {player} 1 3");
try {
config.save(file);
} catch (final IOException e) {
e.printStackTrace();
}
}
}
if (!file.exists()) { public void SavePlayerData(final String playername, final String path, final int fame) {
this.pvpTitles.getDataFolder().mkdirs(); final File file = new File((new StringBuilder())
final FileConfiguration config = new YamlConfiguration(); .append(this.pvpTitles.getDataFolder())
final String[] ranks = { "None", .append(File.separator)
"Hero", .append("players")
"Fierce Hero", .append(File.separator)
"Mighty Hero", .append(playername)
"Deadly Hero", .append(".yml")
"Terrifying Hero", .toString());
"Conquering Hero", if (!file.exists()) {
"Subjugating Hero", this.pvpTitles.getDataFolder().mkdir();
"Vanquishing Hero", try {
"Renowned Hero", file.createNewFile();
"Illustrious Hero", } catch (final Exception e) {
"Eminent Hero", e.printStackTrace();
"King's Hero", }
"Emperor's Hero", }
"Balthazar's Hero", final FileConfiguration config = YamlConfiguration.loadConfiguration(file);
"Legendary Hero" }; config.set(path, fame);
final Integer[] reqfame = { 0, 25, 75, 180, 360, 600, 1000, 1680, 2800, 4665, 7750, 12960, 21600, 36000, 60000, 100000 }; try {
config.set("Tag", "Fame"); config.save(file);
config.set("PrefixColor", "green"); } catch (final Exception e) {
config.set("RankNames", Arrays.asList(ranks)); e.printStackTrace();
config.set("ReqFame", Arrays.asList(reqfame)); }
config.set("Cash.10", "give {player} 1 1"); }
config.set("Cash.20", "give {player} 1 2");
config.set("Cash.30", "give {player} 1 3");
try {
config.save(file);
} catch (final IOException e) {
e.printStackTrace();
}
}
}
public void SavePlayerData(final String playername, final String path, final int fame) { public void SavePlayerFame(final String playername, final int fame) {
final File file = new File((new StringBuilder()) SavePlayerData(playername, "Fame", fame);
.append(this.pvpTitles.getDataFolder()) }
.append(File.separator)
.append("players")
.append(File.separator)
.append(playername)
.append(".yml")
.toString());
if (!file.exists()) {
this.pvpTitles.getDataFolder().mkdir();
try {
file.createNewFile();
} catch (final Exception e) {
e.printStackTrace();
}
}
final FileConfiguration config = YamlConfiguration.loadConfiguration(file);
config.set(path, fame);
try {
config.save(file);
} catch (final Exception e) {
e.printStackTrace();
}
}
public void SavePlayerFame(final String playername, final int fame) { public void SavePlayerPoint(final String playername, final int fame) {
SavePlayerData(playername, "Fame", fame); SavePlayerData(playername, "Points", fame);
} }
public void SavePlayerPoint(final String playername, final int fame) { public void setPoints(final int points) {
SavePlayerData(playername, "Points", fame); Points = points;
} }
public void setPoints(final int points) { private void GetPrefixColor(final String color) {
Points = points; this.PrefixColor = ChatColor.valueOf(color.toUpperCase());
} }
private void GetPrefixColor(final String color) {
this.PrefixColor = ChatColor.valueOf(color.toUpperCase());
}
} }

View File

@@ -13,88 +13,94 @@ import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
public class HandlePlayerPrefix implements Listener { public class HandlePlayerPrefix implements Listener {
private final DatabaseHandler databaseHandler; private final DatabaseHandler databaseHandler;
private final Ranks ranks; private final Ranks ranks;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final PvPTitles pvpTitles; private final PvPTitles pvpTitles;
Map<String, Integer> map = new HashMap<String, Integer>(); Map<String, Integer> map = new HashMap<String, Integer>();
public HandlePlayerPrefix(final DatabaseHandler databaseHandler, final Ranks ranks, final PvPTitles pvpTitles) { public HandlePlayerPrefix(final DatabaseHandler databaseHandler, final Ranks ranks, final PvPTitles pvpTitles) {
this.databaseHandler = databaseHandler; this.databaseHandler = databaseHandler;
this.ranks = ranks; this.ranks = ranks;
this.pvpTitles = pvpTitles; this.pvpTitles = pvpTitles;
} }
@EventHandler @EventHandler
public void onKill(final PlayerDeathEvent death) { public void onKill(final PlayerDeathEvent death) {
int kills = 0; int kills = 0;
if (death.getEntity().getKiller() != null) { if (death.getEntity().getKiller() != null) {
final String killed = death.getEntity().getName(); final String killed = death.getEntity().getName();
final Player player = death.getEntity().getKiller(); final Player player = death.getEntity().getKiller();
if (this.map.containsKey(player.getName())) { if (this.map.containsKey(player.getName())) {
kills = this.map.get(player.getName()); kills = this.map.get(player.getName());
} }
if (this.map.containsKey(killed)) { if (this.map.containsKey(killed)) {
this.map.put(killed, 0); this.map.put(killed, 0);
} }
this.databaseHandler.LoadPlayerData(player.getName()); this.databaseHandler.LoadPlayerData(player.getName());
final int fame = this.databaseHandler.getFame(); final int killedpoint = databaseHandler.getPoints();
if (!player.getName().equalsIgnoreCase(killed)) { this.databaseHandler.LoadPlayerData(player.getName());
this.calculateFame(killed, player, fame, kills); final int fame = this.databaseHandler.getFame();
} if (!player.getName().equalsIgnoreCase(killed)) {
kills++; this.calculateFame(killed, player, fame, kills, killedpoint);
this.map.put(player.getName(), kills); }
} kills++;
} this.map.put(player.getName(), kills);
}
}
@EventHandler @EventHandler
public void onPlayerChat(final AsyncPlayerChatEvent event) { public void onPlayerChat(final AsyncPlayerChatEvent event) {
String rank = null; String rank = null;
this.databaseHandler.LoadPlayerData(event.getPlayer().getName()); this.databaseHandler.LoadPlayerData(event.getPlayer().getName());
this.databaseHandler.LoadConfig(); this.databaseHandler.LoadConfig();
rank = this.ranks.GetRank(this.databaseHandler.getFame()); rank = this.ranks.GetRank(this.databaseHandler.getFame());
if (rank != null && rank != "") { if (rank != null && rank != "") {
final String a = String.format(ChatColor.WHITE + "[" + this.databaseHandler.PrefixColor + rank + ChatColor.WHITE + "] "); final String a = String.format(ChatColor.WHITE + "[" + this.databaseHandler.PrefixColor + rank + ChatColor.WHITE + "] ");
final String format = event.getFormat(); final String format = event.getFormat();
event.setFormat(a + format); event.setFormat(a + format);
} }
} }
@EventHandler @EventHandler
public void onPlayerLogin(final PlayerLoginEvent event) { public void onPlayerLogin(final PlayerLoginEvent event) {
final Player player = event.getPlayer(); final Player player = event.getPlayer();
try { try {
this.databaseHandler.FirstRun(player.getName()); this.databaseHandler.FirstRun(player.getName());
} catch (final Exception e) { } catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@EventHandler @EventHandler
public void onPlayerQuit(final PlayerQuitEvent event) { public void onPlayerQuit(final PlayerQuitEvent event) {
final Player player = event.getPlayer(); final Player player = event.getPlayer();
this.map.put(player.getName(), 0); this.map.put(player.getName(), 0);
} }
private void calculateFame(final String killed, final Player player, int fame, final int kills) { private void calculateFame(final String killed, final Player player, int fame, final int kills, final int killedpoint) {
final int a = this.databaseHandler.getFame(); final String currentRank = this.ranks.GetRank(fame);
final String tag = this.databaseHandler.getTag(); final String tag = this.databaseHandler.getTag();
if (kills == 0) { if (kills == 0) {
fame++; fame++;
player.sendMessage(ChatColor.GREEN + "你击杀了 " + killed + " 获得一点 " + tag + "."); player.sendMessage(ChatColor.GREEN + "你击杀了 " + killed + " 获得一点 " + tag + ".");
} }
this.databaseHandler.LoadPlayerData(player.getName()); this.databaseHandler.LoadPlayerData(player.getName());
this.databaseHandler.SavePlayerPoint(player.getName(), databaseHandler.getPoints() + 1); if (killedpoint < 1) {
this.databaseHandler.SavePlayerFame(player.getName(), fame); player.sendMessage(ChatColor.RED + killed + " 已经是穷光蛋了 无法获得任何点数.");
} else {
player.sendMessage(ChatColor.GREEN + "你击杀了 " + killed + " 获得了点数1点(可兑换物品).");
this.databaseHandler.SavePlayerPoint(player.getName(), databaseHandler.getPoints() + 1);
}
this.databaseHandler.SavePlayerFame(player.getName(), fame);
final String currentRank = this.ranks.GetRank(a); final String newRank = this.ranks.GetRank(fame);
final String newRank = this.ranks.GetRank(fame);
if (!currentRank.equalsIgnoreCase(newRank)) { if (!currentRank.equalsIgnoreCase(newRank)) {
player.sendMessage(ChatColor.GREEN + "恭喜! 您已晋升为 " + newRank); player.sendMessage(ChatColor.GREEN + "恭喜! 您已晋升为 " + newRank);
} }
} }
} }

View File

@@ -1,5 +1,6 @@
Tag: Fame Tag: Fame
PrefixColor: green PrefixColor: green
defaultPoints: 50
RankNames: RankNames:
- None - None
- Hero - Hero
@@ -35,7 +36,6 @@ ReqFame:
- 60000 - 60000
- 100000 - 100000
Cash: Cash:
5: give {player} 1 10: give {player} 2 1
10: give {player} 1 20: give {player} 2 1
30: give {player} 1 30: give {player} 2 1
80: give {player} 1