diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 25ad56b1..75035c8f 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -14,12 +14,6 @@ jobs:
with:
distribution: temurin
java-version: 21
- - name: Read Version Catalog
- uses: SebRollen/toml-action@v1.2.0
- id: chatmanager_version
- with:
- file: "gradle/libs.versions.toml"
- field: "versions.chatmanager"
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Make gradlew executable
@@ -30,6 +24,10 @@ jobs:
run: ./gradlew modrinth --stacktrace
env:
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
+ - name: Publish to Hangar
+ run: ./gradlew publishAllPublicationsToHangar --stacktrace
+ env:
+ HANGAR_KEY: ${{ secrets.HANGAR_KEY }}
- name: Notify Discord
if: success()
run: ./gradlew release-build --stacktrace
diff --git a/.github/workflows/snapshots.yml b/.github/workflows/snapshots.yml
index a81717dd..53cc0c03 100644
--- a/.github/workflows/snapshots.yml
+++ b/.github/workflows/snapshots.yml
@@ -1,11 +1,9 @@
name: Snapshot Build
-env:
- IS_SNAPSHOT: true
on:
workflow_dispatch:
push:
branches:
- - main
+ - dev
jobs:
build:
@@ -28,6 +26,11 @@ jobs:
env:
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
COMMIT_MESSAGE: ${{ join(github.event.commits.*.message, '
') }}
+ - name: Publish to Hangar
+ run: ./gradlew publishAllPublicationsToHangar --stacktrace
+ env:
+ HANGAR_KEY: ${{ secrets.HANGAR_KEY }}
+ COMMIT_MESSAGE: ${{ join(github.event.commits.*.message, '
') }}
- name: Notify Discord
if: success()
run: ./gradlew dev-build --stacktrace
diff --git a/.gitignore b/.gitignore
index cbf2c5fa..872e71b2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,11 +9,6 @@ build/
### Servers
run/
-!paper/run/config
-!paper/run/bukkit.yml
-!paper/run/eula.txt
-!paper/run/server.properties
-!paper/run/spigot.yml
### Output
jars/
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 64a653b4..16cea6d2 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -11,24 +11,20 @@ rootProject.group = "me.h1dd3nxn1nja.chatmanager"
val git = feather.getGit()
val commitHash: String? = git.getCurrentCommitHash().subSequence(0, 7).toString()
-val isSnapshot: Boolean = System.getenv("IS_SNAPSHOT") != null
+val isSnapshot: Boolean = git.getCurrentBranch() == "dev"
val content: String = if (isSnapshot) "[$commitHash](https://github.com/Crazy-Crew/${rootProject.name}/commit/$commitHash) ${git.getCurrentCommit()}" else rootProject.file("changelog.md").readText(Charsets.UTF_8)
+val minecraft = libs.versions.minecraft.get()
+val versions = listOf(minecraft)
-rootProject.version = version()
+rootProject.version = if (isSnapshot) "$minecraft-$commitHash" else libs.versions.chatmanager.get()
rootProject.description = "The kitchen sink of Chat Management!"
-fun version(): String {
- if (isSnapshot) {
- return "${libs.versions.minecraft.get()}-$commitHash"
- }
-
- return libs.versions.chatmanager.get()
-}
-
feather {
rootDirectory = rootProject.rootDir.toPath()
- val data = git.getCurrentCommitAuthorData().copy(author = git.getCurrentCommitAuthorName())
+ val data = git.getGithubCommit("Crazy-Crew/${rootProject.name}")
+
+ val user = data.user
discord {
webhook {
@@ -39,9 +35,9 @@ feather {
post(System.getenv("BUILD_WEBHOOK"))
}
- username(data.author)
+ username("Ryder Belserion")
- avatar(data.avatar)
+ avatar("https://github.com/ryderbelserion.png")
embeds {
embed {
@@ -77,9 +73,9 @@ feather {
post(System.getenv("BUILD_WEBHOOK"))
}
- username(data.author)
+ username(user.getName())
- avatar(data.avatar)
+ avatar(user.avatar)
content("<@&1372358375433834537>")
@@ -155,7 +151,7 @@ modrinth {
changelog = content
- gameVersions.addAll(listOf(libs.versions.minecraft.get()))
+ gameVersions.addAll(versions)
uploadFile = tasks.jar.get().archiveFile.get()
@@ -165,4 +161,44 @@ modrinth {
autoAddDependsOn = false
detectLoaders = false
-}
\ No newline at end of file
+}
+
+hangarPublish {
+ publications.register("plugin") {
+ apiKey.set(System.getenv("HANGAR_KEY"))
+
+ id.set(rootProject.name)
+
+ version.set(rootProject.version as String)
+
+ channel.set(if (isSnapshot) "Beta" else "Release")
+
+ changelog.set(content)
+
+ platforms {
+ paper {
+ jar = tasks.jar.flatMap { it.archiveFile }
+
+ platformVersions.set(versions)
+
+ dependencies {
+ hangar("PlaceholderAPI") {
+ required = false
+ }
+
+ hangar("Essentials") {
+ required = false
+ }
+
+ url("SuperVanish", "https://www.spigotmc.org/resources/supervanish-be-invisible.1331/") {
+ required = false
+ }
+
+ url("Vault", "https://www.spigotmc.org/resources/vault.34315/") {
+ required = false
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index feaa358d..26c03166 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,3 +1,39 @@
+[versions]
+## Paper
+paperweight = "2.0.0-beta.17" # https://github.com/PaperMC/paperweight
+paper = "1.21.5-R0.1-SNAPSHOT" # https://github.com/PaperMC/Paper
+
+## Minecraft
+minecraft = "1.21.5" # https://minecraft.net
+
+## Plugin API
+placeholderapi = "2.11.6" # https://github.com/placeholderapi
+essentials = "2.20.1" # https://github.com/EssentialsX/Essentials
+vault = "1.7.1" # https://github.com/MilkBowl/Vault
+
+## Other
+bStats = "3.1.0" # https://github.com/Bastian/bStats
+fusion = "1.6.0" # https://github.com/ryderbelserion/Fusion
+
+## ChatManager
+chatmanager = "4.0.3"
+
+## Gradle Plugins
+fix-javadoc = "1.19" # https://github.com/mfnalex/gradle-fix-javadoc-plugin
+run-paper = "2.3.1" # https://github.com/jpenilla/run-task
+minotaur = "2.8.7" # https://github.com/modrinth/minotaur
+feather = "0.4.0" # https://github.com/ryderbelserion/Feather
+hangar = "0.1.3" # https://github.com/HangarMC/hangar-publish-plugin
+shadow = "9.0.0-beta13" # https://github.com/GradleUp/shadow
+
+[plugins]
+# https://github.com/ryderbelserion/Feather
+feather = { id = "com.ryderbelserion.feather.core", version.ref = "feather" }
+# https://github.com/HangarMC/hangar-publish-plugin
+hangar = { id = "io.papermc.hangar-publish-plugin", version.ref = "hangar" }
+# https://github.com/modrinth/minotaur
+minotaur = { id = "com.modrinth.minotaur", version.ref = "minotaur" }
+
[libraries]
# https://github.com/PaperMC/paperweight
paperweight = { module = "io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin", version.ref = "paperweight" }
@@ -15,56 +51,16 @@ paper = { module = "io.papermc.paper:paper-api", version.ref = "paper" }
placeholder-api = { group = "me.clip", name = "placeholderapi", version.ref = "placeholderapi" }
essentials = { group = "net.essentialsx", name = "EssentialsX", version.ref = "essentials" }
-# Fusion API
+# https://github.com/ryderbelserion/Fusion
fusion-paper = { module = "com.ryderbelserion.fusion:fusion-paper", version.ref = "fusion" }
fusion-core = { module = "com.ryderbelserion.fusion:fusion-core", version.ref = "fusion" }
-# bStats API
+# https://github.com/Bastian/bStats
metrics = { module = "org.bstats:bstats-bukkit", version.ref = "bStats" }
-# Vault API
+# https://github.com/MilkBowl/Vault
vault = { group = "com.github.MilkBowl", name = "VaultAPI", version.ref = "vault" }
-[versions]
-paperweight = "2.0.0-beta.17" # https://github.com/PaperMC/paperweight
-paper = "1.21.5-R0.1-SNAPSHOT" # https://github.com/PaperMC/Paper
-run-paper = "2.3.1" # https://github.com/jpenilla/run-task
-minecraft = "1.21.5"
-
-## GradleUp
-shadow = "9.0.0-beta13" # https://github.com/GradleUp/shadow
-
-## Plugin API
-placeholderapi = "2.11.6" # https://github.com/placeholderapi
-itemsadder = "4.0.10" # https://github.com/ItemsAdder
-oraxen = "1.190.0" # https://github.com/oraxen
-nexo = "1.6.0" # https://github.com/Nexo-MC
-
-# Essentials API
-essentials = "2.20.1"
-
-bStats = "3.1.0" # https://github.com/Bastian/bStats
-
-# Vault API
-vault = "1.7.1"
-
-## Gradle Plugins
-feather = "0.3.2" # https://github.com/ryderbelserion/Feather
-minotaur = "2.8.7" # https://github.com/modrinth/minotaur
-hangar = "0.1.3" # https://github.com/HangarMC/hangar-publish-plugin
-
-fusion = "1.6.0" # https://github.com/ryderbelserion/Fusion
-
-chatmanager = "4.0.3"
-
-[plugins]
-# https://github.com/ryderbelserion/Feather
-feather = { id = "com.ryderbelserion.feather.core", version.ref = "feather" }
-# https://github.com/HangarMC/hangar-publish-plugin
-hangar = { id = "io.papermc.hangar-publish-plugin", version.ref = "hangar" }
-# https://github.com/modrinth/minotaur
-minotaur = { id = "com.modrinth.minotaur", version.ref = "minotaur" }
-
[bundles]
build = [
"shadow"
diff --git a/paper/build.gradle.kts b/paper/build.gradle.kts
index 9efa2281..7f9ecfbe 100644
--- a/paper/build.gradle.kts
+++ b/paper/build.gradle.kts
@@ -35,6 +35,13 @@ tasks {
}
shadowJar {
+ archiveBaseName.set("${rootProject.name}-${rootProject.version}")
+
+ copy {
+ from(project.layout.buildDirectory.dir("libs"))
+ into(rootProject.layout.buildDirectory.dir("libs"))
+ }
+
listOf(
"com.ryderbelserion.fusion",
"org.bstats"
@@ -67,6 +74,7 @@ tasks {
runServer {
jvmArgs("-Dnet.kyori.ansi.colorLevel=truecolor")
+ jvmArgs("-Dcom.mojang.eula.agree=true")
defaultCharacterEncoding = Charsets.UTF_8.name()
diff --git a/paper/run/bukkit.yml b/paper/run/bukkit.yml
deleted file mode 100644
index 7419721e..00000000
--- a/paper/run/bukkit.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-# This is the Bukkit configuration file in Paper.
-# As you can see, there's actually not that much to configure without any plugins.
-#
-# If you need help with the configuration or have any questions related to Paper,
-# join us in our Discord or check the docs page.
-#
-# File Reference: https://docs.papermc.io/paper/reference/bukkit-configuration/
-# Docs: https://docs.papermc.io/
-# Discord: https://discord.gg/papermc
-# Website: https://papermc.io/
-
-settings:
- allow-end: false
- warn-on-overload: true
- permissions-file: permissions.yml
- update-folder: update
- plugin-profiling: false
- connection-throttle: 4000
- query-plugins: true
- deprecated-verbose: default
- shutdown-message: Server closed
- minimum-api: none
- use-map-color-cache: true
-spawn-limits:
- monsters: 70
- animals: 10
- water-animals: 5
- water-ambient: 20
- water-underground-creature: 5
- axolotls: 5
- ambient: 15
-chunk-gc:
- period-in-ticks: 600
-ticks-per:
- animal-spawns: 400
- monster-spawns: 1
- water-spawns: 1
- water-ambient-spawns: 1
- water-underground-creature-spawns: 1
- axolotl-spawns: 1
- ambient-spawns: 1
- autosave: 6000
-aliases: now-in-commands.yml
diff --git a/paper/run/config/paper-global.yml b/paper/run/config/paper-global.yml
deleted file mode 100644
index eccc79e7..00000000
--- a/paper/run/config/paper-global.yml
+++ /dev/null
@@ -1,142 +0,0 @@
-# This is the global configuration file for Paper.
-# As you can see, there's a lot to configure. Some options may impact gameplay, so use
-# with caution, and make sure you know what each option does before configuring.
-#
-# If you need help with the configuration or have any questions related to Paper,
-# join us in our Discord or check the docs page.
-#
-# The world configuration options have been moved inside
-# their respective world folder. The files are named paper-world.yml
-#
-# File Reference: https://docs.papermc.io/paper/reference/global-configuration/
-# Docs: https://docs.papermc.io/
-# Discord: https://discord.gg/papermc
-# Website: https://papermc.io/
-
-_version: 29
-anticheat:
- obfuscation:
- items:
- all-models:
- also-obfuscate: []
- dont-obfuscate:
- - minecraft:lodestone_tracker
- sanitize-count: true
- enable-item-obfuscation: false
- model-overrides:
- minecraft:elytra:
- also-obfuscate: []
- dont-obfuscate:
- - minecraft:damage
- sanitize-count: true
-block-updates:
- disable-chorus-plant-updates: false
- disable-mushroom-block-updates: false
- disable-noteblock-updates: false
- disable-tripwire-updates: false
-chunk-loading-advanced:
- auto-config-send-distance: true
- player-max-concurrent-chunk-generates: 0
- player-max-concurrent-chunk-loads: 0
-chunk-loading-basic:
- player-max-chunk-generate-rate: -1.0
- player-max-chunk-load-rate: 100.0
- player-max-chunk-send-rate: 75.0
-chunk-system:
- gen-parallelism: default
- io-threads: -1
- worker-threads: -1
-collisions:
- enable-player-collisions: true
- send-full-pos-for-hard-colliding-entities: true
-commands:
- ride-command-allow-player-as-vehicle: false
- suggest-player-names-when-null-tab-completions: true
- time-command-affects-all-worlds: false
-console:
- enable-brigadier-completions: true
- enable-brigadier-highlighting: true
- has-all-permissions: false
-item-validation:
- book:
- author: 8192
- page: 16384
- title: 8192
- book-size:
- page-max: 2560
- total-multiplier: 0.98
- display-name: 8192
- lore-line: 8192
- resolve-selectors-in-books: false
-logging:
- deobfuscate-stacktraces: true
-messages:
- kick:
- authentication-servers-down:
- connection-throttle: Connection throttled! Please wait before reconnecting.
- flying-player:
- flying-vehicle:
- no-permission: I'm sorry, but you do not have permission to perform this command.
- Please contact the server administrators if you believe that this is in error.
- use-display-name-in-quit-message: false
-misc:
- chat-threads:
- chat-executor-core-size: -1
- chat-executor-max-size: -1
- client-interaction-leniency-distance: default
- compression-level: default
- fix-entity-position-desync: true
- load-permissions-yml-before-plugins: true
- max-joins-per-tick: 5
- region-file-cache-size: 256
- strict-advancement-dimension-check: false
- use-alternative-luck-formula: false
- use-dimension-type-for-custom-spawners: false
- xp-orb-groups-per-area: default
-packet-limiter:
- all-packets:
- action: KICK
- interval: 7.0
- max-packet-rate: 500.0
- kick-message:
- overrides:
- ServerboundPlaceRecipePacket:
- action: DROP
- interval: 4.0
- max-packet-rate: 5.0
-player-auto-save:
- max-per-tick: -1
- rate: -1
-proxies:
- bungee-cord:
- online-mode: true
- proxy-protocol: false
- velocity:
- enabled: false
- online-mode: true
- secret: ''
-scoreboards:
- save-empty-scoreboard-teams: true
- track-plugin-scoreboards: false
-spam-limiter:
- incoming-packet-threshold: 300
- recipe-spam-increment: 1
- recipe-spam-limit: 20
- tab-spam-increment: 1
- tab-spam-limit: 500
-spark:
- enable-immediately: false
- enabled: true
-unsupported-settings:
- allow-headless-pistons: false
- allow-permanent-block-break-exploits: false
- allow-piston-duplication: false
- allow-unsafe-end-portal-teleportation: false
- compression-format: ZLIB
- perform-username-validation: true
- skip-tripwire-hook-placement-validation: false
- skip-vanilla-damage-tick-when-shield-blocked: false
- update-equipment-on-player-actions: true
-watchdog:
- early-warning-delay: 10000
- early-warning-every: 5000
diff --git a/paper/run/config/paper-world-defaults.yml b/paper/run/config/paper-world-defaults.yml
deleted file mode 100644
index 3ede446e..00000000
--- a/paper/run/config/paper-world-defaults.yml
+++ /dev/null
@@ -1,318 +0,0 @@
-# This is the world defaults configuration file for Paper.
-# As you can see, there's a lot to configure. Some options may impact gameplay, so use
-# with caution, and make sure you know what each option does before configuring.
-#
-# If you need help with the configuration or have any questions related to Paper,
-# join us in our Discord or check the docs page.
-#
-# Configuration options here apply to all worlds, unless you specify overrides inside
-# the world-specific config file inside each world folder.
-#
-# File Reference: https://docs.papermc.io/paper/reference/world-configuration/
-# Docs: https://docs.papermc.io/
-# Discord: https://discord.gg/papermc
-# Website: https://papermc.io/
-
-_version: 31
-anticheat:
- anti-xray:
- enabled: false
- engine-mode: 1
- hidden-blocks:
- - copper_ore
- - deepslate_copper_ore
- - raw_copper_block
- - gold_ore
- - deepslate_gold_ore
- - iron_ore
- - deepslate_iron_ore
- - raw_iron_block
- - coal_ore
- - deepslate_coal_ore
- - lapis_ore
- - deepslate_lapis_ore
- - mossy_cobblestone
- - obsidian
- - chest
- - diamond_ore
- - deepslate_diamond_ore
- - redstone_ore
- - deepslate_redstone_ore
- - clay
- - emerald_ore
- - deepslate_emerald_ore
- - ender_chest
- lava-obscures: false
- max-block-height: 64
- replacement-blocks:
- - stone
- - oak_planks
- - deepslate
- update-radius: 2
- use-permission: false
-chunks:
- auto-save-interval: default
- delay-chunk-unloads-by: 10s
- entity-per-chunk-save-limit:
- arrow: -1
- ender_pearl: -1
- experience_orb: -1
- fireball: -1
- small_fireball: -1
- snowball: -1
- fixed-chunk-inhabited-time: -1
- flush-regions-on-save: false
- max-auto-save-chunks-per-tick: 24
- prevent-moving-into-unloaded-chunks: false
-collisions:
- allow-player-cramming-damage: false
- allow-vehicle-collisions: true
- fix-climbing-bypassing-cramming-rule: false
- max-entity-collisions: 8
- only-players-collide: false
-command-blocks:
- force-follow-perm-level: true
- permissions-level: 2
-entities:
- armor-stands:
- do-collision-entity-lookups: true
- tick: true
- behavior:
- allow-spider-world-border-climbing: true
- baby-zombie-movement-modifier: 0.5
- cooldown-failed-beehive-releases: true
- disable-chest-cat-detection: false
- disable-creeper-lingering-effect: false
- disable-player-crits: false
- door-breaking-difficulty:
- husk:
- - HARD
- vindicator:
- - NORMAL
- - HARD
- zombie:
- - HARD
- zombie_villager:
- - HARD
- zombified_piglin:
- - HARD
- ender-dragons-death-always-places-dragon-egg: false
- experience-merge-max-value: -1
- mobs-can-always-pick-up-loot:
- skeletons: false
- zombies: false
- nerf-pigmen-from-nether-portals: false
- only-merge-items-horizontally: false
- parrots-are-unaffected-by-player-movement: false
- phantoms-do-not-spawn-on-creative-players: true
- phantoms-only-attack-insomniacs: true
- phantoms-spawn-attempt-max-seconds: 119
- phantoms-spawn-attempt-min-seconds: 60
- piglins-guard-chests: true
- pillager-patrols:
- disable: false
- spawn-chance: 0.2
- spawn-delay:
- per-player: false
- ticks: 12000
- start:
- day: 5
- per-player: false
- player-insomnia-start-ticks: 72000
- should-remove-dragon: false
- spawner-nerfed-mobs-should-jump: false
- zombie-villager-infection-chance: default
- zombies-target-turtle-eggs: true
- markers:
- tick: true
- mob-effects:
- immune-to-wither-effect:
- wither: true
- wither-skeleton: true
- spiders-immune-to-poison-effect: true
- sniffer:
- boosted-hatch-time: default
- hatch-time: default
- spawning:
- all-chunks-are-slime-chunks: false
- alt-item-despawn-rate:
- enabled: false
- items:
- cobblestone: 300
- count-all-mobs-for-spawning: false
- creative-arrow-despawn-rate: default
- despawn-range-shape: ELLIPSOID
- despawn-ranges:
- ambient:
- hard: default
- soft: default
- axolotls:
- hard: default
- soft: default
- creature:
- hard: default
- soft: default
- misc:
- hard: default
- soft: default
- monster:
- hard: default
- soft: default
- underground_water_creature:
- hard: default
- soft: default
- water_ambient:
- hard: default
- soft: default
- water_creature:
- hard: default
- soft: default
- despawn-time:
- llama_spit: disabled
- snowball: disabled
- disable-mob-spawner-spawn-egg-transformation: false
- duplicate-uuid:
- mode: SAFE_REGEN
- safe-regen-delete-range: 32
- filter-bad-tile-entity-nbt-from-falling-blocks: true
- filtered-entity-tag-nbt-paths:
- - Pos
- - Motion
- - sleeping_pos
- iron-golems-can-spawn-in-air: false
- monster-spawn-max-light-level: default
- non-player-arrow-despawn-rate: default
- per-player-mob-spawns: true
- scan-for-legacy-ender-dragon: true
- skeleton-horse-thunder-spawn-chance: default
- slime-spawn-height:
- slime-chunk:
- maximum: 40.0
- surface-biome:
- maximum: 70.0
- minimum: 50.0
- spawn-limits:
- ambient: -1
- axolotls: -1
- creature: -1
- monster: -1
- underground_water_creature: -1
- water_ambient: -1
- water_creature: -1
- ticks-per-spawn:
- ambient: -1
- axolotls: -1
- creature: -1
- monster: -1
- underground_water_creature: -1
- water_ambient: -1
- water_creature: -1
- wandering-trader:
- spawn-chance-failure-increment: 25
- spawn-chance-max: 75
- spawn-chance-min: 25
- spawn-day-length: 24000
- spawn-minute-length: 1200
- wateranimal-spawn-height:
- maximum: default
- minimum: default
- tracking-range-y:
- animal: default
- display: default
- enabled: false
- misc: default
- monster: default
- other: default
- player: default
-environment:
- disable-explosion-knockback: false
- disable-ice-and-snow: false
- disable-thunder: false
- fire-tick-delay: 30
- frosted-ice:
- delay:
- max: 40
- min: 20
- enabled: true
- generate-flat-bedrock: false
- locate-structures-outside-world-border: false
- max-block-ticks: 65536
- max-fluid-ticks: 65536
- nether-ceiling-void-damage-height: disabled
- optimize-explosions: false
- portal-create-radius: 16
- portal-search-radius: 128
- portal-search-vanilla-dimension-scaling: true
- treasure-maps:
- enabled: true
- find-already-discovered:
- loot-tables: default
- villager-trade: false
- void-damage-amount: 4.0
- void-damage-min-build-height-offset: -64.0
- water-over-lava-flow-speed: 5
-feature-seeds:
- generate-random-seeds-for-all: false
-fishing-time-range:
- maximum: 600
- minimum: 100
-fixes:
- disable-unloaded-chunk-enderpearl-exploit: false
- falling-block-height-nerf: disabled
- fix-items-merging-through-walls: false
- prevent-tnt-from-moving-in-water: false
- split-overstacked-loot: true
- tnt-entity-height-nerf: disabled
-hopper:
- cooldown-when-full: true
- disable-move-event: false
- ignore-occluding-blocks: false
-lootables:
- auto-replenish: false
- max-refills: -1
- refresh-max: 2d
- refresh-min: 12h
- reset-seed-on-fill: true
- restrict-player-reloot: true
- restrict-player-reloot-time: disabled
- retain-unlooted-shulker-box-loot-table-on-non-player-break: true
-maps:
- item-frame-cursor-limit: 128
- item-frame-cursor-update-interval: 10
-max-growth-height:
- bamboo:
- max: 16
- min: 11
- cactus: 3
- reeds: 3
-misc:
- alternate-current-update-order: HORIZONTAL_FIRST_OUTWARD
- disable-end-credits: false
- disable-relative-projectile-velocity: false
- disable-sprint-interruption-on-attack: false
- legacy-ender-pearl-behavior: false
- max-leash-distance: default
- redstone-implementation: VANILLA
- shield-blocking-delay: 5
- show-sign-click-command-failure-msgs-to-player: false
- update-pathfinding-on-block-update: true
-scoreboards:
- allow-non-player-entities-on-scoreboards: true
- use-vanilla-world-scoreboard-name-coloring: false
-spawn:
- allow-using-signs-inside-spawn-protection: false
-tick-rates:
- behavior:
- villager:
- validatenearbypoi: -1
- container-update: 1
- dry-farmland: 1
- grass-spread: 1
- mob-spawner: 1
- sensor:
- villager:
- secondarypoisensor: 40
- wet-farmland: 1
-unsupported-settings:
- disable-world-ticking-when-empty: false
- fix-invulnerable-end-crystal-exploit: true
diff --git a/paper/run/eula.txt b/paper/run/eula.txt
deleted file mode 100644
index f4e3391a..00000000
--- a/paper/run/eula.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA).
-#Fri May 09 13:50:37 EDT 2025
-eula=true
\ No newline at end of file
diff --git a/paper/run/server.properties b/paper/run/server.properties
deleted file mode 100644
index 7f89e229..00000000
--- a/paper/run/server.properties
+++ /dev/null
@@ -1,64 +0,0 @@
-#Minecraft server properties
-#Thu May 29 15:38:39 EDT 2025
-accepts-transfers=false
-allow-flight=false
-allow-nether=false
-broadcast-console-to-ops=true
-broadcast-rcon-to-ops=true
-bug-report-link=
-debug=false
-difficulty=easy
-enable-command-block=false
-enable-jmx-monitoring=false
-enable-query=false
-enable-rcon=false
-enable-status=true
-enforce-secure-profile=true
-enforce-whitelist=false
-entity-broadcast-range-percentage=100
-force-gamemode=false
-function-permission-level=2
-gamemode=survival
-generate-structures=true
-generator-settings={}
-hardcore=false
-hide-online-players=false
-initial-disabled-packs=
-initial-enabled-packs=vanilla
-level-name=world
-level-seed=
-level-type=minecraft\:normal
-log-ips=true
-max-chained-neighbor-updates=1000000
-max-players=20
-max-tick-time=60000
-max-world-size=29999984
-motd=A Minecraft Server
-network-compression-threshold=256
-online-mode=true
-op-permission-level=4
-pause-when-empty-seconds=-1
-player-idle-timeout=0
-prevent-proxy-connections=false
-pvp=true
-query.port=25565
-rate-limit=0
-rcon.password=
-rcon.port=25575
-region-file-compression=deflate
-require-resource-pack=false
-resource-pack=
-resource-pack-id=
-resource-pack-prompt=
-resource-pack-sha1=
-server-ip=
-server-port=25565
-simulation-distance=10
-spawn-monsters=true
-spawn-protection=16
-sync-chunk-writes=true
-text-filtering-config=
-text-filtering-version=0
-use-native-transport=true
-view-distance=10
-white-list=false
diff --git a/paper/run/spigot.yml b/paper/run/spigot.yml
deleted file mode 100644
index c5b65540..00000000
--- a/paper/run/spigot.yml
+++ /dev/null
@@ -1,182 +0,0 @@
-# This is the Spigot configuration file for Paper.
-# As you can see, there's tons to configure. Some options may impact gameplay, so use
-# with caution, and make sure you know what each option does before configuring.
-#
-# If you need help with the configuration or have any questions related to Paper,
-# join us in our Discord or check the docs page.
-#
-# File Reference: https://docs.papermc.io/paper/reference/spigot-configuration/
-# Docs: https://docs.papermc.io/
-# Discord: https://discord.gg/papermc
-# Website: https://papermc.io/
-
-settings:
- debug: false
- bungeecord: false
- player-shuffle: 0
- netty-threads: 4
- attribute:
- maxAbsorption:
- max: 2048.0
- maxHealth:
- max: 1024.0
- movementSpeed:
- max: 1024.0
- attackDamage:
- max: 2048.0
- user-cache-size: 1000
- save-user-cache-on-stop-only: false
- sample-count: 12
- log-villager-deaths: true
- log-named-deaths: true
- timeout-time: 60
- restart-on-crash: true
- restart-script: ./start.sh
- moved-wrongly-threshold: 0.0625
- moved-too-quickly-multiplier: 10.0
-messages:
- whitelist: You are not whitelisted on this server!
- unknown-command: Unknown command. Type "/help" for help.
- server-full: The server is full!
- outdated-client: Outdated client! Please use {0}
- outdated-server: Outdated server! I'm still on {0}
- restart: Server is restarting
-advancements:
- disable-saving: false
- disabled:
- - minecraft:story/disabled
-world-settings:
- default:
- below-zero-generation-in-existing-chunks: true
- view-distance: default
- simulation-distance: default
- zombie-aggressive-towards-villager: true
- enable-zombie-pigmen-portal-spawns: true
- entity-activation-range:
- animals: 32
- monsters: 32
- raiders: 64
- misc: 16
- water: 16
- villagers: 32
- flying-monsters: 32
- wake-up-inactive:
- animals-max-per-tick: 4
- animals-every: 1200
- animals-for: 100
- monsters-max-per-tick: 8
- monsters-every: 400
- monsters-for: 100
- villagers-max-per-tick: 4
- villagers-every: 600
- villagers-for: 100
- flying-monsters-max-per-tick: 8
- flying-monsters-every: 200
- flying-monsters-for: 100
- villagers-work-immunity-after: 100
- villagers-work-immunity-for: 20
- villagers-active-for-panic: true
- tick-inactive-villagers: true
- ignore-spectators: false
- entity-tracking-range:
- players: 128
- animals: 96
- monsters: 96
- misc: 96
- display: 128
- other: 64
- growth:
- cactus-modifier: 100
- cane-modifier: 100
- melon-modifier: 100
- mushroom-modifier: 100
- pumpkin-modifier: 100
- sapling-modifier: 100
- beetroot-modifier: 100
- carrot-modifier: 100
- potato-modifier: 100
- torchflower-modifier: 100
- wheat-modifier: 100
- netherwart-modifier: 100
- vine-modifier: 100
- cocoa-modifier: 100
- bamboo-modifier: 100
- sweetberry-modifier: 100
- kelp-modifier: 100
- twistingvines-modifier: 100
- weepingvines-modifier: 100
- cavevines-modifier: 100
- glowberry-modifier: 100
- pitcherplant-modifier: 100
- thunder-chance: 100000
- unload-frozen-chunks: false
- nerf-spawner-mobs: false
- mob-spawn-range: 8
- item-despawn-rate: 6000
- arrow-despawn-rate: 1200
- trident-despawn-rate: 1200
- merge-radius:
- item: 0.5
- exp: -1.0
- ticks-per:
- hopper-transfer: 8
- hopper-check: 1
- hopper-amount: 1
- hopper-can-load-chunks: false
- hunger:
- jump-walk-exhaustion: 0.05
- jump-sprint-exhaustion: 0.2
- combat-exhaustion: 0.1
- regen-exhaustion: 6.0
- swim-multiplier: 0.01
- sprint-multiplier: 0.1
- other-multiplier: 0.0
- wither-spawn-sound-radius: 0
- end-portal-sound-radius: 0
- dragon-death-sound-radius: 0
- hanging-tick-frequency: 100
- seed-village: 10387312
- seed-desert: 14357617
- seed-igloo: 14357618
- seed-jungle: 14357619
- seed-swamp: 14357620
- seed-monument: 10387313
- seed-shipwreck: 165745295
- seed-ocean: 14357621
- seed-outpost: 165745296
- seed-endcity: 10387313
- seed-slime: 987234911
- seed-nether: 30084232
- seed-mansion: 10387319
- seed-fossil: 14357921
- seed-portal: 34222645
- seed-ancientcity: 20083232
- seed-trailruins: 83469867
- seed-trialchambers: 94251327
- seed-buriedtreasure: 10387320
- seed-mineshaft: default
- seed-stronghold: default
- max-tnt-per-tick: 100
- max-tick-time:
- tile: 50
- entity: 50
- verbose: false
-players:
- disable-saving: false
-config-version: 12
-stats:
- disable-saving: false
- forced-stats: {}
-commands:
- tab-complete: 0
- send-namespaced: true
- spam-exclusions:
- - /skill
- log: true
- replace-commands:
- - setblock
- - summon
- - testforblock
- - tellraw
- silent-commandblock-console: false
- enable-spam-exclusions: false
diff --git a/paper/src/main/java/com/ryderbelserion/chatmanager/api/chat/logging/PreviousCmdData.java b/paper/src/main/java/com/ryderbelserion/chatmanager/api/chat/logging/PreviousCmdData.java
index 66277d1c..3256de72 100644
--- a/paper/src/main/java/com/ryderbelserion/chatmanager/api/chat/logging/PreviousCmdData.java
+++ b/paper/src/main/java/com/ryderbelserion/chatmanager/api/chat/logging/PreviousCmdData.java
@@ -22,7 +22,7 @@ public boolean containsUser(UUID uuid) {
}
public String getMessage(UUID uuid) {
- return map.get(uuid);
+ return map.getOrDefault(uuid, "");
}
public Map getUsers() {
diff --git a/paper/src/main/java/com/ryderbelserion/chatmanager/api/chat/logging/PreviousMsgData.java b/paper/src/main/java/com/ryderbelserion/chatmanager/api/chat/logging/PreviousMsgData.java
index dc47b7b8..592a59ef 100644
--- a/paper/src/main/java/com/ryderbelserion/chatmanager/api/chat/logging/PreviousMsgData.java
+++ b/paper/src/main/java/com/ryderbelserion/chatmanager/api/chat/logging/PreviousMsgData.java
@@ -22,7 +22,7 @@ public boolean containsUser(UUID uuid) {
}
public String getMessage(UUID uuid) {
- return map.get(uuid);
+ return map.getOrDefault(uuid, "");
}
public Map getUsers() {
diff --git a/paper/src/main/java/com/ryderbelserion/chatmanager/api/cooldowns/ChatCooldowns.java b/paper/src/main/java/com/ryderbelserion/chatmanager/api/cooldowns/ChatCooldowns.java
index 46f76c50..0104ecf5 100644
--- a/paper/src/main/java/com/ryderbelserion/chatmanager/api/cooldowns/ChatCooldowns.java
+++ b/paper/src/main/java/com/ryderbelserion/chatmanager/api/cooldowns/ChatCooldowns.java
@@ -22,7 +22,7 @@ public boolean containsUser(UUID uuid) {
}
public int getTime(UUID uuid) {
- return map.get(uuid);
+ return containsUser(uuid) ? map.get(uuid) : 0;
}
public void subtract(UUID uuid) {
diff --git a/paper/src/main/java/com/ryderbelserion/chatmanager/api/cooldowns/CmdCooldowns.java b/paper/src/main/java/com/ryderbelserion/chatmanager/api/cooldowns/CmdCooldowns.java
index 1aa0a7ec..a9691ed6 100644
--- a/paper/src/main/java/com/ryderbelserion/chatmanager/api/cooldowns/CmdCooldowns.java
+++ b/paper/src/main/java/com/ryderbelserion/chatmanager/api/cooldowns/CmdCooldowns.java
@@ -22,7 +22,7 @@ public boolean containsUser(UUID uuid) {
}
public int getTime(UUID uuid) {
- return map.get(uuid);
+ return map.getOrDefault(uuid, 0);
}
public void subtract(UUID uuid) {
diff --git a/paper/src/main/java/me/h1dd3nxn1nja/chatmanager/commands/CommandMessage.java b/paper/src/main/java/me/h1dd3nxn1nja/chatmanager/commands/CommandMessage.java
index d56ab213..764be07b 100644
--- a/paper/src/main/java/me/h1dd3nxn1nja/chatmanager/commands/CommandMessage.java
+++ b/paper/src/main/java/me/h1dd3nxn1nja/chatmanager/commands/CommandMessage.java
@@ -217,7 +217,7 @@ private boolean handleMessage(String[] args, Player player, StringBuilder messag
if (contains) {
Messages.SOCIAL_SPY_FORMAT.sendMessage(staff, new HashMap<>() {{
put("{player}", player.getName());
- put("{receiver", target.getName());
+ put("{receiver}", target.getName());
put("{message}", message.toString());
}});
}
diff --git a/paper/src/main/java/me/h1dd3nxn1nja/chatmanager/listeners/ListenerAntiSpam.java b/paper/src/main/java/me/h1dd3nxn1nja/chatmanager/listeners/ListenerAntiSpam.java
index 4dec35b4..1b9dbfd2 100644
--- a/paper/src/main/java/me/h1dd3nxn1nja/chatmanager/listeners/ListenerAntiSpam.java
+++ b/paper/src/main/java/me/h1dd3nxn1nja/chatmanager/listeners/ListenerAntiSpam.java
@@ -35,7 +35,7 @@ public void antiSpamChat(AsyncChatEvent event) {
if (this.previousMsgData.containsUser(uuid) && !this.chatCooldowns.containsUser(uuid)) {
final String msg = this.previousMsgData.getMessage(uuid);
- if (message.equalsIgnoreCase(msg)) {
+ if (!msg.isEmpty() && message.equalsIgnoreCase(msg)) {
Messages.ANTI_SPAM_CHAT_REPETITIVE_MESSAGE.sendMessage(player);
event.setCancelled(true);
@@ -81,7 +81,7 @@ public void run() {
chatCooldowns.subtract(uuid);
- if (time == 0) {
+ if (time <= 0) {
chatCooldowns.removeUser(uuid);
cooldownTask.removeUser(uuid);
@@ -115,7 +115,7 @@ public void onSpamCommand(PlayerCommandPreprocessEvent event) {
if (this.previousCmdData.containsUser(uuid) && !this.cmdCooldowns.containsUser(uuid)) {
final String cmd = this.previousCmdData.getMessage(uuid);
- if (command.equalsIgnoreCase(cmd)) {
+ if (!cmd.isEmpty() && command.equalsIgnoreCase(cmd)) {
Messages.ANTI_SPAM_COMMAND_REPETITIVE_MESSAGE.sendMessage(player);
event.setCancelled(true);