commit dc96a8d1cfcd970e31264dedef5ef6f92590bbb5 Author: CarmJos Date: Sun Feb 27 22:07:22 2022 +0800 项目初始化 diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 0000000..beaef15 --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,38 @@ +# 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 + +name: Build & Tests + +on: + # 支持手动触发构建 + workflow_dispatch: + push: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: "Set up JDK" + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + cache: maven + server-id: github + server-username: MAVEN_USERNAME + server-password: MAVEN_TOKEN + - name: "Package" + run: mvn -B package --file pom.xml -Dmaven.javadoc.skip=true + env: + MAVEN_USERNAME: ${{ github.repository_owner }} + MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}} + - name: "Target Stage" + run: mkdir staging && cp asset/*.jar staging + - name: "Upload artifact" + uses: actions/upload-artifact@v2 + with: + name: Artifact + path: staging diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..80a0fb8 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,41 @@ +name: Release & Upload + +on: + release: + types: + - published # 创建release的时候触发 + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - name: "Checkout" + uses: actions/checkout@v2 + + - name: "Set up JDK" + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + cache: maven + server-id: github + server-username: MAVEN_USERNAME + server-password: MAVEN_TOKEN + + - name: "Maven Package" + run: mvn -B package --file pom.xml -Dmaven.javadoc.skip=true -DskipTests + env: + MAVEN_USERNAME: ${{ github.repository_owner }} + MAVEN_TOKEN: ${{secrets.GITHUB_TOKEN}} + + - name: "Upload Release Asset" + 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 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5a4ce4a --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/.idea/ +/target/ +./*.iml +*.iml +asset/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..53c5b2f --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +```text + + _____ _ _____ _ _ _ +| __ \ (_) | __ \ | | | | (_) +| |__) |___ __ _ _ ___ _ __ | |__) | __ ___ | |_ ___ ___| |_ _ ___ _ __ +| _ // _ \/ _` | |/ _ \| '_ \ | ___/ '__/ _ \| __/ _ \/ __| __| |/ _ \| '_ \ +| | \ \ __/ (_| | | (_) | | | | | | | | | (_) | || __/ (__| |_| | (_) | | | | +|_| \_\___|\__, |_|\___/|_| |_| |_| |_| \___/ \__\___|\___|\__|_|\___/|_| |_| + __/ | + |___/ +``` + +# timereward + +[![workflow](https://github.com/CarmJos/timereward/actions/workflows/maven.yml/badge.svg?branch=master)](https://github.com/CarmJos/timereward/actions/workflows/maven.yml) +![Support](https://img.shields.io/badge/Minecraft-Java%201.16--Latest-yellow) +![](https://visitor-badge.glitch.me/badge?page_id=timereward.readme) + +区域保护插件,将不符合条件的玩家弹出区域,基于EasyPlugin实现。 + +本插件由 [重庆溢鹏多赛科技有限公司](https://ypchongqing.com) 请求本人开发,经过授权后开源。 + +## 插件依赖 + +- **[必须]** 插件本体基于 [Spigot-API](https://hub.spigotmc.org/stash/projects/SPIGOT) 、 [BukkitAPI](http://bukkit.org/) 实现。 +- **[自带]** 插件功能基于 [EasyPlugin](https://github.com/CarmJos/EasyPlugin) 实现。 +- **[自带]** 数据功能基于 [EasySQL](https://github.com/CarmJos/EasySQL) 实现。 + +详细依赖列表可见 [Dependencies](https://github.com/CarmJos/timereward/network/dependencies) 。 + +## 插件指令 + +指令主指令为 `/TimeReward` + +```text +``` + +## 插件权限 + +```text + +# TimeReward.admin +- 建筑魔杖的管理权限。 + +``` + +## 配置文件 + +### 插件配置文件 ([config.yml](src/main/resources/config.yml)) + +详见源文件。 + +### 消息配置文件 ([messages.yml](src/main/java/cc/carm/plugin/timereward/configuration/PluginMessages.java)) + +详见代码源文件,将在首次启动时生成配置。 \ No newline at end of file diff --git a/lib/CatServerSRG-b10faff.jar b/lib/CatServerSRG-b10faff.jar new file mode 100644 index 0000000..15f0baf Binary files /dev/null and b/lib/CatServerSRG-b10faff.jar differ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..92862c9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,198 @@ + + + 4.0.0 + + + 11 + ${java.version} + ${java.version} + 1.3.9 + 0.3.8 + + + cc.carm.plugin + timereward + 0.0.1-SNAPSHOT + jar + + TimeReward + 区域保护插件,将不符合条件的玩家弹出区域,基于EasyPlugin实现。 + https://github.com/CarmJos/TimeReward + + + + GitHub Actions + https://github.com/CarmJos/TimeReward/actions/workflows/maven.yml + + + + https://github.com/CarmJos/TimeReward/releases + + + + + + + central + https://repo1.maven.org/maven2/ + + + + carm-repo + Carm's Repo + https://repo.carm.cc/repository/maven-public/ + + + + nexus + https://mvn.lumine.io/repository/maven-public/ + + + + + + + + cc.carm.lib + easysql-beecp + ${easysql.version} + compile + true + + + + cc.carm.lib + easyplugin-main + ${easyplugin.version} + compile + + true + + + + cc.carm.lib + easyplugin-configuration + ${easyplugin.version} + compile + + true + + + + catserver + CatServer + 1.12.2-b10faff + system + ${project.basedir}/lib/CatServerSRG-b10faff.jar + + + + me.clip + placeholderapi + 2.10.9 + provided + + + + junit + junit + 4.13.2 + test + + + + org.jetbrains + annotations + 23.0.0 + provided + + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.1 + + false + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + ${java.version} + ${java.version} + UTF-8 + -parameters + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + org.apache.maven.plugins + maven-source-plugin + 3.2.0 + + + package + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.3 + + + package + + shade + + + false + + + + + ${project.name}-${project.version} + ${project.basedir}/asset + + + cc.carm.lib + cc.carm.plugin.timereward.lib + + + + + *:* + + META-INF/MANIFEST.MF + META-INF/*.txt + + + + + + + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/src/main/java/cc/carm/plugin/timereward/Main.java b/src/main/java/cc/carm/plugin/timereward/Main.java new file mode 100644 index 0000000..6eb0224 --- /dev/null +++ b/src/main/java/cc/carm/plugin/timereward/Main.java @@ -0,0 +1,62 @@ +package cc.carm.plugin.timereward; + +import cc.carm.lib.easyplugin.EasyPlugin; +import cc.carm.lib.easyplugin.i18n.EasyPluginMessageProvider; +import cc.carm.plugin.timereward.configuration.PluginConfig; +import cc.carm.plugin.timereward.manager.ConfigManager; + +public class Main extends EasyPlugin { + private static Main instance; + + public Main() { + super(new EasyPluginMessageProvider.zh_CN()); + instance = this; + } + + protected static ConfigManager configManager; + + @Override + public boolean initialize() { + log("加载插件配置文件..."); + Main.configManager = new ConfigManager(); + if (!Main.configManager.initConfig()) { + error("插件配置文件初始化失败,请检查文件权限。"); + return false; + } + + log("加载玩家管理器..."); + + log("注册监听器..."); + + log("注册指令..."); + + return true; + } + + @Override + protected void shutdown() { + + } + + @Override + public boolean isDebugging() { + return PluginConfig.DEBUG.get(); + } + + public static Main getInstance() { + return instance; + } + + public static void info(String... messages) { + getInstance().log(messages); + } + + public static void severe(String... messages) { + getInstance().error(messages); + } + + public static void debugging(String... messages) { + getInstance().debug(messages); + } + +} \ No newline at end of file diff --git a/src/main/java/cc/carm/plugin/timereward/TimeRewardAPI.java b/src/main/java/cc/carm/plugin/timereward/TimeRewardAPI.java new file mode 100644 index 0000000..4476e9d --- /dev/null +++ b/src/main/java/cc/carm/plugin/timereward/TimeRewardAPI.java @@ -0,0 +1,4 @@ +package cc.carm.plugin.timereward; + +public class TimeRewardAPI { +} diff --git a/src/main/java/cc/carm/plugin/timereward/configuration/PluginConfig.java b/src/main/java/cc/carm/plugin/timereward/configuration/PluginConfig.java new file mode 100644 index 0000000..65152e2 --- /dev/null +++ b/src/main/java/cc/carm/plugin/timereward/configuration/PluginConfig.java @@ -0,0 +1,12 @@ +package cc.carm.plugin.timereward.configuration; + +import cc.carm.lib.easyplugin.configuration.impl.ConfigSound; +import cc.carm.lib.easyplugin.configuration.values.ConfigValue; +import org.bukkit.Sound; + +public class PluginConfig { + + public static final ConfigValue DEBUG = new ConfigValue<>( + "debug", Boolean.class, false + ); +} diff --git a/src/main/java/cc/carm/plugin/timereward/configuration/PluginMessages.java b/src/main/java/cc/carm/plugin/timereward/configuration/PluginMessages.java new file mode 100644 index 0000000..c029eb2 --- /dev/null +++ b/src/main/java/cc/carm/plugin/timereward/configuration/PluginMessages.java @@ -0,0 +1,14 @@ +package cc.carm.plugin.timereward.configuration; + +import cc.carm.lib.easyplugin.configuration.language.EasyMessageList; +import cc.carm.lib.easyplugin.configuration.language.MessagesRoot; + + +public class PluginMessages extends MessagesRoot { + + public static final EasyMessageList NOT_ONLINE = new EasyMessageList( + new String[]{"&7玩家 &c%(player) &7并不在线。"}, + new String[]{"%(player)"} + ); + +} diff --git a/src/main/java/cc/carm/plugin/timereward/manager/ConfigManager.java b/src/main/java/cc/carm/plugin/timereward/manager/ConfigManager.java new file mode 100644 index 0000000..7d56ec5 --- /dev/null +++ b/src/main/java/cc/carm/plugin/timereward/manager/ConfigManager.java @@ -0,0 +1,50 @@ +package cc.carm.plugin.timereward.manager; + + +import cc.carm.lib.easyplugin.configuration.file.FileConfig; +import cc.carm.lib.easyplugin.configuration.language.MessagesConfig; +import cc.carm.lib.easyplugin.configuration.language.MessagesInitializer; +import cc.carm.plugin.timereward.Main; +import cc.carm.plugin.timereward.configuration.PluginMessages; + +public class ConfigManager { + + private FileConfig pluginConfiguration; + + private MessagesConfig messageConfiguration; + + public boolean initConfig() { + try { + pluginConfiguration = new FileConfig(Main.getInstance(), "config.yml"); + messageConfiguration = new MessagesConfig(Main.getInstance(), "messages.yml"); + + FileConfig.pluginConfiguration = () -> pluginConfiguration; + FileConfig.messageConfiguration = () -> messageConfiguration; + + MessagesInitializer.initialize(messageConfiguration, PluginMessages.class); + + return true; + } catch (Exception ex) { + return false; + } + } + + public FileConfig getPluginConfig() { + return FileConfig.pluginConfiguration.get(); + } + + public FileConfig getMessageConfig() { + return FileConfig.messageConfiguration.get(); + } + + public void reload() throws Exception { + getPluginConfig().reload(); + getMessageConfig().reload(); + } + + public void saveConfig() throws Exception { + getPluginConfig().save(); + getMessageConfig().save(); + } + +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..672d154 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,6 @@ +# ${project.name} - ${project.description} +# 项目地址: ${project.url} +# 下载地址: ${project.distributionManagement.downloadUrl} +version: ${project.version} + +debug: false diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml new file mode 100644 index 0000000..5773569 --- /dev/null +++ b/src/main/resources/messages.yml @@ -0,0 +1,5 @@ +# ${project.name} - ${project.description} +# 项目地址: ${project.url} +# 下载地址: ${project.distributionManagement.downloadUrl} + +version: ${project.version} \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..c8f02a7 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,21 @@ +main: cc.carm.plugin.timereward.Main +name: TimeReward + +version: ${project.version} +description: ${project.description} +website: ${project.url} + +authors: + - CarmJos + +commands: + "TimeReward": + permission: "TimeReward.admin" + description: "在线自动领奖的基础指令。" + usage: "/TimeReward help" + +permissions: + + "TimeReward.admin": + description: "区域保护插件的管理员权限。" + default: op