diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 162deb7..5b51291 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -6,12 +6,17 @@
+
+
+
-
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index 1009c32..02b5184 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -6,10 +6,16 @@
+
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 4b661a5..66d83a2 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -7,6 +7,11 @@
+
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/Main.java b/2b2t-common/src/main/java/org/cn2b2t/common/Main.java
index 8de7069..8eb68ed 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/Main.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/Main.java
@@ -4,13 +4,14 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
import org.cn2b2t.common.commands.*;
+import org.cn2b2t.common.functions.ProfileData;
import org.cn2b2t.common.listeners.*;
import org.cn2b2t.common.managers.DataManager;
import org.cn2b2t.common.managers.DonateManager;
-import org.cn2b2t.common.managers.UserDataManager;
import org.cn2b2t.common.managers.WorldBorderManager;
import org.cn2b2t.common.runnables.BoardCastRunnable;
import org.cn2b2t.common.runnables.RestartRunnable;
+import org.cn2b2t.core.managers.utils.UserManager;
public class Main extends JavaPlugin {
@@ -34,15 +35,6 @@ public class Main extends JavaPlugin {
@Override
public void onEnable() {
Main.instance = this;
- inits();
- }
-
- @Override
- public void onDisable() {
- this.shutdown();
- }
-
- private void inits() {
regCmds();
regListeners();
pluginMessage("已启用。");
@@ -50,21 +42,23 @@ public class Main extends JavaPlugin {
saveDefaultConfig();
reloadConfig();
DataManager.init();
- UserDataManager.init();
WorldBorderManager.init();
DonateManager.init();
+
+ UserManager.removeHandler(ProfileData.class);
+
new BoardCastRunnable();
new RestartRunnable(21600);
-
-// BungeeTabListPlusBukkitAPI.registerVariable(this, new Serverprefix());
}
- private void shutdown() {
+ @Override
+ public void onDisable() {
this.pluginMessage("已卸载。");
+
}
+
private void regCmds() {
- this.getCommand("suicide").setExecutor(new Suicide());
this.getCommand("delay").setExecutor(new Delay());
this.getCommand("help").setExecutor(new Help());
this.getCommand("donate").setExecutor(new Donate());
@@ -79,17 +73,10 @@ public class Main extends JavaPlugin {
private void regListeners() {
Bukkit.getPluginManager().registerEvents(new QuitListener(), this);
- Bukkit.getPluginManager().registerEvents(new RespawnListener(), this);
Bukkit.getPluginManager().registerEvents(new LoginListener(), this);
Bukkit.getPluginManager().registerEvents(new ChatListener(), this);
- Bukkit.getPluginManager().registerEvents(new Protection(), this);
- Bukkit.getPluginManager().registerEvents(new SignColor(), this);
- Bukkit.getPluginManager().registerEvents(new AnvilColorPatch(), this);
- Bukkit.getPluginManager().registerEvents(new FastPot(), this);
- Bukkit.getPluginManager().registerEvents(new BedListener(), this);
+ Bukkit.getPluginManager().registerEvents(new ColorPatchListener(), this);
Bukkit.getPluginManager().registerEvents(new ScoreboardListener(), this);
- Bukkit.getPluginManager().registerEvents(new UnfairListener(), this);
- Bukkit.getPluginManager().registerEvents(new DeathListener(), this);
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Delay.java b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Delay.java
index 4852a1d..d5d182b 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Delay.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Delay.java
@@ -5,9 +5,9 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
-import org.cn2b2t.common.Main;
import org.cn2b2t.common.functions.ProfileData;
import org.cn2b2t.common.runnables.RestartRunnable;
+import org.cn2b2t.core.utils.ColorParser;
public class Delay implements CommandExecutor {
@@ -18,23 +18,23 @@ public class Delay implements CommandExecutor {
if (cmd.getName().equalsIgnoreCase("delay")) {
if (sender instanceof Player) {
Player p = (Player) sender;
- if (ProfileData.getProfileData(p).getMonthlyDonate() > 10) {
+ if (ProfileData.get(p).getMonthlyDonate() > 10) {
if (!hasDelayed) {
RestartRunnable.count = RestartRunnable.count + 600;
hasDelayed = true;
- Bukkit.getOnlinePlayers().forEach(player -> player.sendMessage(Main.color(
+ Bukkit.getOnlinePlayers().forEach(player -> player.sendMessage(ColorParser.parse(
"&6-&e--&8----------------------------&e--&6-\n" +
"&7服务器重启事项已被玩家 &e" + p.getName() + " &7推迟10分钟。\n" +
"&6-&e--&8----------------------------&e--&6-"
)));
}
} else {
- p.sendMessage(Main.color("&7本功能只有至今一个月内赞助&e超过10元&7的玩家才可使用。\n" +
+ p.sendMessage(ColorParser.parse("&7本功能只有至今一个月内赞助&e超过10元&7的玩家才可使用。\n" +
"&7输入 &6/donate &7,查看赞助方法,一起维护这个服务器吧!"));
}
} else {
RestartRunnable.count = RestartRunnable.count + 3600;
- Bukkit.getOnlinePlayers().forEach(player -> player.sendMessage(Main.color(
+ Bukkit.getOnlinePlayers().forEach(player -> player.sendMessage(ColorParser.parse(
"&6-&e--&8----------------------------&e--&6-\n" +
"&7服务器重启事项已被控制台推迟一小时。\n" +
"&6-&e--&8----------------------------&e--&6-"
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Donate.java b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Donate.java
index cdf6f3c..5a285b9 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Donate.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Donate.java
@@ -9,110 +9,111 @@ import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
import org.cn2b2t.common.Main;
+import org.cn2b2t.common.functions.ProfileData;
import org.cn2b2t.common.managers.DataManager;
import org.cn2b2t.common.managers.DonateManager;
-import org.cn2b2t.common.functions.ProfileData;
+import org.cn2b2t.core.utils.ColorParser;
import java.util.ArrayList;
import java.util.List;
public class Donate implements CommandExecutor, TabCompleter {
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (cmd.getName().equalsIgnoreCase("donate") && sender instanceof Player) {
- Player p = (Player) sender;
- if (args.length >= 1) {
- String aim = args[0];
- if (aim.equalsIgnoreCase("me")) {
- help(p, 1);
- } else if (aim.equalsIgnoreCase("info")) {
- help(p, 2);
- } else if (aim.equals("1") || aim.equals("5") || aim.equals("10") || aim.equals("20") || aim.equals("50")) {
- Main.getInstance().getServer().dispatchCommand(Bukkit.getConsoleSender(), "mcpay pbuy " + sender.getName() + " " + DonateManager.getID(aim));
- } else {
- help(p, 0);
- }
- } else {
- help(p, 0);
- }
- } else if (cmd.getName().equalsIgnoreCase("donate")) {
- if (args.length == 4) {
- // donate apply adehcby 20200306194633048611812 20
- String playername = args[1];
- String order = args[2];
- String price = args[3];
- Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(Main.color(
- "&6-&e--&8----------------------------&e--&6-\n" +
- "&7感谢 &6&l" + playername + "&7为本服助力 &6" + price + "元 &7!\n" +
- "&7本服仅由玩家赞助维持,输入 &6/donate &7查看更多。\n" +
- "&6-&e--&8----------------------------&e--&6-"
- )));
- DataManager.saveData(Bukkit.getPlayer(playername), order, (int) Double.parseDouble(price));
+ @Override
+ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
+ if (cmd.getName().equalsIgnoreCase("donate") && sender instanceof Player) {
+ Player p = (Player) sender;
+ if (args.length >= 1) {
+ String aim = args[0];
+ if (aim.equalsIgnoreCase("me")) {
+ help(p, 1);
+ } else if (aim.equalsIgnoreCase("info")) {
+ help(p, 2);
+ } else if (aim.equals("1") || aim.equals("5") || aim.equals("10") || aim.equals("20") || aim.equals("50")) {
+ Main.getInstance().getServer().dispatchCommand(Bukkit.getConsoleSender(), "mcpay pbuy " + sender.getName() + " " + DonateManager.getID(aim));
+ } else {
+ help(p, 0);
+ }
+ } else {
+ help(p, 0);
+ }
+ } else if (cmd.getName().equalsIgnoreCase("donate")) {
+ if (args.length == 4) {
+ // donate apply adehcby 20200306194633048611812 20
+ String playername = args[1];
+ String order = args[2];
+ String price = args[3];
+ Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(ColorParser.parse(
+ "&6-&e--&8----------------------------&e--&6-\n" +
+ "&7感谢 &6&l" + playername + "&7为本服助力 &6" + price + "元 &7!\n" +
+ "&7本服仅由玩家赞助维持,输入 &6/donate &7查看更多。\n" +
+ "&6-&e--&8----------------------------&e--&6-"
+ )));
+ DataManager.saveData(Bukkit.getPlayer(playername), order, (int) Double.parseDouble(price));
- }
- sender.sendMessage(Main.color(" \n本月赞助 &6" + DonateManager.monthly + "\n" +
- "总共收到 &6" + DonateManager.total));
- }
- return true;
- }
+ }
+ sender.sendMessage(ColorParser.parse(" \n本月赞助 &6" + DonateManager.monthly + "\n" +
+ "总共收到 &6" + DonateManager.total));
+ }
+ return true;
+ }
- private static void help(Player p, int i) {
- switch (i) {
- case 1: {
- ProfileData profileData = ProfileData.getProfileData(p);
- p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
- "&7您总共赞助了 &6" + profileData.getTotalDonate() + " &7元;\n" +
- "&7至今一个月内,您为服务器提供了 &6" + profileData.getMonthlyDonate() + " &7元资金。\n" +
- "&7总共为服务器续命 &6" + profileData.getTotalDonate() / 50 + " &7天。\n" +
- (profileData.getTotalDonate() > 0 ? "&7感谢您为本社区所做的一切!\n" : "\n") +
- "&6-&e--&8----------------------------&e--&6-"));
- break;
- }
- case 2: {
- p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
- "&7本服&c无管理维护,仅由玩家赞助维持&7。\n" +
- "&7所收赞助钱款自动化处理,全部转账到服务商账户中。\n" +
- "&7若您还未有相应消费能力,&c谢绝赞助,心意已领&7。\n" +
- "&7至今一个月内 赞助&6超过5元的&7即可获得 &e浅黄色 &7聊天名,\n" +
- "&7至今一个月内 赞助&6超过10元&7的可以延迟服务器重启。\n" +
- "&7总共赞助&6超过50元&7的,即使本服务器已满人,也可进入。\n" +
- "&6-&e--&8----------------------------&e--&6-"));
- break;
- }
- default: {
- p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
- "&7本服自2019年9月1日起,开始接受玩家资助。\n" +
- "&7本月获得赞助 &6" + DonateManager.monthly + "元&7,总共获得 &6" + DonateManager.total + "元&7。\n" +
- "&7查看介绍 &6/donate info\n" +
- "&7查看我的贡献 &6/donate me\n" +
- "&7赞助对应金额 &6/donate 1/5/10/20/50\n" +
- "&c注意:&7目前仅支持单笔1元、5元、 10元、20元、50元,\n" +
- " &7请勿输入其他金额。\n" +
- "&6-&e--&8----------------------------&e--&6-"));
- break;
- }
+ private static void help(Player p, int i) {
+ switch (i) {
+ case 1: {
+ ProfileData profileData = ProfileData.get(p);
+ p.sendMessage(ColorParser.parse("&6-&e--&8----------------------------&e--&6-\n" +
+ "&7您总共赞助了 &6" + profileData.getTotalDonate() + " &7元;\n" +
+ "&7至今一个月内,您为服务器提供了 &6" + profileData.getMonthlyDonate() + " &7元资金。\n" +
+ "&7总共为服务器续命 &6" + profileData.getTotalDonate() / 50 + " &7天。\n" +
+ (profileData.getTotalDonate() > 0 ? "&7感谢您为本社区所做的一切!\n" : "\n") +
+ "&6-&e--&8----------------------------&e--&6-"));
+ break;
+ }
+ case 2: {
+ p.sendMessage(ColorParser.parse("&6-&e--&8----------------------------&e--&6-\n" +
+ "&7本服&c无管理维护,仅由玩家赞助维持&7。\n" +
+ "&7所收赞助钱款自动化处理,全部转账到服务商账户中。\n" +
+ "&7若您还未有相应消费能力,&c谢绝赞助,心意已领&7。\n" +
+ "&7至今一个月内 赞助&6超过5元的&7即可获得 &e浅黄色 &7聊天名,\n" +
+ "&7至今一个月内 赞助&6超过10元&7的可以延迟服务器重启。\n" +
+ "&7总共赞助&6超过50元&7的,即使本服务器已满人,也可进入。\n" +
+ "&6-&e--&8----------------------------&e--&6-"));
+ break;
+ }
+ default: {
+ p.sendMessage(ColorParser.parse("&6-&e--&8----------------------------&e--&6-\n" +
+ "&7本服自2019年9月1日起,开始接受玩家资助。\n" +
+ "&7本月获得赞助 &6" + DonateManager.monthly + "元&7,总共获得 &6" + DonateManager.total + "元&7。\n" +
+ "&7查看介绍 &6/donate info\n" +
+ "&7查看我的贡献 &6/donate me\n" +
+ "&7赞助对应金额 &6/donate 1/5/10/20/50\n" +
+ "&c注意:&7目前仅支持单笔1元、5元、 10元、20元、50元,\n" +
+ " &7请勿输入其他金额。\n" +
+ "&6-&e--&8----------------------------&e--&6-"));
+ break;
+ }
- }
+ }
- }
+ }
- @Override
- public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
- switch (args.length) {
- case 1: {
- List completions = new ArrayList<>();
- String[] strings = new String[]{"info", "me", "1", "5", "10"};
- for (String s : strings) {
- if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
- completions.add(s);
- }
- }
- return completions;
- }
- default:
- return ImmutableList.of();
- }
- }
+ @Override
+ public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+ switch (args.length) {
+ case 1: {
+ List completions = new ArrayList<>();
+ String[] strings = new String[]{"info", "me", "1", "5", "10"};
+ for (String s : strings) {
+ if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
+ completions.add(s);
+ }
+ }
+ return completions;
+ }
+ default:
+ return ImmutableList.of();
+ }
+ }
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Help.java b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Help.java
index 6dd892f..3b0a50f 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Help.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Help.java
@@ -4,13 +4,14 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.cn2b2t.common.Main;
+import org.cn2b2t.core.utils.ColorParser;
public class Help implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("help")) {
- sender.sendMessage(Main.color(
+ sender.sendMessage(ColorParser.parse(
"&6-&e--&8----------------------------&e--&6-\n" +
"&7查看服务器版本 &6/version\n" +
"&7屏蔽玩家 &6/ignore \n" +
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Ignore.java b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Ignore.java
index 16bc1ee..58542e9 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Ignore.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Ignore.java
@@ -9,8 +9,8 @@ import org.bukkit.command.TabCompleter;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
-import org.cn2b2t.common.Main;
import org.cn2b2t.common.functions.ProfileData;
+import org.cn2b2t.core.utils.ColorParser;
import java.util.List;
import java.util.stream.Collectors;
@@ -36,7 +36,7 @@ public class Ignore implements CommandExecutor, TabCompleter {
}
private static void help(Player p) {
- p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
+ p.sendMessage(ColorParser.parse("&6-&e--&8----------------------------&e--&6-\n" +
"&7屏蔽某人消息 &6/ignore &8<&6ID&8>\n" +
"&7注意,每次屏蔽退出服务器后即失效,若需要请再次屏蔽。" +
"&6-&e--&8----------------------------&e--&6-"));
@@ -44,13 +44,13 @@ public class Ignore implements CommandExecutor, TabCompleter {
private static void ignore(Player p, Player target) {
if (p != target) {
- p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
+ p.sendMessage(ColorParser.parse("&6-&e--&8----------------------------&e--&6-\n" +
"&7已成功屏蔽 &2" + target.getName() + "&7 !\n" +
"&7注意,本次屏蔽退出服务器后即失效,若需要请再次屏蔽。" +
"&6-&e--&8----------------------------&e--&6-"));
- ProfileData.getProfileData(p).ignorePlayer(target.getUniqueId());
+ ProfileData.get(p).ignorePlayer(target.getUniqueId());
} else {
- p.sendMessage(Main.color("&7您无法屏蔽您自己!"));
+ p.sendMessage(ColorParser.parse("&7您无法屏蔽您自己!"));
}
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Settings.java b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Settings.java
index c99937d..b4dd3f3 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Settings.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Settings.java
@@ -7,74 +7,74 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
-import org.cn2b2t.common.Main;
import org.cn2b2t.common.functions.ProfileData;
+import org.cn2b2t.core.utils.ColorParser;
import java.util.ArrayList;
import java.util.List;
public class Settings implements CommandExecutor, TabCompleter {
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (cmd.getName().equalsIgnoreCase("settings") && sender instanceof Player) {
- Player p = (Player) sender;
- if (args.length >= 2 && (args[1].equalsIgnoreCase("true") || args[1].equalsIgnoreCase("false"))) {
- String aim = args[0];
- boolean value = args[1].equalsIgnoreCase("true");
+ @Override
+ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
+ if (cmd.getName().equalsIgnoreCase("settings") && sender instanceof Player) {
+ Player p = (Player) sender;
+ if (args.length >= 2 && (args[1].equalsIgnoreCase("true") || args[1].equalsIgnoreCase("false"))) {
+ String aim = args[0];
+ boolean value = args[1].equalsIgnoreCase("true");
- if (aim.equalsIgnoreCase("showScoreboard") || aim.equalsIgnoreCase("ssb")) {
- ProfileData.getProfileData(p).setShowScoreboard(value);
- } else if (aim.equalsIgnoreCase("showDeathMessages") || aim.equalsIgnoreCase("sdm")) {
- ProfileData.getProfileData(p).setShowDeathMessages(value);
- } else if (aim.equalsIgnoreCase("showJoinAndLeaveAlerts") || aim.equalsIgnoreCase("sjaqa")) {
- ProfileData.getProfileData(p).setShowJoinAndLeaveAlerts(value);
- } else {
- help(p);
- }
- } else {
- help(p);
- }
- }
- return true;
- }
+ if (aim.equalsIgnoreCase("showScoreboard") || aim.equalsIgnoreCase("ssb")) {
+ ProfileData.get(p).setShowScoreboard(value);
+ } else if (aim.equalsIgnoreCase("showDeathMessages") || aim.equalsIgnoreCase("sdm")) {
+ ProfileData.get(p).setShowDeathMessages(value);
+ } else if (aim.equalsIgnoreCase("showJoinAndLeaveAlerts") || aim.equalsIgnoreCase("sjaqa")) {
+ ProfileData.get(p).setShowJoinAndLeaveAlerts(value);
+ } else {
+ help(p);
+ }
+ } else {
+ help(p);
+ }
+ }
+ return true;
+ }
- private static void help(Player p) {
- p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
- "&7开关积分榜\n" +
- " &6/settings showScoreboard true/false\n" +
- "&7开关死亡消息\n" +
- " &6/settings showDeathMessages true/false\n" +
- "&7开关玩家加入、退出提示信息\n" +
- " &6/settings showJoinAndLeaveAlerts true/false\n" +
- "&6-&e--&8----------------------------&e--&6-"));
- }
+ private static void help(Player p) {
+ p.sendMessage(ColorParser.parse("&6-&e--&8----------------------------&e--&6-\n" +
+ "&7开关积分榜\n" +
+ " &6/settings showScoreboard true/false\n" +
+ "&7开关死亡消息\n" +
+ " &6/settings showDeathMessages true/false\n" +
+ "&7开关玩家加入、退出提示信息\n" +
+ " &6/settings showJoinAndLeaveAlerts true/false\n" +
+ "&6-&e--&8----------------------------&e--&6-"));
+ }
- @Override
- public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
- switch (args.length) {
- case 1: {
- List completions = new ArrayList<>();
- String[] strings = new String[]{"showScoreboard", "showDeathMessages", "showJoinAndLeaveAlerts"};
- for (String s : strings) {
- if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
- completions.add(s);
- }
- }
- return completions;
- }
- case 2: {
- List completions = new ArrayList<>();
- String[] strings = new String[]{"true", "false"};
- for (String s : strings) {
- if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
- completions.add(s);
- }
- }
- return completions;
- }
- default:
- return ImmutableList.of();
- }
- }
+ @Override
+ public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+ switch (args.length) {
+ case 1: {
+ List completions = new ArrayList<>();
+ String[] strings = new String[]{"showScoreboard", "showDeathMessages", "showJoinAndLeaveAlerts"};
+ for (String s : strings) {
+ if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
+ completions.add(s);
+ }
+ }
+ return completions;
+ }
+ case 2: {
+ List completions = new ArrayList<>();
+ String[] strings = new String[]{"true", "false"};
+ for (String s : strings) {
+ if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
+ completions.add(s);
+ }
+ }
+ return completions;
+ }
+ default:
+ return ImmutableList.of();
+ }
+ }
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Suicide.java b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Suicide.java
deleted file mode 100644
index 32f2c12..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Suicide.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.cn2b2t.common.commands;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.cn2b2t.common.Main;
-
-public class Suicide implements CommandExecutor {
-
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (cmd.getName().equalsIgnoreCase("suicide")) {
- if (sender instanceof Player) ((Player) sender).setHealth(0);
- sender.sendMessage(Main.color("&a这个世界虽然不完美,但我们仍然可以治愈自己。\n" +
- "&7全国免费心理咨询热线 &f&l800-810-1117"));
- return true;
- }
- return true;
- }
-}
\ No newline at end of file
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Toggle.java b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Toggle.java
index 4d860d4..1c2f25d 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/commands/Toggle.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/commands/Toggle.java
@@ -7,65 +7,65 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
-import org.cn2b2t.common.Main;
import org.cn2b2t.common.functions.ProfileData;
+import org.cn2b2t.core.utils.ColorParser;
import java.util.ArrayList;
import java.util.List;
public class Toggle implements CommandExecutor, TabCompleter {
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if (cmd.getName().equalsIgnoreCase("toggle") && sender instanceof Player) {
- Player p = (Player) sender;
- if (args.length >= 1) {
- String aim = args[0];
- if (aim.equalsIgnoreCase("scoreboard") || aim.equalsIgnoreCase("sb")) {
- ProfileData.getProfileData(p).setShowScoreboard(!ProfileData.getProfileData(p).showScoreboard);
- } else if (aim.equalsIgnoreCase("deathmessages") || aim.equalsIgnoreCase("dm")) {
- ProfileData.getProfileData(p).setShowDeathMessages(!ProfileData.getProfileData(p).showDeathMessages);
- } else if (aim.equalsIgnoreCase("joinandquitalerts") || aim.equalsIgnoreCase("jaqa")) {
- ProfileData.getProfileData(p).setShowJoinAndLeaveAlerts(!ProfileData.getProfileData(p).showJoinAndLeaveAlerts);
- } else {
- help(p);
- }
- } else {
- help(p);
- }
- }
- return true;
- }
- // /toggle scoreboard / sb
- // /toggle joinandquitmessages / jaqm
+ @Override
+ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
+ if (cmd.getName().equalsIgnoreCase("toggle") && sender instanceof Player) {
+ Player p = (Player) sender;
+ if (args.length >= 1) {
+ String aim = args[0];
+ if (aim.equalsIgnoreCase("scoreboard") || aim.equalsIgnoreCase("sb")) {
+ ProfileData.get(p).setShowScoreboard(!ProfileData.get(p).showScoreboard);
+ } else if (aim.equalsIgnoreCase("deathmessages") || aim.equalsIgnoreCase("dm")) {
+ ProfileData.get(p).setShowDeathMessages(!ProfileData.get(p).showDeathMessages);
+ } else if (aim.equalsIgnoreCase("joinandquitalerts") || aim.equalsIgnoreCase("jaqa")) {
+ ProfileData.get(p).setShowJoinAndLeaveAlerts(!ProfileData.get(p).showJoinAndLeaveAlerts);
+ } else {
+ help(p);
+ }
+ } else {
+ help(p);
+ }
+ }
+ return true;
+ }
+ // /toggle scoreboard / sb
+ // /toggle joinandquitmessages / jaqm
- private static void help(Player p) {
- p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
- "&7开关积分榜 &6/toggle scoreboard\n" +
- "&7开关死亡消息 &6/toggle deathmessages\n" +
- "&7开关玩家加入、退出提示信息\n" +
- " &6/toggle joinandquitalerts\n" +
- "&6-&e--&8----------------------------&e--&6-"));
- }
+ private static void help(Player p) {
+ p.sendMessage(ColorParser.parse("&6-&e--&8----------------------------&e--&6-\n" +
+ "&7开关积分榜 &6/toggle scoreboard\n" +
+ "&7开关死亡消息 &6/toggle deathmessages\n" +
+ "&7开关玩家加入、退出提示信息\n" +
+ " &6/toggle joinandquitalerts\n" +
+ "&6-&e--&8----------------------------&e--&6-"));
+ }
- @Override
- public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
- switch (args.length) {
- case 1: {
- List completions = new ArrayList<>();
- String[] strings = new String[]{"scoreboard", "deathmessages", "joinandquitalerts"};
- for (String s : strings) {
- if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
- completions.add(s);
- }
- }
- return completions;
- }
- default:
- return ImmutableList.of();
- }
- }
+ @Override
+ public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+ switch (args.length) {
+ case 1: {
+ List completions = new ArrayList<>();
+ String[] strings = new String[]{"scoreboard", "deathmessages", "joinandquitalerts"};
+ for (String s : strings) {
+ if (StringUtil.startsWithIgnoreCase(s, args[0].toLowerCase())) {
+ completions.add(s);
+ }
+ }
+ return completions;
+ }
+ default:
+ return ImmutableList.of();
+ }
+ }
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/enums/LogType.java b/2b2t-common/src/main/java/org/cn2b2t/common/enums/LogType.java
deleted file mode 100644
index 3e11b90..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/enums/LogType.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.cn2b2t.common.enums;
-
-public enum LogType {
- CHAT,
- JOIN,
- QUIT,
- AC,
- COMMAND
-}
\ No newline at end of file
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/functions/ProfileData.java b/2b2t-common/src/main/java/org/cn2b2t/common/functions/ProfileData.java
index 82f15d9..09ab16d 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/functions/ProfileData.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/functions/ProfileData.java
@@ -1,181 +1,125 @@
package org.cn2b2t.common.functions;
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.cn2b2t.common.listeners.ScoreboardListener;
import org.cn2b2t.common.managers.DataManager;
import org.cn2b2t.common.managers.DonateManager;
import org.cn2b2t.common.managers.ScoreboardManager;
-import org.cn2b2t.common.managers.UserDataManager;
+import org.cn2b2t.core.managers.utils.UserManager;
+import org.cn2b2t.core.modules.users.AbstractUserHandler;
+import org.cn2b2t.core.modules.users.User;
-import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
-public class ProfileData {
+public class ProfileData extends AbstractUserHandler {
- public static Map profileDatas = new HashMap<>();
+ public static ProfileData get(User u) {
+ return u.containsHandler(ProfileData.class) ? u.getHandler(ProfileData.class) : null;
+ }
- public Player player;
+ public static ProfileData get(Player p) {
+ return get(UserManager.getUser(p));
+ }
- public double totalDonate;
- public double monthlyDonate;
- public List ignoredPlayers;
- public boolean showDeathMessages;
- public boolean showScoreboard;
- public boolean showJoinAndLeaveAlerts;
+ public Player p;
- public Location bedLocation;
- public Location spawnLocation;
+ public double totalDonate;
+ public double monthlyDonate;
+ public List ignoredPlayers;
- public ProfileData(Player p) {
- this.player = p;
+ public boolean showDeathMessages;
+ public boolean showScoreboard;
+ public boolean showJoinAndLeaveAlerts;
- totalDonate = DataManager.getTotalDonate(p.getUniqueId());
- monthlyDonate = DataManager.getDonateInAMonth(p.getUniqueId());
+ @Override
+ protected void init() {
+ this.p = getUser().getPlayer();
- ignoredPlayers = new ArrayList<>();
-// UserDataManager.getDatas().getStringList(p.getUniqueId().toString() + ".ingnoredPlayers").forEach(s -> ignoredPlayers.add(UUID.fromString(s)));
+ totalDonate = DataManager.getTotalDonate(p.getUniqueId());
+ monthlyDonate = DataManager.getDonateInAMonth(p.getUniqueId());
- showDeathMessages = UserDataManager.getDatas().getBoolean(p.getUniqueId().toString() + ".settings.showDeathMessages", true);
- showScoreboard = UserDataManager.getDatas().getBoolean(p.getUniqueId().toString() + ".settings.showScoreboard", true);
- showJoinAndLeaveAlerts = UserDataManager.getDatas().getBoolean(p.getUniqueId().toString() + ".settings.showJoinAndLeaveAlerts", true);
+ ignoredPlayers = new ArrayList<>();
+// UserManager.getUser(p).getDatas().getStringList(p.getUniqueId().toString() + ".ingnoredPlayers").forEach(s -> ignoredPlayers.add(UUID.fromString(s)));
- bedLocation = new Location(Bukkit.getWorld("world"),
- UserDataManager.getDatas().getDouble(p.getUniqueId().toString() + ".bedLocation.x", 0D),
- UserDataManager.getDatas().getDouble(p.getUniqueId().toString() + ".bedLocation.y", 101D),
- UserDataManager.getDatas().getDouble(p.getUniqueId().toString() + ".bedLocation.z", 0D),
- UserDataManager.getDatas().getLong(p.getUniqueId().toString() + ".bedLocation.yaw", 0L),
- UserDataManager.getDatas().getLong(p.getUniqueId().toString() + ".bedLocation.pitch", 0L));
+ showDeathMessages = UserManager.getUser(p).getDatas().getBoolean(p.getUniqueId().toString() + ".settings.showDeathMessages", true);
+ showScoreboard = UserManager.getUser(p).getDatas().getBoolean(p.getUniqueId().toString() + ".settings.showScoreboard", true);
+ showJoinAndLeaveAlerts = UserManager.getUser(p).getDatas().getBoolean(p.getUniqueId().toString() + ".settings.showJoinAndLeaveAlerts", true);
+ }
- spawnLocation = new Location(Bukkit.getWorld("world"),
- UserDataManager.getDatas().getDouble(p.getUniqueId().toString() + ".spawnLocation.x", 0D),
- UserDataManager.getDatas().getDouble(p.getUniqueId().toString() + ".spawnLocation.y", 101D),
- UserDataManager.getDatas().getDouble(p.getUniqueId().toString() + ".spawnLocation.z", 0D),
- UserDataManager.getDatas().getLong(p.getUniqueId().toString() + ".spawnLocation.yaw", 0L),
- UserDataManager.getDatas().getLong(p.getUniqueId().toString() + ".spawnLocation.pitch", 0L));
+ public double getMonthlyDonate() {
+ return DonateManager.getPlayerMonthlyPay(p);
+ }
- }
+ public double getTotalDonate() {
+ return DonateManager.getPlayerTotalPay(p);
+ }
- public double getMonthlyDonate() {
- return DonateManager.getPlayerMonthlyPay(player);
- }
+ public List getIgnoredPlayers() {
+ return ignoredPlayers;
+ }
- public double getTotalDonate() {
- return DonateManager.getPlayerTotalPay(player);
- }
+ public boolean isIgnored(UUID uuid) {
+ return getIgnoredPlayers().contains(uuid);
+ }
- public List getIgnoredPlayers() {
- return ignoredPlayers;
- }
-
- public boolean isIgnored(UUID uuid) {
- return ignoredPlayers.contains(uuid);
- }
-
- public void ignorePlayer(UUID uuid) {
- ignoredPlayers.add(uuid);
-// UserDataManager.getDatas().set(player.getUniqueId().toString() + ".ingnoredPlayers", ignoredPlayers);
+ public void ignorePlayer(UUID uuid) {
+ ignoredPlayers.add(uuid);
+// UserManager.getUser(p).getDatas().set("ingnoredPlayers", ignoredPlayers);
// try {
-// UserDataManager.getDatas().save(UserDataManager.getConfigfile());
+// UserManager.getUser(p).getDatas().save(UserManager.getUser(p).getConfigfile());
// } catch (IOException e) {
// e.printStackTrace();
// }
- }
+ }
// public void unignorePlayer(UUID uuid) {
// ignoredPlayers.remove(uuid);
-// UserDataManager.getDatas().set(player.getUniqueId().toString() + ".ingnoredPlayers", ignoredPlayers);
+// UserManager.getUser(p).getDatas().set("ingnoredPlayers", ignoredPlayers);
// try {
-// UserDataManager.getDatas().save(UserDataManager.getConfigfile());
+// UserManager.getUser(p).getDatas().save(UserManager.getUser(p).getConfigfile());
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
- public void updateDonates() {
- this.totalDonate = getTotalDonate();
- this.monthlyDonate = getMonthlyDonate();
- }
+ public void updateDonates() {
+ this.totalDonate = getTotalDonate();
+ this.monthlyDonate = getMonthlyDonate();
+ }
- public void setShowDeathMessages(boolean showDeathMessages) {
- this.showDeathMessages = showDeathMessages;
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".settings.showdeathmessages", showDeathMessages);
- try {
- UserDataManager.getDatas().save(UserDataManager.getConfigfile());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
+ public void setShowDeathMessages(boolean showDeathMessages) {
+ this.showDeathMessages = showDeathMessages;
+ UserManager.getUser(p).getDatas().set("settings.showdeathmessages", showDeathMessages);
- public void setShowJoinAndLeaveAlerts(boolean showJoinAndLeaveAlerts) {
- this.showJoinAndLeaveAlerts = showJoinAndLeaveAlerts;
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".settings.showJoinAndLeaveAlerts", showJoinAndLeaveAlerts);
- try {
- UserDataManager.getDatas().save(UserDataManager.getConfigfile());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
+ UserManager.getUser(p).saveDatas();
+ }
- public void setShowScoreboard(boolean showScoreboard) {
- if (showScoreboard && !this.showScoreboard) {
- ScoreboardListener.addScoreboard(player);
- } else if (ScoreboardManager.scoreboards.containsKey(player)) {
- ScoreboardManager.scoreboards.get(player).destroy();
- ScoreboardManager.scoreboards.remove(player);
- }
- this.showScoreboard = showScoreboard;
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".settings.showScoreboard", showScoreboard);
- try {
- UserDataManager.getDatas().save(UserDataManager.getConfigfile());
- } catch (IOException e) {
- e.printStackTrace();
- }
+ public void setShowJoinAndLeaveAlerts(boolean showJoinAndLeaveAlerts) {
+ this.showJoinAndLeaveAlerts = showJoinAndLeaveAlerts;
+ UserManager.getUser(p).getDatas().set("settings.showJoinAndLeaveAlerts", showJoinAndLeaveAlerts);
- }
+ UserManager.getUser(p).saveDatas();
+ }
- public String getPrefix() {
- return monthlyDonate >= 50 ? "§e§l" : totalDonate > 0 ? "§e" : "§6";
- }
+ public void setShowScoreboard(boolean showScoreboard) {
+ if (showScoreboard && !this.showScoreboard) {
+ ScoreboardListener.addScoreboard(p);
+ } else if (ScoreboardManager.scoreboards.containsKey(p)) {
+ ScoreboardManager.scoreboards.get(p).destroy();
+ ScoreboardManager.scoreboards.remove(p);
+ }
+ this.showScoreboard = showScoreboard;
+ UserManager.getUser(p).getDatas().set("settings.showScoreboard", showScoreboard);
- public void saveBedLocation(Location bedlocation) {
- this.bedLocation = bedlocation;
- this.spawnLocation = player.getLocation();
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".spawnLocation.x", player.getLocation().getX());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".spawnLocation.y", player.getLocation().getY());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".spawnLocation.z", player.getLocation().getZ());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".spawnLocation.yaw", player.getLocation().getYaw());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".spawnLocation.pitch", player.getLocation().getPitch());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".bedLocation.x", bedlocation.getX());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".bedLocation.y", bedlocation.getY());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".bedLocation.z", bedlocation.getZ());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".bedLocation.yaw", bedlocation.getYaw());
- UserDataManager.getDatas().set(player.getUniqueId().toString() + ".bedLocation.pitch", bedlocation.getPitch());
- try {
- UserDataManager.getDatas().save(UserDataManager.getConfigfile());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
+ UserManager.getUser(p).saveDatas();
+ }
- public boolean isBedThere() {
- return bedLocation.getBlock().getType() == Material.BED_BLOCK && bedLocation.getX() <= 300000 && bedLocation.getZ() <= 300000;
- }
-
- public static ProfileData getProfileData(Player p) {
- return profileDatas.get(p);
- }
-
- public static void loadProfileData(Player p) {
- profileDatas.put(p, new ProfileData(p));
- }
-
- public static void unloadProfileData(Player p) {
- profileDatas.remove(p);
- }
+ public String getPrefix() {
+ return monthlyDonate >= 50 ? "§e§l" : totalDonate > 0 ? "§e" : "§6";
+ }
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/AnvilColorPatch.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/AnvilColorPatch.java
deleted file mode 100644
index ed89d7b..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/AnvilColorPatch.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.cn2b2t.common.listeners;
-
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.inventory.InventoryClickEvent;
-import org.bukkit.event.inventory.InventoryType;
-import org.bukkit.inventory.meta.ItemMeta;
-
-public class AnvilColorPatch implements Listener {
-
- @EventHandler
- public void onInventoryClick(final InventoryClickEvent evt) {
- if (evt.isCancelled() || evt.getInventory().getType() != InventoryType.ANVIL
- || evt.getSlotType() != InventoryType.SlotType.RESULT) {
- return;
- }
- if (evt.getCurrentItem().hasItemMeta()) {
- ItemMeta meta = evt.getCurrentItem().getItemMeta();
- if (meta.getDisplayName().contains("&")) {
- String name = meta.getDisplayName().replaceAll("&", "§").replaceAll("§§", "&");
- meta.setDisplayName(name);
- evt.getCurrentItem().setItemMeta(meta);
- }
- }
- }
-
-}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ChatListener.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ChatListener.java
index 3e8089e..3701ac5 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ChatListener.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ChatListener.java
@@ -2,13 +2,12 @@ package org.cn2b2t.common.listeners;
import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
-import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.cn2b2t.common.Main;
import org.cn2b2t.common.functions.ProfileData;
+import org.cn2b2t.core.utils.ColorParser;
import java.util.HashMap;
import java.util.HashSet;
@@ -30,12 +29,7 @@ public class ChatListener implements Listener {
e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&f您的说话速度太快,每次发言请至少等待3秒。"));
e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&6--&e-&f-----------------------------&e-&6--"));
} else if (messages.containsKey(name) && messages.get(name)
- .equalsIgnoreCase(message
- .replaceAll("。", "")
- .replaceAll(" ", "")
- .replaceAll("!", "")
- .replaceAll("!", "")
- .replaceAll("?", ""))) {
+ .equalsIgnoreCase(removeUseless(message))) {
e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&6--&e-&f-----------------------------&e-&6--"));
e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&f请不要重复说相同的内容。"));
e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&6--&e-&f-----------------------------&e-&6--"));
@@ -48,20 +42,23 @@ public class ChatListener implements Listener {
coolingPlayers.remove(name);
}
}.runTaskLater(Main.getInstance(), 60L);
- messages.put(name, message
- .replaceAll("。", "")
- .replaceAll(" ", "")
- .replaceAll("!", "")
- .replaceAll("!", "")
- .replaceAll("?", ""));
+ messages.put(name, removeUseless(message));
- e.setMessage(Main.color(message));
- e.setFormat(ProfileData.getProfileData(e.getPlayer()).getPrefix() + "%1$s§8: §f%2$s");
+ e.setMessage(ColorParser.parse(message));
+ e.setFormat(ProfileData.get(e.getPlayer()).getPrefix() + "%1$s§8 : §f%2$s");
- e.getRecipients().stream().filter(recipient -> ProfileData.getProfileData(recipient).isIgnored(e.getPlayer().getUniqueId()))
+ e.getRecipients().stream().filter(recipient -> ProfileData.get(recipient).isIgnored(e.getPlayer().getUniqueId()))
.forEachOrdered(recipient -> e.getRecipients().remove(recipient));
}
+ }
+ private static String removeUseless(String str) {
+ return str
+ .replaceAll("。", "")
+ .replaceAll(" ", "")
+ .replaceAll("!", "")
+ .replaceAll("!", "")
+ .replaceAll("?", "");
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ColorPatchListener.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ColorPatchListener.java
new file mode 100644
index 0000000..1681231
--- /dev/null
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ColorPatchListener.java
@@ -0,0 +1,38 @@
+package org.cn2b2t.common.listeners;
+
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.block.SignChangeEvent;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.event.inventory.InventoryType;
+import org.bukkit.inventory.meta.ItemMeta;
+import org.cn2b2t.core.utils.ColorParser;
+
+public class ColorPatchListener implements Listener {
+
+ @EventHandler
+ public void onInventoryClick(final InventoryClickEvent evt) {
+ if (evt.isCancelled() || evt.getInventory().getType() != InventoryType.ANVIL
+ || evt.getSlotType() != InventoryType.SlotType.RESULT) {
+ return;
+ }
+ if (evt.getCurrentItem().hasItemMeta()) {
+ ItemMeta meta = evt.getCurrentItem().getItemMeta();
+ if (meta.getDisplayName().contains("&")) {
+ String name = meta.getDisplayName().replaceAll("&", "§").replaceAll("§§", "&");
+ meta.setDisplayName(name);
+ evt.getCurrentItem().setItemMeta(meta);
+ }
+ }
+ }
+
+ @EventHandler
+ public void colorSign(final SignChangeEvent e) {
+ e.setLine(0, ColorParser.parse(e.getLine(0)));
+ e.setLine(1, ColorParser.parse(e.getLine(1)));
+ e.setLine(2, ColorParser.parse(e.getLine(2)));
+ e.setLine(3, ColorParser.parse(e.getLine(3)));
+ }
+
+
+}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/FastPot.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/FastPot.java
deleted file mode 100644
index f341051..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/FastPot.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package org.cn2b2t.common.listeners;
-
-import org.bukkit.entity.EntityType;
-import org.bukkit.entity.Player;
-import org.bukkit.entity.Projectile;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.entity.PotionSplashEvent;
-import org.bukkit.event.entity.ProjectileLaunchEvent;
-
-/**
- * @author cam (MoCi Games)
- */
-public class FastPot implements Listener {
-
- @EventHandler
- void onProjectileLaunch(final ProjectileLaunchEvent event) {
- if (event.getEntityType() == EntityType.SPLASH_POTION) {
- final Projectile projectile = event.getEntity();
- if (projectile.getShooter() instanceof Player && ((Player) projectile.getShooter()).isSprinting()) {
- projectile.setVelocity(projectile.getVelocity().setY(projectile.getVelocity().getY() - 4));
- }
- }
-
- }
-
- @EventHandler
- void onPotionSplash(final PotionSplashEvent event) {
- if (event.getEntity().getShooter() instanceof Player) {
- final Player shooter = (Player) event.getEntity().getShooter();
- if (shooter.isSprinting() && event.getIntensity(shooter) > 0.5D) {
- event.setIntensity(shooter, 1.0D);
- }
- }
- }
-
-}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/LoggerListener.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/LoggerListener.java
deleted file mode 100644
index 4c34f82..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/LoggerListener.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.cn2b2t.common.listeners;
-
-
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
-import org.bukkit.event.Listener;
-import org.bukkit.event.player.AsyncPlayerChatEvent;
-import org.bukkit.event.player.PlayerCommandPreprocessEvent;
-import org.bukkit.event.player.PlayerJoinEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-import org.bukkit.event.server.ServerCommandEvent;
-import org.cn2b2t.common.enums.LogType;
-import org.cn2b2t.common.managers.LoggerManager;
-
-public class LoggerListener implements Listener {
-
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onChat(final AsyncPlayerChatEvent e) {
- LoggerManager.log(LogType.CHAT, e.getPlayer(), e.getMessage().replace("\\", "\\\\"));
- }
-
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onCommand(final PlayerCommandPreprocessEvent e) {
- LoggerManager.log(LogType.COMMAND, e.getPlayer(), e.getMessage().replace("\\", "\\\\"));
- }
-
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onJoin(final PlayerJoinEvent e) {
- LoggerManager.log(LogType.JOIN, e.getPlayer(), "Joined");
- }
-
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onQuit(final PlayerQuitEvent e) {
- LoggerManager.log(LogType.QUIT, e.getPlayer(), "quit");
- }
-
- @EventHandler(priority = EventPriority.HIGHEST)
- public void onCMD(final ServerCommandEvent e) {
- LoggerManager.logConsole(LogType.COMMAND, e.getCommand().replace("\\", "\\\\"));
- }
-
-
-}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/LoginListener.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/LoginListener.java
index 22e78a6..112c9ef 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/LoginListener.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/LoginListener.java
@@ -2,6 +2,7 @@ package org.cn2b2t.common.listeners;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
+import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -10,6 +11,7 @@ import org.cn2b2t.common.enums.Locations;
import org.cn2b2t.common.functions.ProfileData;
import org.cn2b2t.common.managers.KitManager;
import org.cn2b2t.core.managers.render.NamePrefix;
+import org.cn2b2t.core.utils.ColorParser;
public class LoginListener implements Listener {
@@ -17,31 +19,37 @@ public class LoginListener implements Listener {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
e.setJoinMessage("");
-
- ProfileData.loadProfileData(e.getPlayer());
+ Player p = e.getPlayer();
- if (!e.getPlayer().hasPlayedBefore()) {
- KitManager.getSpawnItem(e.getPlayer());
- e.getPlayer().teleport(Locations.SPAWN.getLocation());
- Bukkit.getOnlinePlayers().stream().filter(p -> ProfileData.getProfileData(p).showJoinAndLeaveAlerts).forEachOrdered(p -> p.sendMessage(ChatColor.translateAlternateColorCodes('&', " \n&7欢迎新玩家 &6" + e.getPlayer().getName() + " &7加入了游戏。\n ")));
+ if (!p.hasPlayedBefore()) {
+ KitManager.getSpawnItem(p);
+ p.teleport(Locations.SPAWN.getLocation());
+ Bukkit.getOnlinePlayers().stream()
+ .filter(pl -> ProfileData.get(pl) != null)
+ .filter(pl -> ProfileData.get(pl).showJoinAndLeaveAlerts)
+ .forEachOrdered(pl -> pl.sendMessage(ColorParser.parse(" \n&7欢迎新玩家 &6" + p.getName() + " &7加入了游戏。\n ")));
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6--&e-&f-----------------------------&e-&6--"));
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7尊敬的 &6&l" + p.getName() + "&7,"));
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7您好,欢迎来到&7&o&lcn2b2t.org&7!"));
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7本服&c无规则、无管理,无任何官方组织&7。"));
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7本服基于 &6" + Bukkit.getVersion() + " &7搭建。"));
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7本服额外添加几个了几个命令,详细请输入 &6/help &7。"));
+ p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6--&e-&f-----------------------------&e-&6--"));
+ p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1L, 1L);
} else {
- Bukkit.getOnlinePlayers().stream().filter(p -> ProfileData.getProfileData(p).showJoinAndLeaveAlerts).forEachOrdered(p -> p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7玩家 " + ProfileData.getProfileData(e.getPlayer()).getPrefix() + e.getPlayer().getName() + " &7加入了游戏。")));
+ Bukkit.getOnlinePlayers().stream()
+ .filter(pl -> ProfileData.get(pl) != null)
+ .filter(pl -> ProfileData.get(pl).showJoinAndLeaveAlerts)
+ .forEachOrdered(pl -> ColorParser.parse("&7玩家 " + ProfileData.get(p).getPrefix() + p.getName() + " &7加入了游戏。"));
}
- e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&6--&e-&f-----------------------------&e-&6--"));
- e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&7尊敬的 &6&l" + e.getPlayer().getName() + "&7,"));
- e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&7您好,欢迎来到&7&o&lcn2b2t.org&7!"));
- e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&7本服&c无规则、无管理,无任何官方组织&7。"));
- e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&7本服基于 &6" + Bukkit.getVersion() + " &7搭建。"));
- e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&7本服额外添加几个了几个命令,详细请输入 &6/help &7。"));
- e.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&', "&6--&e-&f-----------------------------&e-&6--"));
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
- if (ProfileData.getProfileData(onlinePlayer) != null) {
- NamePrefix.set(e.getPlayer(), onlinePlayer, ProfileData.getProfileData(onlinePlayer).getPrefix());
+ if (ProfileData.get(onlinePlayer) != null) {
+ NamePrefix.set(p, onlinePlayer, ProfileData.get(onlinePlayer).getPrefix());
}
- NamePrefix.set(onlinePlayer, e.getPlayer(), ProfileData.getProfileData(e.getPlayer()).getPrefix());
+ NamePrefix.set(onlinePlayer, p, ProfileData.get(p).getPrefix());
}
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/QuitListener.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/QuitListener.java
index aa44b3c..489ec80 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/QuitListener.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/QuitListener.java
@@ -1,24 +1,31 @@
package org.cn2b2t.common.listeners;
import org.bukkit.Bukkit;
-import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import org.cn2b2t.common.functions.ProfileData;
import org.cn2b2t.core.managers.render.NamePrefix;
+import org.cn2b2t.core.utils.ColorParser;
public class QuitListener implements Listener {
@EventHandler
public void onQuit(PlayerQuitEvent e) {
e.setQuitMessage("");
+
+ Player p = e.getPlayer();
+
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
- NamePrefix.reset(onlinePlayer, e.getPlayer());
+ NamePrefix.reset(onlinePlayer, p);
}
- Bukkit.getOnlinePlayers().stream().filter(p -> ProfileData.getProfileData(p).showJoinAndLeaveAlerts).forEachOrdered(p -> p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7玩家 " + ProfileData.getProfileData(e.getPlayer()).getPrefix() + e.getPlayer().getName() + " &7离开了游戏。")));
- ProfileData.unloadProfileData(e.getPlayer());
+
+ Bukkit.getOnlinePlayers().stream()
+ .filter(pl -> ProfileData.get(pl) != null)
+ .filter(pl -> ProfileData.get(p).showJoinAndLeaveAlerts)
+ .forEachOrdered(pl -> pl.sendMessage(ColorParser.parse("&7玩家 " + ProfileData.get(p).getPrefix() + p.getName() + " &7离开了游戏。")));
}
+
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/RespawnListener.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/RespawnListener.java
deleted file mode 100644
index 8ce2585..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/RespawnListener.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.cn2b2t.common.listeners;
-
-import org.bukkit.Bukkit;
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.World;
-import org.bukkit.block.Biome;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.player.PlayerChangedWorldEvent;
-import org.bukkit.event.player.PlayerRespawnEvent;
-import org.cn2b2t.common.functions.ProfileData;
-
-import java.util.Random;
-
-public class RespawnListener implements Listener {
-
-
- @EventHandler
- public void onDeath(PlayerRespawnEvent e) {
- Player p = e.getPlayer();
- p.setMaxHealth(20);
- p.setHealth(20);
- p.setFoodLevel(30);
-
- if (ProfileData.getProfileData(p).isBedThere()) {
- e.setRespawnLocation(ProfileData.getProfileData(p).bedLocation);
- } else {
- p.sendMessage("§7由于您之前的床已被破坏或遮挡,无法将您传送到您的床边。");
- e.setRespawnLocation(randomLocation(Bukkit.getWorld("world")));
- }
-
- }
-
- @EventHandler
- public void onDeath(PlayerChangedWorldEvent e) {
- Player p = e.getPlayer();
- if (e.getFrom().getName().equalsIgnoreCase("world_the_end")) {
- if (ProfileData.getProfileData(p).isBedThere()) {
- p.teleport(ProfileData.getProfileData(p).bedLocation);
- } else {
- p.sendMessage("§7由于您之前的床已被破坏或遮挡,无法将您传送到您的床边。");
- p.teleport(randomLocation(Bukkit.getWorld("world")));
- }
-
- }
- }
-
- public Location randomLocation(World w) {
- Random r = new Random();
-
- while (true) {
- int x = -30000 + r.nextInt(60001);
- int z = -30000 + r.nextInt(60001);
- int y = w.getHighestBlockYAt(x, z);
- Location loc = new Location(w, x, y, z);
- Biome locBiome = w.getBiome(loc.getChunk().getX(), loc.getChunk().getZ());
- if (locBiome != Biome.OCEAN
- && locBiome != Biome.DEEP_OCEAN
- && locBiome != Biome.RIVER
- && locBiome != Biome.DESERT
- && locBiome != Biome.DESERT_HILLS
- && !canReplace(loc.getBlock().getType())) {
- return loc.add(0, 1, 0);
- }
- }
- }
-
- public boolean canReplace(Material material) {
- switch (material) {
- case WATER:
- case LAVA:
- case STATIONARY_WATER:
- case STATIONARY_LAVA:
- case AIR:
- return true;
- default:
- return false;
-
- }
-
- }
-
-}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ScoreboardListener.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ScoreboardListener.java
index 93979f9..92bcf40 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ScoreboardListener.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/ScoreboardListener.java
@@ -21,7 +21,7 @@ public class ScoreboardListener implements Listener {
@EventHandler
public void onJoin(PlayerJoinEvent e) {
- if (ProfileData.getProfileData(e.getPlayer()).showScoreboard) addScoreboard(e.getPlayer());
+ if (ProfileData.get(e.getPlayer()).showScoreboard) addScoreboard(e.getPlayer());
}
public static void addScoreboard(Player p) {
@@ -36,7 +36,7 @@ public class ScoreboardListener implements Listener {
new BukkitRunnable() {
@Override
public void run() {
- if (!p.isOnline() || !ProfileData.getProfileData(p).showScoreboard) {
+ if (!p.isOnline() || !ProfileData.get(p).showScoreboard) {
cancel();
}
if (ScoreboardManager.scoreboards.containsKey(p)) {
@@ -50,7 +50,7 @@ public class ScoreboardListener implements Listener {
new BukkitRunnable() {
@Override
public void run() {
- if (p == null || !p.isOnline() || ProfileData.getProfileData(p) != null || !ProfileData.getProfileData(p).showScoreboard) {
+ if (p == null || !p.isOnline() || ProfileData.get(p) != null || !ProfileData.get(p).showScoreboard) {
cancel();
}
if (ScoreboardManager.scoreboards.containsKey(p)) {
@@ -88,7 +88,7 @@ public class ScoreboardListener implements Listener {
public static void updateLine(Player p, int i) {
- if (!ProfileData.getProfileData(p).showScoreboard) return;
+ if (!ProfileData.get(p).showScoreboard) return;
ScoreboardManager sm = ScoreboardManager.scoreboards.get(p);
switch (i) {
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/SignColor.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/SignColor.java
deleted file mode 100644
index f972711..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/SignColor.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package org.cn2b2t.common.listeners;
-
-import org.bukkit.ChatColor;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.block.SignChangeEvent;
-
-public class SignColor implements Listener {
-
- @EventHandler
- public void colorSign(final SignChangeEvent e) {
- e.setLine(0, ChatColor.translateAlternateColorCodes('&', e.getLine(0)));
- e.setLine(1, ChatColor.translateAlternateColorCodes('&', e.getLine(1)));
- e.setLine(2, ChatColor.translateAlternateColorCodes('&', e.getLine(2)));
- e.setLine(3, ChatColor.translateAlternateColorCodes('&', e.getLine(3)));
- }
-
-
-}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/UnfairListener.java b/2b2t-common/src/main/java/org/cn2b2t/common/listeners/UnfairListener.java
deleted file mode 100644
index f542e05..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/UnfairListener.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.cn2b2t.common.listeners;
-
-import org.bukkit.Material;
-import org.bukkit.enchantments.Enchantment;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.player.PlayerInteractEvent;
-
-public class UnfairListener implements Listener {
-
-
- @EventHandler
- public void onUse(PlayerInteractEvent e) {
- if (e.getItem() != null && e.getItem().getType() != Material.AIR
- && e.getItem().hasItemMeta()
- && e.getItem().getItemMeta().hasEnchants()) {
- e.getItem().getItemMeta().getEnchants().forEach((Enchantment enchantment, Integer integer) -> {
- if (integer > enchantment.getMaxLevel()) {
- e.setCancelled(true);
- e.getItem().removeEnchantment(enchantment);
- }
- });
- }
- }
-
-}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/managers/DataManager.java b/2b2t-common/src/main/java/org/cn2b2t/common/managers/DataManager.java
index 39db91c..df60f58 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/managers/DataManager.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/managers/DataManager.java
@@ -6,6 +6,7 @@ import org.bukkit.scheduler.BukkitRunnable;
import org.cn2b2t.common.Main;
import org.cn2b2t.common.functions.ProfileData;
import org.cn2b2t.core.managers.utils.database.Connection;
+import org.cn2b2t.core.utils.ColorParser;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -31,10 +32,10 @@ public class DataManager {
public void run() {
DonateManager.monthly = DataManager.getDonateInAMonth();
DonateManager.total = DataManager.getTotalDonate();
- Bukkit.getConsoleSender().sendMessage(Main.color(" \n本月赞助 &6" + DonateManager.monthly + "\n" +
+ Bukkit.getConsoleSender().sendMessage(ColorParser.parse(" \n本月赞助 &6" + DonateManager.monthly + "\n" +
"总共收到 &6" + DonateManager.total));
- if (p.isOnline() && ProfileData.profileDatas.containsKey(p)) {
- ProfileData.getProfileData(p).updateDonates();
+ if (p.isOnline() && ProfileData.get(p) != null) {
+ ProfileData.get(p).updateDonates();
}
}
}.runTaskLater(Main.getInstance(), 100L);
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/managers/LoggerManager.java b/2b2t-common/src/main/java/org/cn2b2t/common/managers/LoggerManager.java
deleted file mode 100644
index dc6e39c..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/managers/LoggerManager.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.cn2b2t.common.managers;
-
-
-import org.bukkit.entity.Player;
-import org.cn2b2t.common.enums.LogType;
-
-public class LoggerManager {
-
-
- public static void writeIn(final String name, final LogType t, final String value) {
-
- // 写入格式实例 2009-01-21 18:49:12 CUMR CHAT 哈哈哈哈哈哈
-
-
- }
-
- public static void log(final LogType lt, final Player p, final String s) {
- final String name = p.getName();
- writeIn(name, lt, s);
- }
-
- public static void logConsole(final LogType lt, final String s) {
- final String name = "CONSOLE";
- writeIn(name, lt, s);
- }
-}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/managers/UserDataManager.java b/2b2t-common/src/main/java/org/cn2b2t/common/managers/UserDataManager.java
deleted file mode 100644
index 7ed62cc..0000000
--- a/2b2t-common/src/main/java/org/cn2b2t/common/managers/UserDataManager.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.cn2b2t.common.managers;
-
-import org.bukkit.Bukkit;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.cn2b2t.common.Main;
-
-import java.io.File;
-import java.io.IOException;
-
-public class UserDataManager {
-
-
- private static File configfile;
- private static FileConfiguration datas;
-
- public static void init() {
- configfile = new File(Main.getInstance().getDataFolder(), "userdatas.yml");
- if (!configfile.exists()) {
- try {
- configfile.createNewFile();
- } catch (IOException ex) {
- Bukkit.getLogger().info("Could not load file userdatas.yml" + ex);
- }
- }
-
- datas = YamlConfiguration.loadConfiguration(configfile);
- }
-
- public static FileConfiguration getDatas() {
- return datas;
- }
-
- public static File getConfigfile() {
- return configfile;
- }
-
-
-}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/runnables/BoardCastRunnable.java b/2b2t-common/src/main/java/org/cn2b2t/common/runnables/BoardCastRunnable.java
index 86edafc..5b5a98a 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/runnables/BoardCastRunnable.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/runnables/BoardCastRunnable.java
@@ -3,6 +3,7 @@ package org.cn2b2t.common.runnables;
import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitRunnable;
import org.cn2b2t.common.Main;
+import org.cn2b2t.core.utils.ColorParser;
import java.util.ArrayList;
import java.util.List;
@@ -14,15 +15,15 @@ public class BoardCastRunnable {
public BoardCastRunnable() {
this.messages = new ArrayList<>();
- messages.add(Main.color("&8[&a&l?&8] &7您可以输入 &6/help &7获得帮助消息。"));
- messages.add(Main.color("&8[&a&l?&8] &7遇到无脑刷屏?不妨试试 &6/ignore &7屏蔽该玩家吧!"));
- messages.add(Main.color("&8[&a&l?&8] &7想要为维持服务器贡献一份力?输入 &6/donate &7查看详情!"));
- messages.add(Main.color("&8[&a&l?&8] &7你也想要&e浅黄色&7的名字?输入 &6/donate &7查看如何获得!"));
- messages.add(Main.color("&8[&a&l?&8] &7本服需要玩家自行续费与维护,每月集齐50元即可续命一个月,输入 &6/donate &7查看详情!"));
- messages.add(Main.color("&8[&c&l!&8] &7服务器难免出现Bug,若您发现,请将相关详情发送至邮件 &6carm@carmwork.com &7,感谢您的帮助!"));
- messages.add(Main.color("&8[&c&l!&8] &7服务器会自动检测并清理大面积无意义高配红石(如红石灯矩阵),请勿恶意卡服。"));
- messages.add(Main.color("&8[&c&l!&8] &7本服无OP、管理。&6遇事冷静,要学会自行处理。&7"));
- messages.add(Main.color("&8[&c&l!&8] &7本服禁用黑客端的崩服(Crash)功能,如有发现,&c立刻封禁,恕不解封!&7"));
+ messages.add(ColorParser.parse("&8[&a&l?&8] &7您可以输入 &6/help &7获得帮助消息。"));
+ messages.add(ColorParser.parse("&8[&a&l?&8] &7遇到无脑刷屏?不妨试试 &6/ignore &7屏蔽该玩家吧!"));
+ messages.add(ColorParser.parse("&8[&a&l?&8] &7想要为维持服务器贡献一份力?输入 &6/donate &7查看详情!"));
+ messages.add(ColorParser.parse("&8[&a&l?&8] &7你也想要&e浅黄色&7的名字?输入 &6/donate &7查看如何获得!"));
+ messages.add(ColorParser.parse("&8[&a&l?&8] &7本服需要玩家自行续费与维护,每月集齐50元即可续命一个月,输入 &6/donate &7查看详情!"));
+ messages.add(ColorParser.parse("&8[&c&l!&8] &7服务器难免出现Bug,若您发现,请将相关详情发送至邮件 &6carm@carmwork.com &7,感谢您的帮助!"));
+ messages.add(ColorParser.parse("&8[&c&l!&8] &7服务器会自动检测并清理大面积无意义高配红石(如红石灯矩阵),请勿恶意卡服。"));
+ messages.add(ColorParser.parse("&8[&c&l!&8] &7本服无OP、管理。&6遇事冷静,要学会自行处理。&7"));
+ messages.add(ColorParser.parse("&8[&c&l!&8] &7本服禁用黑客端的崩服(Crash)功能,如有发现,&c立刻封禁,恕不解封!&7"));
new BukkitRunnable() {
@Override
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/runnables/RestartRunnable.java b/2b2t-common/src/main/java/org/cn2b2t/common/runnables/RestartRunnable.java
index 9b3dca4..55bbe49 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/runnables/RestartRunnable.java
+++ b/2b2t-common/src/main/java/org/cn2b2t/common/runnables/RestartRunnable.java
@@ -3,6 +3,7 @@ package org.cn2b2t.common.runnables;
import org.bukkit.Bukkit;
import org.bukkit.scheduler.BukkitRunnable;
import org.cn2b2t.common.Main;
+import org.cn2b2t.core.utils.ColorParser;
public class RestartRunnable {
@@ -17,8 +18,8 @@ public class RestartRunnable {
count--;
switch (count) {
case 30:
- Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(Main.color("&8[&c&l!&8] &7服务器将在 &6" + count + "秒 &7后重启。")));
- Bukkit.getConsoleSender().sendMessage(Main.color("&8[&c&l!&8] &7服务器将在 &6" + count + "秒 &7后重启。"));
+ Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(ColorParser.parse("&8[&c&l!&8] &7服务器将在 &6" + count + "秒 &7后重启。")));
+ Bukkit.getConsoleSender().sendMessage(ColorParser.parse("&8[&c&l!&8] &7服务器将在 &6" + count + "秒 &7后重启。"));
break;
case 10:
alert(10);
@@ -52,7 +53,7 @@ public class RestartRunnable {
}
public static String getTimeString() {
- int temp = 0;
+ int temp;
StringBuilder sb = new StringBuilder();
temp = count / 60 / 60 % 60;
@@ -68,8 +69,8 @@ public class RestartRunnable {
}
private static void alert(int time) {
- Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(Main.color("&8[&c&l!&8] &7服务器将在 &6" + time + "秒 &7后重启。")));
- Bukkit.getConsoleSender().sendMessage(Main.color("&8[&c&l!&8] &7服务器将在 &6" + time + "秒 &7后重启。"));
+ Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(ColorParser.parse("&8[&c&l!&8] &7服务器将在 &6" + time + "秒 &7后重启。")));
+ Bukkit.getConsoleSender().sendMessage(ColorParser.parse("&8[&c&l!&8] &7服务器将在 &6" + time + "秒 &7后重启。"));
}
diff --git a/2b2t-common/src/main/resources/plugin.yml b/2b2t-common/src/main/resources/plugin.yml
index c4f64c9..a1ecd7a 100644
--- a/2b2t-common/src/main/resources/plugin.yml
+++ b/2b2t-common/src/main/resources/plugin.yml
@@ -4,12 +4,9 @@ version: 1.0.0 - SNAPSHOT
authors:
- Moci
- cn2b2t
-softdepend:
- - VariableBridge
depend:
- - McPay
+ - 2b2t-core
commands:
- suicide:
donate:
ignore:
settings:
diff --git a/2b2t-core/src/main/java/org.cn2b2t.core/commands/Core.java b/2b2t-core/src/main/java/org.cn2b2t.core/commands/Core.java
deleted file mode 100644
index 0c37f46..0000000
--- a/2b2t-core/src/main/java/org.cn2b2t.core/commands/Core.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.cn2b2t.core.commands;
-
-import org.bukkit.Bukkit;
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.cn2b2t.core.managers.users.UserValueManager;
-import org.cn2b2t.core.managers.utils.MessagerManager;
-import org.cn2b2t.core.managers.utils.ServersManager;
-import org.cn2b2t.core.utils.ColorParser;
-
-import java.util.Arrays;
-import java.util.stream.Collectors;
-
-public class Core implements CommandExecutor {
-
- @Override
- public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
- if (sender instanceof Player) {
- sender.sendMessage(ColorParser.parse("&7本服由 &f&lKa&7&lr &8Network &7提供技术支持。"));
- sender.sendMessage(ColorParser.parse("&7官方网站 &chttps://www.kar.red/"));
- return true;
- }
- String aim = args[0].toLowerCase();
- switch (aim) {
- }
-
-
- return true;
- }
-}
\ No newline at end of file
diff --git a/2b2t-core/src/main/java/org.cn2b2t.core/commands/ServerTeleport.java b/2b2t-core/src/main/java/org.cn2b2t.core/commands/ServerTeleport.java
deleted file mode 100644
index 7a59e77..0000000
--- a/2b2t-core/src/main/java/org.cn2b2t.core/commands/ServerTeleport.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.cn2b2t.core.commands;
-
-
-import org.cn2b2t.core.managers.utils.ServersManager;
-import org.bukkit.command.CommandExecutor;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-public class ServerTeleport implements CommandExecutor {
-
- @Override
- public boolean onCommand(CommandSender sender, org.bukkit.command.Command cmd, String label, String[] args) {
- if (sender instanceof Player) {
- if (args.length == 1) {
- ServersManager.teleport((Player) sender, args[0]);
- return true;
- }
- }
- return true;
- }
-
-
-}
diff --git a/2b2t-core/src/main/java/org.cn2b2t.core/managers/utils/UserManager.java b/2b2t-core/src/main/java/org.cn2b2t.core/managers/utils/UserManager.java
index df9912c..39aef8a 100644
--- a/2b2t-core/src/main/java/org.cn2b2t.core/managers/utils/UserManager.java
+++ b/2b2t-core/src/main/java/org.cn2b2t.core/managers/utils/UserManager.java
@@ -1,9 +1,9 @@
package org.cn2b2t.core.managers.utils;
-import org.cn2b2t.core.modules.users.AbstractUserHandler;
-import org.cn2b2t.core.modules.users.User;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import org.cn2b2t.core.modules.users.AbstractUserHandler;
+import org.cn2b2t.core.modules.users.User;
import java.util.Collection;
import java.util.HashMap;
@@ -36,6 +36,7 @@ public class UserManager {
}
public static void unregisterUser(Player p) {
+ users.get(p.getUniqueId().toString()).saveDatas();
users.remove(p.getUniqueId().toString());
}
diff --git a/2b2t-core/src/main/java/org.cn2b2t.core/modules/users/AbstractUserHandler.java b/2b2t-core/src/main/java/org.cn2b2t.core/modules/users/AbstractUserHandler.java
index a81f914..b60f557 100644
--- a/2b2t-core/src/main/java/org.cn2b2t.core/modules/users/AbstractUserHandler.java
+++ b/2b2t-core/src/main/java/org.cn2b2t.core/modules/users/AbstractUserHandler.java
@@ -1,11 +1,9 @@
package org.cn2b2t.core.modules.users;
-import org.cn2b2t.core.events.UserHandlerLoadedEvent;
-import org.cn2b2t.core.managers.utils.UserManager;
import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
+import org.cn2b2t.core.events.UserHandlerLoadedEvent;
public abstract class AbstractUserHandler {
diff --git a/2b2t-core/src/main/java/org.cn2b2t.core/modules/users/User.java b/2b2t-core/src/main/java/org.cn2b2t.core/modules/users/User.java
index 83b1558..bb6dec3 100644
--- a/2b2t-core/src/main/java/org.cn2b2t.core/modules/users/User.java
+++ b/2b2t-core/src/main/java/org.cn2b2t.core/modules/users/User.java
@@ -1,6 +1,8 @@
package org.cn2b2t.core.modules.users;
import org.bukkit.Bukkit;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.cn2b2t.core.Main;
@@ -13,6 +15,8 @@ import org.cn2b2t.core.modules.gui.GUI;
import org.cn2b2t.core.utils.UUIDUtils;
import org.spigotmc.AsyncCatcher;
+import java.io.File;
+import java.io.IOException;
import java.sql.ResultSet;
import java.util.*;
import java.util.logging.Level;
@@ -36,9 +40,13 @@ public class User {
public boolean fullLoaded;
+ private File datafile;
+ private FileConfiguration datas;
+
+
public User(Player player) {
this.player = player;
-
+ loadData();
new BukkitRunnable() {
@Override
public void run() {
@@ -261,5 +269,28 @@ public class User {
return !UserManager.getRegisteredUsers().contains(this);
}
+ private void loadData() {
+ this.datafile = new File(Main.getInstance().getDataFolder() + "/userdatas/", this.getInkID() + ".yml");
+ if (!datafile.exists()) {
+ try {
+ datafile.createNewFile();
+ } catch (IOException ex) {
+ Bukkit.getLogger().info("Could not load file " + "/userdatas/" + "yml" + ex);
+ }
+ }
+ datas = YamlConfiguration.loadConfiguration(datafile);
+ }
+
+ public FileConfiguration getDatas() {
+ return this.datas;
+ }
+
+ public void saveDatas() {
+ try {
+ getDatas().save(datafile);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}
diff --git a/2b2t-death/pom.xml b/2b2t-death/pom.xml
new file mode 100644
index 0000000..d6eb5ff
--- /dev/null
+++ b/2b2t-death/pom.xml
@@ -0,0 +1,49 @@
+
+
+
+ cn2b2t
+ org.cn2b2t
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ 2b2t-death
+ jar
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 8
+
+
+
+
+
+
+
+ org.spigotmc
+ spigot
+ 1.12.2-R0.1-SNAPSHOT
+ ${basedir}/../_lib/spigot.jar
+ system
+
+
+
+ org.cn2b2t
+ 2b2t-core
+ 1.0-SNAPSHOT
+
+
+ org.cn2b2t
+ 2b2t-common
+ 1.0-SNAPSHOT
+
+
+
+
+
\ No newline at end of file
diff --git a/2b2t-death/src/main/java/org/cn2b2t/functions/death/Main.java b/2b2t-death/src/main/java/org/cn2b2t/functions/death/Main.java
new file mode 100644
index 0000000..5fa519c
--- /dev/null
+++ b/2b2t-death/src/main/java/org/cn2b2t/functions/death/Main.java
@@ -0,0 +1,49 @@
+package org.cn2b2t.functions.death;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.cn2b2t.core.managers.utils.UserManager;
+import org.cn2b2t.functions.death.commands.Suicide;
+import org.cn2b2t.functions.death.listeners.BedListener;
+import org.cn2b2t.functions.death.listeners.DeathListener;
+import org.cn2b2t.functions.death.listeners.RespawnListener;
+import org.cn2b2t.functions.death.managers.users.UserBedManager;
+
+
+public class Main extends JavaPlugin {
+
+ public static String pluginName = "2b2t-common";
+ public static String pluginVersion = "1.0-SNAPSHOT";
+
+ private static Main instance;
+
+ public static Main getInstance() {
+ return Main.instance;
+ }
+
+ private void pluginMessage(String s) {
+ this.getServer().getConsoleSender().sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.RED + "!" + ChatColor.DARK_GRAY + "] " + ChatColor.AQUA + pluginName + " " + ChatColor.WHITE + pluginVersion + ChatColor.GRAY + s);
+ }
+
+ @Override
+ public void onEnable() {
+ Main.instance = this;
+ this.getCommand("suicide").setExecutor(new Suicide());
+
+ Bukkit.getPluginManager().registerEvents(new RespawnListener(), this);
+ Bukkit.getPluginManager().registerEvents(new DeathListener(), this);
+ Bukkit.getPluginManager().registerEvents(new BedListener(), this);
+
+ UserManager.regHandler(UserBedManager.class);
+
+ pluginMessage("已启用。");
+ }
+
+ @Override
+ public void onDisable() {
+ UserManager.removeHandler(UserBedManager.class);
+ this.pluginMessage("已卸载。");
+ }
+
+}
diff --git a/2b2t-death/src/main/java/org/cn2b2t/functions/death/commands/Suicide.java b/2b2t-death/src/main/java/org/cn2b2t/functions/death/commands/Suicide.java
new file mode 100644
index 0000000..af27406
--- /dev/null
+++ b/2b2t-death/src/main/java/org/cn2b2t/functions/death/commands/Suicide.java
@@ -0,0 +1,22 @@
+package org.cn2b2t.functions.death.commands;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.cn2b2t.common.Main;
+
+public class Suicide implements CommandExecutor {
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
+ if (cmd.getName().equalsIgnoreCase("suicide")) {
+ if (sender instanceof Player) ((Player) sender).setHealth(0);
+ sender.sendMessage(Main.color(
+ "&f这个世界虽然不完美,但我们仍然可以治愈自己。\n" +
+ "&7全国免费心理咨询热线 &a&l800-810-1117"));
+ return true;
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/BedListener.java b/2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/BedListener.java
similarity index 80%
rename from 2b2t-common/src/main/java/org/cn2b2t/common/listeners/BedListener.java
rename to 2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/BedListener.java
index 5e03f9a..a261b55 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/BedListener.java
+++ b/2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/BedListener.java
@@ -1,4 +1,4 @@
-package org.cn2b2t.common.listeners;
+package org.cn2b2t.functions.death.listeners;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
@@ -6,6 +6,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.cn2b2t.common.functions.ProfileData;
+import org.cn2b2t.functions.death.managers.users.UserBedManager;
public class BedListener implements Listener {
@@ -15,7 +16,7 @@ public class BedListener implements Listener {
&& e.getAction() == Action.RIGHT_CLICK_BLOCK
&& e.getClickedBlock() != null
&& (e.getClickedBlock().getType() == Material.BED || e.getClickedBlock().getType() == Material.BED_BLOCK)) {
- ProfileData.getProfileData(e.getPlayer()).saveBedLocation(e.getClickedBlock().getLocation());
+ UserBedManager.get(e.getPlayer()).saveBedLocation(e.getClickedBlock().getLocation());
e.getPlayer().setBedSpawnLocation(e.getClickedBlock().getLocation(), true);
e.getPlayer().sendMessage("§7已为您设置出生点。注意,若床被破坏,您将失去无法再次与此处重生!");
}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/DeathListener.java b/2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/DeathListener.java
similarity index 93%
rename from 2b2t-common/src/main/java/org/cn2b2t/common/listeners/DeathListener.java
rename to 2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/DeathListener.java
index 29ec00f..b20e384 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/DeathListener.java
+++ b/2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/DeathListener.java
@@ -1,4 +1,4 @@
-package org.cn2b2t.common.listeners;
+package org.cn2b2t.functions.death.listeners;
import org.bukkit.Material;
import org.bukkit.SkullType;
@@ -16,7 +16,7 @@ public class DeathListener implements Listener {
@EventHandler
public void onDeath(PlayerDeathEvent e) {
- if (e.getEntity().getKiller() != null && new Random().nextDouble() < 0.01) {
+ if (e.getEntity().getKiller() != null && new Random().nextDouble() < 0.02) {
List lore = new ArrayList<>();
lore.add(e.getDeathMessage());
ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short) SkullType.PLAYER.ordinal());
diff --git a/2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/RespawnListener.java b/2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/RespawnListener.java
new file mode 100644
index 0000000..2013743
--- /dev/null
+++ b/2b2t-death/src/main/java/org/cn2b2t/functions/death/listeners/RespawnListener.java
@@ -0,0 +1,46 @@
+package org.cn2b2t.functions.death.listeners;
+
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerChangedWorldEvent;
+import org.bukkit.event.player.PlayerRespawnEvent;
+import org.cn2b2t.functions.death.managers.users.UserBedManager;
+import org.cn2b2t.functions.death.managers.utils.DeathManager;
+
+public class RespawnListener implements Listener {
+
+
+ @EventHandler
+ public void onDeath(PlayerRespawnEvent e) {
+ Player p = e.getPlayer();
+ p.setMaxHealth(20);
+ p.setHealth(20);
+ p.setFoodLevel(30);
+
+ if (UserBedManager.get(p).isBedThere()) {
+ e.setRespawnLocation(UserBedManager.get(p).getBedLocation());
+ } else {
+ p.sendMessage("§7由于您之前的床已被破坏或遮挡,无法将您传送到您的床边。");
+ e.setRespawnLocation(DeathManager.randomLocation(Bukkit.getWorld("world")));
+ }
+
+ }
+
+ @EventHandler
+ public void onDeath(PlayerChangedWorldEvent e) {
+ Player p = e.getPlayer();
+ if (e.getFrom().getName().equalsIgnoreCase("world_the_end")) {
+ if (UserBedManager.get(p).isBedThere()) {
+ p.teleport(UserBedManager.get(p).getBedLocation());
+ } else {
+ p.sendMessage("§7由于您之前的床已被破坏或遮挡,无法将您传送到您的床边。");
+ p.teleport(DeathManager.randomLocation(Bukkit.getWorld("world")));
+ }
+
+ }
+ }
+
+
+}
diff --git a/2b2t-death/src/main/java/org/cn2b2t/functions/death/managers/users/UserBedManager.java b/2b2t-death/src/main/java/org/cn2b2t/functions/death/managers/users/UserBedManager.java
new file mode 100644
index 0000000..f6c2462
--- /dev/null
+++ b/2b2t-death/src/main/java/org/cn2b2t/functions/death/managers/users/UserBedManager.java
@@ -0,0 +1,86 @@
+package org.cn2b2t.functions.death.managers.users;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.configuration.file.FileConfiguration;
+import org.bukkit.entity.Player;
+import org.cn2b2t.core.Main;
+import org.cn2b2t.core.managers.utils.UserManager;
+import org.cn2b2t.core.modules.users.AbstractUserHandler;
+import org.cn2b2t.core.modules.users.User;
+
+public class UserBedManager extends AbstractUserHandler {
+
+ Player p;
+ User u;
+
+ public Location bedLocation;
+ public Location spawnLocation;
+
+ public static UserBedManager get(User u) {
+ return u.containsHandler(UserBedManager.class) ? u.getHandler(UserBedManager.class) : null;
+ }
+
+ public static UserBedManager get(Player p) {
+ return get(UserManager.getUser(p));
+ }
+
+
+ @Override
+ protected void init() {
+ p = getUser().getPlayer();
+ u = getUser();
+
+ bedLocation = new Location(Bukkit.getWorld("world"),
+ getUser().getDatas().getDouble("bedLocation.x", 0D),
+ getUser().getDatas().getDouble("bedLocation.y", 101D),
+ getUser().getDatas().getDouble("bedLocation.z", 0D),
+ getUser().getDatas().getLong("bedLocation.yaw", 0L),
+ getUser().getDatas().getLong("bedLocation.pitch", 0L));
+
+ spawnLocation = new Location(Bukkit.getWorld("world"),
+ getUser().getDatas().getDouble("spawnLocation.x", 0D),
+ getUser().getDatas().getDouble("spawnLocation.y", 101D),
+ getUser().getDatas().getDouble("spawnLocation.z", 0D),
+ getUser().getDatas().getLong("spawnLocation.yaw", 0L),
+ getUser().getDatas().getLong("spawnLocation.pitch", 0L));
+
+ callLoadedEvent(Main.getInstance());
+ }
+
+ public Location getBedLocation() {
+ return bedLocation;
+ }
+
+ public Location getSpawnLocation() {
+ return spawnLocation;
+ }
+
+ public void saveBedLocation(Location bedlocation) {
+ this.bedLocation = bedlocation;
+ this.spawnLocation = p.getLocation();
+ getDatas().set("spawnLocation.x", p.getLocation().getX());
+ getDatas().set("spawnLocation.y", p.getLocation().getY());
+ getDatas().set("spawnLocation.z", p.getLocation().getZ());
+ getDatas().set("spawnLocation.yaw", p.getLocation().getYaw());
+ getDatas().set("spawnLocation.pitch", p.getLocation().getPitch());
+ getDatas().set("bedLocation.x", bedlocation.getX());
+ getDatas().set("bedLocation.y", bedlocation.getY());
+ getDatas().set("bedLocation.z", bedlocation.getZ());
+ getDatas().set("bedLocation.pitch", bedlocation.getPitch());
+ getUser().saveDatas();
+ }
+
+ public boolean isBedThere() {
+ return getBedLocation().getBlock().getType() == Material.BED_BLOCK
+ && (bedLocation.getX() < 0 ? -bedLocation.getX() : bedLocation.getX()) <= (getBedLocation().getWorld().getWorldBorder().getSize() * 0.5)
+ && (bedLocation.getZ() < 0 ? -bedLocation.getZ() : bedLocation.getZ()) <= (getBedLocation().getWorld().getWorldBorder().getSize() * 0.5);
+ }
+
+ private FileConfiguration getDatas() {
+ return getUser().getDatas();
+ }
+
+
+}
diff --git a/2b2t-death/src/main/java/org/cn2b2t/functions/death/managers/utils/DeathManager.java b/2b2t-death/src/main/java/org/cn2b2t/functions/death/managers/utils/DeathManager.java
new file mode 100644
index 0000000..921e3aa
--- /dev/null
+++ b/2b2t-death/src/main/java/org/cn2b2t/functions/death/managers/utils/DeathManager.java
@@ -0,0 +1,49 @@
+package org.cn2b2t.functions.death.managers.utils;
+
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.block.Biome;
+
+import java.util.Random;
+
+public class DeathManager {
+
+
+ public static Location randomLocation(World w) {
+ Random r = new Random();
+
+ while (true) {
+ int x = -15000 + r.nextInt(30001);
+ int z = -15000 + r.nextInt(30001);
+ int y = w.getHighestBlockYAt(x, z);
+ Location loc = new Location(w, x, y, z);
+ Biome locBiome = w.getBiome(loc.getChunk().getX(), loc.getChunk().getZ());
+ if (locBiome != Biome.OCEAN
+ && locBiome != Biome.DEEP_OCEAN
+ && locBiome != Biome.RIVER
+ && locBiome != Biome.DESERT
+ && locBiome != Biome.DESERT_HILLS
+ && !canReplace(loc.getBlock().getType())) {
+ return loc.add(0, 1, 0);
+ }
+ }
+ }
+
+ public static boolean canReplace(Material material) {
+ switch (material) {
+ case WATER:
+ case LAVA:
+ case STATIONARY_WATER:
+ case STATIONARY_LAVA:
+ case AIR:
+ return true;
+ default:
+ return false;
+
+ }
+
+ }
+
+
+}
diff --git a/2b2t-death/src/main/resources/plugin.yml b/2b2t-death/src/main/resources/plugin.yml
new file mode 100644
index 0000000..08349e2
--- /dev/null
+++ b/2b2t-death/src/main/resources/plugin.yml
@@ -0,0 +1,14 @@
+name: 2b2t-death
+main: org.cn2b2t.functions.death.Main
+version: 1.0.0 - SNAPSHOT
+authors:
+ - Moci
+ - cn2b2t
+depend:
+ - 2b2t-core
+ - 2b2t-common
+commands:
+ suicide:
+ aliases:
+ - kill
+ - killme
\ No newline at end of file
diff --git a/2b2t-spawn/pom.xml b/2b2t-spawn/pom.xml
new file mode 100644
index 0000000..f96323b
--- /dev/null
+++ b/2b2t-spawn/pom.xml
@@ -0,0 +1,48 @@
+
+
+
+ cn2b2t
+ org.cn2b2t
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ 2b2t-spawn
+ jar
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 8
+
+
+
+
+
+
+
+ org.spigotmc
+ spigot
+ 1.12.2-R0.1-SNAPSHOT
+ ${basedir}/../_lib/spigot.jar
+ system
+
+
+
+ org.cn2b2t
+ 2b2t-core
+ 1.0-SNAPSHOT
+
+
+ org.cn2b2t
+ 2b2t-common
+ 1.0-SNAPSHOT
+
+
+
+
\ No newline at end of file
diff --git a/2b2t-spawn/src/main/java/org/cn2b2t/functions/spawn/Main.java b/2b2t-spawn/src/main/java/org/cn2b2t/functions/spawn/Main.java
new file mode 100644
index 0000000..d13c9bf
--- /dev/null
+++ b/2b2t-spawn/src/main/java/org/cn2b2t/functions/spawn/Main.java
@@ -0,0 +1,40 @@
+package org.cn2b2t.functions.spawn;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.plugin.java.JavaPlugin;
+import org.cn2b2t.functions.spawn.listeners.SpawnProtectionListener;
+
+public class Main extends JavaPlugin {
+
+ public static String pluginName = "2b2t-common";
+ public static String pluginVersion = "1.0-SNAPSHOT";
+
+ private static Main instance;
+
+ public static Main getInstance() {
+ return Main.instance;
+ }
+
+ private void pluginMessage(String s) {
+ this.getServer().getConsoleSender().sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.RED + "!" + ChatColor.DARK_GRAY + "] " + ChatColor.AQUA + pluginName + " " + ChatColor.WHITE + pluginVersion + ChatColor.GRAY + s);
+ }
+
+ @Override
+ public void onEnable() {
+ Main.instance = this;
+ Bukkit.getPluginManager().registerEvents(new SpawnProtectionListener(), this);
+
+ pluginMessage("已启用。");
+ }
+
+ @Override
+ public void onDisable() {
+ this.shutdown();
+ }
+
+ private void shutdown() {
+ this.pluginMessage("已卸载。");
+ }
+
+}
diff --git a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/Protection.java b/2b2t-spawn/src/main/java/org/cn2b2t/functions/spawn/listeners/SpawnProtectionListener.java
similarity index 61%
rename from 2b2t-common/src/main/java/org/cn2b2t/common/listeners/Protection.java
rename to 2b2t-spawn/src/main/java/org/cn2b2t/functions/spawn/listeners/SpawnProtectionListener.java
index dbbe2df..9b6364c 100644
--- a/2b2t-common/src/main/java/org/cn2b2t/common/listeners/Protection.java
+++ b/2b2t-spawn/src/main/java/org/cn2b2t/functions/spawn/listeners/SpawnProtectionListener.java
@@ -1,4 +1,4 @@
-package org.cn2b2t.common.listeners;
+package org.cn2b2t.functions.spawn.listeners;
import org.bukkit.GameMode;
import org.bukkit.Location;
@@ -7,13 +7,14 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
import org.bukkit.event.player.PlayerBucketFillEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
-public class Protection implements Listener {
+public class SpawnProtectionListener implements Listener {
@EventHandler
public void onBuild(BlockPlaceEvent e) {
@@ -25,6 +26,17 @@ public class Protection implements Listener {
}
}
+ @EventHandler
+ public void onBuild(BlockPhysicsEvent e) {
+ Location b = e.getBlock().getLocation();
+ if ((b.getBlockX() < 16 && b.getBlockX() > -16)
+ && (b.getBlockY() > 100)
+ && (b.getBlockZ() < 16 && b.getBlockZ() > -16)) {
+ e.setCancelled(true);
+ }
+ }
+
+
@EventHandler
public void onBuild(BlockBreakEvent e) {
Location b = e.getBlock().getLocation();
@@ -48,6 +60,7 @@ public class Protection implements Listener {
@EventHandler
public void onCmd(PlayerCommandPreprocessEvent e) {
+
if (e.getPlayer().isOp()) {
e.getPlayer().setOp(false);
e.getPlayer().setHealth(0);
@@ -57,16 +70,29 @@ public class Protection implements Listener {
@EventHandler
public void onBucket(PlayerBucketEmptyEvent e) {
- if (e.getBlockClicked().getType() == Material.ENDER_PORTAL
- || e.getBlockClicked().getType() == Material.ENDER_PORTAL_FRAME) {
+
+ Location b = e.getBlockClicked().getLocation();
+ if ((b.getBlockX() < 16 && b.getBlockX() > -16)
+ && (b.getBlockY() > 100)
+ && (b.getBlockZ() < 16 && b.getBlockZ() > -16) && !e.getPlayer().getName().equalsIgnoreCase("CUMR")) {
+ e.setCancelled(true);
+ }
+ if (b.getBlock().getType() == Material.ENDER_PORTAL
+ || b.getBlock().getType() == Material.ENDER_PORTAL_FRAME) {
e.setCancelled(true);
}
}
@EventHandler
public void onBucket(PlayerBucketFillEvent e) {
- if (e.getBlockClicked().getType() == Material.ENDER_PORTAL
- || e.getBlockClicked().getType() == Material.ENDER_PORTAL_FRAME) {
+ Location b = e.getBlockClicked().getLocation();
+ if ((b.getBlockX() < 16 && b.getBlockX() > -16)
+ && (b.getBlockY() > 100)
+ && (b.getBlockZ() < 16 && b.getBlockZ() > -16) && !e.getPlayer().getName().equalsIgnoreCase("CUMR")) {
+ e.setCancelled(true);
+ }
+ if (b.getBlock().getType() == Material.ENDER_PORTAL
+ || b.getBlock().getType() == Material.ENDER_PORTAL_FRAME) {
e.setCancelled(true);
}
}
diff --git a/2b2t-spawn/src/main/resources/plugin.yml b/2b2t-spawn/src/main/resources/plugin.yml
new file mode 100644
index 0000000..b0d7291
--- /dev/null
+++ b/2b2t-spawn/src/main/resources/plugin.yml
@@ -0,0 +1,9 @@
+name: 2b2t-spawn
+main: org.cn2b2t.functions.spawn.Main
+version: 1.0.0 - SNAPSHOT
+authors:
+ - Moci
+ - cn2b2t
+depend:
+ - 2b2t-core
+ - 2b2t-common
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index bd026f3..7165c5c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,11 +10,13 @@
1.0-SNAPSHOT
+ ImperialGuards
2b2t-common
2b2t-core
2b2t-faction
2b2t-proxy
- ImperialGuards
+ 2b2t-death
+ 2b2t-spawn