2024/01/20更新 API版本6.0.6

[UltiTools-API]
1. 优化了依赖加载,现在下载依赖后无需重启服务器
[BasicFunctions]
1. 更改了包名
2. Whitelist增加了备注字段
pull/91/head
wisdommen 2 years ago
parent c1985efe8d
commit 73be22dab2

@ -1,16 +1,14 @@
package com.ultikits.plugins;
package com.ultikits.plugins.basic;
import com.ultikits.plugins.commands.*;
import com.ultikits.plugins.config.BasicConfig;
import com.ultikits.plugins.config.JoinWelcomeConfig;
import com.ultikits.plugins.config.PlayerNameTagConfig;
import com.ultikits.plugins.config.WarpConfig;
import com.ultikits.plugins.listeners.*;
import com.ultikits.plugins.services.WarpService;
import com.ultikits.plugins.tasks.NamePrefixSuffixTask;
import com.ultikits.plugins.utils.BlueMapUtils;
import com.ultikits.plugins.basic.commands.*;
import com.ultikits.plugins.basic.config.BasicConfig;
import com.ultikits.plugins.basic.config.PlayerNameTagConfig;
import com.ultikits.plugins.basic.config.WarpConfig;
import com.ultikits.plugins.basic.listeners.*;
import com.ultikits.plugins.basic.services.WarpService;
import com.ultikits.plugins.basic.tasks.NamePrefixSuffixTask;
import com.ultikits.plugins.basic.utils.BlueMapUtils;
import com.ultikits.ultitools.UltiTools;
import com.ultikits.ultitools.abstracts.AbstractConfigEntity;
import com.ultikits.ultitools.abstracts.UltiToolsPlugin;
import com.ultikits.ultitools.annotations.UltiToolsModule;
import lombok.Getter;
@ -99,13 +97,4 @@ public class BasicFunctions extends UltiToolsPlugin {
public List<String> supported() {
return Arrays.asList("zh", "en");
}
@Override
public List<AbstractConfigEntity> getAllConfigs() {
return Arrays.asList(
new BasicConfig("config/config.yml"),
new JoinWelcomeConfig("config/join.yml"),
new PlayerNameTagConfig("config/title.yml")
);
}
}

@ -1,7 +1,7 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.listeners.BackListener;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.listeners.BackListener;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.CmdExecutor;
import com.ultikits.ultitools.annotations.command.CmdMapping;

@ -1,8 +1,8 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.services.BanPlayerService;
import com.ultikits.plugins.suggests.CommonSuggest;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.services.BanPlayerService;
import com.ultikits.plugins.basic.suggests.CommonSuggest;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.*;
import org.bukkit.Bukkit;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.CmdExecutor;
import com.ultikits.ultitools.annotations.command.CmdMapping;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.CmdExecutor;
import com.ultikits.ultitools.annotations.command.CmdMapping;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.CmdExecutor;
import com.ultikits.ultitools.annotations.command.CmdMapping;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.UltiTools;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.CmdExecutor;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.*;
import org.bukkit.ChatColor;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.UltiTools;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.CmdExecutor;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.CmdExecutor;
import com.ultikits.ultitools.annotations.command.CmdMapping;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.CmdExecutor;
import com.ultikits.ultitools.annotations.command.CmdMapping;

@ -1,6 +1,6 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.*;
import org.bukkit.ChatColor;

@ -1,8 +1,8 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.suggests.CommonSuggest;
import com.ultikits.plugins.tasks.TpTimerTask;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.suggests.CommonSuggest;
import com.ultikits.plugins.basic.tasks.TpTimerTask;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.*;
import com.ultikits.ultitools.utils.MessageUtils;

@ -1,8 +1,8 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.suggests.CommonSuggest;
import com.ultikits.plugins.tasks.TpTimerTask;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.suggests.CommonSuggest;
import com.ultikits.plugins.basic.tasks.TpTimerTask;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.*;
import com.ultikits.ultitools.utils.MessageUtils;

@ -1,9 +1,9 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.data.WarpData;
import com.ultikits.plugins.guis.WarpGui;
import com.ultikits.plugins.services.WarpService;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.data.WarpData;
import com.ultikits.plugins.basic.guis.WarpGui;
import com.ultikits.plugins.basic.services.WarpService;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.*;
import com.ultikits.ultitools.services.TeleportService;

@ -1,8 +1,8 @@
package com.ultikits.plugins.commands;
package com.ultikits.plugins.basic.commands;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.data.WhiteListData;
import com.ultikits.plugins.services.WhiteListService;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.data.WhiteListData;
import com.ultikits.plugins.basic.services.WhiteListService;
import com.ultikits.ultitools.abstracts.AbstractCommendExecutor;
import com.ultikits.ultitools.annotations.command.*;
import org.bukkit.Bukkit;
@ -43,12 +43,22 @@ public class WhitelistCommands extends AbstractCommendExecutor {
}
@CmdMapping(format = "add <name>", requireOp = true)
public void add(@CmdSender CommandSender sender, @CmdParam(value = "name", suggest = "[玩家名]") String name) {
public void addNoRemark(@CmdSender CommandSender sender,
@CmdParam(value = "name", suggest = "[玩家名]") String name) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
whiteListService.addWhiteList(String.valueOf(offlinePlayer.getUniqueId()), name);
sender.sendMessage(ChatColor.RED + String.format(BasicFunctions.getInstance().i18n("已将%s加入白名单"), name));
}
@CmdMapping(format = "add <name> <remark>", requireOp = true)
public void add(@CmdSender CommandSender sender,
@CmdParam(value = "name", suggest = "[玩家名]") String name,
@CmdParam(value = "remark", suggest = "[备注]") String remark) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);
whiteListService.addWhiteList(String.valueOf(offlinePlayer.getUniqueId()), name, remark);
sender.sendMessage(ChatColor.RED + String.format(BasicFunctions.getInstance().i18n("已将%s加入白名单"), name));
}
@CmdMapping(format = "remove <name>", requireOp = true)
public void remove(@CmdSender CommandSender sender, @CmdParam(value = "name", suggest = "[玩家名]") String name) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name);

@ -1,4 +1,4 @@
package com.ultikits.plugins.config;
package com.ultikits.plugins.basic.config;
import com.ultikits.ultitools.abstracts.AbstractConfigEntity;
import com.ultikits.ultitools.annotations.ConfigEntity;

@ -1,4 +1,4 @@
package com.ultikits.plugins.config;
package com.ultikits.plugins.basic.config;
import com.ultikits.ultitools.abstracts.AbstractConfigEntity;
import com.ultikits.ultitools.annotations.ConfigEntity;

@ -1,4 +1,4 @@
package com.ultikits.plugins.config;
package com.ultikits.plugins.basic.config;
import com.ultikits.ultitools.abstracts.AbstractConfigEntity;
import com.ultikits.ultitools.annotations.ConfigEntity;

@ -1,4 +1,4 @@
package com.ultikits.plugins.config;
package com.ultikits.plugins.basic.config;
import com.ultikits.ultitools.abstracts.AbstractConfigEntity;
import com.ultikits.ultitools.annotations.ConfigEntity;

@ -1,4 +1,4 @@
package com.ultikits.plugins.config;
package com.ultikits.plugins.basic.config;
import com.ultikits.ultitools.abstracts.AbstractConfigEntity;
import com.ultikits.ultitools.annotations.ConfigEntity;

@ -1,4 +1,4 @@
package com.ultikits.plugins.data;
package com.ultikits.plugins.basic.data;
import com.ultikits.ultitools.abstracts.AbstractDataEntity;
import com.ultikits.ultitools.annotations.Table;

@ -1,4 +1,4 @@
package com.ultikits.plugins.data;
package com.ultikits.plugins.basic.data;
import com.ultikits.ultitools.abstracts.AbstractDataEntity;
import com.ultikits.ultitools.annotations.Column;
@ -6,7 +6,6 @@ import com.ultikits.ultitools.annotations.Table;
import com.ultikits.ultitools.entities.common.WorldLocation;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.bukkit.Location;
import java.util.Date;

@ -1,4 +1,4 @@
package com.ultikits.plugins.data;
package com.ultikits.plugins.basic.data;
import com.ultikits.ultitools.abstracts.AbstractDataEntity;
import com.ultikits.ultitools.annotations.Column;

@ -1,8 +1,8 @@
package com.ultikits.plugins.guis;
package com.ultikits.plugins.basic.guis;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.data.WarpData;
import com.ultikits.plugins.services.WarpService;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.data.WarpData;
import com.ultikits.plugins.basic.services.WarpService;
import com.ultikits.ultitools.UltiTools;
import com.ultikits.ultitools.abstracts.guis.PagingPage;
import mc.obliviate.inventory.Icon;

@ -1,4 +1,4 @@
package com.ultikits.plugins.listeners;
package com.ultikits.plugins.basic.listeners;
import com.ultikits.ultitools.annotations.EventListener;
import org.bukkit.Location;

@ -1,6 +1,6 @@
package com.ultikits.plugins.listeners;
package com.ultikits.plugins.basic.listeners;
import com.ultikits.plugins.services.BanPlayerService;
import com.ultikits.plugins.basic.services.BanPlayerService;
import com.ultikits.ultitools.annotations.EventListener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

@ -1,6 +1,6 @@
package com.ultikits.plugins.listeners;
package com.ultikits.plugins.basic.listeners;
import com.ultikits.plugins.tasks.DeathPunishmentTask;
import com.ultikits.plugins.basic.tasks.DeathPunishmentTask;
import com.ultikits.ultitools.annotations.EventListener;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;

@ -1,6 +1,6 @@
package com.ultikits.plugins.listeners;
package com.ultikits.plugins.basic.listeners;
import com.ultikits.plugins.commands.HideCommands;
import com.ultikits.plugins.basic.commands.HideCommands;
import com.ultikits.ultitools.annotations.EventListener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

@ -1,7 +1,7 @@
package com.ultikits.plugins.listeners;
package com.ultikits.plugins.basic.listeners;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.config.JoinWelcomeConfig;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.config.JoinWelcomeConfig;
import com.ultikits.ultitools.UltiTools;
import com.ultikits.ultitools.annotations.EventListener;
import me.clip.placeholderapi.PlaceholderAPI;

@ -1,12 +1,11 @@
package com.ultikits.plugins.listeners;
package com.ultikits.plugins.basic.listeners;
import com.nametagedit.plugin.NametagEdit;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.config.PlayerNameTagConfig;
import com.ultikits.plugins.utils.TitlesUtils;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.config.PlayerNameTagConfig;
import com.ultikits.plugins.basic.utils.TitlesUtils;
import com.ultikits.ultitools.annotations.EventListener;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

@ -1,7 +1,7 @@
package com.ultikits.plugins.listeners;
package com.ultikits.plugins.basic.listeners;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.services.WhiteListService;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.services.WhiteListService;
import com.ultikits.ultitools.annotations.EventListener;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;

@ -1,8 +1,8 @@
package com.ultikits.plugins.services;
package com.ultikits.plugins.basic.services;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.data.BanedUserData;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.data.BanedUserData;
import com.ultikits.ultitools.interfaces.DataOperator;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;

@ -1,4 +1,4 @@
package com.ultikits.plugins.services;
package com.ultikits.plugins.basic.services;
import com.ultikits.ultitools.UltiTools;
import net.milkbowl.vault.economy.Economy;

@ -1,8 +1,9 @@
package com.ultikits.plugins.services;
package com.ultikits.plugins.basic.services;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.config.WarpConfig;
import com.ultikits.plugins.data.WarpData;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.config.WarpConfig;
import com.ultikits.plugins.basic.data.WarpData;
import com.ultikits.plugins.basic.utils.BlueMapUtils;
import com.ultikits.ultitools.entities.WhereCondition;
import com.ultikits.ultitools.entities.common.WorldLocation;
import org.bukkit.Bukkit;
@ -11,8 +12,6 @@ import org.springframework.stereotype.Service;
import java.util.List;
import static com.ultikits.plugins.utils.BlueMapUtils.addWarpToBlueMap;
import static com.ultikits.plugins.utils.BlueMapUtils.removeWarpFromBlueMap;
import static com.ultikits.ultitools.abstracts.UltiToolsPlugin.getConfigManager;
@Service
@ -31,7 +30,7 @@ public class WarpService {
if (!getConfigManager().getConfigEntity(BasicFunctions.getInstance(), WarpConfig.class).isEnableBlueMap()) {
return;
}
addWarpToBlueMap(warpData);
BlueMapUtils.addWarpToBlueMap(warpData);
}
public void removeWarp(String name) {
@ -47,7 +46,7 @@ public class WarpService {
if (!getConfigManager().getConfigEntity(BasicFunctions.getInstance(), WarpConfig.class).isEnableBlueMap()) {
return;
}
removeWarpFromBlueMap(warpData.get(0));
BlueMapUtils.removeWarpFromBlueMap(warpData.get(0));
}
public Location getWarpLocation(String name) {

@ -1,7 +1,7 @@
package com.ultikits.plugins.services;
package com.ultikits.plugins.basic.services;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.data.WhiteListData;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.data.WhiteListData;
import com.ultikits.ultitools.entities.WhereCondition;
import com.ultikits.ultitools.interfaces.DataOperator;
import org.springframework.stereotype.Service;
@ -22,6 +22,10 @@ public class WhiteListService {
}
public void addWhiteList(String uuid, String name) {
addWhiteList(uuid, name, "");
}
public void addWhiteList(String uuid, String name, String remark) {
DataOperator<WhiteListData> dataOperator = BasicFunctions.getInstance().getDataOperator(WhiteListData.class);
if (dataOperator.getById(uuid) != null) {
return;
@ -29,6 +33,7 @@ public class WhiteListService {
WhiteListData whiteListData = new WhiteListData();
whiteListData.setId(uuid);
whiteListData.setName(name);
whiteListData.setRemark(remark);
dataOperator.insert(whiteListData);
}

@ -1,4 +1,4 @@
package com.ultikits.plugins.suggests;
package com.ultikits.plugins.basic.suggests;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

@ -1,15 +1,14 @@
package com.ultikits.plugins.tasks;
package com.ultikits.plugins.basic.tasks;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.config.DeathPunishmentConfig;
import com.ultikits.plugins.services.DeathPunishService;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.config.DeathPunishmentConfig;
import com.ultikits.plugins.basic.services.DeathPunishService;
import com.ultikits.ultitools.UltiTools;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.*;

@ -1,12 +1,11 @@
package com.ultikits.plugins.tasks;
package com.ultikits.plugins.basic.tasks;
import com.nametagedit.plugin.NametagEdit;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.config.PlayerNameTagConfig;
import com.ultikits.plugins.utils.TitlesUtils;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.config.PlayerNameTagConfig;
import com.ultikits.plugins.basic.utils.TitlesUtils;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
@ -20,9 +19,9 @@ public class NamePrefixSuffixTask extends BukkitRunnable {
for (Player player : Bukkit.getOnlinePlayers()) {
String prefix = coloredMsg(PlaceholderAPI.setPlaceholders(player, nameTagConfig.getPrefix()));
String suffix = coloredMsg(PlaceholderAPI.setPlaceholders(player, nameTagConfig.getSuffix()));
if (nameTagConfig.isEnableNameTagEdit()){
if (nameTagConfig.isEnableNameTagEdit()) {
NametagEdit.getApi().updatePlayerNametag(player.getName(), prefix, suffix);
}else {
} else {
TitlesUtils.setPrefixSuffix(player, prefix, suffix);
}
}

@ -1,7 +1,7 @@
package com.ultikits.plugins.tasks;
package com.ultikits.plugins.basic.tasks;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.ultitools.UltiTools;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;

@ -1,8 +1,8 @@
package com.ultikits.plugins.utils;
package com.ultikits.plugins.basic.utils;
import com.ultikits.plugins.BasicFunctions;
import com.ultikits.plugins.config.WarpConfig;
import com.ultikits.plugins.data.WarpData;
import com.ultikits.plugins.basic.BasicFunctions;
import com.ultikits.plugins.basic.config.WarpConfig;
import com.ultikits.plugins.basic.data.WarpData;
import com.ultikits.ultitools.entities.common.WorldLocation;
import de.bluecolored.bluemap.api.BlueMapAPI;
import de.bluecolored.bluemap.api.BlueMapMap;

@ -1,4 +1,4 @@
package com.ultikits.plugins.utils;
package com.ultikits.plugins.basic.utils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

@ -94,5 +94,6 @@
"编辑物品名称": "Edit item name",
"[名称]": "[name]",
"[原因]": "[reason]",
"%s请求传送到您的位置": "%s requests to teleport to your position"
"%s请求传送到您的位置": "%s requests to teleport to your position",
"[备注]": "[remark]"
}

@ -1,5 +1,5 @@
name: BasicFunctions
version: '${project.version}'
main: com.ultikits.plugins.BasicFunctions
main: com.ultikits.plugins.basic.BasicFunctions
api-version: 606
authors: [ 'wisdomme' ]

@ -1,5 +1,5 @@
name: MysqlConnector
version: '${project.version}'
main: com.ultikits.plugins.mysqlconnector.MysqlConnector
api-version: 600
api-version: 606
authors: [ wisdomme ]

@ -1,5 +1,5 @@
name: Sidebar
version: '${project.version}'
main: com.ultikits.plugins.sidebar.SidebarPlugin
api-version: 605
api-version: 606
authors: [ 'wisdomme' ]

@ -1,13 +1,11 @@
package com.ultikits.ultitools;
import com.ultikits.ultitools.commands.PluginInstallCommands;
import com.ultikits.ultitools.commands.UltiToolsCommands;
import cn.hutool.core.comparator.VersionComparator;
import com.ultikits.ultitools.context.ContextConfig;
import com.ultikits.ultitools.entities.Language;
import com.ultikits.ultitools.interfaces.DataStore;
import com.ultikits.ultitools.interfaces.Localized;
import com.ultikits.ultitools.interfaces.VersionWrapper;
import com.ultikits.ultitools.listeners.PlayerJoinListener;
import com.ultikits.ultitools.manager.*;
import com.ultikits.ultitools.tasks.DataStoreWaitingTask;
import com.ultikits.ultitools.utils.CommonUtils;
@ -35,7 +33,9 @@ import java.util.Objects;
import java.util.logging.Level;
import java.util.stream.Collectors;
import static com.ultikits.ultitools.utils.DependencyUtils.downloadRequiredDependencies;
import static com.ultikits.ultitools.utils.PluginInitiationUtils.*;
import static com.ultikits.ultitools.utils.VersionUtils.getUltiToolsNewestVersion;
/**
* UltiTools plugin main class.
@ -64,7 +64,6 @@ public final class UltiTools extends JavaPlugin implements Localized {
@Getter
@Setter
private DataStore dataStore;
private boolean restartRequired;
private BukkitAudiences adventure;
/**
@ -113,14 +112,7 @@ public final class UltiTools extends JavaPlugin implements Localized {
public void onLoad() {
saveDefaultConfig();
ultiTools = this;
restartRequired = downloadRequiredDependencies();
if (restartRequired) {
Bukkit.getLogger().log(
Level.WARNING,
"[UltiTools-API] Libraries downloaded, please restart the server or reload UltiTools!"
);
// Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "reload");
}
downloadRequiredDependencies();
}
/**
@ -130,11 +122,6 @@ public final class UltiTools extends JavaPlugin implements Localized {
*/
@Override
public void onEnable() {
// check if the plugin requires restart
if (restartRequired) {
return;
}
// External bukkit libraries initialization
this.adventure = BukkitAudiences.create(this);
new InventoryAPI(this).init();
@ -210,18 +197,26 @@ public final class UltiTools extends JavaPlugin implements Localized {
Metrics metrics = new Metrics(this, 8652);
// bukkit plugin registration
getCommandManager().register(context.getBean(UltiToolsCommands.class));
getCommandManager().register(context.getBean(PluginInstallCommands.class));
Bukkit.getServicesManager().register(
PluginManager.class,
this.pluginManager,
this,
ServicePriority.Normal
);
Bukkit.getServer().getPluginManager().registerEvents(new PlayerJoinListener(), this);
getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
String ultiToolsNewestVersion = getUltiToolsNewestVersion();
String currentVersion = getEnv().getString("version");
Bukkit.getLogger().log(Level.INFO, String.format(i18n("[UltiTools-API] UltiTools-API已启动当前版本%s"), getEnv().getString("version")));
Bukkit.getLogger().log(Level.INFO, i18n("[UltiTools-API] 正在检查版本更新..."));
if (new VersionComparator().compare(currentVersion, ultiToolsNewestVersion) < 0) {
Bukkit.getLogger().log(Level.INFO, String.format(i18n("[UltiTools-API] UltiTools-API有新版本 %s 可用,请及时更新!"), ultiToolsNewestVersion));
Bukkit.getLogger().log(Level.INFO, String.format(i18n("[UltiTools-API] 下载地址§a%s"), "https://github.com/UltiKits/UltiTools-Reborn/releases/latest"));
return;
}
Bukkit.getLogger().log(Level.INFO, i18n("[UltiTools-API] UltiTools-API已是最新版本"));
}
});
}
/**
@ -231,9 +226,6 @@ public final class UltiTools extends JavaPlugin implements Localized {
*/
@Override
public void onDisable() {
if (restartRequired) {
return;
}
// Plugin shutdown logic
if (this.adventure != null) {
this.adventure.close();

@ -1,6 +1,7 @@
package com.ultikits.ultitools.listeners;
import com.ultikits.ultitools.UltiTools;
import com.ultikits.ultitools.annotations.EventListener;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
@ -11,6 +12,7 @@ import org.bukkit.scheduler.BukkitRunnable;
import java.util.Arrays;
import java.util.List;
@EventListener
public class PlayerJoinListener implements Listener {
private final List<String> placeholderList = Arrays.asList("player", "server", "math", "vault", "localtime");

@ -13,15 +13,13 @@ import org.springframework.core.annotation.AnnotationUtils;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
import java.util.Objects;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.logging.Level;
@ -33,6 +31,16 @@ public class PluginManager {
private final List<Class<? extends UltiToolsPlugin>> pluginClassList = new ArrayList<>();
public void init() throws IOException {
File dir = new File(UltiTools.class.getProtectionDomain().getCodeSource().getLocation().getPath().replaceAll("%20", " "));
File pluginsFolder = new File(dir.getParentFile().getPath());
List<URL> urls = new ArrayList<>();
urls.add(CommonUtils.getServerJar());
for (File file : Objects.requireNonNull(pluginsFolder.listFiles())) {
if (file.getName().endsWith(".jar")) {
urls.add(new URL(URLDecoder.decode(file.toURI().toASCIIString(), "UTF-8")));
}
}
String currentPath = System.getProperty("user.dir");
String path = currentPath + File.separator + "plugins" + File.separator + "UltiTools" + File.separator + "plugins";
File pluginFolder = new File(path);
@ -46,10 +54,16 @@ public class PluginManager {
for (File file : plugins) {
Bukkit.getLogger().log(Level.INFO, " - " + file.getName());
urls.add(new URL(URLDecoder.decode(file.toURI().toASCIIString(), "UTF-8")));
}
URLClassLoader classLoader = new URLClassLoader(
urls.toArray(new URL[0]),
UltiTools.getInstance().getPluginClassLoader()
);
for (File file : plugins) {
Class<? extends UltiToolsPlugin> pluginClass = loadPluginMainClass(file);
Class<? extends UltiToolsPlugin> pluginClass = loadPluginMainClass(classLoader, file);
if (pluginClass != null) {
pluginClassList.add(pluginClass);
}
@ -61,7 +75,7 @@ public class PluginManager {
}
Bukkit.getLogger().log(Level.INFO, String.format("[UltiTools-API] %d UltiTools plugin(s) found.", pluginClassList.size()));
for (Class<? extends UltiToolsPlugin> pluginClass : pluginClassList) {
if (register(pluginClass)) {
if (register(classLoader, pluginClass)) {
success++;
}
}
@ -72,10 +86,10 @@ public class PluginManager {
);
}
public boolean register(Class<? extends UltiToolsPlugin> pluginClass) {
public boolean register(ClassLoader classLoader, Class<? extends UltiToolsPlugin> pluginClass) {
UltiToolsPlugin plugin;
try {
plugin = initializePlugin(pluginClass);
plugin = initializePlugin(classLoader, pluginClass);
} catch (Exception e) {
Bukkit.getLogger().log(
Level.WARNING,
@ -102,7 +116,7 @@ public class PluginManager {
UltiToolsPlugin plugin;
try {
plugin = initializePlugin(
pluginClass, pluginName, version, authors, loadAfter, minUltiToolsVersion, mainClass
pluginClass.getClassLoader(), pluginClass, pluginName, version, authors, loadAfter, minUltiToolsVersion, mainClass
);
} catch (Exception e) {
Bukkit.getLogger().log(
@ -175,53 +189,27 @@ public class PluginManager {
);
}
private Class<? extends UltiToolsPlugin> loadPluginMainClass(File pluginJar) {
try {
File dir = new File(UltiTools.class.getProtectionDomain().getCodeSource().getLocation().getPath().replaceAll("%20", " "));
File plugins = new File(dir.getParentFile().getPath());
List<URL> urls = new ArrayList<>();
for (File file : plugins.listFiles()) {
if (file.getName().endsWith(".jar")) {
urls.add(new URL(URLDecoder.decode(file.toURI().toASCIIString(), "UTF-8")));
private Class<? extends UltiToolsPlugin> loadPluginMainClass(ClassLoader classLoader, File pluginJar) {
try (JarFile jarFile = new JarFile(pluginJar)) {
Enumeration<JarEntry> entryEnumeration = jarFile.entries();
while (entryEnumeration.hasMoreElements()) {
JarEntry entry = entryEnumeration.nextElement();
if (!entry.getName().contains(".class") || entry.getName().contains("META-INF")) {
continue;
}
}
urls.addAll(Arrays.asList(
new URL(URLDecoder.decode(pluginJar.toURI().toASCIIString(), "UTF-8")),
CommonUtils.getServerJar()
));
@SuppressWarnings("resource")
URLClassLoader classLoader = new URLClassLoader(
urls.toArray(new URL[0]),
UltiTools.getInstance().getPluginClassLoader()
);
try (JarFile jarFile = new JarFile(pluginJar)) {
Enumeration<JarEntry> entryEnumeration = jarFile.entries();
while (entryEnumeration.hasMoreElements()) {
JarEntry entry = entryEnumeration.nextElement();
if (!entry.getName().contains(".class") || entry.getName().contains("META-INF")) {
continue;
}
String className = entry
.getName()
.replace('/', '.')
.replace(".class", "");
try {
Class<?> aClass = classLoader.loadClass(className);
if (IPlugin.class.isAssignableFrom(aClass)) {
return aClass.asSubclass(UltiToolsPlugin.class);
}
} catch (ClassNotFoundException | NoClassDefFoundError ignored) {
String className = entry
.getName()
.replace('/', '.')
.replace(".class", "");
try {
Class<?> aClass = classLoader.loadClass(className);
if (IPlugin.class.isAssignableFrom(aClass)) {
return aClass.asSubclass(UltiToolsPlugin.class);
}
} catch (ClassNotFoundException | NoClassDefFoundError ignored) {
}
} catch (IOException ignored) {
}
} catch (MalformedURLException ignored) {
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
} catch (IOException ignored) {
}
return null;
}
@ -274,15 +262,11 @@ public class PluginManager {
}
}
private UltiToolsPlugin initializePlugin(Class<? extends UltiToolsPlugin> pluginClass, Object... constructorArgs) {
URLClassLoader urlClassLoader = new URLClassLoader(
new URL[]{CommonUtils.getServerJar()},
pluginClass.getClassLoader()
);
private UltiToolsPlugin initializePlugin(ClassLoader classLoader, Class<? extends UltiToolsPlugin> pluginClass, Object... constructorArgs) {
AnnotationConfigApplicationContext pluginContext = new AnnotationConfigApplicationContext();
pluginContext.setParent(UltiTools.getInstance().getContext());
pluginContext.registerShutdownHook();
pluginContext.setClassLoader(urlClassLoader);
pluginContext.setClassLoader(classLoader);
pluginContext.registerBean(pluginClass, constructorArgs);
pluginContext.refresh();
UltiToolsPlugin plugin = pluginContext.getBean(pluginClass);

@ -65,7 +65,7 @@ public class CommonUtils {
if (codeSource == null) {
return null;
}
if (codeSource.getLocation().toString().startsWith("union:")){
if (codeSource.getLocation().toString().startsWith("union:")) {
String replace = codeSource.getLocation().toString().replace("union:", "file:").split("%")[0];
try {
return new URL(replace);

@ -0,0 +1,81 @@
package com.ultikits.ultitools.utils;
import com.ultikits.ultitools.UltiTools;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.logging.Level;
public class DependencyUtils {
public static void downloadRequiredDependencies() {
YamlConfiguration env = UltiTools.getEnv();
List<String> dependencies = env.getStringList("libraries");
List<String> missingLib = new ArrayList<>();
for (String lib : dependencies) {
File file = new File(UltiTools.getInstance().getDataFolder() + "/lib", lib);
if (!file.exists()) {
missingLib.add(lib);
}
}
Bukkit.getLogger().log(Level.INFO, "[UltiTools-API] Missing required librariestrying to download...");
Bukkit.getLogger().log(Level.INFO, "[UltiTools-API] If have problems in downloadingyou can download full version.");
for (int i = 0; i < missingLib.size(); i++) {
String name = missingLib.get(i);
File file = new File(UltiTools.getInstance().getDataFolder() + "/lib", name);
String url = env.getString("oss-url") + env.getString("lib-path") + name;
double i1 = (double) i / missingLib.size();
int percentage = (int) (i1 * 100);
printLoadingBar(percentage);
HttpDownloadUtils.download(url, name, UltiTools.getInstance().getDataFolder() + "/lib");
ClassLoader classLoader = UltiTools.getInstance().getClass().getClassLoader().getParent();
loadJar(file, classLoader);
}
}
public static void loadJar(File jar, ClassLoader classLoader) {
try (JarFile jarFile = new JarFile(jar)) {
Enumeration<JarEntry> entryEnumeration = jarFile.entries();
while (entryEnumeration.hasMoreElements()) {
JarEntry entry = entryEnumeration.nextElement();
if (!entry.getName().contains(".class") || entry.getName().contains("META-INF")) {
continue;
}
String className = entry
.getName()
.replace('/', '.')
.replace(".class", "");
try {
classLoader.loadClass(className);
} catch (ClassNotFoundException | NoClassDefFoundError ignored) {
}
}
} catch (IOException ignored) {
}
}
public static void printLoadingBar(int percentage) {
StringBuilder loadingBar = new StringBuilder("[");
int progress = percentage / 10;
for (int i = 0; i < progress; i++) {
loadingBar.append("*");
}
for (int i = progress; i < 10; i++) {
loadingBar.append("-");
}
loadingBar.append("] ");
loadingBar.append(percentage);
loadingBar.append("%");
Bukkit.getLogger().log(Level.INFO, "[UltiTools]Downloading: " + loadingBar);
}
}

@ -7,43 +7,19 @@ import com.ultikits.ultitools.entities.TokenEntity;
import com.ultikits.ultitools.webserver.controller.ConfigEditorController;
import com.ultikits.ultitools.webserver.ws.HeartBeatWebSocket;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import static spark.Spark.*;
public class PluginInitiationUtils {
public static boolean downloadRequiredDependencies() {
YamlConfiguration env = UltiTools.getEnv();
List<String> dependencies = env.getStringList("libraries");
boolean restartRequired = false;
for (String name : dependencies) {
File file = new File(UltiTools.getInstance().getDataFolder() + "/lib", name);
if (file.exists()) {
continue;
}
if (!restartRequired) {
Bukkit.getLogger().log(Level.WARNING, "[UltiTools-API] Missing required librariestrying to download...");
Bukkit.getLogger().log(Level.WARNING, "[UltiTools-API] If have problems in downloadingyou can download full version.");
}
restartRequired = true;
String url = env.getString("oss-url") + env.getString("lib-path") + name;
Bukkit.getLogger().log(Level.INFO, "[UltiTools]Downloading: " + url);
HttpDownloadUtils.download(url, name, UltiTools.getInstance().getDataFolder() + "/lib");
}
return restartRequired;
}
public static void loginAccount() throws IOException {
String username = UltiTools.getInstance().getConfig().getString("account.username");
String password = UltiTools.getInstance().getConfig().getString("account.password");
boolean ssl = UltiTools.getInstance().getConfig().getBoolean("web-editor.https.enable");
if (username == null || password == null || username.equals("") || password.equals("")) {
if (username == null || password == null || username.isEmpty() || password.isEmpty()) {
return;
}

@ -0,0 +1,30 @@
package com.ultikits.ultitools.utils;
import cn.hutool.core.comparator.VersionComparator;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.ultikits.ultitools.entities.PluginEntity;
import static com.ultikits.ultitools.utils.PluginInstallUtils.getPlugin;
import static com.ultikits.ultitools.utils.PluginInstallUtils.getPluginLatestVersion;
public class VersionUtils {
public static String getUltiToolsNewestVersion() {
HttpRequest get = HttpUtil.createGet("https://img.shields.io/github/v/release/UltiKits/UltiTools-Reborn");
HttpResponse httpResponse = get.execute();
String version = httpResponse.body().split(">v")[1].split("<")[0];
httpResponse.close();
return version;
}
public static boolean pluginHasUpdate(String pluginIdString, String currentVersion) {
PluginEntity plugin = getPlugin(pluginIdString);
if (plugin == null) {
return false;
}
String pluginLatestVersion = getPluginLatestVersion(pluginIdString);
return new VersionComparator().compare(currentVersion, pluginLatestVersion) < 0;
}
}

@ -45,5 +45,6 @@
" | 安装 | ": " | Install | ",
" | 卸载 | ": " | Uninstall | ",
"点击卸载模块": "Click to uninstall module",
"点击安装模块": "Click to install module"
"点击安装模块": "Click to install module",
"§6[UltiTools-API] §e下载地址§a%s": "§6[UltiTools-API] §eDownload URL: §a%s",
}

Loading…
Cancel
Save