1
mirror of https://github.com/CarmJos/UltraDepository.git synced 2026-06-04 16:48:21 +08:00

Compare commits

...

13 Commits

Author SHA1 Message Date
carm e5efd0d1b2 [v1.3.7] 修复更新提示类型错误的问题 2022-01-24 01:19:53 +08:00
carm 0fcbd1d8f1 [v1.3.6] 修改更新介绍 2022-01-24 01:19:26 +08:00
carm 8f500e3ff0 [v1.3.6] 修改更新介绍 2022-01-23 11:16:54 +08:00
carm baeee39d07 [v1.3.6] 修改更新介绍 2022-01-23 11:16:44 +08:00
carm af82d64ab1 [v1.3.5] 更新GithubReleases4J版本 2022-01-22 15:27:44 +08:00
carm 5d057d2e8e [v1.3.5] 更新GithubReleases4J版本 2022-01-22 14:47:58 +08:00
carm a427db36e9 [v1.3.4] 版本更新
- [A] 添加版本更新检查。
2022-01-22 06:07:33 +08:00
carm afd62a493d [v1.3.3] 版本更新
- [A] 支持通过 PlugMan 等插件进行热重载。
2022-01-21 23:19:09 +08:00
carm c841a7b1b3 [v1.3.2] 版本更新
- [F] 修复Javadoc错误
2022-01-21 13:13:43 +08:00
carm dc57e822b5 [v1.3.1] 版本更新
- [F] 修复Javadoc错误
2022-01-21 13:09:45 +08:00
carm 54cc9c070b [v1.3.1] 版本更新
- [U] 修改预测仓库配置文件的位置,使其在初次启动时自动生成,避免用户完全不知道还有预设仓库这回事。
2022-01-21 13:03:43 +08:00
carm fa07564548 [v1.3.0] [A] 添加Java注释,修改debug消息位置。 2022-01-17 13:54:32 +08:00
carm 7138d20357 [v1.2.6] [R] 整合构建、部署(Javadoc)与版本发布。 2022-01-16 08:08:17 +08:00
19 changed files with 195 additions and 33 deletions
+4 -4
View File
@@ -17,18 +17,18 @@
## 预设配置截图 ## 预设配置截图
### 渔夫仓库 ([fishman.yml](files/fishman.yml)) ### 渔夫仓库 ([fishman.yml](../../src/main/resources/depositories/fishman.yml))
![fishman](images/fishman.png) ![fishman](images/fishman.png)
### 矿工仓库 ([miner.yml](files/miner.yml)) ### 矿工仓库 ([miner.yml](../../src/main/resources/depositories/miner.yml))
![miner](images/miner.png) ![miner](images/miner.png)
### 农夫仓库 ([farmer.yml](files/farmer.yml)) ### 农夫仓库 ([farmer.yml](../../src/main/resources/depositories/farmer.yml))
![farmer](images/farmer.png) ![farmer](images/farmer.png)
### 猎人仓库 ([hunter.yml](files/hunter.yml)) ### 猎人仓库 ([hunter.yml](../../src/main/resources/depositories/hunter.yml))
![hunter](images/hunter.png) ![hunter](images/hunter.png)
+18 -8
View File
@@ -1,7 +1,7 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Project Deploy name: Deploy & Upload
on: on:
# 支持手动触发构建 # 支持手动触发构建
@@ -27,13 +27,23 @@ jobs:
server-username: MAVEN_USERNAME server-username: MAVEN_USERNAME
server-password: MAVEN_TOKEN server-password: MAVEN_TOKEN
- name: "Maven Deploy With Javadoc" - name: "Maven Deploy"
run: mvn -B deploy --file pom.xml -DskipTests run: mvn -B deploy --file pom.xml -DskipTests
env: env:
MAVEN_USERNAME: ${{ github.repository_owner }} MAVEN_USERNAME: ${{ github.repository_owner }}
MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}} MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}}
- name: "Copy Javadoc to Location" - name: "Release Asset Upload"
id: upload-release-asset
uses: shogo82148/actions-upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: asset/*.jar
asset_content_type: application/java-archive
- name: "Javadoc Deploy Staging"
run: | run: |
rm -rf docs rm -rf docs
mkdir -vp docs mkdir -vp docs
@@ -44,10 +54,10 @@ jobs:
id: sitemap id: sitemap
uses: cicirello/generate-sitemap@v1 uses: cicirello/generate-sitemap@v1
with: with:
base-url-path: https://carmjos.github.io/EasySQL base-url-path: https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}
path-to-root: docs path-to-root: docs
- name: "Output stats" - name: "Output Javadoc stats"
run: | run: |
echo "sitemap-path = ${{ steps.sitemap.outputs.sitemap-path }}" echo "sitemap-path = ${{ steps.sitemap.outputs.sitemap-path }}"
echo "url-count = ${{ steps.sitemap.outputs.url-count }}" echo "url-count = ${{ steps.sitemap.outputs.url-count }}"
@@ -65,11 +75,11 @@ jobs:
git config --global user.name 'CarmJos' git config --global user.name 'CarmJos'
git config --global user.email 'carm@carm.cc' git config --global user.email 'carm@carm.cc'
- name: "Commit documentations" - name: "Commit Javadocs"
run: | run: |
cd docs cd docs
git init git init
git remote add origin git@github.com:CarmJos/UltraDepository.git git remote add origin git@github.com:${{ github.repository }}.git
git checkout -b gh-pages git checkout -b gh-pages
git add -A git add -A
git commit -m "API Document generated." git commit -m "API Document generated."
@@ -77,4 +87,4 @@ jobs:
- name: "Push javadocs" - name: "Push javadocs"
run: | run: |
cd docs cd docs
git push origin HEAD:gh-pages --force git push origin HEAD:gh-pages --force
+1
View File
@@ -2,3 +2,4 @@
/target/ /target/
./*.iml ./*.iml
*.iml *.iml
asset/
+2 -2
View File
@@ -32,7 +32,7 @@
进入仓库后的物品玩家可以选择拿出或直接按量出售,且每日的出售数量上限和每件物品的价格可以自定义。 进入仓库后的物品玩家可以选择拿出或直接按量出售,且每日的出售数量上限和每件物品的价格可以自定义。
插件支持针对不同的权限配置仓库的容量,由此可以制作付费享用的”农业仓库“、”战斗仓库“、”伐木仓库“... 插件支持针对不同的权限配置仓库的容量,由此可以制作付费享用的”作物仓库“、”药剂师仓库“、”伐木仓库“...
综上,该插件不但提供了一种功能特权,对其合理配置之后也将大大为玩家带来便利。 综上,该插件不但提供了一种功能特权,对其合理配置之后也将大大为玩家带来便利。
@@ -218,7 +218,7 @@
文件名即仓库的ID,**强烈推荐使用纯英文**。以`.`开头的仓库配置不会被加载。部分符号可能会影响正常读取,请避免使用。 文件名即仓库的ID,**强烈推荐使用纯英文**。以`.`开头的仓库配置不会被加载。部分符号可能会影响正常读取,请避免使用。
随本项目预设了几个常用的仓库类型,可以 [在这里](.examples/depositories) 找到您需要的仓库配置加以修改后使用。 随本项目预设了几个常用的仓库类型,可以 [在这里](.examples/depositories) 直接下载您需要的仓库配置加以修改后使用。
您也可以 [点击这里](src/main/resources/depositories/.example-depository.yml) 查看一份*详细的仓库配置示例*,以制作您自己的仓库。 您也可以 [点击这里](src/main/resources/depositories/.example-depository.yml) 查看一份*详细的仓库配置示例*,以制作您自己的仓库。
+18 -1
View File
@@ -15,7 +15,7 @@
<groupId>cc.carm.plugin</groupId> <groupId>cc.carm.plugin</groupId>
<artifactId>ultradepository</artifactId> <artifactId>ultradepository</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<version>1.2.5</version> <version>1.3.7</version>
<name>UltraDepository</name> <name>UltraDepository</name>
<description>超级仓库插件,支持设定不同物品的存储仓库。</description> <description>超级仓库插件,支持设定不同物品的存储仓库。</description>
@@ -116,6 +116,13 @@
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency>
<groupId>cc.carm.lib</groupId>
<artifactId>githubreleases4j</artifactId>
<version>1.3.0</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
@@ -244,16 +251,26 @@
</executions> </executions>
<configuration> <configuration>
<finalName>${project.name}-${project.version}</finalName>
<outputDirectory>${project.basedir}/asset/</outputDirectory>
<createDependencyReducedPom>false</createDependencyReducedPom> <createDependencyReducedPom>false</createDependencyReducedPom>
<relocations> <relocations>
<relocation> <relocation>
<pattern>org.bstats</pattern> <pattern>org.bstats</pattern>
<shadedPattern>cc.carm.plugin.ultradepository.lib.bstats</shadedPattern> <shadedPattern>cc.carm.plugin.ultradepository.lib.bstats</shadedPattern>
</relocation> </relocation>
<relocation>
<pattern>org.json</pattern>
<shadedPattern>cc.carm.plugin.ultradepository.lib.json</shadedPattern>
</relocation>
<relocation> <relocation>
<pattern>cc.carm.lib.easyplugin</pattern> <pattern>cc.carm.lib.easyplugin</pattern>
<shadedPattern>cc.carm.plugin.ultradepository.lib.easyplugin</shadedPattern> <shadedPattern>cc.carm.plugin.ultradepository.lib.easyplugin</shadedPattern>
</relocation> </relocation>
<relocation>
<pattern>cc.carm.lib.githubreleases4j</pattern>
<shadedPattern>cc.carm.plugin.ultradepository.lib.github</shadedPattern>
</relocation>
</relocations> </relocations>
<filters> <filters>
<filter> <filter>
@@ -7,6 +7,7 @@ import cc.carm.lib.easyplugin.utils.MessageUtils;
import cc.carm.plugin.ultradepository.command.DepositoryCommand; import cc.carm.plugin.ultradepository.command.DepositoryCommand;
import cc.carm.plugin.ultradepository.configuration.PluginConfig; import cc.carm.plugin.ultradepository.configuration.PluginConfig;
import cc.carm.plugin.ultradepository.hooker.PAPIExpansion; import cc.carm.plugin.ultradepository.hooker.PAPIExpansion;
import cc.carm.plugin.ultradepository.hooker.UpdateChecker;
import cc.carm.plugin.ultradepository.listener.CollectListener; import cc.carm.plugin.ultradepository.listener.CollectListener;
import cc.carm.plugin.ultradepository.listener.UserListener; import cc.carm.plugin.ultradepository.listener.UserListener;
import cc.carm.plugin.ultradepository.manager.ConfigManager; import cc.carm.plugin.ultradepository.manager.ConfigManager;
@@ -60,9 +61,6 @@ public class UltraDepository extends EasyPlugin {
return false; return false;
} }
log("加载用户系统...");
userManager = new UserManager();
log("加载经济系统..."); log("加载经济系统...");
if (Bukkit.getPluginManager().getPlugin("Vault") != null) { if (Bukkit.getPluginManager().getPlugin("Vault") != null) {
economyManager = new EconomyManager(); economyManager = new EconomyManager();
@@ -76,11 +74,15 @@ public class UltraDepository extends EasyPlugin {
log("加载仓库管理器..."); log("加载仓库管理器...");
depositoryManager = new DepositoryManager(); depositoryManager = new DepositoryManager();
getDepositoryManager().loadDepositories(); getDepositoryManager().loadDepositories();
GUI.initialize(this);
log("加载用户系统...");
userManager = new UserManager();
log("注册监听器..."); log("注册监听器...");
regListener(new UserListener()); regListener(new UserListener());
regListener(new CollectListener()); regListener(new CollectListener());
GUI.initialize(this);
log("注册指令..."); log("注册指令...");
registerCommand("UltraDepository", new DepositoryCommand()); registerCommand("UltraDepository", new DepositoryCommand());
@@ -107,6 +109,16 @@ public class UltraDepository extends EasyPlugin {
else return plugin.getDescription().getVersion(); else return plugin.getDescription().getVersion();
})); }));
} }
if (PluginConfig.CHECK_UPDATE.get()) {
log("开始检查更新...");
UpdateChecker.checkUpdate(this);
} else {
log("已禁用检查更新,跳过。");
}
getUserManager().loadPlayersData();
return true; return true;
} }
@@ -123,6 +135,7 @@ public class UltraDepository extends EasyPlugin {
log("卸载监听器..."); log("卸载监听器...");
Bukkit.getServicesManager().unregisterAll(this); Bukkit.getServicesManager().unregisterAll(this);
} }
public static DataStorage getStorage() { public static DataStorage getStorage() {
@@ -21,6 +21,10 @@ public class PluginConfig {
"metrics", Boolean.class, true "metrics", Boolean.class, true
); );
public static final ConfigValue<Boolean> CHECK_UPDATE = new ConfigValue<>(
"check-update", Boolean.class, true
);
public static final ConfigStringCast<StorageMethod> STORAGE_METHOD = new ConfigStringCast<>( public static final ConfigStringCast<StorageMethod> STORAGE_METHOD = new ConfigStringCast<>(
"storage.method", StorageMethod::read, StorageMethod.YAML "storage.method", StorageMethod::read, StorageMethod.YAML
); );
@@ -95,4 +95,8 @@ public class PluginMessages extends MessagesRoot {
"&f数目输入错误,请输入正确的数字!" "&f数目输入错误,请输入正确的数字!"
); );
public static final EasyMessage LOAD_FAILED = new EasyMessage(
"&c您的背包数据未被正确加载,请重新进入!"
);
} }
@@ -0,0 +1,35 @@
package cc.carm.plugin.ultradepository.hooker;
import cc.carm.lib.githubreleases4j.GithubReleases4J;
import cc.carm.plugin.ultradepository.UltraDepository;
public class UpdateChecker {
public static void checkUpdate(UltraDepository plugin) {
plugin.getScheduler().runAsync(() -> {
Integer behindVersions = GithubReleases4J.getVersionBehind(
"CarmJos", "UltraDepository",
plugin.getDescription().getVersion()
);
String downloadURL = GithubReleases4J.getReleasesURL("CarmJos", "UltraDepository");
if (behindVersions == null) {
plugin.error("检查更新失败,请您定期查看插件是否更新,避免安全问题。");
plugin.error("下载地址 " + downloadURL);
} else if (behindVersions == 0) {
plugin.print("检查完成,当前已是最新版本。");
} else if (behindVersions > 0) {
plugin.print("发现新版本! 目前已落后 " + behindVersions + " 个版本。");
plugin.print("最新版下载地址 " + downloadURL);
} else {
plugin.error("检查更新失败! 当前版本未知,请您使用原生版本以避免安全问题。");
plugin.error("最新版下载地址 " + downloadURL);
}
});
}
}
@@ -1,6 +1,7 @@
package cc.carm.plugin.ultradepository.listener; package cc.carm.plugin.ultradepository.listener;
import cc.carm.plugin.ultradepository.UltraDepository; import cc.carm.plugin.ultradepository.UltraDepository;
import cc.carm.plugin.ultradepository.configuration.PluginMessages;
import cc.carm.plugin.ultradepository.data.UserData; import cc.carm.plugin.ultradepository.data.UserData;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@@ -19,15 +20,13 @@ public class UserListener implements Listener {
if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) {
return; return;
} }
UUID uuid = event.getUniqueId(); UltraDepository.getUserManager().loadDataCache(event.getUniqueId());
UltraDepository.getInstance().debug("尝试加载玩家 " + event.getName() + " 的数据...");
UltraDepository.getUserManager().getDataCache().put(uuid, UltraDepository.getUserManager().loadData(uuid));
} }
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onPreLoginMonitor(AsyncPlayerPreLoginEvent event) { public void onPreLoginMonitor(AsyncPlayerPreLoginEvent event) {
if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) { if (event.getLoginResult() != AsyncPlayerPreLoginEvent.Result.ALLOWED) {
UltraDepository.getUserManager().getDataCache().remove(event.getUniqueId()); UltraDepository.getUserManager().removeDataCache(event.getUniqueId());
} }
} }
@@ -36,7 +35,7 @@ public class UserListener implements Listener {
UserData data = UltraDepository.getUserManager().getData(e.getPlayer().getUniqueId()); UserData data = UltraDepository.getUserManager().getData(e.getPlayer().getUniqueId());
if (data == null) { if (data == null) {
e.setResult(PlayerLoginEvent.Result.KICK_OTHER); e.setResult(PlayerLoginEvent.Result.KICK_OTHER);
e.setKickMessage(UltraDepository.getInstance().getName() + " 数据未被正确加载,请重新进入。"); e.setKickMessage(PluginMessages.LOAD_FAILED.get(e.getPlayer()));
} }
} }
@@ -44,7 +43,8 @@ public class UserListener implements Listener {
public void onQuit(PlayerQuitEvent event) { public void onQuit(PlayerQuitEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
UUID playerUUID = player.getUniqueId(); UUID playerUUID = player.getUniqueId();
UltraDepository.getInstance().getScheduler().runAsync(() -> UltraDepository.getUserManager().unloadData(playerUUID, true)); UltraDepository.getInstance().getScheduler()
.runAsync(() -> UltraDepository.getUserManager().unloadData(playerUUID, true));
} }
} }
@@ -6,6 +6,7 @@ import cc.carm.plugin.ultradepository.configuration.PluginMessages;
import cc.carm.plugin.ultradepository.configuration.depository.Depository; import cc.carm.plugin.ultradepository.configuration.depository.Depository;
import cc.carm.plugin.ultradepository.configuration.depository.DepositoryItem; import cc.carm.plugin.ultradepository.configuration.depository.DepositoryItem;
import cc.carm.plugin.ultradepository.event.DepositoryCollectItemEvent; import cc.carm.plugin.ultradepository.event.DepositoryCollectItemEvent;
import cc.carm.plugin.ultradepository.util.JarUtil;
import com.google.common.collect.HashMultimap; import com.google.common.collect.HashMultimap;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
@@ -18,6 +19,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -45,10 +47,14 @@ public class DepositoryManager {
File folder = new File(UltraDepository.getInstance().getDataFolder(), "depositories"); File folder = new File(UltraDepository.getInstance().getDataFolder(), "depositories");
if (!folder.exists()) { if (!folder.exists()) {
folder.mkdir(); folder.mkdir();
UltraDepository.getInstance().saveResource( try {
"depositories/.example-depository.yml", false JarUtil.copyFolderFromJar(
); "depositories", UltraDepository.getInstance().getDataFolder(),
JarUtil.CopyOption.COPY_IF_NOT_EXIST
);
} catch (IOException ignore) {
}
} else if (folder.isDirectory()) { } else if (folder.isDirectory()) {
folder.delete(); folder.delete();
@@ -4,6 +4,7 @@ import cc.carm.plugin.ultradepository.UltraDepository;
import cc.carm.plugin.ultradepository.data.UserData; import cc.carm.plugin.ultradepository.data.UserData;
import cc.carm.plugin.ultradepository.storage.DataStorage; import cc.carm.plugin.ultradepository.storage.DataStorage;
import cc.carm.plugin.ultradepository.util.DateIntUtil; import cc.carm.plugin.ultradepository.util.DateIntUtil;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -20,6 +21,27 @@ public class UserManager {
return dataCache; return dataCache;
} }
public void loadPlayersData() {
if (Bukkit.getOnlinePlayers().size() < 1) return;
UltraDepository.getInstance().log("加载当前在线玩家数据...");
// 用于热加载时重载玩家数据。
Bukkit.getOnlinePlayers().forEach(player -> loadDataCache(player.getUniqueId()));
}
public @NotNull UserData loadDataCache(@NotNull UUID userUUID) {
UserData data = loadData(userUUID);
UltraDepository.getUserManager().getDataCache().put(userUUID, data);
return data;
}
public boolean removeDataCache(@NotNull UUID userUUID) {
boolean contains = getDataCache().containsKey(userUUID);
getDataCache().remove(userUUID);
return contains;
}
public @Nullable UserData getData(@NotNull UUID userUUID) { public @Nullable UserData getData(@NotNull UUID userUUID) {
return getDataCache().get(userUUID); return getDataCache().get(userUUID);
} }
@@ -32,7 +54,7 @@ public class UserManager {
try { try {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
DataStorage storage = UltraDepository.getStorage(); DataStorage storage = UltraDepository.getStorage();
UltraDepository.getInstance().debug("正通过 " + storage.getClass().getSimpleName() + " 加载 " + userUUID + " 的用户数据..."); UltraDepository.getInstance().debug("正通过 " + storage.getClass().getSimpleName() + " 加载 " + userUUID + " 的用户数据...(" + System.currentTimeMillis() + ")");
UserData data = UltraDepository.getStorage().loadData(userUUID); UserData data = UltraDepository.getStorage().loadData(userUUID);
if (data == null) { if (data == null) {
@@ -56,7 +78,7 @@ public class UserManager {
UserData data = getData(uuid); UserData data = getData(uuid);
if (data == null) return; if (data == null) return;
if (save) saveData(data); if (save) saveData(data);
dataCache.remove(uuid); removeDataCache(uuid);
} }
public void saveData(UserData data) { public void saveData(UserData data) {
@@ -64,7 +86,7 @@ public class UserManager {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
DataStorage storage = UltraDepository.getStorage(); DataStorage storage = UltraDepository.getStorage();
UltraDepository.getInstance().debug("正通过 " + storage.getClass().getSimpleName() + " 保存 " + data.getUserUUID() + " 的用户数据..."); UltraDepository.getInstance().debug("正通过 " + storage.getClass().getSimpleName() + " 保存 " + data.getUserUUID() + " 的用户数据...(" + System.currentTimeMillis() + ")");
storage.saveUserData(data); storage.saveUserData(data);
UltraDepository.getInstance().debug("通过 " + storage.getClass().getSimpleName() + " 保存 " + data.getUserUUID() + " 的用户数据完成," + UltraDepository.getInstance().debug("通过 " + storage.getClass().getSimpleName() + " 保存 " + data.getUserUUID() + " 的用户数据完成," +
@@ -1,6 +1,7 @@
package cc.carm.plugin.ultradepository.storage; package cc.carm.plugin.ultradepository.storage;
import cc.carm.plugin.ultradepository.data.UserData; import cc.carm.plugin.ultradepository.data.UserData;
import cc.carm.plugin.ultradepository.manager.UserManager;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -8,14 +9,38 @@ import java.util.UUID;
public interface DataStorage { public interface DataStorage {
/**
* 在插件加载存储源时执行。
*
* @return 是否初始化成功
*/
boolean initialize(); boolean initialize();
/**
* 在插件被卸载时执行。
*/
void shutdown(); void shutdown();
/**
* 用于加载用户数据的方法。<b>该方法将会被异步运行!</b>
* <br>该方法一般无需自行执行,见 {@link UserManager#loadData(UUID)}
* <br>
* <br>若不存在该用户的数据,请返回 null 。
* <br>若加载出现任何错误,请抛出异常。
*
* @param uuid 用户UUID
* @throws Exception 当出现任何错误时抛出
*/
@Nullable @Nullable
UserData loadData(@NotNull UUID uuid) throws Exception; UserData loadData(@NotNull UUID uuid) throws Exception;
/**
* 用于保存用户数据的方法。 <b>该方法将会被异步运行!</b>
* <br>该方法一般无需自行执行,见 {@link UserManager#saveData(UserData)}
*
* @param data 用户数据
* @throws Exception 当出现任何错误时抛出
*/
void saveUserData(@NotNull UserData data) throws Exception; void saveUserData(@NotNull UserData data) throws Exception;
/** /**
+5
View File
@@ -11,6 +11,11 @@ debug: false
# 当然,您也可以选择在这里关闭,或在plugins/bStats下的配置文件中关闭。 # 当然,您也可以选择在这里关闭,或在plugins/bStats下的配置文件中关闭。
metrics: true metrics: true
# 检查更新设定
# 该选项用于插件判断是否要检查更新,若您不希望插件检查更新并提示您,可以选择关闭。
# 检查更新为异步操作,绝不会影响性能与使用体验。
check-update: true
# 存储相关配置 # 存储相关配置
# 注意:存储配置不会通过重载指令生效,如有修改请重新启动服务器。 # 注意:存储配置不会通过重载指令生效,如有修改请重新启动服务器。
storage: storage:
+20
View File
@@ -0,0 +1,20 @@
import cc.carm.lib.githubreleases4j.GithubRelease;
import cc.carm.lib.githubreleases4j.GithubReleases4J;
import org.junit.Test;
import java.util.List;
public class ReleasesTest {
@Test
public void onTest() {
List<GithubRelease> releases = GithubReleases4J.listReleases("CarmJos", "UltraDepository");
for (GithubRelease release : releases) {
System.out.println("#" + release.getID() + " (:" + release.getTagName() + ")" + " " + release.getName());
System.out.println("- " + release.getHTMLUrl());
}
}
}