1
mirror of https://github.com/CarmJos/cn2b2t-project.git synced 2026-06-04 18:17:19 +08:00

first commit

This commit is contained in:
carm
2020-05-26 23:20:42 +08:00
commit 89df1e39a0
114 changed files with 7520 additions and 0 deletions
@@ -0,0 +1,47 @@
package org.cn2b2t.common.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.common.Main;
import org.cn2b2t.common.functions.ProfileData;
import org.cn2b2t.common.runnables.RestartRunnable;
public class Delay implements CommandExecutor {
private boolean hasDelayed = false;
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("delay")) {
if (sender instanceof Player) {
Player p = (Player) sender;
if (ProfileData.getProfileData(p).getMonthlyDonate() > 10) {
if (!hasDelayed) {
RestartRunnable.count = RestartRunnable.count + 600;
hasDelayed = true;
Bukkit.getOnlinePlayers().forEach(player -> player.sendMessage(Main.color(
"&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" +
"&7输入 &6/donate &7,查看赞助方法,一起维护这个服务器吧!"));
}
} else {
RestartRunnable.count = RestartRunnable.count + 3600;
Bukkit.getOnlinePlayers().forEach(player -> player.sendMessage(Main.color(
"&6-&e--&8----------------------------&e--&6-\n" +
"&7服务器重启事项已被控制台推迟一小时。\n" +
"&6-&e--&8----------------------------&e--&6-"
)));
hasDelayed = false;
}
}
return true;
}
}
@@ -0,0 +1,118 @@
package org.cn2b2t.common.commands;
import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
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.managers.DataManager;
import org.cn2b2t.common.managers.DonateManager;
import org.cn2b2t.common.functions.ProfileData;
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));
}
sender.sendMessage(Main.color(" \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;
}
}
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
switch (args.length) {
case 1: {
List<String> 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();
}
}
}
@@ -0,0 +1,29 @@
package org.cn2b2t.common.commands;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.cn2b2t.common.Main;
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(
"&6-&e--&8----------------------------&e--&6-\n" +
"&7查看服务器版本 &6/version\n" +
"&7屏蔽玩家 &6/ignore <ID>\n" +
"&7想要赞助 &6/donate\n" +
"&7推迟重启 &6/delay\n" +
"&7不想活了 &6/suicide\n" +
"&7个人设置 &6/settings &7查看详情。\n" +
"&7开关设置 &6/toggle &7查看详情。\n" +
"&7其余更多原版自带指令,不做详解,自行搜索、询问。\n" +
"&6-&e--&8----------------------------&e--&6-"
));
}
return true;
}
}
@@ -0,0 +1,73 @@
package org.cn2b2t.common.commands;
import com.google.common.collect.ImmutableList;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
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 java.util.List;
import java.util.stream.Collectors;
public class Ignore implements CommandExecutor, TabCompleter {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("ignore") && sender instanceof Player) {
Player p = (Player) sender;
if (args.length >= 1) {
String aim = args[0];
if (Bukkit.getPlayer(aim) != null && Bukkit.getPlayer(aim).isOnline()) {
ignore(p, Bukkit.getPlayer(aim));
} else {
p.sendMessage("&7您所想屏蔽的玩家并不在线!");
}
} else {
help(p);
}
}
return true;
}
private static void help(Player p) {
p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
"&7屏蔽某人消息 &6/ignore &8<&6ID&8>\n" +
"&7注意,每次屏蔽退出服务器后即失效,若需要请再次屏蔽。" +
"&6-&e--&8----------------------------&e--&6-"));
}
private static void ignore(Player p, Player target) {
if (p != target) {
p.sendMessage(Main.color("&6-&e--&8----------------------------&e--&6-\n" +
"&7已成功屏蔽 &2" + target.getName() + "&7 !\n" +
"&7注意,本次屏蔽退出服务器后即失效,若需要请再次屏蔽。" +
"&6-&e--&8----------------------------&e--&6-"));
ProfileData.getProfileData(p).ignorePlayer(target.getUniqueId());
} else {
p.sendMessage(Main.color("&7您无法屏蔽您自己!"));
}
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
switch (args.length) {
case 1: {
return Bukkit.getOnlinePlayers().stream().filter(p -> sender instanceof Player
&& p != sender
&& StringUtil.startsWithIgnoreCase(p.getName(), args[0].toLowerCase())).map(HumanEntity::getName)
.collect(Collectors.toList());
}
default:
return ImmutableList.of();
}
}
}
@@ -0,0 +1,80 @@
package org.cn2b2t.common.commands;
import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
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 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");
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;
}
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-"));
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
switch (args.length) {
case 1: {
List<String> 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<String> 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();
}
}
}
@@ -0,0 +1,21 @@
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;
}
}
@@ -0,0 +1,72 @@
package org.cn2b2t.common.commands;
import com.google.common.collect.ImmutableList;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
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 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
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-"));
}
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
switch (args.length) {
case 1: {
List<String> 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();
}
}
}