From 73c8e2dfe296c392b6f2dea732de8c6a1027f924 Mon Sep 17 00:00:00 2001 From: FireInstall Date: Fri, 11 Oct 2024 02:03:20 +0200 Subject: [PATCH] - yeet mockbukkit. It's just a broken mess and does more harm than it's worth it. Hopefully somebody will have the patience to implement tests in the future again. - better .gitignore - updated .readthedocs.yml - set bug report template to paper or downstream - updated workflow and added codacy to replace the old maven plugin - removed old maven build scripts - removed waffle.io badge as the site is no more - better gradle build scripts (I really don't like build source) - better version check - move to paper plugin and added missing soft dependencies - update kitteh.pastegg version --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/dependabot.yml | 4 +- .github/workflows/codacy.yml | 61 ++++ .github/workflows/gradle.yml | 70 ++++ .github/workflows/maven.yml | 19 - .gitignore | 121 ++++++- .readthedocs.yml | 4 +- .travis.yml | 18 +- Minigames/build.gradle.kts | 185 +++++++++- Minigames/pom.xml | 337 ------------------ .../java/au/com/mineauz/minigames/Events.java | 36 +- .../mineauz/minigames/MinigameBootstrap.java | 18 - .../minigames/MinigamePluginBootstrap.java | 43 +++ .../au/com/mineauz/minigames/Minigames.java | 44 +-- .../minigames/commands/CommandDispatcher.java | 28 +- .../minigames/commands/DebugCommand.java | 49 ++- .../minigames/commands/HelpCommand.java | 4 +- .../minigames/commands/ListPlaceholder.java | 4 +- .../src/main/resources/minigame.properties | 2 - .../{plugin.yml => paper-plugin.yml} | 47 ++- .../au/com/mineauz/minigames/EventsTest.java | 70 ---- .../minigames/MinigamePlayerManagerTest.java | 153 -------- .../mineauz/minigames/MinigameUtilsTest.java | 23 -- .../com/mineauz/minigames/MinigamesTest.java | 92 ----- .../com/mineauz/minigames/MockBootstrap.java | 74 ---- .../mineauz/minigames/helpers/TestHelper.java | 50 --- .../managers/MessageManagerTest.java | 32 -- .../mineauz/minigames/objects/MockSign.java | 59 --- .../minigames/objects/SignBlockMock.java | 40 --- .../minigames/objects/TestMinigame.java | 36 -- .../mineauz/minigames/objects/TestPlayer.java | 244 ------------- .../mineauz/minigames/objects/TestWorld.java | 28 -- README.md | 5 +- Regions/build.gradle.kts | 5 - Regions/pom.xml | 71 ---- buildSrc/build.gradle.kts | 13 - .../buildlogic.java-conventions.gradle.kts | 79 ---- gradle.properties | 2 + gradle/libs.versions.toml | 28 -- minigamesdistribution/pom.xml | 54 --- pom.xml | 240 ------------- settings.gradle.kts | 12 +- 42 files changed, 594 insertions(+), 1912 deletions(-) create mode 100644 .github/workflows/codacy.yml create mode 100644 .github/workflows/gradle.yml delete mode 100644 .github/workflows/maven.yml delete mode 100644 Minigames/pom.xml delete mode 100644 Minigames/src/main/java/au/com/mineauz/minigames/MinigameBootstrap.java create mode 100644 Minigames/src/main/java/au/com/mineauz/minigames/MinigamePluginBootstrap.java delete mode 100644 Minigames/src/main/resources/minigame.properties rename Minigames/src/main/resources/{plugin.yml => paper-plugin.yml} (95%) delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/EventsTest.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/MinigamePlayerManagerTest.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/MinigameUtilsTest.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/MinigamesTest.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/MockBootstrap.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/helpers/TestHelper.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/managers/MessageManagerTest.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/objects/MockSign.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/objects/SignBlockMock.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/objects/TestMinigame.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/objects/TestPlayer.java delete mode 100644 Minigames/src/test/java/au/com/mineauz/minigames/objects/TestWorld.java delete mode 100644 Regions/pom.xml delete mode 100644 buildSrc/build.gradle.kts delete mode 100644 buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts create mode 100644 gradle.properties delete mode 100644 gradle/libs.versions.toml delete mode 100644 minigamesdistribution/pom.xml delete mode 100644 pom.xml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 735de8bed..8ba64e7c3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -22,7 +22,7 @@ A clear and concise description of what you expected to happen. **Server (please complete the following information):** - Minigames Version: X.X.X - - Server Type: [Spigot|Paper|CraftBukkit] + - Server Type: [Paper|Purpur|Pufferfish] - Server Version: X.X.X **Additional context** diff --git a/.github/dependabot.yml b/.github/dependabot.yml index fe6e81773..ed694b535 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,11 +1,11 @@ version: 2 updates: - - package-ecosystem: "maven" + - package-ecosystem: "gradle" directory: "/Minigames" schedule: interval: "weekly" - - package-ecosystem: "maven" + - package-ecosystem: "gradle" directory: "/Regions" schedule: interval: "weekly" diff --git a/.github/workflows/codacy.yml b/.github/workflows/codacy.yml new file mode 100644 index 000000000..3ac76c54c --- /dev/null +++ b/.github/workflows/codacy.yml @@ -0,0 +1,61 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# This workflow checks out code, performs a Codacy security scan +# and integrates the results with the +# GitHub Advanced Security code scanning feature. For more information on +# the Codacy security scan action usage and parameters, see +# https://github.com/codacy/codacy-analysis-cli-action. +# For more information on Codacy Analysis CLI in general, see +# https://github.com/codacy/codacy-analysis-cli. + +name: Codacy Security Scan + +on: + push: + branches: [ "master" ] + pull_request: +# # The branches below must be a subset of the branches above +# branches: [ "master" ] + schedule: + - cron: '44 13 * * 4' + +permissions: + contents: read + +jobs: + codacy-security-scan: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + name: Codacy Security Scan + runs-on: ubuntu-latest + steps: + # Checkout the repository to the GitHub Actions runner + - name: Checkout code + uses: actions/checkout@v4 + + # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis + - name: Run Codacy Analysis CLI + uses: codacy/codacy-analysis-cli-action@d840f886c4bd4edc059706d09c6a1586111c540b + with: + # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository + # You can also omit the token and run the tools that support default configurations + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + verbose: true + output: results.sarif + format: sarif + # Adjust severity of non-security issues + gh-code-scanning-compat: true + # Force 0 exit code to allow SARIF file generation + # This will handover control about PR rejection to the GitHub side + max-allowed-issues: 2147483647 + + # Upload the SARIF file generated in the previous step + - name: Upload SARIF results file + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: results.sarif diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 000000000..06a83e2d5 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,70 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle + +name: Java CI with Gradle + +# build on every push. +on: [push] +# if you want to just build if pushes to master occur use the one below. +#on: +# push: +# branches: [ "master" ] +# pull_request: +# branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + + # Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies. + # See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md + - name: Setup Gradle + uses: gradle/actions/setup-gradle@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2 + + - name: Build with Gradle Wrapper + run: ./gradlew build + + # NOTE: The Gradle Wrapper is the default and recommended way to run Gradle (https://docs.gradle.org/current/userguide/gradle_wrapper.html). + # If your project does not have the Gradle Wrapper configured, you can use the following configuration to run Gradle with a specified version. + # + # - name: Setup Gradle + # uses: gradle/actions/setup-gradle@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2 + # with: + # gradle-version: '8.5' + # + # - name: Build with Gradle 8.5 + # run: gradle build + + dependency-submission: + + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + + # Generates and submits a dependency graph, enabling Dependabot Alerts for all project dependencies. + # See: https://github.com/gradle/actions/blob/main/dependency-submission/README.md + - name: Generate and submit dependency graph + uses: gradle/actions/dependency-submission@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2 diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml deleted file mode 100644 index b9e1f4bc7..000000000 --- a/.github/workflows/maven.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Java CI - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 17 - cache: 'maven' - - name: Build with Maven - run: mvn -B package --file pom.xml diff --git a/.gitignore b/.gitignore index 8ee13a491..a58c062dc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,112 @@ -.settings -target -.idea/ +# ---> JetBrains +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio + *.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + +# ---> Eclipse +*.pydevproject +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath + +# Eclipse Core +.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Java annotation processor (APT) +.factorypath + +# PDT-specific +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +# ---> Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + +# ---> Gradle +.gradle/ +*/build/ +target +*/run/ + +.settings + +# wiki docs/build/ -/buildSrc/.gradle/ -/.gradle/ -/build/ -/buildSrc/build/ -/Minigames/run/ -/Minigames/build/ -/Regions/run/ -/Regions/build/ + +# --> junit tests +*/logs/ diff --git a/.readthedocs.yml b/.readthedocs.yml index c3cea8799..049758f63 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -7,9 +7,9 @@ version: 2 # Set the version of Python and other tools you might need build: - os: ubuntu-20.04 + os: ubuntu-22.04 tools: - python: "3.9" + python: "3.12" # Build documentation in the docs/ directory with Sphinx sphinx: diff --git a/.travis.yml b/.travis.yml index ee40b6213..6f57f7f59 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,11 +3,23 @@ notifications: email: false slack: secure: "drNgYCrHpXj/sSrnoRUpMUp4jq3Jq/EXV6llQ0JYo3qkRirUec7ZgVA59Ln57Higv+EG8qpbRT/dohzV7mqn0bb2inXPJCI7JJtUJZNNjo/fkDZaSPFHJAWa1XjtEfAnIbQCd7EtU9RnIAGn7IwXqfxZOLakP0ZpkpNOjfuTdcI2S3GEkZJSDrwB7Q7LlzGuAlZkx0BWHkoyb7zCUVJ94ftiwHPy3nT05EzlbXyQ3xUUe1Y+pGZ7oBWsN8k7LumHN3SMwTnFu7mvVoTN53BH2zD3I2mACKsnF2KIyk+6p4IUiFeYQc2z5lnX8YMFiWkUpFbWhetUwsnjNRUZ4TvtqBkOBaEHyBn82nigUiYbW8Ea8ZjzqrcBTxOaK9Qt8C/LC0CcclxyHFQD7fSrD4IYNv6/vC/jWB+CCoVPFF+ZaJLQhiN847p+wlU0EJuyewqrb57n3Xfzzk5AtIzYpculg62CCW2caCfXR4rEa8JdDATQr/c7tvnrx2XXwlKWA/crRPAOVCj6fA0FADNvC0W3QexLDGOpwobqKbN5z2Ouw4sISyPAhfCsgGVrbTz4HYtFf3riIzbW5lJcs63XhNZdaYI8eDL8PTpxtFwhhyOHtOR+p0ez5TSWO9N2e6+HOGMm7rG0ykNY+Vs2Pri2FwRLjq/sQLLdyJpejkgrrIF/vzE=" + +before_cache: + - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock + - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ + cache: directories: - - $HOME/.m2 + - $HOME/.gradle/caches/ + - $HOME/.gradle/wrapper/ + env: matrix: - PROFILE=BUKKIT -install: "mvn clean install -P ${PROFILE} -DskipTests=true -Dmaven.javadoc.skip=true -B -V" -script: "mvn test -P ${PROFILE} -B" \ No newline at end of file + +# todo +# old install +#"mvn clean install -P ${PROFILE} -DskipTests=true -Dmaven.javadoc.skip=true -B -V" + +script: + - ./gradlew build -q -D \ No newline at end of file diff --git a/Minigames/build.gradle.kts b/Minigames/build.gradle.kts index c6e7139a6..20862aa10 100644 --- a/Minigames/build.gradle.kts +++ b/Minigames/build.gradle.kts @@ -1,23 +1,174 @@ -/* - * This file was generated by the Gradle 'init' task. - */ - plugins { - id("buildlogic.java-conventions") + `java-library` + `maven-publish` + id("io.papermc.paperweight.userdev") version "1.7.1" + id("xyz.jpenilla.run-paper") version "2.3.0" +} + +// this is the minecraft major version. If you need a subversion like 1.20.1, +// change it in the dependencies section as this is also used as the api version of the plugin.yml +val mcVersion by extra("1.21") //: String by project + +group = "au.com.mineauz" +version = "1.0.0-Mc$mcVersion.SNAPSHOT" +description = "The Minigames plugin for Paper servers." + +// we only work with paper and downstream! +paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.MOJANG_PRODUCTION + +java { + // Configure the java toolchain. This allows gradle to auto-provision JDK 17 on systems that only have JDK 8 installed for example. + toolchain.languageVersion.set(JavaLanguageVersion.of(21)) + sourceCompatibility = JavaVersion.VERSION_21 +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() + mavenLocal() + + //paper + maven { + url = uri("https://repo.papermc.io/repository/maven-public/") + } + + // Bstats + maven { + url = uri("https://repo.codemc.org/repository/maven-public") + } + + // PlaceHolderAPI + maven { + url = uri("https://repo.extendedclip.com/content/repositories/placeholderapi") + } + + // PlaceHolderAPI + maven { + url = uri("https://repo.extendedclip.com/content/repositories/placeholderapi") + } + + // Vault + maven { + url = uri("https://jitpack.io") + } + + // WorldEdit + maven { + url = uri("https://maven.enginehub.org/repo/") + } } + dependencies { - api(libs.org.bstats.bstats.bukkit) - api(libs.org.kitteh.paste.gg.api) - api(libs.org.apache.commons.commons.lang3) - api(libs.org.apache.commons.commons.text) - api(libs.commons.io.commons.io) - testImplementation(libs.com.github.seeseemelk.mockbukkit.v1.v20) - testImplementation(libs.com.mysql.mysql.connector.j) - compileOnly(libs.com.github.milkbowl.vaultapi) - compileOnly(libs.org.xerial.sqlite.jdbc) - compileOnly(libs.me.clip.placeholderapi) - compileOnly(libs.com.sk89q.worldedit.worldedit.bukkit) + paperweight.paperDevBundle("$mcVersion-R0.1-SNAPSHOT") + + api("org.bstats", "bstats-bukkit", "3.0.2") + api("org.kitteh", "paste-gg-api", "2.0.0-SNAPSHOT") + api("org.apache.commons", "commons-lang3", "3.15.0") + api("org.apache.commons", "commons-text", "1.12.0") + api("commons-io", "commons-io", "2.16.1") + + compileOnly("com.github.MilkBowl", "VaultAPI", "1.7.1") { + exclude("org.bukkit", "bukkit") + exclude("org.bukkit", "craftbukkit") + } + compileOnly("me.clip", "placeholderapi", "2.11.6") { + exclude("net.kyori", "adventure-api") + } + compileOnly("com.sk89q.worldedit", "worldedit-bukkit", "7.3.4-SNAPSHOT") + compileOnly("org.jetbrains:annotations:24.1.0") + + compileOnly("org.xerial", "sqlite-jdbc", "3.46.0.0") + + compileOnly("com.mysql", "mysql-connector-j", "9.0.0") + + testImplementation ("org.junit.jupiter", "junit-jupiter", "5.10.1") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") +} + +tasks { + processResources { + filesNotMatching(setOf("*/*.zip", "*.properties")) { // exclude message files as they are in utf16 and ressourcepacks + filteringCharset = Charsets.UTF_8.name() // We want UTF-8 for everything + + expand(project.properties) + } + } + compileJava { + options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything + + // Set the release flag. This configures what version bytecode the compiler will emit, as well as what JDK APIs are usable. + // See https://openjdk.java.net/jeps/247 for more information. + options.release.set(21) + } + javadoc { + options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything + } + val sourcesJar by creating(Jar::class) { + archiveClassifier.set("sources") + from(sourceSets.main.get().allSource) + } + + val javadocJar by creating(Jar::class) { + dependsOn.add(javadoc) + archiveClassifier.set("javadoc") + from(javadoc) + } + + test { + useJUnitPlatform () + } + runServer { + minecraftVersion(mcVersion) + } } -description = "Minigames" +publishing { + publications.create("maven") { + from(components["java"]) // dev + //artifact(tasks.jar.get().outputs.files.singleFile) // production + artifact(tasks.getByName("sourcesJar")) + //artifact(tasks.getByName("javadocJar")) + pom { + name.set("Minigames") + description.set(project.description) + url.set("https://github.com/AddstarMC/Minigames/") + licenses { + license { + name.set("MIT License") + url.set("http://opensource.org/licenses/MIT") + } + } + developers { + developer { + id.set("Razz") + name.set("Razz") + url.set("http://github.com/Razz") + roles.add("emeritus") + } + developer { + id.set("AddstarMC") + name.set("AddstarMC") + url.set("http://github.com/AddstarMC") + roles.add("developer") + timezone.set("10") + } + developer { + id.set("GreenSurvivors") + name.set("GreenSurvivors Team") + url.set("http://github.com/AddstarMC") + roles.add("developer") + roles.addAll("developer", "maintainer") + } + } + } + repositories { + maven { + val releasesRepoUrl = "https://maven.addstar.com.au/artifactory/ext-release-local" + val snapshotsRepoUrl = "https://maven.addstar.com.au/artifactory/ext-snapshot-local" + + url = uri(if (project.properties["release"] == "true") releasesRepoUrl else snapshotsRepoUrl) + } + } + } +} diff --git a/Minigames/pom.xml b/Minigames/pom.xml deleted file mode 100644 index 566c73473..000000000 --- a/Minigames/pom.xml +++ /dev/null @@ -1,337 +0,0 @@ - - 4.0.0 - - au.com.mineauz - MinigamesProject - 1.21-SNAPSHOT - ../pom.xml - - Minigames - jar - Minigames - A swiss knife plugin to construct any minigame you can imagine. - - root - password - test_games - localhost - 3306 - true - - - - - papermc - papermc - https://papermc.io/repo/repository/maven-public/ - - - - CodeMC - https://repo.codemc.org/repository/maven-public - - - - placeholderapi - https://repo.extendedclip.com/content/repositories/placeholderapi/ - - - - jitpack.io - https://jitpack.io - - - - enginehub.org - https://maven.enginehub.org/repo/ - - - - - - - com.github.MilkBowl - VaultAPI - 1.7.1 - - - org.bukkit - bukkit - - - org.bukkit - craftbukkit - - - provided - - - org.bstats - bstats-bukkit - 3.0.2 - compile - - - com.github.seeseemelk - MockBukkit-v1.20 - 3.93.2 - test - - - org.bukkit - bukkit - - - - - com.mysql - mysql-connector-j - 9.0.0 - test - - - org.xerial - sqlite-jdbc - 3.46.0.0 - provided - - - me.clip - placeholderapi - 2.11.6 - provided - - - net.kyori - adventure-api - - - - - org.kitteh - paste-gg-api - 1.0.0-SNAPSHOT - - - org.apache.commons - commons-lang3 - 3.15.0 - compile - - - org.apache.commons - commons-text - 1.12.0 - - - - commons-io - commons-io - 2.16.1 - compile - - - com.sk89q.worldedit - worldedit-bukkit - 7.3.4-SNAPSHOT - provided - - - - - - . - true - src/main/resources - - plugin.yml - config.yml - *.properties - presets/*.yml - - - - - . - false - src/main/resources - - resourcepack/*.zip - - - - - src/main/java - - - true - src/test/resources - . - - config.yml - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.6.0 - - - - *:* - - META-INF/MANIFEST.MF - - - - - ${project.build.directory}/dependency-reduced-pom.xml - - - - org.bstats:* - org.kitteh:paste-gg-api - - - - - org.bstats - au.com.mineauz.minigames - - - org.kitteh.pastegg - au.com.mineauz.minigames.pastegg - - - - - - package - - shade - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.3.1 - - - attach-sources - verify - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.3.1 - - true - 1 - false - - - - org.apache.maven.plugins - maven-dependency-plugin - 3.7.1 - - - org.codehaus.mojo - versions-maven-plugin - 2.17.1 - - - org.apache.maven.plugins - maven-compiler-plugin - - 21 - 21 - - - - - - - codecoverage - - - env.TRAVIS - - - - - - org.jacoco - jacoco-maven-plugin - - ${skipTests} - - - - jacoco - verify - - report - - - - - - org.eluder.coveralls - coveralls-maven-plugin - 4.3.0 - - - coveralls - verify - - report - - - - - ${skipTests} - tGd4UFZlq2ltbSDTmfeo7GhG5x0LsHhoG - - - - com.gavinmogan - codacy-maven-plugin - 1.2.0 - - ${codacy.api.token} - 9a3fb2fe5b374cb5ad11e69df7db98fb - ${project.build.directory}/site/jacoco/jacoco.xml - ${travis.commit} - https://api.codacy.com - false - - - - - - - - - diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java index 591a2ca61..1b5ad2584 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/Events.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/Events.java @@ -72,23 +72,21 @@ public class Events implements Listener { public void onPlayerResourcePack(@NotNull PlayerResourcePackStatusEvent event) { //todo 1.20.3 + add ressource pack not set (redo with multible Ressoucepacks in mind.) final MinigamePlayer mgPlayer = pdata.getMinigamePlayer(event.getPlayer()); List required = plugin.getPlayerManager().getApplyingPack(); - if (mgPlayer.isInMinigame()) { - if (required.contains(mgPlayer)) { - ResourcePackModule module = ResourcePackModule.getMinigameModule(mgPlayer.getMinigame()); - if (module == null || !module.isEnabled()) return; - if (!module.isForced()) return; - switch (event.getStatus()) { - case ACCEPTED, SUCCESSFULLY_LOADED -> required.remove(mgPlayer); - case DECLINED -> { - Minigames.getPlugin().getPlayerManager().quitMinigame(mgPlayer, true); - MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.ERROR, MgMiscLangKey.MINIGAME_RESOURCEPACK_DECLINED); - required.remove(mgPlayer); - } - case FAILED_DOWNLOAD -> { - Minigames.getPlugin().getPlayerManager().quitMinigame(mgPlayer, true); - MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.ERROR, MgMiscLangKey.MINIGAME_RESOURCEPACK_FAILED); - required.remove(mgPlayer); - } + if (mgPlayer.isInMinigame() && required.contains(mgPlayer)) { + ResourcePackModule module = ResourcePackModule.getMinigameModule(mgPlayer.getMinigame()); + if (module == null || !module.isEnabled()) return; + if (!module.isForced()) return; + switch (event.getStatus()) { + case ACCEPTED, SUCCESSFULLY_LOADED -> required.remove(mgPlayer); + case DECLINED -> { + Minigames.getPlugin().getPlayerManager().quitMinigame(mgPlayer, true); + MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.ERROR, MgMiscLangKey.MINIGAME_RESOURCEPACK_DECLINED); + required.remove(mgPlayer); + } + case FAILED_DOWNLOAD -> { + Minigames.getPlugin().getPlayerManager().quitMinigame(mgPlayer, true); + MinigameMessageManager.sendMgMessage(mgPlayer, MinigameMessageType.ERROR, MgMiscLangKey.MINIGAME_RESOURCEPACK_FAILED); + required.remove(mgPlayer); } } } @@ -250,8 +248,8 @@ private void onPlayerConnect(@NotNull PlayerJoinEvent event) { if (Bukkit.getServer().getOnlinePlayers().size() == 1) { for (Minigame mgm : mdata.getAllMinigames().values()) { - if (mgm != null && mgm.getType() == MinigameType.GLOBAL) { - if (mgm.getMinigameTimer() != null) mgm.getMinigameTimer().startTimer(); + if (mgm.getType() == MinigameType.GLOBAL && mgm.getMinigameTimer() != null) { + mgm.getMinigameTimer().startTimer(); } } } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/MinigameBootstrap.java b/Minigames/src/main/java/au/com/mineauz/minigames/MinigameBootstrap.java deleted file mode 100644 index 66ef95959..000000000 --- a/Minigames/src/main/java/au/com/mineauz/minigames/MinigameBootstrap.java +++ /dev/null @@ -1,18 +0,0 @@ -package au.com.mineauz.minigames; - -import io.papermc.paper.plugin.bootstrap.BootstrapContext; -import io.papermc.paper.plugin.bootstrap.PluginBootstrap; -import io.papermc.paper.plugin.bootstrap.PluginProviderContext; -import org.jetbrains.annotations.NotNull; - -public class MinigameBootstrap implements PluginBootstrap { - @Override - public void bootstrap(@NotNull BootstrapContext context) { - - } - - @Override - public @NotNull Minigames createPlugin(@NotNull PluginProviderContext context) { - return new Minigames(); - } -} diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/MinigamePluginBootstrap.java b/Minigames/src/main/java/au/com/mineauz/minigames/MinigamePluginBootstrap.java new file mode 100644 index 000000000..cdb9554fc --- /dev/null +++ b/Minigames/src/main/java/au/com/mineauz/minigames/MinigamePluginBootstrap.java @@ -0,0 +1,43 @@ +package au.com.mineauz.minigames; + +import io.papermc.paper.plugin.bootstrap.BootstrapContext; +import io.papermc.paper.plugin.bootstrap.PluginBootstrap; +import io.papermc.paper.plugin.bootstrap.PluginProviderContext; +import io.papermc.paper.plugin.loader.PluginClasspathBuilder; +import io.papermc.paper.plugin.loader.PluginLoader; +import io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.graph.Dependency; +import org.eclipse.aether.repository.RemoteRepository; +import org.jetbrains.annotations.NotNull; + +@SuppressWarnings({"UnstableApiUsage", "unused"}) +public class MinigamePluginBootstrap implements PluginBootstrap, PluginLoader { + @Override + public void bootstrap(@NotNull BootstrapContext context) { + } + + @Override + public @NotNull Minigames createPlugin(@NotNull PluginProviderContext context) { + return new Minigames(); + } + + @Override + public void classloader(@NotNull PluginClasspathBuilder classpathBuilder) { + MavenLibraryResolver resolver = new MavenLibraryResolver(); + resolver.addRepository(new RemoteRepository.Builder("central", "default", "https://repo1.maven.org/maven2/").build()); // todo as far as I remember there was a way to get maven central direct + resolver.addRepository(new RemoteRepository.Builder("bstats", "default", "https://repo.codemc.org/repository/maven-public").build()); + resolver.addRepository(new RemoteRepository.Builder("addstar-repo", "default", "https://maven.addstar.com.au/artifactory/ext-snapshot-local").build()); // pastegg only exists as snapshots for now. + + + resolver.addDependency(new Dependency(new DefaultArtifact("org.bstats:bstats-bukkit:3.0.2"), null)); // todo insert versions + resolver.addDependency(new Dependency(new DefaultArtifact("org.kitteh:paste-gg-api:1.0.0-SNAPSHOT"), null)); // todo use 2.0.0 + resolver.addDependency(new Dependency(new DefaultArtifact("org.apache.commons:commons-text:1.10.0"), null)); + resolver.addDependency(new Dependency(new DefaultArtifact("commons-io:commons-io:2.15.1"), null)); + // commons-lang3 is already shipped with the server + + System.setProperty("bstats.relocatecheck", "false"); // bstats author is stubborn and only allows the use via relocation. + + classpathBuilder.addLibrary(resolver); + } +} diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/Minigames.java b/Minigames/src/main/java/au/com/mineauz/minigames/Minigames.java index 57a4b3b82..78a088c4b 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/Minigames.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/Minigames.java @@ -23,6 +23,7 @@ import au.com.mineauz.minigames.stats.MinigameStatistics; import au.com.mineauz.minigames.stats.StatisticValueField; import au.com.mineauz.minigames.stats.StoredGameStats; +import io.papermc.paper.ServerBuildInfo; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.logger.slf4j.ComponentLogger; @@ -47,11 +48,11 @@ import org.bukkit.potion.PotionEffectType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.VisibleForTesting; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.regex.Pattern; @@ -65,6 +66,7 @@ public class Minigames extends JavaPlugin { private static ComparableVersion VERSION; private static ComparableVersion PAPER_VERSION; private final @NotNull StartUpLogHandler startUpHandler; + private static final MinigameMessageManager minigameMessageManager = new MinigameMessageManager(); public DisplayManager display; private ResourcePackManager resourceManager; private MinigamePlayerManager playerManager; @@ -98,6 +100,11 @@ public static Minigames getPlugin() { return Minigames.componentLogger; } + @VisibleForTesting + public static MinigameMessageManager getMinigameMessageManager () { + return minigameMessageManager; + } + public @NotNull String getStartupLog() { return startUpHandler.getNormalLog(); } @@ -190,14 +197,14 @@ public void onEnable() { case -1 -> { logger.warn("This version of Minigames (" + VERSION.getCanonical() + ") is designed for Paper Version: " + PAPER_VERSION.getCanonical()); logger.warn("Your version is newer: " + Bukkit.getBukkitVersion()); - logger.warn("Please check for an updated"); + logger.warn("Please check for an update!"); } case 0 -> { } case 1 -> { if (!this.getConfig().getBoolean("forceload", true)) { logger.warn("This version of Minigames (" + VERSION.getCanonical() + ") " + - "is designed for Bukkit Version: " + PAPER_VERSION.getCanonical()); + "is designed for Paper Version: " + PAPER_VERSION.getCanonical()); logger.warn("Your version is " + Bukkit.getVersion()); logger.warn(" Bypass this by setting forceload: true in the config"); @@ -216,7 +223,6 @@ public void onEnable() { final PluginDescriptionFile desc = this.getDescription(); ConfigurationSerialization.registerClass(ResourcePack.class); MinigameMessageManager.registerCoreLanguage(); - this.checkVersion(); this.loadPresets(); this.setupMinigames(); if (!this.setupEconomy()) { @@ -236,15 +242,12 @@ public void onEnable() { this.minigameManager.loadRewardSigns(); disp = new CommandDispatcher(); - PluginCommand command = this.getCommand("minigame"); - if (command == null) { - throw (new NoSuchElementException("Could not find command `minigame`")); - } - command.setExecutor(disp); - command.setTabCompleter(disp); + this.getServer().getCommandMap().register(this.getPluginMeta().getName().toLowerCase(Locale.ENGLISH), disp); + for (final Player player : this.getServer().getOnlinePlayers()) { this.playerManager.addMinigamePlayer(player); } + try { this.initMetrics(); } catch (final IllegalStateException | NoClassDefFoundError | ExceptionInInitializerError e) { @@ -258,7 +261,7 @@ public void onEnable() { this.hookPlaceHolderApi(); } catch (final Exception e) { plugin = null; - logger.error("Failed to enable Minigames " + this.getDescription().getVersion() + ": ", e); + logger.error("Failed to enable Minigames " + this.getPluginMeta().getVersion() + ": ", e); Bukkit.getPluginManager().disablePlugin(this); } this.getLogger().removeHandler(startUpHandler); @@ -407,21 +410,10 @@ public boolean hasEconomy() { } private int checkVersion() { - final Properties p = new Properties(); - try (final InputStream stream = this.getResource("minigame.properties")) { - p.load(stream); - } catch (final NullPointerException | IOException e) { - this.getLogger().warning(e.getMessage()); - } - - if (p.containsKey("version")) { - VERSION = new ComparableVersion(p.getProperty("version")); - PAPER_VERSION = new ComparableVersion(p.getProperty("paper_version")); - final ComparableVersion serverversion = new ComparableVersion(this.getServer().getBukkitVersion()); - return PAPER_VERSION.compareTo(serverversion); - } else { - return 1; - } + VERSION = new ComparableVersion(this.getPluginMeta().getVersion()); + PAPER_VERSION = new ComparableVersion(this.getPluginMeta().getAPIVersion()); + final ComparableVersion serverversion = new ComparableVersion(this.getServer().getMinecraftVersion()); + return PAPER_VERSION.compareTo(serverversion); } /** diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/commands/CommandDispatcher.java b/Minigames/src/main/java/au/com/mineauz/minigames/commands/CommandDispatcher.java index f9ae1e5d4..5afc9d673 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/commands/CommandDispatcher.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/commands/CommandDispatcher.java @@ -9,17 +9,15 @@ import au.com.mineauz.minigames.managers.language.langkeys.MgMiscLangKey; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; +import org.bukkit.Location; +import org.bukkit.command.*; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; -public class CommandDispatcher implements CommandExecutor, TabCompleter { +public class CommandDispatcher extends Command { private static final Map commands = new TreeMap<>(); // sort by name for display in help private static final Minigames plugin = Minigames.getPlugin(); @@ -60,6 +58,11 @@ public class CommandDispatcher implements CommandExecutor, TabCompleter { registerCommand(new SelectCommand()); } + public CommandDispatcher() { + super("minigame", "The Minigame creation command.", "Invalid command. Type \"/minigame help\" for help", List.of("mgm", "minigm", "mgame", "mg")); + this.setPermission("minigame.minigame"); + } + public static @NotNull Collection getCommands() { return commands.values(); } @@ -103,7 +106,8 @@ public static void registerCommand(@NotNull ACommand command) { } } - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String @Nullable [] args) { + @Override + public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) { Player player = null; if (sender instanceof Player) { player = (Player) sender; @@ -127,12 +131,12 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command if (!returnValue) { MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.NONE, MgCommandLangKey.COMMAND_ERROR_INFO_HEADER); MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.NONE, MgCommandLangKey.COMMAND_ERROR_INFO_DESCRIPTION, - Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), command.getDescription())); + Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), this.getDescription())); MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.NONE, MgCommandLangKey.COMMAND_ERROR_INFO_USAGE, - Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), command.getUsage())); + Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), this.getUsage())); if (cmd.getAliases() != null) { MinigameMessageManager.sendMgMessage(sender, MinigameMessageType.NONE, MgCommandLangKey.COMMAND_ERROR_INFO_ALIASES, - Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), String.join(", ", command.getAliases()))); + Placeholder.unparsed(MinigamePlaceHolderKey.TEXT.getKey(), String.join(", ", this.getAliases()))); } } } else { @@ -155,7 +159,8 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command return false; } - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String @Nullable [] args) { + @Override + public @NotNull List tabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args, @Nullable Location location) { if (args != null && args.length > 0) { ACommand comd = getCommand(args[0]); @@ -171,6 +176,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command return tabCompleteMatch(ls, args[0]); } } - return null; + + return List.of(); } } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/commands/DebugCommand.java b/Minigames/src/main/java/au/com/mineauz/minigames/commands/DebugCommand.java index f99ab6804..4d432e69a 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/commands/DebugCommand.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/commands/DebugCommand.java @@ -10,6 +10,11 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.kitteh.pastegg.*; +import org.kitteh.pastegg.client.FormatCodec; +import org.kitteh.pastegg.reply.IReply; +import org.kitteh.pastegg.reply.ReplyStatus; +import org.kitteh.pastegg.reply.SuccessReply; +import org.kitteh.pastegg.reply.content.PasteResult; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -113,7 +118,7 @@ public boolean onCommand(@NotNull CommandSender sender, } private void generatePaste(@NotNull CommandSender sender) { - StringBuilder mainInfo = new StringBuilder(); //todo + StringBuilder mainInfo = new StringBuilder(); mainInfo.append(Bukkit.getName()).append(" version: ").append(Bukkit.getServer().getVersion()).append('\n'); mainInfo.append("Plugin version: ").append(Minigames.getPlugin().getDescription().getVersion()).append('\n'); mainInfo.append("Java version: ").append(System.getProperty("java.version")).append('\n'); @@ -123,42 +128,50 @@ private void generatePaste(@NotNull CommandSender sender) { mainInfo.append(' ').append(plugin.getName()).append(" - ").append(plugin.getDescription().getVersion()).append('\n'); mainInfo.append(" ").append(plugin.getDescription().getAuthors()).append('\n'); } + Bukkit.getScheduler().runTaskAsynchronously(Minigames.getPlugin(), () -> { Path dataPath = Minigames.getPlugin().getDataFolder().toPath(); String apiKey = Minigames.getPlugin().getConfig().getString("pasteApiKey", null); + + PasteFile mainInfoFile = new PasteFile("mainInfo.txt", FormatCodec.TEXT_TO_TEXT.encode(mainInfo.toString())); + PasteFile config = new PasteFile("config.yml", - new PasteContent(PasteContent.ContentType.TEXT, - getFile(dataPath.resolve("config.yml")))); + FormatCodec.TEXT_TO_TEXT.encode(getFile(dataPath.resolve("config.yml"))), + HighlightLanguage.Yaml); PasteFile spigot = new PasteFile("spigot.yml", - new PasteContent(PasteContent.ContentType.TEXT, - getFile(Paths.get("spigot.yml")))); - PasteFile startupLog = new PasteFile("startup.log", new PasteContent(PasteContent.ContentType.TEXT, - PLUGIN.getStartupLog())); - PasteFile startupExceptionsLog = new PasteFile("startupExceptions.log", new PasteContent(PasteContent.ContentType.TEXT, - PLUGIN.getStartupExceptionLog())); + FormatCodec.TEXT_TO_TEXT.encode(getFile(Paths.get("spigot.yml"))), + HighlightLanguage.Yaml); + PasteFile startupLog = new PasteFile("startup.log", + FormatCodec.TEXT_TO_TEXT.encode(PLUGIN.getStartupLog())); + PasteFile startupExceptionsLog = new PasteFile("startupExceptions.log", + FormatCodec.TEXT_TO_TEXT.encode(PLUGIN.getStartupExceptionLog())); + PasteBuilder builder = new PasteBuilder(); builder.addFile(startupLog); builder.addFile(startupExceptionsLog); + try { - PasteBuilder.PasteResult result = builder + IReply reply = builder .setApiKey(apiKey) .name("Minigames Debug Outpout") .visibility(Visibility.UNLISTED) + .addFile(mainInfoFile) .addFile(spigot) .addFile(config) - .debug(Minigames.getPlugin().isDebugging()) .build(); - if (result.getPaste().isPresent()) { - Paste paste = result.getPaste().get(); - sender.sendMessage("Debug Paste: https://paste.gg/" + paste.getId()); - sender.sendMessage("Deletion Key: " + paste.getDeletionKey()); - Minigames.getCmpnntLogger().info("Paste: https://paste.gg/" + paste.getId()); - Minigames.getCmpnntLogger().info("Paste: Deletion Key: " + paste.getDeletionKey()); + + if (reply.status() == ReplyStatus.SUCCESS && reply instanceof SuccessReply successReply) { + PasteResult result = successReply.result(); + + sender.sendMessage("Debug Paste: https://paste.gg/" + result.id()); + sender.sendMessage("Deletion Key: " + result.deletionKey()); + Minigames.getCmpnntLogger().info("Paste: https://paste.gg/" + result.id()); + Minigames.getCmpnntLogger().info("Paste: Deletion Key: " + result.deletionKey()); } else { sender.sendMessage("Paste Failed."); } - } catch (InvalidPasteException e) { + } catch (InvalidPasteException | IOException e) { sender.sendMessage("Paste Failed" + e.getMessage()); Minigames.getCmpnntLogger().warn("", e); } diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/commands/HelpCommand.java b/Minigames/src/main/java/au/com/mineauz/minigames/commands/HelpCommand.java index d7acd3397..bf3781d50 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/commands/HelpCommand.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/commands/HelpCommand.java @@ -77,14 +77,14 @@ public boolean canBeConsole() { return "minigame.help"; } - private @NotNull Component makePage(@NotNull Permissible permissible, int pageNumber) { + private @NotNull Component makePage(final @NotNull Permissible permissible, final int chosenPageNumber) { List allCommands = new ArrayList<>(CommandDispatcher.getCommands()); allCommands.addAll(SetCommand.getSetCommands()); // filter per permission allCommands = allCommands.stream().filter(cmd -> cmd.getPermission() == null || permissible.hasPermission(cmd.getPermission())).toList(); final int numPages = (int) Math.ceil((float) allCommands.size() / COMMANDS_PER_SITE); - pageNumber = Math.max(1, Math.min(pageNumber, numPages)); // stay in range + final int pageNumber = Math.max(1, Math.min(chosenPageNumber, numPages)); // stay in range final List commandsOfPage = allCommands.subList(COMMANDS_PER_SITE * (pageNumber - 1), Math.min(allCommands.size(), pageNumber * COMMANDS_PER_SITE)); // command name + description + click event for detailed info diff --git a/Minigames/src/main/java/au/com/mineauz/minigames/commands/ListPlaceholder.java b/Minigames/src/main/java/au/com/mineauz/minigames/commands/ListPlaceholder.java index 0f3c06738..af1aec660 100644 --- a/Minigames/src/main/java/au/com/mineauz/minigames/commands/ListPlaceholder.java +++ b/Minigames/src/main/java/au/com/mineauz/minigames/commands/ListPlaceholder.java @@ -49,11 +49,11 @@ public boolean canBeConsole() { return "minigame.placeholders"; } - private @NotNull Component makePage(int pageNumber) { + private @NotNull Component makePage(final int choosenPageNumber) { List placeholders = new ArrayList<>(PLUGIN.getPlaceHolderManager().getRegisteredPlaceHolders()); final int numPages = (int) Math.ceil((float) placeholders.size() / PLACEHOLDERS_PER_SITE); - pageNumber = Math.max(1, Math.min(pageNumber, numPages)); // stay in range + final int pageNumber = Math.max(1, Math.min(choosenPageNumber, numPages)); // stay in range // get sublist just containing the page final List placeholdersOfPage = placeholders.subList(PLACEHOLDERS_PER_SITE * (pageNumber - 1), diff --git a/Minigames/src/main/resources/minigame.properties b/Minigames/src/main/resources/minigame.properties deleted file mode 100644 index 761ceaf47..000000000 --- a/Minigames/src/main/resources/minigame.properties +++ /dev/null @@ -1,2 +0,0 @@ -version=${project.version} -paper_version=${paper.api.version}.${paper.minor.version} \ No newline at end of file diff --git a/Minigames/src/main/resources/plugin.yml b/Minigames/src/main/resources/paper-plugin.yml similarity index 95% rename from Minigames/src/main/resources/plugin.yml rename to Minigames/src/main/resources/paper-plugin.yml index d4539dabd..3e0735305 100644 --- a/Minigames/src/main/resources/plugin.yml +++ b/Minigames/src/main/resources/paper-plugin.yml @@ -1,23 +1,31 @@ name: Minigames +version: ${version} main: au.com.mineauz.minigames.Minigames -version: ${plugin.version} -api-version: "${paper.api.version}" -author: _Razz_ Schmoller Addstar Narimm GreenSurvivors -softdepend: - - WorldEdit -description: ${project.description} +bootstrapper: au.com.mineauz.minigames.MinigamePluginBootstrap +loader: au.com.mineauz.minigames.MinigamePluginBootstrap +# noinspection YAMLSchemaValidation +api-version: "${mcVersion}" +description: ${description} +authors: + - _Razz_ + - Schmoller + - Narimm + - Addstar + - GreenSurvivors -libraries: - - org.apache.commons:commons-text:1.10.0 - - commons-io:commons-io:2.15.1 - -commands: - minigame: - description: The Minigame creation command. - usage: Invalid command. Type "/minigame help" for help - permission: minigame.minigame - permission-message: You don't have - aliases: [ mgm, minigm, mgame, mg ] +dependencies: + server: + WorldEdit: + required: false + load: AFTER + PlaceholderAPI: + # This means that your plugin will not have access to their classpath + join-classpath: false + required: false + load: BEFORE + Vault: + required: false + load: BEFORE permissions: minigame.minigame: @@ -217,7 +225,7 @@ permissions: description: Allows player to change a minigame to use a permission to join default: op minigame.set.minscore: - descripition: Allows a player to set the minimum score for scoring minigames. + description: Allows a player to set the minimum score for scoring minigames. default: op minigame.set.maxscore: description: Allows a player to set the maximum score for scoring Minigames. @@ -481,4 +489,5 @@ permissions: default: true minigame.backend: description: Allows admins to change and export the backend - default: op \ No newline at end of file + default: op + diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/EventsTest.java b/Minigames/src/test/java/au/com/mineauz/minigames/EventsTest.java deleted file mode 100644 index bd1b52fb8..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/EventsTest.java +++ /dev/null @@ -1,70 +0,0 @@ -package au.com.mineauz.minigames; - -import au.com.mineauz.minigames.commands.JoinCommand; -import au.com.mineauz.minigames.gametypes.MinigameType; -import au.com.mineauz.minigames.helpers.TestHelper; -import au.com.mineauz.minigames.mechanics.GameMechanics; -import au.com.mineauz.minigames.minigame.Minigame; -import au.com.mineauz.minigames.objects.MinigamePlayer; -import au.com.mineauz.minigames.objects.TestPlayer; -import au.com.mineauz.minigames.objects.TestWorld; -import be.seeseemelk.mockbukkit.MockBukkit; -import be.seeseemelk.mockbukkit.ServerMock; -import be.seeseemelk.mockbukkit.WorldMock; -import be.seeseemelk.mockbukkit.entity.PlayerMock; -import net.kyori.adventure.text.Component; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; - -import java.util.UUID; - -public class EventsTest { - private ServerMock server; - private Minigames plugin; - private Minigame game; - - @BeforeEach - public void setUp() { - try { - server = MockBukkit.mock(); - } catch (IllegalStateException e) { - server = MockBukkit.getMock(); - } - - server.addPlayer(new TestPlayer(server, "testplayer", UUID.randomUUID())); - plugin = MockBootstrap.createPluginWithTestContext(server); - Minigames.getPlugin().getConfig().set("saveInventory", true); - TestWorld testworld = new TestWorld(); - testworld.setName("GAMES"); - MockBukkit.getMock().addWorld(testworld); - plugin.toggleDebug(); - WorldMock world = (WorldMock) MockBukkit.getMock().getWorld("GAMES"); - game = TestHelper.createMinigame(plugin, world, MinigameType.MULTIPLAYER, GameMechanics.MgMechanics.KILLS.getMechanic()); - - } - - public void onPlayerDisconnect() { - PlayerMock mock = server.getPlayer(0); - mock.setLocation(server.getWorld("GAMES").getSpawnLocation()); - PlayerJoinEvent event = new PlayerJoinEvent(mock, Component.text("Joined the Server")); - server.getPluginManager().callEvent(event); - MinigamePlayer player = plugin.getPlayerManager().getMinigamePlayer(mock); - JoinCommand command = new JoinCommand(); - String[] args = new String[]{game.getName()}; - command.onCommand(mock, args); - Assertions.assertTrue(player.isInMinigame()); - PlayerQuitEvent event2 = new PlayerQuitEvent(mock, Component.text("has left the game")); - server.getPluginManager().callEvent(event2); - Assertions.assertFalse(player.isInMinigame()); - Assertions.assertFalse(plugin.getPlayerManager().hasMinigamePlayer(player.getUUID())); - } - - public void onPlayerConnect() { - PlayerMock mock = server.addPlayer(); - PlayerJoinEvent event = new PlayerJoinEvent(mock, Component.text("Joined the Server")); - server.getPluginManager().callEvent(event); - Assertions.assertTrue(plugin.getPlayerManager().hasMinigamePlayer(mock.getUniqueId())); - } -} \ No newline at end of file diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/MinigamePlayerManagerTest.java b/Minigames/src/test/java/au/com/mineauz/minigames/MinigamePlayerManagerTest.java deleted file mode 100644 index 16b77eaa1..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/MinigamePlayerManagerTest.java +++ /dev/null @@ -1,153 +0,0 @@ -package au.com.mineauz.minigames; - -import au.com.mineauz.minigames.gametypes.MinigameType; -import au.com.mineauz.minigames.helpers.TestHelper; -import au.com.mineauz.minigames.mechanics.GameMechanics; -import au.com.mineauz.minigames.minigame.Minigame; -import au.com.mineauz.minigames.objects.TestPlayer; -import be.seeseemelk.mockbukkit.MockBukkit; -import be.seeseemelk.mockbukkit.ServerMock; -import be.seeseemelk.mockbukkit.WorldMock; -import be.seeseemelk.mockbukkit.entity.PlayerMock; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.UUID; - -public class MinigamePlayerManagerTest { - private ServerMock server; - private Minigames plugin; - private Minigame game; - - @BeforeEach - public void Setup() { - try { - server = MockBukkit.mock(); - } catch (IllegalStateException e) { - server = MockBukkit.getMock(); - } - server.addPlayer(new TestPlayer(server, "Silverzahn", UUID.randomUUID())); - WorldMock world = new WorldMock(); - world.setName("GAMES"); - MockBukkit.getMock().addWorld(world); - plugin = MockBootstrap.createPluginWithTestContext(server); - plugin.toggleDebug(); - game = TestHelper.createMinigame(plugin, world, MinigameType.MULTIPLAYER, GameMechanics.MgMechanics.KILLS.getMechanic()); - } - - @AfterEach - public void TearDown() { - try { - MockBukkit.unmock(); - server = null; - plugin = null; - } catch (Exception ignored) { - } - } - - @Test - public void joinMinigame() { - final PlayerMock mock = server.getPlayer(0); - plugin.getPlayerManager().addMinigamePlayer(mock); - Assertions.assertTrue(plugin.getPlayerManager().hasMinigamePlayer(mock.getUniqueId())); - plugin.getPlayerManager().joinMinigame(plugin.getPlayerManager().getMinigamePlayer(mock), game, false, 0.0); - Assertions.assertTrue(plugin.getPlayerManager().getMinigamePlayer(mock.getUniqueId()).isInMinigame()); - } - - /*@Test - public void spectateMinigame() { - - } - - @Test - public void startMPMinigame() { - } - - @Test - public void startMPMinigame1() { - } - - @Test - public void balanceGame() { - } - - @Test - public void teleportToStart() { - } - - @Test - public void getStartLocations() { - } - - @Test - public void revertToCheckpoint() { - } - */ - - /*public void quitMinigame() { - final PlayerMock mock = server.addPlayer(); - mock.setOutputOnSend(false); - plugin.getPlayerManager().addMinigamePlayer(mock); - assertTrue(plugin.getPlayerManager().hasMinigamePlayer(mock.getUniqueId())); - plugin.getPlayerManager().joinMinigame(plugin.getPlayerManager().getMinigamePlayer(mock), game, false, 0.0); - assertTrue(plugin.getPlayerManager().getMinigamePlayer(mock.getUniqueId()).isInMinigame()); - plugin.getPlayerManager().quitMinigame(plugin.getPlayerManager().getMinigamePlayer(mock), false); - assertFalse(plugin.getPlayerManager().getMinigamePlayer(mock.getUniqueId()).isInMinigame()); - MockBukkit.getMock().getScheduler().performTicks(20); - - }*/ - /* - @Test - public void endMinigame() { - } - - @Test - public void endMinigame1() { - } - - @Test - public void broadcastEndGame() { - } - - @Test - public void playerInMinigame() { - } - - @Test - public void playersInMinigame() { - } - - @Test - public void addMinigamePlayer() { - } - - @Test - public void removeMinigamePlayer() { - } - - @Test - public void getMinigamePlayer() { - } - - @Test - public void getMinigamePlayer1() { - } - - @Test - public void getMinigamePlayer2() { - } - - @Test - public void getAllMinigamePlayers() { - } - - @Test - public void hasMinigamePlayer() { - } - - @Test - public void hasMinigamePlayer1() { - }*/ -} \ No newline at end of file diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/MinigameUtilsTest.java b/Minigames/src/test/java/au/com/mineauz/minigames/MinigameUtilsTest.java deleted file mode 100644 index 28d79c16a..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/MinigameUtilsTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package au.com.mineauz.minigames; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.junit.Test; -import org.junit.jupiter.api.Assertions; - -import java.util.regex.Pattern; - -public class MinigameUtilsTest { - - @Test - public void TestSanitize() { - Assertions.assertNull(this.sanitize("EnderJump2.0")); - Assertions.assertEquals("TestGame", this.sanitize("TestGame")); - Assertions.assertEquals("asdasgfar231123asd__", this.sanitize("asdasgfar231123asd__")); - } - - private @Nullable String sanitize(@NotNull String input) { - final Pattern pattern = Pattern.compile("^[a-zA-Z\\d_]+$"); - return !pattern.matcher(input).matches() ? null : input; - } -} diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/MinigamesTest.java b/Minigames/src/test/java/au/com/mineauz/minigames/MinigamesTest.java deleted file mode 100644 index 62c3f9a01..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/MinigamesTest.java +++ /dev/null @@ -1,92 +0,0 @@ -package au.com.mineauz.minigames; - -import au.com.mineauz.minigames.gametypes.MinigameType; -import au.com.mineauz.minigames.helpers.TestHelper; -import au.com.mineauz.minigames.mechanics.GameMechanics; -import au.com.mineauz.minigames.minigame.Minigame; -import au.com.mineauz.minigames.minigame.modules.LobbySettingsModule; -import au.com.mineauz.minigames.objects.MinigamePlayer; -import au.com.mineauz.minigames.objects.TestPlayer; -import au.com.mineauz.minigames.objects.TestWorld; -import be.seeseemelk.mockbukkit.MockBukkit; -import be.seeseemelk.mockbukkit.ServerMock; -import be.seeseemelk.mockbukkit.WorldMock; -import be.seeseemelk.mockbukkit.entity.PlayerMock; -import org.bukkit.Location; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.UUID; - -public class MinigamesTest { - private ServerMock server; - private Minigames plugin; - private PlayerMock player; - private Minigame game; - private WorldMock world; - private Location spawn; - private Location lobby; - private Location start; - private Location quit; - - @BeforeEach - public void Setup() { - try { - server = MockBukkit.mock(); - } catch (IllegalStateException e) { - server = MockBukkit.getMock(); - } - - TestWorld testworld = new TestWorld(); - testworld.setName("GAMES"); - MockBukkit.getMock().addWorld(testworld); - - plugin = MockBootstrap.createPluginWithTestContext(server); - - server.getPluginManager().registerLoadedPlugin(plugin); - server.getPluginManager().enablePlugin(plugin); - plugin.toggleDebug(); - world = (WorldMock) MockBukkit.getMock().getWorld("GAMES"); - spawn = world.getSpawnLocation(); - TestHelper.createMinigame(plugin, world, MinigameType.MULTIPLAYER, GameMechanics.MgMechanics.CTF.getMechanic()); - player = new TestPlayer(MockBukkit.getMock(), "TestPlayer", UUID.randomUUID()); - player.setLocation(spawn); - MockBukkit.getMock().addPlayer(player); - } - - @Test - public void onJoinMinigame() { - Assertions.assertNotSame(player.getLocation(), game.getLobbyLocation()); - plugin.getPlayerManager().addMinigamePlayer(player); - MinigamePlayer mplayer = plugin.getPlayerManager().getMinigamePlayer(player.getUniqueId()); - plugin.getPlayerManager().joinMinigame(mplayer, game, false, 0.0); - LobbySettingsModule module = LobbySettingsModule.getMinigameModule(game); - player.assertLocation(lobby, 0.0); - Assertions.assertTrue(module.isTeleportOnStart()); - Assertions.assertNotSame(game.getStartLocations().indexOf(player.getLocation()), -1); - server.getScheduler().performTicks(200L); - player.assertLocation(start, 0); - server.getScheduler().performTicks(200L); - player.assertLocation(quit, 0); - } - - @Test - public void onQuitMinigame() { - plugin.getPlayerManager().addMinigamePlayer(player); - MinigamePlayer mplayer = plugin.getPlayerManager().getMinigamePlayer(player.getUniqueId()); - plugin.getPlayerManager().joinMinigame(mplayer, game, false, 0D); - player.assertLocation(lobby, 0); - Assertions.assertTrue(plugin.getPlayerManager().getMinigamePlayer(player.getUniqueId()).isInMinigame()); - plugin.getPlayerManager().quitMinigame(plugin.getPlayerManager().getMinigamePlayer(player), false); - player.assertLocation(quit, 0); - Assertions.assertFalse(plugin.getPlayerManager().getMinigamePlayer(player.getUniqueId()).isInMinigame()); - } - - @Test - public void testOnDisable() { - Assertions.assertTrue(plugin.isEnabled()); - server.getPluginManager().disablePlugin(plugin); - Assertions.assertFalse(plugin.isEnabled()); - } -} \ No newline at end of file diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/MockBootstrap.java b/Minigames/src/test/java/au/com/mineauz/minigames/MockBootstrap.java deleted file mode 100644 index 59fe9669d..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/MockBootstrap.java +++ /dev/null @@ -1,74 +0,0 @@ -package au.com.mineauz.minigames; - -import be.seeseemelk.mockbukkit.ServerMock; -import io.papermc.paper.plugin.bootstrap.BootstrapContext; -import io.papermc.paper.plugin.configuration.PluginMeta; -import io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager; -import net.kyori.adventure.text.logger.slf4j.ComponentLogger; -import org.bukkit.plugin.InvalidDescriptionException; -import org.bukkit.plugin.PluginDescriptionFile; -import org.jetbrains.annotations.NotNull; - -import java.io.FileNotFoundException; -import java.io.IOException; -import java.net.URL; -import java.nio.file.Path; -import java.util.Enumeration; - -public class MockBootstrap { - public static @NotNull Minigames createPluginWithTestContext(@NotNull ServerMock server) { - return new MinigameBootstrap().createPlugin(new BootstrapContext() { //todo - @Override - public @NotNull PluginMeta getPluginMeta() { - return null; - } - - @Override - public @NotNull LifecycleEventManager getLifecycleManager() { - return null; - } - - @Override - public @NotNull PluginMeta getConfiguration() { - Enumeration resources; - try { - resources = Minigames.class.getClassLoader().getResources("plugin.yml"); //todo use paper plugin yml - - while (resources.hasMoreElements()) { - URL url = resources.nextElement(); - PluginDescriptionFile description = new PluginDescriptionFile(url.openStream()); - - String mainClass = description.getMain(); - if (Minigames.class.getClassLoader().getName().equals(mainClass)) - return description; - } - } catch (InvalidDescriptionException | IOException e) { - throw new RuntimeException(e); - } - - throw new RuntimeException(new FileNotFoundException("plugin.yml")); - } - - @Override - public @NotNull Path getDataDirectory() { - PluginMeta description = getConfiguration(); - - try { - return Path.of(server.getPluginManager().createTemporaryDirectory(description.getName() + "-" + description.getVersion()).getPath()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - @Override - public @NotNull ComponentLogger getLogger() { - return ComponentLogger.logger(Minigames.class); - } - - @Override - public @NotNull Path getPluginSource() { - return Path.of(Minigames.class.getProtectionDomain().getCodeSource().getLocation().getPath()); - } - }); - } -} diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/helpers/TestHelper.java b/Minigames/src/test/java/au/com/mineauz/minigames/helpers/TestHelper.java deleted file mode 100644 index dc5b656e1..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/helpers/TestHelper.java +++ /dev/null @@ -1,50 +0,0 @@ -package au.com.mineauz.minigames.helpers; - -import au.com.mineauz.minigames.Minigames; -import au.com.mineauz.minigames.gametypes.MinigameType; -import au.com.mineauz.minigames.mechanics.GameMechanicBase; -import au.com.mineauz.minigames.minigame.Minigame; -import au.com.mineauz.minigames.objects.MockSign; -import au.com.mineauz.minigames.objects.SignBlockMock; -import be.seeseemelk.mockbukkit.WorldMock; -import be.seeseemelk.mockbukkit.block.BlockMock; -import be.seeseemelk.mockbukkit.block.data.BlockDataMock; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.data.BlockData; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; - -public class TestHelper { - public static @NotNull Minigame createMinigame(@NotNull Minigames plugin, WorldMock world, @NotNull MinigameType type, @NotNull GameMechanicBase mechanic) { - Location start = new Location(world, 0, 21, 0); - Minigame game = new Minigame("TestGame", MinigameType.MULTIPLAYER, start); - game.setType(type); - game.setMechanic(mechanic); - game.setDeathDrops(true); - Location quit = new Location(world, 0, 20, 0); - game.setQuitLocation(quit); - Location lobby = new Location(world, 0, 5., 0); - game.setLobbyLocation(lobby); - Location end = new Location(world, 0, 25, 0); - game.setEndLocation(end); - game.setEnabled(true); - game.setStartWaitTime(5); - game.setTimer(5); - game.setMaxScore(3); - game.setMaxPlayers(2); - plugin.getMinigameManager().addMinigame(game); - return game; - } - - public static @NotNull BlockMock createSignBlock(@NotNull Map<@NotNull Integer, @NotNull String> lines, @NotNull WorldMock world) { - MockSign sign = new MockSign(Material.CRIMSON_SIGN, true); - for (Map.Entry e : lines.entrySet()) { - sign.setLine(e.getKey(), e.getValue()); - } - - BlockData bData = new BlockDataMock(Material.CRIMSON_SIGN); - return new SignBlockMock(Material.CRIMSON_SIGN, new Location(world, 10, 40, 10), sign, bData); - } -} diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/managers/MessageManagerTest.java b/Minigames/src/test/java/au/com/mineauz/minigames/managers/MessageManagerTest.java deleted file mode 100644 index 76704d8aa..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/managers/MessageManagerTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package au.com.mineauz.minigames.managers; - -import au.com.mineauz.minigames.managers.language.MinigameMessageManager; -import au.com.mineauz.minigames.managers.language.langkeys.MgMiscLangKey; -import net.kyori.adventure.text.Component; -import org.junit.Test; -import org.junit.jupiter.api.Assertions; - -import java.io.File; -import java.util.Locale; - -public class MessageManagerTest { - - @Test - public void testMessageBundleLoading() { - MinigameMessageManager.registerCoreLanguage(new File("test.messages"), Locale.US); - Component message = MinigameMessageManager.getMgMessage(MgMiscLangKey.PLAYER_BET_PLAYERMSG); - Assertions.assertEquals("You have placed your bet, good luck!", message); //todo - MinigameMessageManager.deRegisterMessageFile("minigames"); - Locale.setDefault(Locale.CANADA); - MinigameMessageManager.registerCoreLanguage(new File("test.messages"), Locale.FRANCE); - message = MinigameMessageManager.getMgMessage(MgMiscLangKey.PLAYER_BET_PLAYERMSG); - Assertions.assertEquals("You have placed your bet, good luck!", message); //todo - } - - @Test - public void testMessageBundleLoadingAU() { - MinigameMessageManager.registerCoreLanguage(new File("test.messages"), Locale.forLanguageTag("en-AU")); - Component message = MinigameMessageManager.getMgMessage(MgMiscLangKey.PLAYER_BET_PLAYERMSG); - Assertions.assertEquals("You have placed your wager, good luck!", message); //todo - } -} \ No newline at end of file diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/objects/MockSign.java b/Minigames/src/test/java/au/com/mineauz/minigames/objects/MockSign.java deleted file mode 100644 index a5955013e..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/objects/MockSign.java +++ /dev/null @@ -1,59 +0,0 @@ -package au.com.mineauz.minigames.objects; - -import be.seeseemelk.mockbukkit.block.state.SignMock; -import org.bukkit.Material; -import org.bukkit.block.Sign; -import org.bukkit.block.sign.Side; -import org.jetbrains.annotations.NotNull; - -import java.util.LinkedList; - -public class MockSign extends SignMock implements Sign { - private final LinkedList lines = new LinkedList<>(); - private boolean edittable; - - public MockSign(@NotNull Material material, boolean edittable) { - super(material); - - this.edittable = edittable; - lines.add(""); - lines.addLast(""); - lines.addLast(""); - lines.addLast(""); - } - - @Override - @Deprecated - public String @NotNull [] getLines() { - String[] out = new String[lines.size()]; - return lines.toArray(out); - } - - @Override - @Deprecated - public @NotNull String getLine(int i) throws IndexOutOfBoundsException { - return lines.get(i); - } - - - @Override - @Deprecated - public void setLine(int i, @NotNull String s) throws IndexOutOfBoundsException { - lines.set(i, s); - } - - @Override - public boolean isEditable() { - return edittable; - } - - @Override - public void setEditable(boolean b) { - edittable = b; - } - - @Override - public @NotNull Side getInteractableSideFor(double x, double z) { - return Side.FRONT; - } -} diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/objects/SignBlockMock.java b/Minigames/src/test/java/au/com/mineauz/minigames/objects/SignBlockMock.java deleted file mode 100644 index d5bdda0e9..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/objects/SignBlockMock.java +++ /dev/null @@ -1,40 +0,0 @@ -package au.com.mineauz.minigames.objects; - -import be.seeseemelk.mockbukkit.block.BlockMock; -import be.seeseemelk.mockbukkit.block.state.BlockStateMock; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.BlockState; -import org.bukkit.block.data.BlockData; -import org.jetbrains.annotations.NotNull; - -public class SignBlockMock extends BlockMock { - private final BlockData data; - private BlockStateMock state; - - /** - * Creates a basic block with a given material that is also linked to a specific location. - * - * @param material The material of the block. - * @param location The location of the block. Can be {@code null} if not needed. - */ - public SignBlockMock(@NotNull Material material, Location location, BlockStateMock state, BlockData data) { - super(material, location); - this.state = state; - this.data = data; - } - - @Override - public @NotNull BlockData getBlockData() { - return data; - } - - @Override - public @NotNull BlockState getState() { - return state; - } - - public void setBlockState(BlockStateMock state) { - this.state = state; - } -} diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestMinigame.java b/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestMinigame.java deleted file mode 100644 index d1e7bec0b..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestMinigame.java +++ /dev/null @@ -1,36 +0,0 @@ -package au.com.mineauz.minigames.objects; - -import au.com.mineauz.minigames.gametypes.MinigameType; -import au.com.mineauz.minigames.managers.MinigameManager; -import au.com.mineauz.minigames.mechanics.GameMechanics; -import au.com.mineauz.minigames.minigame.Minigame; -import au.com.mineauz.minigames.minigame.TeamColor; -import au.com.mineauz.minigames.minigame.modules.TeamsModule; -import org.bukkit.Location; -import org.bukkit.World; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -/** - * Created for use for the Add5tar MC Minecraft server - * Created by benjamincharlton on 24/12/2018. - */ -public class TestMinigame extends Minigame { - public TestMinigame(@NotNull String name, @NotNull MinigameType type, @NotNull Location start, World world, @NotNull MinigameManager manager, @Nullable Location quit, @NotNull Location end, @Nullable Location lobby) { - super(name, type, start); - setType(MinigameType.MULTIPLAYER); - setMechanic(GameMechanics.MgMechanics.CTF.getMechanic()); - setDeathDrops(true); - setQuitLocation(quit); - setLobbyLocation(lobby); - setEndLocation(end); - setEnabled(true); - setStartWaitTime(5); - setTimer(5); - setMaxScore(3); - setMaxPlayers(2); - TeamsModule.getMinigameModule(this).addTeam(TeamColor.BLUE); - TeamsModule.getMinigameModule(this).addTeam(TeamColor.RED); - manager.addMinigame(this); - } -} diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestPlayer.java b/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestPlayer.java deleted file mode 100644 index abdbc5ed5..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestPlayer.java +++ /dev/null @@ -1,244 +0,0 @@ -package au.com.mineauz.minigames.objects; - -import au.com.mineauz.minigames.managers.language.MinigameMessageManager; -import be.seeseemelk.mockbukkit.ServerMock; -import be.seeseemelk.mockbukkit.entity.PlayerMock; -import be.seeseemelk.mockbukkit.scoreboard.ScoreboardMock; -import org.bukkit.Location; -import org.bukkit.Sound; -import org.bukkit.SoundCategory; -import org.bukkit.WeatherType; -import org.bukkit.potion.PotionEffect; -import org.bukkit.scoreboard.Scoreboard; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.UUID; - -/** - * Created for use for the Add5tar MC Minecraft server - * Created by benjamincharlton on 23/12/2018. - */ -public class TestPlayer extends PlayerMock { - private final @NotNull List<@NotNull PotionEffect> effects = new ArrayList<>(); - private Long playerTime; - private Long playerTimeoffset; - private int foodLevel = 10; - private float saturation = 10; - private float exp; - private int level; - private float fallDistance; - private boolean flying; - private boolean allowFlight; - private float walkSpeed; - private float flyspeed; - private int noDamageTicks; - private @NotNull WeatherType playerWeather = WeatherType.CLEAR; - private @NotNull Scoreboard scoreboard = new ScoreboardMock(); - - public TestPlayer(@NotNull ServerMock server, @NotNull String name, @NotNull UUID uuid) { - super(server, name, uuid); - } - - @Override - public void setPlayerTime(long time, boolean relative) { - if (relative) { - playerTimeoffset = time - this.getWorld().getTime(); - } else { - playerTime = time; - } - } - - @Override - public long getPlayerTime() { - return playerTime + playerTimeoffset; - } - - @Override - public long getPlayerTimeOffset() { - return playerTimeoffset; - } - - @Override - public boolean isPlayerTimeRelative() { - return playerTimeoffset > 0; - } - - @Override - public void resetPlayerTime() { - playerTime = this.getWorld().getTime(); - playerTimeoffset = 0L; - } - - @Override - public @NotNull WeatherType getPlayerWeather() { - return playerWeather; - } - - @Override - public void setPlayerWeather(@NotNull WeatherType type) { - playerWeather = type; - } - - @Override - public void resetPlayerWeather() { - playerWeather = WeatherType.CLEAR; - } - - @Override - public int getNoDamageTicks() { - return noDamageTicks; - } - - @Override - public void setNoDamageTicks(int ticks) { - noDamageTicks = ticks; - } - - @Override - public @NotNull Collection getActivePotionEffects() { - return effects; - } - - @Override - public void playSound(@NotNull Location location, @NotNull Sound sound, float volume, float pitch) { - this.playSound(location, sound, null, volume, pitch); - } - - @Override - public void playSound(@NotNull Location location, @NotNull String sound, float volume, float pitch) { - this.playSound(location, sound, null, volume, pitch); - } - - @Override - public void playSound(@NotNull Location location, @NotNull Sound sound, @Nullable SoundCategory category, float volume, float pitch) { - this.playSound(location, sound.name(), category, volume, pitch); - } - - @Override - public void playSound(@NotNull Location location, @NotNull String sound, @Nullable SoundCategory category, float volume, float pitch) { - String catString; - if (category == null) catString = "null"; - else catString = category.name(); - MinigameMessageManager.debugMessage("Sound played:" + sound.toUpperCase() + " from " + catString + " at Vol" + volume + ":" + pitch); - } - - @Override - public void updateInventory() { - MinigameMessageManager.debugMessage(getInventory().toString()); - } - - @Override - public float getSaturation() { - return saturation; - } - - @Override - public void setSaturation(float value) { - this.saturation = value; - } - - @Override - public int getFoodLevel() { - return foodLevel; - } - - @Override - public void setFoodLevel(int value) { - this.foodLevel = value; - } - - @Override - public @NotNull Scoreboard getScoreboard() { - return scoreboard; - } - - @Override - public void setScoreboard(@NotNull Scoreboard scoreboard) throws IllegalArgumentException, IllegalStateException { - this.scoreboard = scoreboard; - } - - @Override - public void giveExp(int amount) { - this.exp = this.exp + amount; - } - - @Override - public void giveExpLevels(int amount) { - super.giveExpLevels(amount); - } - - @Override - public float getExp() { - return exp; - } - - @Override - public void setExp(float exp) { - this.exp = exp; - } - - @Override - public int getLevel() { - return level; - } - - @Override - public void setLevel(int level) { - this.level = level; - } - - @Override - public void setTotalExperience(int exp) { - super.setTotalExperience(exp); - } - - @Override - public void setFlying(boolean value) { - this.flying = value; - } - - @Override - public void setWalkSpeed(float value) throws IllegalArgumentException { - this.walkSpeed = value; - } - - @Override - public boolean getAllowFlight() { - return allowFlight; - } - - @Override - public void setAllowFlight(boolean flight) { - this.allowFlight = flight; - } - - @Override - public float getFlySpeed() { - return flyspeed; - } - - @Override - public void setFlySpeed(float value) throws IllegalArgumentException { - super.setFlySpeed(value); - } - - @Override - public boolean teleport(@NotNull Location location) { - MinigameMessageManager.debugMessage("Called Teleport on " + this.getName() + " to " + location.toString()); - return super.teleport(location); - } - - @Override - public void setFallDistance(float distance) { - this.fallDistance = distance; - } - - @Override - public boolean isDead() { - return false; - } -} diff --git a/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestWorld.java b/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestWorld.java deleted file mode 100644 index bdadfd0aa..000000000 --- a/Minigames/src/test/java/au/com/mineauz/minigames/objects/TestWorld.java +++ /dev/null @@ -1,28 +0,0 @@ -package au.com.mineauz.minigames.objects; - -import be.seeseemelk.mockbukkit.WorldMock; - -public class TestWorld extends WorldMock { - private long worldTime = 0L; - private long fullTime = 0L; - - @Override - public long getTime() { - return worldTime; - } - - @Override - public void setTime(long time) { - worldTime = time; - } - - @Override - public long getFullTime() { - return fullTime; - } - - @Override - public void setFullTime(long time) { - fullTime = time; - } -} diff --git a/README.md b/README.md index 6b08129bd..fe28ff5a3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,4 @@ -# This branch prematurely merges paper + Devfeuer, because the lang changes profit from a fix over there - -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/9ebc703ec975419ebe693158241259cd)](https://app.codacy.com/app/Narimm/Minigames?utm_source=github.com&utm_medium=referral&utm_content=AddstarMC/Minigames&utm_campaign=Badge_Grade_Settings) -[![Stories in Ready](https://badge.waffle.io/AddstarMC/Minigames.png?label=ready&title=Ready)](https://waffle.io/AddstarMC/Minigames?utm_source=badge) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/9ebc703ec975419ebe693158241259cd)](https://app.codacy.com/gh/Narimm/Minigames?utm_source=github.com&utm_medium=referral&utm_content=AddstarMC/Minigames&utm_campaign=Badge_Grade) The Minigames plugin for CraftBukkit servers. diff --git a/Regions/build.gradle.kts b/Regions/build.gradle.kts index 9ebf39e8d..e7c8f0564 100644 --- a/Regions/build.gradle.kts +++ b/Regions/build.gradle.kts @@ -1,9 +1,4 @@ -/* - * This file was generated by the Gradle 'init' task. - */ - plugins { - id("buildlogic.java-conventions") } dependencies { diff --git a/Regions/pom.xml b/Regions/pom.xml deleted file mode 100644 index 542551081..000000000 --- a/Regions/pom.xml +++ /dev/null @@ -1,71 +0,0 @@ - - 4.0.0 - - au.com.mineauz - MinigamesProject - 1.21-SNAPSHOT - ../pom.xml - - Minigames-Regions - Minigames-Regions - An addon to Minigames to allow regions and nodes to have triggers and actions - jar - - - au.com.mineauz - Minigames - ${project.version} - - - - - - - . - true - src/main/resources - - plugin.yml - *.properties - - - - - src/main/java - src/test/java - - - org.apache.maven.plugins - maven-source-plugin - 3.3.1 - - - attach-sources - verify - - jar-no-fork - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 21 - 21 - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.4.2 - - - - - diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index 018784784..000000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - */ - -plugins { - // Support convention plugins written in Kotlin. Convention plugins are build scripts in 'src/main' that automatically become available as plugins in the main build. - `kotlin-dsl` -} - -repositories { - // Use the plugin portal to apply community plugins in convention plugins. - gradlePluginPortal() -} diff --git a/buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts deleted file mode 100644 index f2a221396..000000000 --- a/buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - */ - -plugins { - `java-library` - `maven-publish` -} - -repositories { - mavenLocal() - maven { - url = uri("https://maven.addstar.com.au/artifactory/ext-release-local") - } - - maven { - url = uri("https://maven.addstar.com.au/artifactory/ext-snapshot-local") - } - - maven { - url = uri("https://repo.papermc.io/repository/maven-public/") - } - - maven { - url = uri("https://repo1.maven.org/maven2/") - } - - maven { - url = uri("https://jcenter.bintray.com") - } - - maven { - url = uri("https://repo.maven.apache.org/maven2/") - } - - maven { - url = uri("https://papermc.io/repo/repository/maven-public/") - } - - maven { - url = uri("https://repo.codemc.org/repository/maven-public") - } - - maven { - url = uri("https://repo.extendedclip.com/content/repositories/placeholderapi/") - } - - maven { - url = uri("https://jitpack.io") - } - - maven { - url = uri("https://maven.enginehub.org/repo/") - } -} - -dependencies { - testImplementation("junit:junit:4.13.2") - compileOnly("io.papermc.paper:paper-api:1.21-R0.1-SNAPSHOT") - compileOnly("org.jetbrains:annotations:24.1.0") -} - -group = "au.com.mineauz" -version = "1.21-SNAPSHOT" -java.sourceCompatibility = JavaVersion.VERSION_1_8 - -publishing { - publications.create("maven") { - from(components["java"]) - } -} - -tasks.withType() { - options.encoding = "UTF-8" -} - -tasks.withType() { - options.encoding = "UTF-8" -} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 000000000..ecf3a84cb --- /dev/null +++ b/gradle.properties @@ -0,0 +1,2 @@ +mcVersion = 1.21 +release = true \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml deleted file mode 100644 index d3c9e856f..000000000 --- a/gradle/libs.versions.toml +++ /dev/null @@ -1,28 +0,0 @@ -# This file was generated by the Gradle 'init' task. -# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format - -[versions] -com-github-milkbowl-vaultapi = "1.7.1" -com-github-seeseemelk-mockbukkit-v1-v20 = "3.93.2" -com-mysql-mysql-connector-j = "9.0.0" -com-sk89q-worldedit-worldedit-bukkit = "7.3.4-SNAPSHOT" -commons-io-commons-io = "2.16.1" -me-clip-placeholderapi = "2.11.6" -org-apache-commons-commons-lang3 = "3.15.0" -org-apache-commons-commons-text = "1.12.0" -org-bstats-bstats-bukkit = "3.0.2" -org-kitteh-paste-gg-api = "1.0.0-SNAPSHOT" -org-xerial-sqlite-jdbc = "3.46.0.0" - -[libraries] -com-github-milkbowl-vaultapi = { module = "com.github.MilkBowl:VaultAPI", version.ref = "com-github-milkbowl-vaultapi" } -com-github-seeseemelk-mockbukkit-v1-v20 = { module = "com.github.seeseemelk:MockBukkit-v1.20", version.ref = "com-github-seeseemelk-mockbukkit-v1-v20" } -com-mysql-mysql-connector-j = { module = "com.mysql:mysql-connector-j", version.ref = "com-mysql-mysql-connector-j" } -com-sk89q-worldedit-worldedit-bukkit = { module = "com.sk89q.worldedit:worldedit-bukkit", version.ref = "com-sk89q-worldedit-worldedit-bukkit" } -commons-io-commons-io = { module = "commons-io:commons-io", version.ref = "commons-io-commons-io" } -me-clip-placeholderapi = { module = "me.clip:placeholderapi", version.ref = "me-clip-placeholderapi" } -org-apache-commons-commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "org-apache-commons-commons-lang3" } -org-apache-commons-commons-text = { module = "org.apache.commons:commons-text", version.ref = "org-apache-commons-commons-text" } -org-bstats-bstats-bukkit = { module = "org.bstats:bstats-bukkit", version.ref = "org-bstats-bstats-bukkit" } -org-kitteh-paste-gg-api = { module = "org.kitteh:paste-gg-api", version.ref = "org-kitteh-paste-gg-api" } -org-xerial-sqlite-jdbc = { module = "org.xerial:sqlite-jdbc", version.ref = "org-xerial-sqlite-jdbc" } diff --git a/minigamesdistribution/pom.xml b/minigamesdistribution/pom.xml deleted file mode 100644 index a9cc89847..000000000 --- a/minigamesdistribution/pom.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - MinigamesProject - au.com.mineauz - 1.21-SNAPSHOT - - minigames-distribution - Minigames-Pack - 4.0.0 - pom - - - au.com.mineauz - Minigames - ${project.parent.version} - - - au.com.mineauz - Minigames-Regions - ${project.parent.version} - - - - Minigames-Pack-${project.parent.version} - - - maven-assembly-plugin - - - distro-assembly - package - - single - - - - src/assembly/bin.xml - - true - - - - - - maven-source-plugin - 3.3.1 - - true - - - - - diff --git a/pom.xml b/pom.xml deleted file mode 100644 index b8e1dbea3..000000000 --- a/pom.xml +++ /dev/null @@ -1,240 +0,0 @@ - - 4.0.0 - au.com.mineauz - MinigamesProject - 1.21-SNAPSHOT - pom - Minigames-Project - https://www.spigotmc.org/resources/minigames.19687/ - - scm:git:git@github.com:AddstarMC/Minigames.git - scm:git:git@github.com:AddstarMC/Minigames.git - https://github.com/AddstarMC/Minigames - HEAD - - - UTF-8 - - ${project.version}-${build.number} - false - ${paper.api.version}-R0.1-SNAPSHOT - 1.21 - 0 - ${env.CODACY_API_TOKEN} - - ${env.TRAVIS_COMMIT} - - - - - - Razz - Razz - http://github.com/Razz - - emeritus - - - - AddstarMC - AddstarMC - http://github.com/AddstarMC - - developer - - 10 - - - GreenSurvivors - GreenSurvivors Team - http://github.com/GreenSurvivors - - developer - maintainer - - - - - - MIT License - https://opensource.org/licenses/MIT - - - - - maven.addstar.com.au - maven.addstar.com.au-releases - https://maven.addstar.com.au/artifactory/ext-release-local - - - maven.addstar.com.au - maven.addstar.com.au-snapshots - https://maven.addstar.com.au/artifactory/ext-snapshot-local - - - - Minigames - Regions - minigamesdistribution - - - - - addstar-repo - https://maven.addstar.com.au/artifactory/ext-release-local - - false - - - - addstar-snapshot-repo - https://maven.addstar.com.au/artifactory/ext-snapshot-local - - true - - - false - - - - papermc - https://repo.papermc.io/repository/maven-public/ - - - - maven-central - https://repo1.maven.org/maven2/ - - - - false - - jcenter - bintray - https://jcenter.bintray.com - - - - - io.papermc.paper - paper-api - ${paper.version} - provided - - - - junit - junit - 4.13.2 - test - - - - org.jetbrains - annotations - 24.1.0 - provided - - - - - - ${project.artifactId}-${project.version} - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.12.1 - - 21 - 21 - - - - maven-assembly-plugin - 3.7.1 - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.7.0 - - - org.apache.maven.plugins - maven-release-plugin - 3.1.1 - - - org.apache.maven.plugins - maven-dependency-plugin - 3.7.1 - - - org.apache.maven.plugins - maven-project-info-reports-plugin - 3.6.2 - - - org.apache.maven.plugins - maven-surefire-plugin - 3.3.1 - - - - - - org.jacoco - jacoco-maven-plugin - 0.8.13-Snapshot - - - prepare - - prepare-agent - - compile - - - - - - - - - - org.codehaus.mojo - versions-maven-plugin - 2.17.1 - - - org.apache.maven.plugins - maven-compiler-plugin - - 21 - 21 - - - - org.jacoco - jacoco-maven-plugin - - - - - report - - - - - - - diff --git a/settings.gradle.kts b/settings.gradle.kts index 924b27609..4216ecb54 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,10 +1,6 @@ -/* - * This file was generated by the Gradle 'init' task. - */ - rootProject.name = "MinigamesProject" include(":Minigames") -include(":Minigames-Regions") -include(":minigames-distribution") -project(":Minigames-Regions").projectDir = file("Regions") -project(":minigames-distribution").projectDir = file("minigamesdistribution") +//include(":Minigames-Regions") +//include(":minigames-distribution") +//project(":Minigames-Regions").projectDir = file("Regions") +//0project(":minigames-distribution").projectDir = file("minigamesdistribution")