mirror of
https://github.com/ryderbelserion/SimpleFlags.git
synced 2026-11-06 01:42:32 -05:00
Compare commits
8
Commits
v1.1.0
...
ver/26.1.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91964656c9 | ||
|
|
d858c0139e | ||
|
|
90561317d3 | ||
|
|
899af6ee63 | ||
|
|
5d4f799b22 | ||
|
|
22c77db9ca | ||
|
|
28c1fd6d42 | ||
|
|
cb0311a524 |
No files matched your search
@@ -0,0 +1,8 @@
|
||||
name: Debug Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
uses: ryderbelserion/ryderbelserion/.github/workflows/debug.yml@main
|
||||
@@ -8,46 +8,14 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
uses: ryderbelserion/ryderbelserion/.github/workflows/build.yml@main
|
||||
|
||||
if: "!contains(github.event.commits[0].message, '[ci-skip]') || !contains(github.event.commits[0].message, 'chore:')"
|
||||
with:
|
||||
platforms: modrinth
|
||||
status: "release"
|
||||
branch: main
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 21
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Make gradlew executable
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build
|
||||
run: ./gradlew build --stacktrace
|
||||
|
||||
- name: Publish to Modrinth
|
||||
run: ./gradlew modrinth --stacktrace
|
||||
env:
|
||||
COMMIT_MESSAGE: ${{ join(github.event.commits.*.message, '<br>') }}
|
||||
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
|
||||
|
||||
#- name: Publish to Hangar
|
||||
# run: ./gradlew publishAllPublicationsToHangar --stacktrace
|
||||
# env:
|
||||
# COMMIT_MESSAGE: ${{ join(github.event.commits.*.message, '<br>') }}
|
||||
# HANGAR_KEY: ${{ secrets.HANGAR_TOKEN }}
|
||||
|
||||
#- name: Notify Discord
|
||||
# if: success()
|
||||
# run: ./gradlew release-build --stacktrace
|
||||
# env:
|
||||
# BUILD_WEBHOOK: ${{ secrets.webhook }}
|
||||
|
||||
#- name: Build Failure
|
||||
# if: failure()
|
||||
# run: ./gradlew failed-build --stacktrace
|
||||
# env:
|
||||
# BUILD_WEBHOOK: ${{ secrets.webhook }}
|
||||
secrets:
|
||||
webhook: ${{ secrets.BUILD_WEBHOOK }}
|
||||
modrinth_token: ${{ secrets.MODRINTH_TOKEN }}
|
||||
hangar_token: ${{ secrets.HANGAR_KEY }}
|
||||
@@ -1,54 +1,22 @@
|
||||
name: Release Build
|
||||
name: Snapshot Build
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
uses: ryderbelserion/ryderbelserion/.github/workflows/build.yml@main
|
||||
|
||||
if: "!contains(github.event.commits[0].message, '[ci-skip]') || !contains(github.event.commits[0].message, 'chore:')"
|
||||
with:
|
||||
platforms: modrinth
|
||||
status: "beta"
|
||||
branch: main
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 21
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Make gradlew executable
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build
|
||||
run: ./gradlew build --stacktrace
|
||||
|
||||
- name: Publish to Modrinth
|
||||
run: ./gradlew modrinth --stacktrace
|
||||
env:
|
||||
COMMIT_MESSAGE: ${{ join(github.event.commits.*.message, '<br>') }}
|
||||
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
|
||||
|
||||
#- name: Publish to Hangar
|
||||
# run: ./gradlew publishAllPublicationsToHangar --stacktrace
|
||||
# env:
|
||||
# COMMIT_MESSAGE: ${{ join(github.event.commits.*.message, '<br>') }}
|
||||
# HANGAR_KEY: ${{ secrets.HANGAR_TOKEN }}
|
||||
|
||||
#- name: Notify Discord
|
||||
# if: success()
|
||||
# run: ./gradlew release-build --stacktrace
|
||||
# env:
|
||||
# BUILD_WEBHOOK: ${{ secrets.webhook }}
|
||||
|
||||
#- name: Build Failure
|
||||
# if: failure()
|
||||
# run: ./gradlew failed-build --stacktrace
|
||||
# env:
|
||||
# BUILD_WEBHOOK: ${{ secrets.webhook }}
|
||||
secrets:
|
||||
webhook: ${{ secrets.SF_WEBHOOK }}
|
||||
modrinth_token: ${{ secrets.MODRINTH_TOKEN }}
|
||||
hangar_token: ${{ secrets.HANGAR_KEY }}
|
||||
@@ -0,0 +1,15 @@
|
||||
name: Sync Page Description
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
push:
|
||||
paths:
|
||||
- 'README.md' # Triggers for changes to this specific file
|
||||
|
||||
jobs:
|
||||
sync:
|
||||
uses: ryderbelserion/ryderbelserion/.github/workflows/sync.yml@main
|
||||
|
||||
secrets:
|
||||
modrinth_token: ${{ secrets.MODRINTH_TOKEN }}
|
||||
+68
-77
@@ -3,38 +3,54 @@ import utils.updateMarkdown
|
||||
|
||||
plugins {
|
||||
id("modrinth-plugin")
|
||||
id("hangar-plugin")
|
||||
|
||||
`paper-plugin`
|
||||
`java-plugin`
|
||||
}
|
||||
|
||||
val git = feather.getGit()
|
||||
val git = feather.getBuilder()
|
||||
|
||||
tasks {
|
||||
jar {
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
|
||||
subprojects {
|
||||
dependsOn(project.tasks.build)
|
||||
}
|
||||
|
||||
archiveClassifier = ""
|
||||
|
||||
val files = subprojects.filter { it.name != "common" && it.name != "api" }.mapNotNull {
|
||||
val file = it.tasks.jar.get().archiveFile
|
||||
|
||||
if (file.isPresent) {
|
||||
zipTree(file.get().asFile)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
from(files) {
|
||||
exclude("META-INF/MANIFEST.MF")
|
||||
}
|
||||
|
||||
doFirst {
|
||||
files.forEach { file ->
|
||||
file.matching { include("META-INF/MANIFEST.MF") }.files.forEach {
|
||||
manifest.from(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val releaseType = rootProject.ext.get("release_type").toString()
|
||||
val color = rootProject.property("${releaseType.lowercase()}_color").toString()
|
||||
val isRelease = releaseType.equals("release", true)
|
||||
val isAlpha = releaseType.equals("alpha", true)
|
||||
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public")
|
||||
|
||||
maven("https://repo.crazycrew.us/libraries")
|
||||
|
||||
maven("https://maven.enginehub.org/repo")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(libs.vital.paper)
|
||||
|
||||
compileOnly(libs.worldguard)
|
||||
}
|
||||
|
||||
feather {
|
||||
rootDirectory = rootProject.rootDir.toPath()
|
||||
workingDirectory = rootProject.rootDir.toPath()
|
||||
|
||||
val data = git.getGithubCommit("ryderbelserion/${rootProject.name}")
|
||||
|
||||
val user = data.user
|
||||
val origin = git.getNewestCommit(rootProject.property("repository_owner").toString(),rootProject.name, git.utils.getRemoteCommitHash())
|
||||
|
||||
discord {
|
||||
webhook {
|
||||
@@ -46,9 +62,10 @@ feather {
|
||||
}
|
||||
|
||||
if (isRelease) {
|
||||
username(user.getName())
|
||||
val user = origin?.user
|
||||
|
||||
avatar(user.avatar)
|
||||
username(user?.name ?: "N/A")
|
||||
avatar(user?.getAvatar() ?: "N/A")
|
||||
} else {
|
||||
username(rootProject.property("author_name").toString())
|
||||
|
||||
@@ -59,18 +76,21 @@ feather {
|
||||
embed {
|
||||
color(color)
|
||||
|
||||
title("A new $releaseType version of ${rootProject.name} is ready!")
|
||||
title("The next version of ${rootProject.name} is ready!")
|
||||
|
||||
//if (isRelease) {
|
||||
// content("<@&${rootProject.property("discord_role_id").toString()}>")
|
||||
//}
|
||||
if (isRelease) {
|
||||
content("<@&${rootProject.property("discord_role_id").toString()}>")
|
||||
}
|
||||
|
||||
fields {
|
||||
field(
|
||||
"Version ${rootProject.version}",
|
||||
listOf(
|
||||
"*Click below to download!*",
|
||||
"<:modrinth:1115307870473420800> [Modrinth](https://modrinth.com/plugin/${rootProject.name.lowercase()}/version/${rootProject.version})"
|
||||
"<:modrinth:1115307870473420800> [Modrinth](https://modrinth.com/plugin/${rootProject.name.lowercase()}/version/${rootProject.version})",
|
||||
"<:hangar:1139326635313733652> [Hangar](https://hangar.papermc.io/${rootProject.property("repository_owner").toString().replace("-", "")}/${rootProject.name.lowercase()}/versions/${rootProject.version})",
|
||||
"",
|
||||
"<:business:1527739792358637598> [Jenkins](https://ci.crazycrew.us/job/${rootProject.name}/)"
|
||||
).convertList()
|
||||
)
|
||||
|
||||
@@ -86,65 +106,36 @@ feather {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
webhook {
|
||||
group(rootProject.name.lowercase())
|
||||
task("failed-build")
|
||||
webhook {
|
||||
group(rootProject.name.lowercase())
|
||||
task("failed-build")
|
||||
|
||||
if (System.getenv("BUILD_WEBHOOK") != null) {
|
||||
post(System.getenv("BUILD_WEBHOOK"))
|
||||
}
|
||||
if (System.getenv("BUILD_WEBHOOK") != null) {
|
||||
post(System.getenv("BUILD_WEBHOOK"))
|
||||
}
|
||||
|
||||
username(rootProject.property("mascot_name").toString())
|
||||
username(rootProject.property("mascot_name").toString())
|
||||
|
||||
avatar(rootProject.property("mascot_avatar").toString())
|
||||
avatar(rootProject.property("mascot_avatar").toString())
|
||||
|
||||
embeds {
|
||||
embed {
|
||||
color(rootProject.property("failed_color").toString())
|
||||
embeds {
|
||||
embed {
|
||||
color(rootProject.property("failed_color").toString())
|
||||
|
||||
title("Oh no! It failed!")
|
||||
title("Oh no! It failed!")
|
||||
|
||||
thumbnail("https://raw.githubusercontent.com/ryderbelserion/Branding/refs/heads/main/booze.jpg")
|
||||
thumbnail("https://raw.githubusercontent.com/ryderbelserion/Branding/refs/heads/main/booze.jpg")
|
||||
|
||||
fields {
|
||||
field(
|
||||
"The build versioned ${rootProject.version} for project ${rootProject.name} failed.",
|
||||
"The developer is likely already aware, he is just getting drunk.",
|
||||
inline = true
|
||||
)
|
||||
}
|
||||
fields {
|
||||
field(
|
||||
"The build versioned ${rootProject.version} for project ${rootProject.name} failed.",
|
||||
"The developer is likely already aware, he is just getting drunk."
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
runServer {
|
||||
jvmArgs("-Dnet.kyori.ansi.colorLevel=truecolor")
|
||||
jvmArgs("-Dcom.mojang.eula.agree=true")
|
||||
|
||||
defaultCharacterEncoding = Charsets.UTF_8.name()
|
||||
|
||||
minecraftVersion(libs.versions.minecraft.get())
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
listOf(
|
||||
"com.ryderbelserion.vital"
|
||||
).forEach {
|
||||
relocate(it, "libs.$it")
|
||||
}
|
||||
}
|
||||
|
||||
configurations.all { //todo() FIX ME later, fucking forced dependencies, give me a fucking break
|
||||
resolutionStrategy {
|
||||
force("org.apache.logging.log4j:log4j-bom:2.24.1")
|
||||
force("com.google.guava:guava:33.3.1-jre")
|
||||
force("com.google.code.gson:gson:2.11.0")
|
||||
force("it.unimi.dsi:fastutil:8.5.15")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,25 +9,26 @@ val libs = extensions.getByType(VersionCatalogsExtension::class.java).named("lib
|
||||
repositories {
|
||||
maven("https://repo.codemc.io/repository/maven-public/")
|
||||
|
||||
maven("https://repo.opencollab.dev/maven-snapshots/")
|
||||
|
||||
maven("https://repo.triumphteam.dev/snapshots/")
|
||||
|
||||
maven("https://repo.crazycrew.us/libraries/")
|
||||
maven("https://repo.crazycrew.us/snapshots/")
|
||||
maven("https://repo.crazycrew.us/releases/")
|
||||
|
||||
maven("https://jitpack.io/")
|
||||
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
}
|
||||
|
||||
java {
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(25))
|
||||
}
|
||||
|
||||
tasks {
|
||||
compileJava {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
options.release.set(21)
|
||||
options.release.set(25)
|
||||
}
|
||||
|
||||
processResources {
|
||||
@@ -36,16 +37,28 @@ tasks {
|
||||
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
||||
|
||||
inputs.properties(
|
||||
"name" to rootProject.name,
|
||||
// global
|
||||
"artifact" to rootProject.name,
|
||||
"group" to project.group,
|
||||
"version" to rootProject.version,
|
||||
"description" to rootProject.description.toString(),
|
||||
|
||||
// fabric
|
||||
"id" to rootProject.name.lowercase(),
|
||||
"fabricloader" to libs.findVersion("fabric-loader").get(),
|
||||
|
||||
// generic
|
||||
"minecraft" to libs.findVersion("minecraft").get(),
|
||||
|
||||
// website
|
||||
"website" to "https://github.com/${rootProject.property("repository_owner")}/${rootProject.name}",
|
||||
"group" to project.group
|
||||
|
||||
"current_commit" to rootProject.ext.get("current_commit").toString(),
|
||||
"previous_commit" to rootProject.ext.get("previous_commit").toString()
|
||||
)
|
||||
|
||||
with(copySpec {
|
||||
include("*paper-plugin.yml", "*plugin.yml")
|
||||
include("*paper-plugin.yml", "*fabric.mod.json", "*version.json")
|
||||
|
||||
from("src/main/resources") {
|
||||
expand(inputs.properties)
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
import org.gradle.kotlin.dsl.support.uppercaseFirstChar
|
||||
|
||||
plugins {
|
||||
id("net.darkhax.curseforgegradle")
|
||||
|
||||
id("shared-plugin")
|
||||
}
|
||||
|
||||
val libs: VersionCatalog = extensions.getByType(VersionCatalogsExtension::class.java).named("libs")
|
||||
|
||||
tasks.register("publishCurseForge", net.darkhax.curseforgegradle.TaskPublishCurseForge::class) {
|
||||
apiToken = System.getenv("CURSEFORGE_TOKEN")
|
||||
|
||||
val projectId = rootProject.property("cf_project_id") as String?
|
||||
|
||||
var mainFile = upload(projectId, tasks.named<Jar>("jar").flatMap { it.archiveFile })
|
||||
|
||||
mainFile.addGameVersion(rootProject.property("cf_game_version") as String?)
|
||||
mainFile.releaseType = rootProject.ext.get("release_type").toString().uppercaseFirstChar()
|
||||
mainFile.displayName = "${rootProject.version as String}-${project.name}"
|
||||
mainFile.changelog = rootProject.file("changelog.md").readText()
|
||||
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
import gradle.kotlin.dsl.accessors._bc702d41505d332776c95ae061891e6e.ext
|
||||
import io.papermc.hangarpublishplugin.model.Platforms
|
||||
import org.gradle.kotlin.dsl.support.uppercaseFirstChar
|
||||
|
||||
@@ -30,30 +29,6 @@ hangarPublish {
|
||||
hangar("PlaceholderAPI") {
|
||||
required = false
|
||||
}
|
||||
|
||||
hangar("FancyHolograms") {
|
||||
required = false
|
||||
}
|
||||
|
||||
url("CMI", "https://www.spigotmc.org/resources/cmi-300-commands-insane-kits-portals-essentials-economy-mysql-sqlite-much-more.3742/") {
|
||||
required = false
|
||||
}
|
||||
|
||||
url("DecentHolograms", "https://modrinth.com/plugin/decentholograms") {
|
||||
required = false
|
||||
}
|
||||
|
||||
url("ItemsAdder", "https://polymart.org/product/1851/itemsadder") {
|
||||
required = false
|
||||
}
|
||||
|
||||
url("Oraxen", "https://polymart.org/product/629/oraxen") {
|
||||
required = false
|
||||
}
|
||||
|
||||
url("Nexo", "https://polymart.org/resource/nexo.6901") {
|
||||
required = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
plugins {
|
||||
id("com.modrinth.minotaur")
|
||||
|
||||
id("shared-plugin")
|
||||
}
|
||||
|
||||
modrinth {
|
||||
token = System.getenv("MODRINTH_TOKEN")
|
||||
token = "mrp_rQCjGHWfpst4KBrJEf022BvqwrVScPeIN3n7w1Vckq4dUnLeFCJvjMGd6xuP"
|
||||
|
||||
projectId = "${rootProject.property("project_id")}"
|
||||
|
||||
@@ -27,8 +26,6 @@ modrinth {
|
||||
detectLoaders = false
|
||||
|
||||
dependencies {
|
||||
optional.project("DecentHolograms")
|
||||
optional.project("FancyHolograms")
|
||||
optional.project("PlaceholderAPI")
|
||||
}
|
||||
}
|
||||
@@ -8,5 +8,16 @@ tasks {
|
||||
archiveClassifier.set("")
|
||||
|
||||
exclude("META-INF/**")
|
||||
|
||||
listOf(
|
||||
"com.ryderbelserion.fusion",
|
||||
"org.bstats"
|
||||
).forEach {
|
||||
relocate(it, "libs.$it")
|
||||
}
|
||||
|
||||
minimize {
|
||||
exclude(dependency("com.ryderbelserion.fusion:.*"))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
import utils.convertList
|
||||
|
||||
plugins {
|
||||
id("com.ryderbelserion.feather.core")
|
||||
|
||||
@@ -6,22 +8,41 @@ plugins {
|
||||
|
||||
val libs = extensions.getByType(VersionCatalogsExtension::class.java).named("libs")
|
||||
|
||||
val git = feather.getGit()
|
||||
val git = feather.getBuilder()
|
||||
val utils = git.utils
|
||||
|
||||
val isBeta: Boolean = git.getCurrentBranch() == rootProject.property("beta_branch").toString()
|
||||
val isAlpha: Boolean = git.getCurrentBranch() == rootProject.property("alpha_branch").toString()
|
||||
val branch = utils.getRemoteBranch()
|
||||
val hash = utils.getRemoteCommitHash()
|
||||
val commit = utils.getRemoteCommitMessage(hash, "%B")
|
||||
|
||||
val commitHash: String = git.getCurrentCommitHash().subSequence(0, 7).toString()
|
||||
val content: String = if (isBeta) "[$commitHash](https://github.com/${rootProject.property("repository_owner")}/${rootProject.name}/commit/$commitHash) ${git.getCurrentCommit()}" else rootProject.file("changelog.md").readText(Charsets.UTF_8)
|
||||
val status: String = System.getenv().getOrDefault("version_status", "release").lowercase()
|
||||
|
||||
val buildNumber: String = System.getenv("BUILD_NUMBER") ?: "N/A"
|
||||
val isJenkins: Boolean = buildNumber != "N/A"
|
||||
|
||||
val isRelease: Boolean = status == "release"
|
||||
val isAlpha: Boolean = status == "alpha"
|
||||
val isBeta: Boolean = status == "beta"
|
||||
|
||||
val commitHash: String = hash.subSequence(0, 7).toString()
|
||||
val changelog = rootProject.file("changelog.md").readText(Charsets.UTF_8)
|
||||
val content: String = if (isRelease) changelog else if (isBeta || isAlpha || isJenkins) {
|
||||
"[$commitHash](https://github.com/${rootProject.property("repository_owner")}/${rootProject.name}/commit/$commitHash) $commit"
|
||||
} else changelog
|
||||
|
||||
val minecraft = libs.findVersion("minecraft").get()
|
||||
|
||||
rootProject.description = rootProject.property("project_description").toString()
|
||||
rootProject.version = if (isBeta) "$minecraft-$commitHash" else if (isAlpha) "${rootProject.property("plugin_version")}-SNAPSHOT" else rootProject.property("plugin_version").toString()
|
||||
rootProject.version = if (isBeta || isJenkins) "$minecraft-$commitHash" else if (isAlpha) "${rootProject.property("plugin_version")}-SNAPSHOT" else rootProject.property("plugin_version").toString()
|
||||
rootProject.group = rootProject.property("project_group").toString()
|
||||
|
||||
rootProject.ext {
|
||||
set("version_name", if (isBeta) "${rootProject.version}" else "${rootProject.name} ${rootProject.version}")
|
||||
set("release_type", if (isBeta) "beta" else if (isAlpha) "alpha" else "release")
|
||||
set("mc_changelog", content)
|
||||
set("release_type", status)
|
||||
|
||||
set("current_commit", commitHash)
|
||||
set("previous_commit", System.getenv("GIT_PREVIOUS_SUCCESSFUL_COMMIT") ?: "N/A")
|
||||
set("build_number", buildNumber)
|
||||
|
||||
set("mc_changelog", content.lines().convertList())
|
||||
}
|
||||
@@ -9,9 +9,9 @@ fun String.updateMarkdown(): String {
|
||||
if (it.contains("##")) {
|
||||
val text = it.replace("## ", "")
|
||||
|
||||
builder.append("**${text}**")
|
||||
builder.append("**${text}**").append("\n")
|
||||
} else {
|
||||
builder.append(it)
|
||||
builder.append(it).append("\n")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-4
@@ -1,4 +1 @@
|
||||
## Additions:
|
||||
- Added 2 new flags
|
||||
- A flag to prevent interacting with crafter blocks
|
||||
- A flag to prevent placing crafter blocks
|
||||
- Fixed a bug with drowning listener which canceled all forms of damage as the damage type wasn't properly checked.
|
||||
+4
-12
@@ -15,30 +15,22 @@ mascot_name = Beidou
|
||||
mascot_avatar = https://raw.githubusercontent.com/ryderbelserion/Branding/refs/heads/main/beidou/christmas/emojis/padoru.png
|
||||
|
||||
# The version of the plugin
|
||||
plugin_version = 1.1.0
|
||||
# The api version
|
||||
api_version = 0.1.0
|
||||
plugin_version = 1.1.1
|
||||
|
||||
# The beta branch
|
||||
beta_branch = dev
|
||||
# The color for beta builds
|
||||
beta_color = #ffa347
|
||||
# The alpha branch
|
||||
alpha_branch = alpha
|
||||
# The color for the alpha builds
|
||||
alpha_color = #ff496e
|
||||
|
||||
# The color for release builds
|
||||
release_color = #1bd96a
|
||||
|
||||
# The color when a build fails
|
||||
failed_color = #ff000d
|
||||
|
||||
# The role id to ping when publishing releases
|
||||
discord_role_id = 929463441159254066
|
||||
discord_role_id = 1528286022255775928
|
||||
|
||||
project_description = Adds simple worldguard flags.
|
||||
project_description = Adds extra flags to be used by WorldGuard regions
|
||||
project_group = com.ryderbelserion.simpleflags
|
||||
project_platforms = paper,folia,purpur
|
||||
project_versions = 1.21.1
|
||||
project_versions = 26.1.2,26.2
|
||||
project_id = SimpleFlags
|
||||
+65
-16
@@ -1,24 +1,44 @@
|
||||
[versions]
|
||||
## Paper
|
||||
paperweight = "2.0.0-beta.19" # https://github.com/PaperMC/paperweight
|
||||
paper = "1.21.11-R0.1-SNAPSHOT" # https://github.com/PaperMC/Paper
|
||||
## Paper API
|
||||
paperweight = "2.0.0-beta.21" # https://github.com/PaperMC/paperweight
|
||||
adventure = "5.2.0" # https://github.com/KyoriPowered/adventure
|
||||
run-paper = "3.0.2" # https://github.com/jpenilla/run-task
|
||||
|
||||
## Minecraft
|
||||
minecraft = "1.21.11" # https://minecraft.net
|
||||
paper = "26.1.2.build.+" # https://github.com/PaperMC/Paper
|
||||
|
||||
# Vital API
|
||||
vital-common = "0.0.6"
|
||||
vital-paper = "1.0.6"
|
||||
## Minecraft API
|
||||
minecraft = "26.1.2" # https://minecraft.net
|
||||
|
||||
## Other API
|
||||
fusion = "4.50.1" # https://github.com/ryderbelserion/Fusion
|
||||
|
||||
## Metrics API
|
||||
bstats = "3.2.1" # https://bstats.org/docs
|
||||
|
||||
## Fabric API
|
||||
fabric-loader = "0.19.2" # https://fabricmc.net/develop/
|
||||
fabric-loom = "1.16-SNAPSHOT" # https://fabricmc.net/develop/
|
||||
fabric-api = "0.150.0+26.1.2" # https://fabricmc.net/develop/
|
||||
|
||||
## Gradle Plugins
|
||||
fix-javadoc = "1.19" # https://github.com/mfnalex/gradle-fix-javadoc-plugin
|
||||
run-paper = "3.0.2" # https://github.com/jpenilla/run-task
|
||||
minotaur = "2.8.10" # https://github.com/modrinth/minotaur
|
||||
feather = "0.4.0" # https://github.com/ryderbelserion/Feather
|
||||
curseforge = "1.1.26" # https://github.com/Darkhax/CurseForgeGradle
|
||||
minotaur = "2.9.0" # https://github.com/modrinth/minotaur
|
||||
feather = "0.6.1" # https://github.com/ryderbelserion/Feather
|
||||
hangar = "0.1.4" # https://github.com/HangarMC/hangar-publish-plugin
|
||||
shadow = "9.3.0" # https://github.com/GradleUp/shadow
|
||||
shadow = "9.6.0" # https://github.com/GradleUp/shadow
|
||||
|
||||
[plugins]
|
||||
# https://github.com/mfnalex/gradle-fix-javadoc-plugin
|
||||
fix-javadoc = { id = "com.jeff-media.fix-javadoc-plugin", version.ref = "fix-javadoc" }
|
||||
|
||||
# https://fabricmc.net/develop/
|
||||
fabric-loom = { id = "net.fabricmc.fabric-loom", version.ref = "fabric-loom" }
|
||||
|
||||
[libraries]
|
||||
# https://github.com/Darkhax/CurseForgeGradle
|
||||
curseforge = { group = "net.darkhax.curseforgegradle", name = "net.darkhax.curseforgegradle.gradle.plugin", version.ref = "curseforge" }
|
||||
|
||||
# https://github.com/PaperMC/paperweight
|
||||
paperweight = { module = "io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin", version.ref = "paperweight" }
|
||||
|
||||
@@ -37,14 +57,42 @@ shadow = { module = "com.gradleup.shadow:shadow-gradle-plugin", version.ref = "s
|
||||
# https://github.com/jpenilla/run-task
|
||||
run-paper = { module = "xyz.jpenilla:run-task", version.ref = "run-paper" }
|
||||
|
||||
# WorldGuard API
|
||||
worldguard = { group = "com.sk89q.worldguard", name = "worldguard-bukkit", version = "7.0.15" }
|
||||
# https://github.com/ryderbelserion/Fusion
|
||||
fusion-velocity = { module = "com.ryderbelserion.fusion:fusion-velocity", version.ref = "fusion" }
|
||||
fusion-hytale = { module = "com.ryderbelserion.fusion:fusion-hytale", version.ref = "fusion" }
|
||||
fusion-paper = { module = "com.ryderbelserion.fusion:fusion-paper", version.ref = "fusion" }
|
||||
fusion-kyori = { module = "com.ryderbelserion.fusion:fusion-kyori", version.ref = "fusion" }
|
||||
fusion-core = { module = "com.ryderbelserion.fusion:fusion-core", version.ref = "fusion" }
|
||||
fusion-api = { module = "com.ryderbelserion.fusion:fusion-api", version.ref = "fusion" }
|
||||
|
||||
# Vital API
|
||||
vital-paper = { module = "com.ryderbelserion.vital:paper", version.ref = "vital-paper" }
|
||||
# https://fabricmc.net/develop/
|
||||
fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fabric-api" }
|
||||
fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fabric-loader" }
|
||||
|
||||
# WorldGuard API
|
||||
worldguard = { group = "com.sk89q.worldguard", name = "worldguard-bukkit", version = "7.0.17" }
|
||||
|
||||
# Mojang API
|
||||
minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft" }
|
||||
|
||||
# https://github.com/KyoriPowered/adventure
|
||||
kyori-logger = { module = "net.kyori:adventure-text-logger-slf4j", version.ref = "adventure" }
|
||||
kyori-text = { module = "net.kyori:adventure-text-minimessage", version.ref = "adventure" }
|
||||
kyori-api = { module = "net.kyori:adventure-api", version.ref = "adventure" }
|
||||
|
||||
# https://bstats.org
|
||||
bstats-hytale = { module = "org.bstats:bstats-hytale", version.ref = "bstats" }
|
||||
bstats-paper = { module = "org.bstats:bstats-bukkit", version.ref = "bstats" }
|
||||
|
||||
[bundles]
|
||||
kyori = [
|
||||
"kyori-logger",
|
||||
"kyori-text",
|
||||
"kyori-api"
|
||||
]
|
||||
|
||||
build = [
|
||||
"curseforge",
|
||||
"minotaur",
|
||||
"feather",
|
||||
"hangar",
|
||||
@@ -53,5 +101,6 @@ build = [
|
||||
|
||||
paper = [
|
||||
"paperweight",
|
||||
|
||||
"run-paper"
|
||||
]
|
||||
+4
-2
@@ -1,7 +1,9 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.2-bin.zip
|
||||
networkTimeout=10000
|
||||
retries=0
|
||||
retryBackOffMs=500
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
zipStorePath=wrapper/dists
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
# Copyright © 2015 the original authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -57,7 +57,7 @@
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
@@ -114,7 +114,6 @@ case "$( uname )" in #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
@@ -172,7 +171,6 @@ fi
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
@@ -212,8 +210,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
|
||||
Vendored
+1
-2
@@ -70,11 +70,10 @@ goto fail
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
plugins {
|
||||
`paper-plugin`
|
||||
}
|
||||
|
||||
project.group = "${rootProject.group}.paper"
|
||||
|
||||
repositories {
|
||||
maven("https://maven.enginehub.org/repo")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(libs.fusion.paper)
|
||||
|
||||
compileOnly(libs.worldguard)
|
||||
}
|
||||
|
||||
tasks {
|
||||
build {
|
||||
dependsOn(shadowJar)
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
listOf(
|
||||
"com.ryderbelserion.fusion",
|
||||
"io.leangen.geantyref",
|
||||
//"com.zaxxer.hikari",
|
||||
"org.spongepowered",
|
||||
"com.google.gson",
|
||||
"org.jspecify"
|
||||
).forEach {
|
||||
relocate(it, "libs.$it")
|
||||
}
|
||||
}
|
||||
|
||||
runPaper.folia.registerTask()
|
||||
|
||||
runServer {
|
||||
jvmArgs("-Dnet.kyori.ansi.colorLevel=truecolor")
|
||||
jvmArgs("-Dcom.mojang.eula.agree=true")
|
||||
|
||||
defaultCharacterEncoding = Charsets.UTF_8.name()
|
||||
|
||||
minecraftVersion(libs.versions.minecraft.get())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
package com.ryderbelserion.simpleflags.paper;
|
||||
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import com.ryderbelserion.fusion.core.api.registry.message.MessageRegistry;
|
||||
import com.ryderbelserion.fusion.core.files.FileManager;
|
||||
import com.ryderbelserion.fusion.paper.FusionPaper;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.types.other.FlyFlag;
|
||||
import com.ryderbelserion.simpleflags.paper.commands.BaseCommand;
|
||||
import com.ryderbelserion.simpleflags.paper.commands.types.ReloadCommand;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.ConfigManager;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.types.damage.DrownFlag;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.types.entity.NaturalFlag;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.types.blocks.BlockCrafterFlag;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.types.blocks.InteractionCrafterFlag;
|
||||
import com.ryderbelserion.simpleflags.paper.listeners.block.CrafterListener;
|
||||
import com.ryderbelserion.simpleflags.paper.listeners.damage.DrowningListener;
|
||||
import com.ryderbelserion.simpleflags.paper.listeners.entity.NaturalSpawnListener;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.adapters.PaperSenderAdapter;
|
||||
import com.ryderbelserion.simpleflags.paper.listeners.other.FlightStatusListener;
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import com.sk89q.worldguard.protection.regions.RegionContainer;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import io.papermc.paper.plugin.lifecycle.event.LifecycleEventManager;
|
||||
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jspecify.annotations.NonNull;
|
||||
import java.util.List;
|
||||
|
||||
public class SimpleFlags extends JavaPlugin {
|
||||
|
||||
public static final String namespace = "simpleflags";
|
||||
|
||||
private MessageRegistry messageRegistry;
|
||||
private ConfigManager configManager;
|
||||
private FileManager fileManager;
|
||||
private FusionPaper fusion;
|
||||
|
||||
private PaperSenderAdapter adapter;
|
||||
private FlagManager flagManager;
|
||||
private WorldGuard worldGuard;
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
this.fusion = new FusionPaper(this);
|
||||
this.fusion.init();
|
||||
|
||||
this.messageRegistry = this.fusion.getMessageRegistry();
|
||||
this.fileManager = this.fusion.getFileManager();
|
||||
|
||||
this.configManager = new ConfigManager();
|
||||
this.configManager.init();
|
||||
|
||||
this.adapter = new PaperSenderAdapter();
|
||||
|
||||
this.configManager.loadMessages();
|
||||
|
||||
this.worldGuard = WorldGuard.getInstance();
|
||||
|
||||
this.flagManager = new FlagManager();
|
||||
|
||||
List.of(
|
||||
// damage flags
|
||||
new DrownFlag(),
|
||||
|
||||
// entity flags
|
||||
new NaturalFlag(),
|
||||
|
||||
// status flags
|
||||
new FlyFlag(),
|
||||
|
||||
// block flags
|
||||
new InteractionCrafterFlag(),
|
||||
new BlockCrafterFlag()
|
||||
).forEach(this.flagManager::addFlag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
if (this.fusion != null) {
|
||||
this.fusion.post();
|
||||
}
|
||||
|
||||
final PluginManager pluginManager = getServer().getPluginManager();
|
||||
|
||||
List.of(
|
||||
// entity listeners
|
||||
new NaturalSpawnListener(),
|
||||
|
||||
// damage listeners
|
||||
new DrowningListener(),
|
||||
|
||||
// status listeners
|
||||
new FlightStatusListener(),
|
||||
|
||||
// crafter listeners
|
||||
new CrafterListener()
|
||||
).forEach(event -> pluginManager.registerEvents(event, this));
|
||||
|
||||
final LifecycleEventManager<Plugin> eventManager = getLifecycleManager();
|
||||
|
||||
// Register commands.
|
||||
eventManager.registerEventHandler(LifecycleEvents.COMMANDS, event -> {
|
||||
LiteralArgumentBuilder<CommandSourceStack> root = new BaseCommand().registerPermissions().literal().createBuilder();
|
||||
|
||||
List.of(
|
||||
new ReloadCommand()
|
||||
).forEach(command -> root.then(command.registerPermissions().literal()));
|
||||
|
||||
event.registrar().register(root.build(), "The base command for SimpleFlags!");
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
super.onDisable();
|
||||
}
|
||||
|
||||
public @NonNull PaperSenderAdapter getSenderAdapter() {
|
||||
return this.adapter;
|
||||
}
|
||||
|
||||
public @NonNull MessageRegistry getMessageRegistry() {
|
||||
return this.messageRegistry;
|
||||
}
|
||||
|
||||
public @NonNull ConfigManager getConfigManager() {
|
||||
return this.configManager;
|
||||
}
|
||||
|
||||
public @NonNull RegionContainer getRegions() {
|
||||
return this.worldGuard.getPlatform().getRegionContainer();
|
||||
}
|
||||
|
||||
public @NonNull FlagManager getFlagManager() {
|
||||
return this.flagManager;
|
||||
}
|
||||
|
||||
public @NonNull FileManager getFileManager() {
|
||||
return this.fileManager;
|
||||
}
|
||||
|
||||
public @NonNull WorldGuard getWorldGuard() {
|
||||
return this.worldGuard;
|
||||
}
|
||||
|
||||
public @NonNull FusionPaper getFusion() {
|
||||
return this.fusion;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.ryderbelserion.simpleflags.paper.api;
|
||||
|
||||
import com.ryderbelserion.fusion.paper.FusionPaper;
|
||||
import com.ryderbelserion.fusion.paper.builders.commands.PaperCommand;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.ConfigManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public abstract class SimpleFlagsCommand extends PaperCommand {
|
||||
|
||||
protected final SimpleFlags platform = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
protected final ConfigManager configManager = this.platform.getConfigManager();
|
||||
|
||||
protected final FusionPaper fusion = this.platform.getFusion();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
package com.ryderbelserion.simpleflags.paper.api.enums;
|
||||
|
||||
import com.ryderbelserion.fusion.api.FusionProvider;
|
||||
import com.ryderbelserion.fusion.api.enums.Level;
|
||||
import com.ryderbelserion.fusion.api.enums.files.enums.FileAction;
|
||||
import com.ryderbelserion.fusion.api.enums.files.enums.FileType;
|
||||
import com.ryderbelserion.fusion.api.exceptions.FusionException;
|
||||
import com.ryderbelserion.fusion.core.files.FileManager;
|
||||
import com.ryderbelserion.fusion.core.files.interfaces.ICustomFile;
|
||||
import com.ryderbelserion.fusion.core.files.types.configurate.JsonCustomFile;
|
||||
import com.ryderbelserion.fusion.core.files.types.configurate.YamlCustomFile;
|
||||
import com.ryderbelserion.fusion.kyori.FusionKyori;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
import org.spongepowered.configurate.BasicConfigurationNode;
|
||||
import org.spongepowered.configurate.CommentedConfigurationNode;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@ApiStatus.Internal
|
||||
@NullMarked
|
||||
public enum FileKeys {
|
||||
|
||||
messages("messages.yml", FileType.YAML, List.of(
|
||||
FileAction.EXTRACT_FILE
|
||||
));
|
||||
|
||||
private final FusionKyori fusion = (FusionKyori) FusionProvider.api();
|
||||
|
||||
private final Path dataPath = this.fusion.getDataPath();
|
||||
|
||||
private final FileManager fileManager = this.fusion.getFileManager();
|
||||
|
||||
private final List<FileAction> actions;
|
||||
private final FileType fileType;
|
||||
private final Path path;
|
||||
|
||||
FileKeys(final String fileName, final String folder, final FileType fileType, final List<FileAction> actions) {
|
||||
this.path = this.dataPath.resolve(folder).resolve(fileName);
|
||||
this.fileType = fileType;
|
||||
this.actions = actions;
|
||||
}
|
||||
|
||||
FileKeys(final String fileName, final FileType fileType, final List<FileAction> actions) {
|
||||
this.path = this.dataPath.resolve(fileName);
|
||||
this.fileType = fileType;
|
||||
this.actions = actions;
|
||||
}
|
||||
|
||||
public final CommentedConfigurationNode getConfiguration() {
|
||||
return getYamlCustomFile().getConfiguration();
|
||||
}
|
||||
|
||||
public final YamlCustomFile getYamlCustomFile() {
|
||||
final Optional<YamlCustomFile> customFile = this.fileManager.getYamlFile(this.path);
|
||||
|
||||
if (customFile.isEmpty()) {
|
||||
throw new FusionException("Could not find custom file for " + this.path);
|
||||
}
|
||||
|
||||
return customFile.get();
|
||||
}
|
||||
|
||||
public final BasicConfigurationNode getConfigurationNode() {
|
||||
return getJsonCustomFile().getConfiguration();
|
||||
}
|
||||
|
||||
public final JsonCustomFile getJsonCustomFile() {
|
||||
final Optional<JsonCustomFile> customFile = this.fileManager.getJsonFile(this.path);
|
||||
|
||||
if (customFile.isEmpty()) {
|
||||
throw new FusionException("Could not find custom file for " + this.path);
|
||||
}
|
||||
|
||||
return customFile.get();
|
||||
}
|
||||
|
||||
public final ICustomFile<?, ?, ?> getCustomFile() {
|
||||
final Optional<ICustomFile<?, ?, ?>> customFile = this.fileManager.getFile(this.path);
|
||||
|
||||
if (customFile.isEmpty()) {
|
||||
throw new FusionException("Could not find custom file for " + this.path);
|
||||
}
|
||||
|
||||
return customFile.get();
|
||||
}
|
||||
|
||||
public final boolean hasCustomFile() {
|
||||
return this.fileManager.hasFile(this.path);
|
||||
}
|
||||
|
||||
public final void load() {
|
||||
if (this.actions.contains(FileAction.DELETE_FILE)) {
|
||||
try {
|
||||
java.nio.file.Files.deleteIfExists(this.path);
|
||||
} catch (final IOException exception) {
|
||||
this.fusion.log(Level.error, "Failed to delete: %s", exception, this.path);
|
||||
}
|
||||
}
|
||||
|
||||
this.fileManager.addFile(this.path, this.fileType, action -> action.addActions(this.actions));
|
||||
}
|
||||
|
||||
public final void reload() {
|
||||
if (this.actions.contains(FileAction.DELETE_FILE)) {
|
||||
try {
|
||||
java.nio.file.Files.deleteIfExists(this.path);
|
||||
} catch (final IOException exception) {
|
||||
this.fusion.log(Level.error, "Failed to delete: %s", exception, this.path);
|
||||
}
|
||||
}
|
||||
|
||||
this.fileManager.addFile(this.path, this.fileType, action -> action.addActions(this.actions).addAction(FileAction.RELOAD_FILE));
|
||||
}
|
||||
|
||||
public final void save() {
|
||||
this.fileManager.saveFile(this.path);
|
||||
}
|
||||
|
||||
public final FileType getFileType() {
|
||||
return this.fileType;
|
||||
}
|
||||
|
||||
public final Path getPath() {
|
||||
return this.path;
|
||||
}
|
||||
}
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
package com.ryderbelserion.simpleflags.paper.api.enums.messages;
|
||||
|
||||
import com.ryderbelserion.fusion.api.objects.FusionKey;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.PropertyManager;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.objects.enums.PropertyType;
|
||||
import com.ryderbelserion.fusion.core.api.registry.message.MessageRegistry;
|
||||
import com.ryderbelserion.fusion.core.api.registry.message.adapter.YamlMessageAdapter;
|
||||
import com.ryderbelserion.fusion.core.utils.StringUtils;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.ConfigManager;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.types.RootKeys;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.adapters.PaperSenderAdapter;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
import org.spongepowered.configurate.CommentedConfigurationNode;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import static com.ryderbelserion.simpleflags.paper.SimpleFlags.namespace;
|
||||
|
||||
@ApiStatus.Internal
|
||||
@NullMarked
|
||||
public enum Message {
|
||||
|
||||
reload_plugin("root.reload-plugin", "{prefix}<red>You have reloaded the plugin.", "root", "reload-plugin"),
|
||||
help_menu("root.help-menu", List.of(
|
||||
"<red>SimpleFlags Help Menu",
|
||||
"",
|
||||
"<red>/simpleflags <gray>- <gold>Shows this menu.",
|
||||
"<red>/simpleflags reload <gray>- <gold>Reloads the plugin."
|
||||
), "root", "help-menu");
|
||||
|
||||
private final SimpleFlags platform = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
private final ConfigManager configManager = this.platform.getConfigManager();
|
||||
|
||||
private final PropertyManager pluginConfig = this.configManager.getConfig();
|
||||
|
||||
private final PaperSenderAdapter senderAdapter = this.platform.getSenderAdapter();
|
||||
|
||||
private final String defaultValue;
|
||||
private final PropertyType type;
|
||||
private final Object[] path;
|
||||
private final FusionKey id;
|
||||
|
||||
Message(final String id, final String defaultValue, final Object... path) {
|
||||
this.defaultValue = defaultValue;
|
||||
this.id = FusionKey.key(namespace, id);
|
||||
this.type = PropertyType.STRING;
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
Message(final String id, final List<String> defaultValue, final Object... path) {
|
||||
this.defaultValue = StringUtils.toString(defaultValue);
|
||||
this.id = FusionKey.key(namespace, id);
|
||||
this.type = PropertyType.STRING_LIST;
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public void addKey(final MessageRegistry registry, final CommentedConfigurationNode configuration, final FusionKey id) {
|
||||
final YamlMessageAdapter adapter = new YamlMessageAdapter(configuration, this.defaultValue, this.path);
|
||||
|
||||
registry.addKey(
|
||||
id,
|
||||
this.id,
|
||||
adapter
|
||||
);
|
||||
}
|
||||
|
||||
public final List<String> toList(final String value) {
|
||||
return value.lines().toList();
|
||||
}
|
||||
|
||||
public void sendMessage(final CommandSender sender, final Map<String, String> placeholders) {
|
||||
switch (this.pluginConfig.getProperty(RootKeys.message_state)) {
|
||||
case send_message -> this.senderAdapter.sendMessage(sender, this.id, placeholders);
|
||||
case send_actionbar -> this.senderAdapter.sendActionBar(sender, this.id, placeholders);
|
||||
}
|
||||
}
|
||||
|
||||
public void sendMessage(final CommandSender sender, final String placeholder, final String value) {
|
||||
sendMessage(sender, Map.of(placeholder, value));
|
||||
}
|
||||
|
||||
public void sendMessage(final CommandSender sender) {
|
||||
sendMessage(sender, Map.of());
|
||||
}
|
||||
|
||||
public final FusionKey getKey() {
|
||||
return this.id;
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.ryderbelserion.simpleflags.paper.api.enums.messages;
|
||||
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jspecify.annotations.NullMarked;
|
||||
|
||||
@ApiStatus.Internal
|
||||
@NullMarked
|
||||
public enum State {
|
||||
|
||||
send_message("send_message"),
|
||||
send_actionbar("send_actionbar");
|
||||
|
||||
private final String name;
|
||||
|
||||
State(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public final String getName() {
|
||||
return this.name;
|
||||
}
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.adapters;
|
||||
|
||||
import com.ryderbelserion.fusion.api.objects.FusionKey;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.PropertyManager;
|
||||
import com.ryderbelserion.fusion.core.api.registry.message.MessageRegistry;
|
||||
import com.ryderbelserion.fusion.paper.FusionPaper;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.ConfigManager;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.types.RootKeys;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jspecify.annotations.NonNull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PaperSenderAdapter {
|
||||
|
||||
private final SimpleFlags platform = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
private final FusionPaper fusion = this.platform.getFusion();
|
||||
|
||||
private final ConfigManager configManager = this.platform.getConfigManager();
|
||||
|
||||
private final PropertyManager pluginConfig = this.configManager.getConfig();
|
||||
|
||||
private final MessageRegistry messageRegistry = this.platform.getMessageRegistry();
|
||||
|
||||
public void sendActionBar(@NonNull final CommandSender sender, @NonNull final FusionKey id, @NonNull final Map<String, String> placeholders) {
|
||||
final Component component = getComponent(sender, id, placeholders);
|
||||
|
||||
if (component.equals(Component.empty())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (sender instanceof ConsoleCommandSender) {
|
||||
sender.sendMessage(component);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendActionBar(component);
|
||||
}
|
||||
|
||||
public void sendMessage(@NonNull final CommandSender sender, @NonNull final FusionKey id, @NonNull final Map<String, String> placeholders) {
|
||||
final Component component = getComponent(sender, id, placeholders);
|
||||
|
||||
if (component.equals(Component.empty())) {
|
||||
return;
|
||||
}
|
||||
|
||||
sender.sendMessage(component);
|
||||
}
|
||||
|
||||
public Component getComponent(@NonNull final CommandSender sender, @NonNull final FusionKey id, @NonNull final Map<String, String> placeholders) {
|
||||
final List<String> values = new ArrayList<>();
|
||||
|
||||
this.messageRegistry.getMessage(id).ifPresent(value -> values.add(value.getValue()));
|
||||
|
||||
if (values.isEmpty()) {
|
||||
return Component.empty();
|
||||
}
|
||||
|
||||
final String value = values.getFirst();
|
||||
|
||||
if (value.isEmpty()) {
|
||||
return Component.empty();
|
||||
}
|
||||
|
||||
final Map<String, String> map = new HashMap<>(placeholders);
|
||||
|
||||
final String prefix = this.pluginConfig.getProperty(RootKeys.command_prefix);
|
||||
|
||||
if (!prefix.isEmpty()) {
|
||||
map.putIfAbsent("{prefix}", prefix);
|
||||
}
|
||||
|
||||
return this.fusion.asComponent(sender, values.getFirst(), map, List.of());
|
||||
}
|
||||
|
||||
public String getMessage(@NonNull final CommandSender sender, @NonNull final FusionKey id, @NonNull final Map<String, String> placeholders) {
|
||||
final List<String> values = new ArrayList<>();
|
||||
|
||||
this.messageRegistry.getMessage(id).ifPresent(value -> values.add(value.getValue()));
|
||||
|
||||
if (values.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
final String value = values.getFirst();
|
||||
|
||||
if (value.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
final Map<String, String> map = new HashMap<>(placeholders);
|
||||
|
||||
final String prefix = this.pluginConfig.getProperty(RootKeys.command_prefix);
|
||||
|
||||
if (!prefix.isEmpty()) {
|
||||
map.putIfAbsent("{prefix}", prefix);
|
||||
}
|
||||
|
||||
return this.fusion.replacePlaceholders(this.fusion.papi(sender, value), map);
|
||||
}
|
||||
}
|
||||
+7
-5
@@ -1,8 +1,8 @@
|
||||
package com.ryderbelserion.simpleflags.flags;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags;
|
||||
|
||||
import ch.jalu.configme.SettingsManager;
|
||||
import com.ryderbelserion.simpleflags.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.config.ConfigManager;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.PropertyManager;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.ConfigManager;
|
||||
import com.sk89q.worldguard.protection.flags.Flag;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
|
||||
import com.sk89q.worldguard.protection.regions.RegionQuery;
|
||||
@@ -15,7 +15,9 @@ public abstract class FlagBuilder<T extends Flag> {
|
||||
|
||||
protected final ComponentLogger logger = this.plugin.getComponentLogger();
|
||||
|
||||
protected final SettingsManager config = ConfigManager.getConfig();
|
||||
protected final ConfigManager configManager = this.plugin.getConfigManager();
|
||||
|
||||
protected final PropertyManager config = this.configManager.getConfig();
|
||||
|
||||
public abstract void register();
|
||||
|
||||
+6
-1
@@ -1,8 +1,9 @@
|
||||
package com.ryderbelserion.simpleflags.flags;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
public class FlagManager {
|
||||
|
||||
@@ -21,6 +22,10 @@ public class FlagManager {
|
||||
return this.flags.containsKey(name);
|
||||
}
|
||||
|
||||
public Optional<FlagBuilder<?>> getByFlag(String name) {
|
||||
return Optional.ofNullable(this.flags.get(name));
|
||||
}
|
||||
|
||||
public FlagBuilder<?> getFlag(String name) {
|
||||
return this.flags.get(name);
|
||||
}
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
package com.ryderbelserion.simpleflags.flags.builders;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags.builders;
|
||||
|
||||
import com.ryderbelserion.simpleflags.flags.FlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.FlagBuilder;
|
||||
import com.sk89q.worldguard.protection.flags.IntegerFlag;
|
||||
|
||||
public abstract class IntegerFlagBuilder extends FlagBuilder<IntegerFlag> {
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
package com.ryderbelserion.simpleflags.flags.builders;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags.builders;
|
||||
|
||||
import com.ryderbelserion.simpleflags.flags.FlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.FlagBuilder;
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
@@ -35,7 +35,7 @@ public abstract class StateFlagBuilder extends FlagBuilder<StateFlag> {
|
||||
* @return true or false
|
||||
*/
|
||||
public boolean preventDamage(Player player, DamageSource source, DamageType type, StateFlag flag) {
|
||||
return source.getDamageType() == type && testLocation(player, flag);
|
||||
return source.getDamageType() != type || testLocation(player, flag);
|
||||
}
|
||||
|
||||
/**
|
||||
+2
-1
@@ -1,8 +1,9 @@
|
||||
package com.ryderbelserion.simpleflags.flags.enums;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags.enums;
|
||||
|
||||
public enum CustomFlags {
|
||||
|
||||
NATURAL_FLAG("prevent_natural_spawning"),
|
||||
FLIGHT_FLAG("prevent_flight"),
|
||||
CRAFTER_INTERACTION_FLAG("prevent_crafter_interaction"),
|
||||
CRAFTER_BLOCK_FLAG("prevent_crafter_block"),
|
||||
DROWN_FLAG("prevent_drowning"),
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
package com.ryderbelserion.simpleflags.flags.types.temporary;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags.types.blocks;
|
||||
|
||||
import com.ryderbelserion.simpleflags.config.impl.Config;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.types.RootKeys;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.Flag;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
|
||||
@@ -42,6 +42,6 @@ public class BlockCrafterFlag extends StateFlagBuilder {
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return this.config.getProperty(Config.crafter_flag_place);
|
||||
return this.config.getProperty(RootKeys.is_crafter_place_enabled);
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
package com.ryderbelserion.simpleflags.flags.types.temporary;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags.types.blocks;
|
||||
|
||||
import com.ryderbelserion.simpleflags.config.impl.Config;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.types.RootKeys;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.Flag;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
|
||||
@@ -42,6 +42,6 @@ public class InteractionCrafterFlag extends StateFlagBuilder {
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return this.config.getProperty(Config.crafter_flag_interaction);
|
||||
return this.config.getProperty(RootKeys.is_crafter_interaction_enabled);
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
package com.ryderbelserion.simpleflags.flags.types;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags.types.damage;
|
||||
|
||||
import com.ryderbelserion.simpleflags.config.impl.Config;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.types.RootKeys;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.Flag;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
|
||||
@@ -42,6 +42,6 @@ public class DrownFlag extends StateFlagBuilder {
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return this.config.getProperty(Config.drowning_flag);
|
||||
return this.config.getProperty(RootKeys.is_drowning_flag_enabled);
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
package com.ryderbelserion.simpleflags.flags.types;
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags.types.entity;
|
||||
|
||||
import com.ryderbelserion.simpleflags.config.impl.Config;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.types.RootKeys;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.Flag;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
|
||||
@@ -42,6 +42,6 @@ public class NaturalFlag extends StateFlagBuilder {
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return this.config.getProperty(Config.natural_spawning_flag);
|
||||
return this.config.getProperty(RootKeys.is_natural_spawning_flag_enabled);
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package com.ryderbelserion.simpleflags.paper.api.registry.flags.types.other;
|
||||
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.types.RootKeys;
|
||||
import com.sk89q.worldguard.protection.flags.Flag;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
|
||||
|
||||
public class FlyFlag extends StateFlagBuilder {
|
||||
|
||||
private StateFlag flag;
|
||||
|
||||
@Override
|
||||
public void register() {
|
||||
if (!isEnabled()) return;
|
||||
|
||||
try {
|
||||
getRegistry().register(this.flag = new StateFlag("prevent-flight", true));
|
||||
} catch (FlagConflictException exception) {
|
||||
Flag<?> existingFlag = getRegistry().get("prevent-flight");
|
||||
|
||||
if (existingFlag instanceof StateFlag stateFlag) {
|
||||
this.flag = stateFlag;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.logger.warn("An error has occurred registering {} flag. Reason: {}", getName(), exception.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return CustomFlags.FLIGHT_FLAG.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public StateFlag getFlag() {
|
||||
return this.flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return this.config.getProperty(RootKeys.is_fly_flag_enabled);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.ryderbelserion.simpleflags.paper.commands;
|
||||
|
||||
import com.mojang.brigadier.tree.LiteralCommandNode;
|
||||
import com.ryderbelserion.fusion.kyori.permissions.PermissionContext;
|
||||
import com.ryderbelserion.fusion.paper.builders.commands.context.PaperCommandContext;
|
||||
import com.ryderbelserion.simpleflags.paper.api.SimpleFlagsCommand;
|
||||
import com.ryderbelserion.simpleflags.paper.api.enums.messages.Message;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import io.papermc.paper.command.brigadier.Commands;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jspecify.annotations.NonNull;
|
||||
import java.util.List;
|
||||
|
||||
public class BaseCommand extends SimpleFlagsCommand {
|
||||
|
||||
@Override
|
||||
public void run(@NonNull final PaperCommandContext context) {
|
||||
Message.help_menu.sendMessage(context.getSender());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull final LiteralCommandNode<CommandSourceStack> literal() {
|
||||
return Commands.literal("simpleflags").requires(this::requirement).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull final List<PermissionContext> getPermissions() {
|
||||
return List.of(
|
||||
new PermissionContext(
|
||||
"simpleflags.help",
|
||||
"Gives access to /simpleflags help."
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean requirement(@NonNull final CommandSourceStack context) {
|
||||
boolean hasPermission = false;
|
||||
|
||||
final CommandSender sender = context.getSender();
|
||||
|
||||
for (final PermissionContext permissionContext : getPermissions()) {
|
||||
final String permission = permissionContext.getPermission();
|
||||
|
||||
hasPermission = sender.hasPermission(permission);
|
||||
|
||||
if (hasPermission) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return hasPermission;
|
||||
}
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
package com.ryderbelserion.simpleflags.paper.commands.types;
|
||||
|
||||
import com.mojang.brigadier.Command;
|
||||
import com.mojang.brigadier.tree.LiteralCommandNode;
|
||||
import com.ryderbelserion.fusion.kyori.permissions.PermissionContext;
|
||||
import com.ryderbelserion.fusion.kyori.permissions.enums.PermissionType;
|
||||
import com.ryderbelserion.fusion.paper.builders.commands.context.PaperCommandContext;
|
||||
import com.ryderbelserion.simpleflags.paper.api.SimpleFlagsCommand;
|
||||
import com.ryderbelserion.simpleflags.paper.api.enums.messages.Message;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import io.papermc.paper.command.brigadier.Commands;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.jspecify.annotations.NonNull;
|
||||
import java.util.List;
|
||||
|
||||
public class ReloadCommand extends SimpleFlagsCommand {
|
||||
|
||||
@Override
|
||||
public void run(@NonNull final PaperCommandContext context) {
|
||||
this.fusion.reload();
|
||||
|
||||
this.configManager.reload();
|
||||
|
||||
Message.reload_plugin.sendMessage(context.getSender());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull final LiteralCommandNode<CommandSourceStack> literal() {
|
||||
return Commands.literal("reload").requires(this::requirement)
|
||||
.executes(context -> {
|
||||
run(new PaperCommandContext(context));
|
||||
|
||||
return Command.SINGLE_SUCCESS;
|
||||
}).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull final List<PermissionContext> getPermissions() {
|
||||
return List.of(
|
||||
new PermissionContext(
|
||||
"simpleflags.reload",
|
||||
"Reloads the plugin!",
|
||||
PermissionType.OP
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean requirement(@NonNull final CommandSourceStack context) {
|
||||
boolean hasPermission = false;
|
||||
|
||||
final CommandSender sender = context.getSender();
|
||||
|
||||
for (final PermissionContext permissionContext : getPermissions()) {
|
||||
final String permission = permissionContext.getPermission();
|
||||
|
||||
hasPermission = sender.hasPermission(permission);
|
||||
|
||||
if (hasPermission) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return hasPermission;
|
||||
}
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package com.ryderbelserion.simpleflags.paper.config.impl;
|
||||
|
||||
import com.ryderbelserion.fusion.api.enums.Level;
|
||||
import com.ryderbelserion.fusion.api.objects.FusionKey;
|
||||
import com.ryderbelserion.fusion.core.api.config.ConfigBuilder;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.PropertyManager;
|
||||
import com.ryderbelserion.fusion.core.api.registry.message.MessageRegistry;
|
||||
import com.ryderbelserion.fusion.core.files.FileManager;
|
||||
import com.ryderbelserion.fusion.paper.FusionPaper;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.api.enums.messages.Message;
|
||||
import com.ryderbelserion.simpleflags.paper.config.impl.types.RootKeys;
|
||||
import com.ryderbelserion.simpleflags.paper.api.enums.FileKeys;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jspecify.annotations.NonNull;
|
||||
import org.spongepowered.configurate.CommentedConfigurationNode;
|
||||
import org.spongepowered.configurate.loader.HeaderMode;
|
||||
import org.spongepowered.configurate.yaml.NodeStyle;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import static com.ryderbelserion.simpleflags.paper.SimpleFlags.namespace;
|
||||
|
||||
public final class ConfigManager {
|
||||
|
||||
private final SimpleFlags platform = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
private final MessageRegistry registry = this.platform.getMessageRegistry();
|
||||
|
||||
private final FileManager fileManager = this.platform.getFileManager();
|
||||
|
||||
private final FusionPaper fusion = this.platform.getFusion();
|
||||
|
||||
private final Path path = this.platform.getDataPath();
|
||||
|
||||
private PropertyManager config;
|
||||
|
||||
public void init() {
|
||||
this.config = ConfigBuilder.withYamlPath(this.path.resolve("config.yml"))
|
||||
.configuration(RootKeys.class)
|
||||
.withNodeStyle(NodeStyle.BLOCK)
|
||||
.withHeaderMode(HeaderMode.PRESERVE)
|
||||
.withIndent(1)
|
||||
.create();
|
||||
|
||||
for (final FileKeys key : FileKeys.values()) {
|
||||
key.load();
|
||||
}
|
||||
}
|
||||
|
||||
public void loadMessages() {
|
||||
final List<Path> paths = this.fileManager.getFilesByPath(this.path.resolve("locale"), ".yml");
|
||||
|
||||
paths.add(this.path.resolve("messages.yml")); // add to list
|
||||
|
||||
this.registry.init(action -> {
|
||||
for (final Path path : paths) {
|
||||
this.fileManager.getYamlFile(path).ifPresentOrElse(customFile -> {
|
||||
final String fileName = customFile.getFileName();
|
||||
|
||||
final FusionKey key = FusionKey.key(namespace, fileName.equalsIgnoreCase("messages.yml") ? "default" : fileName.toLowerCase());
|
||||
|
||||
final CommentedConfigurationNode configuration = customFile.getConfiguration();
|
||||
|
||||
for (final Message message : Message.values()) {
|
||||
message.addKey(action, configuration, key);
|
||||
}
|
||||
}, () -> this.fusion.log(Level.info, "Path %s not found in cache.".formatted(path)));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void reload() {
|
||||
this.config.reload();
|
||||
|
||||
for (final FileKeys key : FileKeys.values()) {
|
||||
key.reload();
|
||||
}
|
||||
|
||||
loadMessages();
|
||||
}
|
||||
|
||||
public @NonNull PropertyManager getConfig() {
|
||||
return this.config;
|
||||
}
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
package com.ryderbelserion.simpleflags.paper.config.impl.types;
|
||||
|
||||
import com.ryderbelserion.fusion.core.api.config.annotations.Comment;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.builders.CommentsBuilder;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.interfaces.IPropertyHolder;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.objects.interfaces.Property;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.objects.primitives.BooleanProperty;
|
||||
import com.ryderbelserion.fusion.core.api.config.properties.objects.primitives.string.StringProperty;
|
||||
import com.ryderbelserion.simpleflags.paper.api.enums.messages.State;
|
||||
import org.jspecify.annotations.NonNull;
|
||||
import java.util.List;
|
||||
import static com.ryderbelserion.fusion.core.api.config.properties.PropertyBuilder.newBeanProperty;
|
||||
import static com.ryderbelserion.fusion.core.api.config.properties.PropertyBuilder.newProperty;
|
||||
|
||||
public class RootKeys implements IPropertyHolder {
|
||||
|
||||
@Override
|
||||
public void registerComments(@NonNull final CommentsBuilder configuration) {
|
||||
final List<String> deprecation = List.of(
|
||||
" ",
|
||||
"Warning: This section is subject to change so it is considered deprecated.",
|
||||
"This is your warning before the change happens. Please read the latest changelogs",
|
||||
" "
|
||||
);
|
||||
|
||||
configuration.setComment(List.of(
|
||||
"Support: https://discord.gg/ktxCyUd7Ny",
|
||||
"Github: https://github.com/ryderbelserion",
|
||||
" ",
|
||||
"Issues: https://github.com/ryderbelserion/SimpleFlags/issues",
|
||||
"Features: https://github.com/ryderbelserion/SimpleFlags/issues",
|
||||
" ",
|
||||
"Sounds: https://mudkipdev.github.io/minecraft-sound-explorer/"
|
||||
), "root");
|
||||
|
||||
configuration.setComment(List.of(
|
||||
"Flags related to the Crafter block."
|
||||
), "flags", "crafter-flag");
|
||||
|
||||
configuration.setComment(List.of(
|
||||
"Configure the flags of the plugin."
|
||||
), "flags");
|
||||
}
|
||||
|
||||
@Comment("The prefix used in commands")
|
||||
public static final StringProperty command_prefix = newProperty(" <gradient:#e91e63:gold>SimpleFlags</gradient> | ", "root", "prefix");
|
||||
|
||||
@Comment({
|
||||
"This option will tell the plugin to send all messages as action bars or messages in chat.",
|
||||
" ",
|
||||
"send_message -> sends messages in chat.",
|
||||
"send_actionbar -> sends messages in actionbar.",
|
||||
" "
|
||||
})
|
||||
public static final Property<State> message_state = newBeanProperty(State.class, State.send_message, "root", "message-state");
|
||||
|
||||
@Comment("This flag prevent-drowning as you guessed it, it prevents drowning if enabled.")
|
||||
public static final BooleanProperty is_drowning_flag_enabled = newProperty(false, "flags", "drowning-flag");
|
||||
|
||||
@Comment("This flag prevent-flight Mr Holmes denies flight in a region if enabled.")
|
||||
public static final BooleanProperty is_fly_flag_enabled = newProperty(false, "flags", "flight-flag");
|
||||
|
||||
@Comment("This flag prevent-crafter-interaction prevents interacting with Crafters.")
|
||||
public static final BooleanProperty is_crafter_interaction_enabled = newProperty(false, "flags", "crafter-flag", "interaction");
|
||||
|
||||
@Comment("This flag prevent-crafter-block prevents placing Crafters.")
|
||||
public static final BooleanProperty is_crafter_place_enabled = newProperty(false, "flags", "crafter-flag", "place");
|
||||
|
||||
@Comment("This flag prevent-natural-spawning prevents natural mob spawns in regions.")
|
||||
public static final BooleanProperty is_natural_spawning_flag_enabled = newProperty(false, "flags", "natural-spawning-flag");
|
||||
}
|
||||
+7
-7
@@ -1,9 +1,9 @@
|
||||
package com.ryderbelserion.simpleflags.listeners;
|
||||
package com.ryderbelserion.simpleflags.paper.listeners.block;
|
||||
|
||||
import com.ryderbelserion.simpleflags.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
@@ -13,7 +13,7 @@ import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class BlockListener implements Listener {
|
||||
public class CrafterListener implements Listener {
|
||||
|
||||
private final SimpleFlags plugin = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
@@ -70,4 +70,4 @@ public class BlockListener implements Listener {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
-6
@@ -1,10 +1,11 @@
|
||||
package com.ryderbelserion.simpleflags.listeners;
|
||||
package com.ryderbelserion.simpleflags.paper.listeners.damage;
|
||||
|
||||
import com.ryderbelserion.simpleflags.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import org.bukkit.damage.DamageSource;
|
||||
import org.bukkit.damage.DamageType;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -37,7 +38,9 @@ public class DrowningListener implements Listener {
|
||||
|
||||
if (stateFlag == null) return;
|
||||
|
||||
if (!flag.preventDamage(player, event.getDamageSource(), DamageType.DROWN, stateFlag)) {
|
||||
final DamageSource source = event.getDamageSource();
|
||||
|
||||
if (!flag.preventDamage(player, source, DamageType.DROWN, stateFlag)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -1,17 +1,17 @@
|
||||
package com.ryderbelserion.simpleflags.listeners;
|
||||
package com.ryderbelserion.simpleflags.paper.listeners.entity;
|
||||
|
||||
import com.destroystokyo.paper.event.entity.PreCreatureSpawnEvent;
|
||||
import com.ryderbelserion.simpleflags.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class NaturalListener implements Listener {
|
||||
public class NaturalSpawnListener implements Listener {
|
||||
|
||||
private final SimpleFlags plugin = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package com.ryderbelserion.simpleflags.paper.listeners.other;
|
||||
|
||||
import com.ryderbelserion.fusion.paper.FusionPaper;
|
||||
import com.ryderbelserion.simpleflags.paper.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.builders.StateFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.paper.api.registry.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerToggleFlightEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class FlightStatusListener implements Listener {
|
||||
|
||||
private final SimpleFlags plugin = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
private final FlagManager flagManager = this.plugin.getFlagManager();
|
||||
|
||||
private final FusionPaper fusion = this.plugin.getFusion();
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerToggleFlight(final PlayerToggleFlightEvent event) {
|
||||
this.flagManager.getByFlag(CustomFlags.FLIGHT_FLAG.getName()).ifPresent(index -> {
|
||||
final StateFlagBuilder builder = (StateFlagBuilder) index;
|
||||
|
||||
if (!builder.isEnabled()) return;
|
||||
|
||||
final StateFlag flag = builder.getFlag();
|
||||
|
||||
if (flag == null) return;
|
||||
|
||||
final Player player = event.getPlayer();
|
||||
|
||||
if (!builder.testLocation(player, flag)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
# Support: https://discord.gg/ktxCyUd7Ny
|
||||
# Github: https://github.com/ryderbelserion
|
||||
|
||||
# Issues: https://github.com/ryderbelserion/SimpleFlags/issues
|
||||
# Features: https://github.com/ryderbelserion/SimpleFlags/issues
|
||||
|
||||
# Sounds: https://mudkipdev.github.io/minecraft-sound-explorer/
|
||||
root:
|
||||
# The prefix that appears in front of messages.
|
||||
prefix: " <gradient:#e91e63:gold>SimpleFlags</gradient> | "
|
||||
# This option will tell the plugin to send all messages as action bars or messages in chat.
|
||||
# send_message -> sends messages in chat.
|
||||
# send_actionbar -> sends messages in actionbar.
|
||||
message-state: "send_message"
|
||||
|
||||
# Configure the flags of the plugin.
|
||||
flags:
|
||||
# This flag prevent-drowning as you guessed it, it prevents drowning if enabled.
|
||||
drowning-flag: false
|
||||
# Flags related to the Crafter block.
|
||||
crafter-flag:
|
||||
# This flag prevent-crafter-interaction prevents interacting with Crafters.
|
||||
interaction: false
|
||||
# This flag prevent-crafter-block prevents placing Crafters.
|
||||
place: false
|
||||
# This flag prevent-natural-spawning prevents natural mob spawns in regions.
|
||||
natural-spawning-flag: false
|
||||
# This flag prevent-flight Mr Holmes denies flight in a region if enabled.
|
||||
flight-flag: false
|
||||
@@ -0,0 +1,10 @@
|
||||
# The start of the messages file!
|
||||
root:
|
||||
# Sent when doing /simpleflags reload
|
||||
reload-plugin: "{prefix}<red>You have reloaded the plugin."
|
||||
# Sent when doing /simpleflags
|
||||
help-menu:
|
||||
- "<red>SimpleFlags Help Menu"
|
||||
- ""
|
||||
- "<red>/simpleflags <gray>- <gold>Shows this menu."
|
||||
- "<red>/simpleflags reload <gray>- <gold>Reloads the plugin."
|
||||
@@ -0,0 +1,25 @@
|
||||
name: '${artifact}'
|
||||
main: '${group}.${artifact}'
|
||||
|
||||
version: '${version}'
|
||||
api-version: '${minecraft}'
|
||||
description: '${description}'
|
||||
|
||||
dependencies:
|
||||
server:
|
||||
# Placeholder plugins
|
||||
PlaceholderAPI:
|
||||
load: BEFORE
|
||||
required: false
|
||||
join-classpath: true
|
||||
|
||||
# Skull plugins
|
||||
HeadDatabase:
|
||||
load: BEFORE
|
||||
required: false
|
||||
join-classpath: true
|
||||
|
||||
WorldGuard:
|
||||
load: AFTER
|
||||
required: true
|
||||
join-classpath: true
|
||||
+9
-1
@@ -1 +1,9 @@
|
||||
rootProject.name = "SimpleFlags"
|
||||
pluginManagement {
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.name = "SimpleFlags"
|
||||
|
||||
include("paper")
|
||||
@@ -1,86 +0,0 @@
|
||||
package com.ryderbelserion.simpleflags;
|
||||
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import com.ryderbelserion.simpleflags.commands.BaseCommand;
|
||||
import com.ryderbelserion.simpleflags.commands.types.CommandHelp;
|
||||
import com.ryderbelserion.simpleflags.commands.types.CommandReload;
|
||||
import com.ryderbelserion.simpleflags.config.ConfigManager;
|
||||
import com.ryderbelserion.simpleflags.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.flags.types.DrownFlag;
|
||||
import com.ryderbelserion.simpleflags.flags.types.NaturalFlag;
|
||||
import com.ryderbelserion.simpleflags.flags.types.temporary.BlockCrafterFlag;
|
||||
import com.ryderbelserion.simpleflags.flags.types.temporary.InteractionCrafterFlag;
|
||||
import com.ryderbelserion.simpleflags.listeners.BlockListener;
|
||||
import com.ryderbelserion.simpleflags.listeners.DrowningListener;
|
||||
import com.ryderbelserion.simpleflags.listeners.NaturalListener;
|
||||
import com.ryderbelserion.vital.paper.Vital;
|
||||
import com.sk89q.worldguard.WorldGuard;
|
||||
import com.sk89q.worldguard.protection.regions.RegionContainer;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
public class SimpleFlags extends Vital {
|
||||
|
||||
private WorldGuard worldGuard;
|
||||
|
||||
private FlagManager flagManager;
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
ConfigManager.load(getDataFolder());
|
||||
|
||||
this.worldGuard = WorldGuard.getInstance();
|
||||
|
||||
this.flagManager = new FlagManager();
|
||||
|
||||
List.of(
|
||||
new DrownFlag(),
|
||||
new NaturalFlag(),
|
||||
|
||||
// temporary
|
||||
new BlockCrafterFlag(),
|
||||
new InteractionCrafterFlag()
|
||||
).forEach(this.flagManager::addFlag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
final PluginManager pluginManager = getServer().getPluginManager();
|
||||
|
||||
pluginManager.registerEvents(new NaturalListener(), this);
|
||||
pluginManager.registerEvents(new DrowningListener(), this);
|
||||
pluginManager.registerEvents(new BlockListener(), this);
|
||||
|
||||
// Register commands.
|
||||
getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, event -> {
|
||||
LiteralArgumentBuilder<CommandSourceStack> root = new BaseCommand().registerPermission().literal().createBuilder();
|
||||
|
||||
List.of(
|
||||
new CommandReload(),
|
||||
new CommandHelp()
|
||||
).forEach(command -> root.then(command.registerPermission().literal()));
|
||||
|
||||
event.registrar().register(root.build(), "the base command for SimpleFlags");
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
super.onDisable();
|
||||
}
|
||||
|
||||
public @NotNull WorldGuard getWorldGuard() {
|
||||
return this.worldGuard;
|
||||
}
|
||||
|
||||
public @NotNull RegionContainer getRegions() {
|
||||
return this.worldGuard.getPlatform().getRegionContainer();
|
||||
}
|
||||
|
||||
public @NotNull FlagManager getFlagManager() {
|
||||
return this.flagManager;
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
package com.ryderbelserion.simpleflags.commands;
|
||||
|
||||
import ch.jalu.configme.SettingsManager;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import com.mojang.brigadier.tree.LiteralCommandNode;
|
||||
import com.ryderbelserion.simpleflags.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.config.ConfigManager;
|
||||
import com.ryderbelserion.simpleflags.config.impl.Locale;
|
||||
import com.ryderbelserion.vital.paper.commands.PaperCommand;
|
||||
import com.ryderbelserion.vital.paper.commands.context.PaperCommandInfo;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import io.papermc.paper.command.brigadier.Commands;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class BaseCommand extends PaperCommand {
|
||||
|
||||
private final SimpleFlags plugin = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
private final SettingsManager locale = ConfigManager.getLocale();
|
||||
|
||||
@Override
|
||||
public void execute(final PaperCommandInfo info) {
|
||||
final CommandSender sender = info.getCommandSender();
|
||||
|
||||
this.locale.getProperty(Locale.help).forEach(sender::sendRichMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final String getPermission() {
|
||||
return "simpleflags.help";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final LiteralCommandNode<CommandSourceStack> literal() {
|
||||
final LiteralArgumentBuilder<CommandSourceStack> root = Commands.literal("simpleflags").requires(source -> source.getSender().hasPermission(getPermission()));
|
||||
|
||||
return root.executes(context -> {
|
||||
execute(new PaperCommandInfo(context));
|
||||
|
||||
return com.mojang.brigadier.Command.SINGLE_SUCCESS;
|
||||
}).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final PaperCommand registerPermission() {
|
||||
final PluginManager pluginManager = this.plugin.getServer().getPluginManager();
|
||||
|
||||
final Permission permission = pluginManager.getPermission(getPermission());
|
||||
|
||||
if (permission == null) {
|
||||
pluginManager.addPermission(new Permission(getPermission(), PermissionDefault.OP));
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
package com.ryderbelserion.simpleflags.commands.types;
|
||||
|
||||
import ch.jalu.configme.SettingsManager;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import com.mojang.brigadier.tree.LiteralCommandNode;
|
||||
import com.ryderbelserion.simpleflags.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.config.ConfigManager;
|
||||
import com.ryderbelserion.simpleflags.config.impl.Locale;
|
||||
import com.ryderbelserion.vital.paper.commands.PaperCommand;
|
||||
import com.ryderbelserion.vital.paper.commands.context.PaperCommandInfo;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import io.papermc.paper.command.brigadier.Commands;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class CommandHelp extends PaperCommand {
|
||||
|
||||
private final SimpleFlags plugin = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
private final SettingsManager locale = ConfigManager.getLocale();
|
||||
|
||||
@Override
|
||||
public void execute(final PaperCommandInfo info) {
|
||||
final CommandSender sender = info.getCommandSender();
|
||||
|
||||
this.locale.getProperty(Locale.help).forEach(sender::sendRichMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final String getPermission() {
|
||||
return "simpleflags.help";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final LiteralCommandNode<CommandSourceStack> literal() {
|
||||
final LiteralArgumentBuilder<CommandSourceStack> root = Commands.literal("help").requires(source -> source.getSender().hasPermission(getPermission()));
|
||||
|
||||
return root.executes(context -> {
|
||||
execute(new PaperCommandInfo(context));
|
||||
|
||||
return com.mojang.brigadier.Command.SINGLE_SUCCESS;
|
||||
}).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final PaperCommand registerPermission() {
|
||||
final PluginManager pluginManager = this.plugin.getServer().getPluginManager();
|
||||
|
||||
final Permission permission = pluginManager.getPermission(getPermission());
|
||||
|
||||
if (permission == null) {
|
||||
pluginManager.addPermission(new Permission(getPermission(), PermissionDefault.OP));
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
package com.ryderbelserion.simpleflags.commands.types;
|
||||
|
||||
import ch.jalu.configme.SettingsManager;
|
||||
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
|
||||
import com.mojang.brigadier.tree.LiteralCommandNode;
|
||||
import com.ryderbelserion.simpleflags.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.config.ConfigManager;
|
||||
import com.ryderbelserion.simpleflags.config.impl.Config;
|
||||
import com.ryderbelserion.simpleflags.config.impl.Locale;
|
||||
import com.ryderbelserion.vital.paper.commands.PaperCommand;
|
||||
import com.ryderbelserion.vital.paper.commands.context.PaperCommandInfo;
|
||||
import io.papermc.paper.command.brigadier.CommandSourceStack;
|
||||
import io.papermc.paper.command.brigadier.Commands;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionDefault;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class CommandReload extends PaperCommand {
|
||||
|
||||
private final SimpleFlags plugin = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
private final SettingsManager config = ConfigManager.getConfig();
|
||||
|
||||
private final SettingsManager locale = ConfigManager.getLocale();
|
||||
|
||||
@Override
|
||||
public void execute(final PaperCommandInfo info) {
|
||||
final CommandSender sender = info.getCommandSender();
|
||||
|
||||
this.config.reload();
|
||||
|
||||
this.locale.reload();
|
||||
|
||||
sender.sendRichMessage(this.locale.getProperty(Locale.reload_plugin).replaceAll("\\{prefix}", this.config.getProperty(Config.command_prefix)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final String getPermission() {
|
||||
return "simpleflags.reload";
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final LiteralCommandNode<CommandSourceStack> literal() {
|
||||
final LiteralArgumentBuilder<CommandSourceStack> root = Commands.literal("reload").requires(source -> source.getSender().hasPermission(getPermission()));
|
||||
|
||||
return root.executes(context -> {
|
||||
execute(new PaperCommandInfo(context));
|
||||
|
||||
return com.mojang.brigadier.Command.SINGLE_SUCCESS;
|
||||
}).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull final PaperCommand registerPermission() {
|
||||
final PluginManager pluginManager = this.plugin.getServer().getPluginManager();
|
||||
|
||||
final Permission permission = pluginManager.getPermission(getPermission());
|
||||
|
||||
if (permission == null) {
|
||||
pluginManager.addPermission(new Permission(getPermission(), PermissionDefault.OP));
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
package com.ryderbelserion.simpleflags.config;
|
||||
|
||||
import ch.jalu.configme.SettingsManager;
|
||||
import ch.jalu.configme.SettingsManagerBuilder;
|
||||
import ch.jalu.configme.resource.YamlFileResourceOptions;
|
||||
import com.ryderbelserion.simpleflags.config.impl.Config;
|
||||
import com.ryderbelserion.simpleflags.config.impl.Locale;
|
||||
import java.io.File;
|
||||
|
||||
public class ConfigManager {
|
||||
|
||||
private static SettingsManager config;
|
||||
private static SettingsManager locale;
|
||||
|
||||
public static void load(final File dataFolder) {
|
||||
// Create config files
|
||||
YamlFileResourceOptions builder = YamlFileResourceOptions.builder().indentationSize(2).build();
|
||||
|
||||
config = SettingsManagerBuilder
|
||||
.withYamlFile(new File(dataFolder, "config.yml"), builder)
|
||||
.useDefaultMigrationService()
|
||||
.configurationData(Config.class)
|
||||
.create();
|
||||
|
||||
locale = SettingsManagerBuilder
|
||||
.withYamlFile(new File(dataFolder, "messages.yml"), builder)
|
||||
.useDefaultMigrationService()
|
||||
.configurationData(Locale.class)
|
||||
.create();
|
||||
}
|
||||
|
||||
public static SettingsManager getConfig() {
|
||||
return config;
|
||||
}
|
||||
|
||||
public static SettingsManager getLocale() {
|
||||
return locale;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package com.ryderbelserion.simpleflags.config.impl;
|
||||
|
||||
import ch.jalu.configme.Comment;
|
||||
import ch.jalu.configme.SettingsHolder;
|
||||
import ch.jalu.configme.configurationdata.CommentsConfiguration;
|
||||
import ch.jalu.configme.properties.Property;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;
|
||||
|
||||
public class Config implements SettingsHolder {
|
||||
|
||||
@Override
|
||||
public void registerComments(@NotNull CommentsConfiguration conf) {
|
||||
conf.setComment("flags.crafter-flag", """
|
||||
Flags related to the crafter block
|
||||
""");
|
||||
}
|
||||
|
||||
@Comment("The prefix that appears in front of messages.")
|
||||
public static final Property<String> command_prefix = newProperty("root.prefix", "<gold>[<red>SimpleFlags<gold>]: ");
|
||||
|
||||
@Comment("The flag prevent_drowning as you guessed it, it prevents drowning if enabled.")
|
||||
public static final Property<Boolean> drowning_flag = newProperty("flags.drowning-flag", false);
|
||||
|
||||
@Comment("The flag prevent_crafter_interaction prevents interacting with crafters.")
|
||||
public static final Property<Boolean> crafter_flag_interaction = newProperty("flags.crafter-flag.interaction", false);
|
||||
|
||||
@Comment("The flag prevent_crafter_block prevents placing crafters.")
|
||||
public static final Property<Boolean> crafter_flag_place = newProperty("flags.crafter-flag.place", false);
|
||||
|
||||
@Comment("The flag prevent_natural_spawning prevents natural mob spawns in regions.")
|
||||
public static final Property<Boolean> natural_spawning_flag = newProperty("flags.natural-spawning-flag", false);
|
||||
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
package com.ryderbelserion.simpleflags.config.impl;
|
||||
|
||||
import ch.jalu.configme.SettingsHolder;
|
||||
import ch.jalu.configme.properties.Property;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static ch.jalu.configme.properties.PropertyInitializer.newListProperty;
|
||||
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;
|
||||
|
||||
public class Locale implements SettingsHolder {
|
||||
|
||||
public static final Property<String> reload_plugin = newProperty("root.reload-plugin", "{prefix}<red>You have reloaded the plugin.");
|
||||
|
||||
public static final Property<List<String>> help = newListProperty("root.help-menu", List.of(
|
||||
"<red>SimpleFlags Help Menu",
|
||||
"",
|
||||
" <red>/simpleflags <gray>- <gold>Shows this menu.",
|
||||
" <red>/simpleflags reload <gray>- <gold>Reloads the plugin."
|
||||
));
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
name: '${name}'
|
||||
main: '${group}.${name}'
|
||||
|
||||
version: '${version}'
|
||||
api-version: '${minecraft}'
|
||||
description: '${description}'
|
||||
|
||||
dependencies:
|
||||
server:
|
||||
WorldGuard:
|
||||
load: AFTER
|
||||
required: true
|
||||
join-classpath: true
|
||||
Reference in new issue
Block a user