diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yaml b/.github/ISSUE_TEMPLATE/1-bug-report.yaml deleted file mode 100644 index 94171eb..0000000 --- a/.github/ISSUE_TEMPLATE/1-bug-report.yaml +++ /dev/null @@ -1,116 +0,0 @@ -name: Bug Report -description: Report a bug in the plugin -labels: ["bug", "investigate"] -body: - - type: markdown - attributes: - value: | - ## ⚠️ PLEASE READ BEFORE SUBMITTING ⚠️ - - 1. Try the [latest test version](https://hangar.papermc.io/kernitus/OldCombatMechanics/versions?channel=Snapshot&platform=PAPER) first - 2. Complete ALL fields below - incomplete reports will be CLOSED - 3. This is a volunteer project - we have no obligation to help incomplete reports - 4. Have a question? Please use the Question template instead - - - type: input - id: server-version - attributes: - label: Server Version - description: Version of the server, e.g. Spigot 1.14.1 or Paper 1.19.3 - placeholder: e.g. Paper 1.20.4 - validations: - required: true - - - type: input - id: ocm-version - attributes: - label: OldCombatMechanics Version - description: "EXACT version of OldCombatMechanics, e.g. 1.7.2 or 2.1.1-beta+e2f0369. DO NOT write 'latest' - versions change often." - placeholder: e.g. 2.1.1-beta+e2f0369 - validations: - required: true - - - type: textarea - id: server-log - attributes: - label: Server Log File - description: Console log from the server. DO NOT use an external service like pastebin, as these expire. - placeholder: Paste your log here - render: console - validations: - required: true - - - type: textarea - id: config - attributes: - label: OldCombatMechanics config.yml - description: Your config file. DO NOT use an external service like pastebin, as these expire. - placeholder: Paste your config.yml here - render: yaml - validations: - required: true - - - type: textarea - id: other-plugins - attributes: - label: Other Plugins - description: List of other plugins installed (conflicts are common) - placeholder: | - - ViaVersion 1.0.0 - - AnotherPlugin 2.3.1 - validations: - required: true - - - type: textarea - id: problem-description - attributes: - label: Problem Description - description: A clear and concise description of what the bug is - validations: - required: true - - - type: textarea - id: reproduce - attributes: - label: Steps to Reproduce - description: What you would do in order for the problem to occur - placeholder: | - 1. Hit a mob with a stick - 2. - 3. - validations: - required: true - - - type: textarea - id: expected - attributes: - label: Expected Behaviour - description: What do you think should happen when you perform the above steps? - validations: - required: true - - - type: textarea - id: actual - attributes: - label: Actual Behaviour - description: What does happen when you perform the above steps? - validations: - required: true - - - type: textarea - id: additional - attributes: - label: Additional Context - description: Add any other context, screenshots, or videos here - - - type: checkboxes - id: confirmation - attributes: - label: Pre-submission checklist - options: - - label: I have tried the latest test/snapshot version - required: true - - label: I have filled out all required fields below - required: true - - diff --git a/.github/ISSUE_TEMPLATE/2-question.yaml b/.github/ISSUE_TEMPLATE/2-question.yaml deleted file mode 100644 index d5ba194..0000000 --- a/.github/ISSUE_TEMPLATE/2-question.yaml +++ /dev/null @@ -1,64 +0,0 @@ -name: Question -description: Ask a question about the plugin -labels: ["question"] -body: - - type: markdown - attributes: - value: | - ## ⚠️ PLEASE READ BEFORE SUBMITTING ⚠️ - - 1. Check the readme and wiki first: https://github.com/kernitus/BukkitOldCombatMechanics/wiki - 2. Search existing issues to see if your question has been answered - 3. This is a volunteer project - we have no obligation to help incomplete reports - 4. If you've found a bug, use the Bug Report template instead - 5. If you want a new feature, use the Feature Request template instead - - - type: checkboxes - id: confirmation - attributes: - label: Pre-submission checklist - options: - - label: I have checked the wiki and readme - required: true - - label: I have searched existing issues - required: true - - - type: textarea - id: question - attributes: - label: Your Question - description: Clearly describe what you want to know - validations: - required: true - - - type: textarea - id: tried - attributes: - label: What I've Tried - description: Have you checked documentation? Tried anything? Searched for similar issues? - validations: - required: true - - - type: input - id: server-version - attributes: - label: Server Version - placeholder: e.g. Paper 1.20.4 - validations: - required: true - - - type: input - id: ocm-version - attributes: - label: OldCombatMechanics Version - description: "DO NOT write 'latest' - specify the exact version number" - placeholder: e.g. 2.1.1 - validations: - required: true - - - type: textarea - id: context - attributes: - label: Additional Context - description: Any other relevant information, screenshots, config snippets, etc. - diff --git a/.github/ISSUE_TEMPLATE/3-feature.yaml b/.github/ISSUE_TEMPLATE/3-feature.yaml deleted file mode 100644 index 793db9c..0000000 --- a/.github/ISSUE_TEMPLATE/3-feature.yaml +++ /dev/null @@ -1,65 +0,0 @@ -name: Feature Request -description: Suggest an idea for this project -labels: ["enhancement"] -body: - - type: markdown - attributes: - value: | - ## ⚠️ PLEASE READ BEFORE SUBMITTING ⚠️ - - 1. Search for existing enhancement requests first - 2. Have a question? Please use the Question template instead - 3. This plugin is about combat mechanics changes from 1.9+ - not general Minecraft features - 4. Incomplete requests WILL be closed - this is a volunteer project - - Remember that this plugin is about changes in combat mechanics following 1.8, anything else is out of scope. - - - type: checkboxes - id: confirmation - attributes: - label: Pre-submission checklist - options: - - label: I have searched for existing enhancement requests - required: true - - label: This relates to combat mechanics changes from 1.9+ - required: true - - - type: textarea - id: problem - attributes: - label: Problem - description: Describe the problem you are facing, as a consequence of a lack of features rather than a bug - validations: - required: true - - - type: textarea - id: solution - attributes: - label: Proposed Solution - description: The solution you think best for the problem - validations: - required: true - - - type: textarea - id: alternatives - attributes: - label: Alternative Solutions - description: Describe alternative solutions you have considered - validations: - required: false - - - type: textarea - id: evidence - attributes: - label: Evidence of Mechanic Change - description: If your enhancement is about a combat feature that changed between 1.8 and now, provide evidence (wiki links, videos, etc.) - placeholder: Links to Minecraft wiki, videos demonstrating the mechanic, etc. - validations: - required: false - - - type: textarea - id: additional - attributes: - label: Additional Context - description: Any other context or screenshots that could be relevant - diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 3ba13e0..0000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1 +0,0 @@ -blank_issues_enabled: false diff --git a/.github/release-please-config.json b/.github/release-please-config.json deleted file mode 100644 index fef3811..0000000 --- a/.github/release-please-config.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", - "include-component-in-tag": false, - "bump-minor-pre-major": true, - "bootstrap-sha": "56dd66a4bf88f252bb063b91835d89a1a1a2e442", - "packages": { - ".": { - "package-name": "OldCombatMechanics", - "release-type": "simple", - "extra-files": [ - { - "type": "generic", - "path": "build.gradle.kts" - } - ], - "changelog-sections": [ - {"type": "feat", "section": "Features"}, - {"type": "fix", "section": "Bug Fixes"}, - {"type": "perf", "section": "Performance"} - ] - } - } -} diff --git a/.github/release-please-manifest.json b/.github/release-please-manifest.json deleted file mode 100644 index 928e3fc..0000000 --- a/.github/release-please-manifest.json +++ /dev/null @@ -1 +0,0 @@ -{".":"2.4.0"} diff --git a/.github/workflows/build-upload-release.yml b/.github/workflows/build-upload-release.yml deleted file mode 100644 index 7ab4230..0000000 --- a/.github/workflows/build-upload-release.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: Build and Release - -on: - release: - types: [published] - -jobs: - build: - # This permission is still required by the new action - permissions: - contents: write - - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'adopt' - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - with: - gradle-version: wrapper - - # Build Step - No changes needed here - - name: Run Gradle Build - run: | - if [ "${{ github.event_name }}" == "release" ]; then - VERSION=${{ github.event.release.tag_name }} - VERSION=${VERSION#v} # Strip 'v' if present - ./gradlew clean build -Pversion=$VERSION - else - ./gradlew clean build - fi - - - name: Upload Artifact to GitHub Release - if: ${{ github.event_name == 'release' }} - uses: softprops/action-gh-release@v2 - with: - # The 'files' input takes a path to the asset(s) you want to upload. - # Keep a stable filename for external download links. - files: ./build/libs/OldCombatMechanics.jar - - - name: Read game versions from gradle.properties - run: | - RAW=$(grep ^gameVersions gradle.properties | cut -d'=' -f2-) - # Convert "1.21, 1.20.6" -> "1:1.21,1:1.20.6" to select Bukkit-compatible typeId 1 entries via the minecraft endpoint - GAME_VERSIONS=$(echo "$RAW" | tr -d ' ' | awk -F',' '{ - out=""; - for (i=1; i<=NF; i++) { - v=$i; - if (v!= "") { - if (out!= "") out=out ","; - out=out "1:" v; - } - } - print out; - }') - echo "GAME_VERSIONS=$GAME_VERSIONS" >> "$GITHUB_ENV" - - - name: Upload to CurseForge (Bukkit) - if: ${{ github.event_name == 'release' }} - uses: itsmeow/curseforge-upload@v3 - with: - token: ${{ secrets.DBO_UPLOAD_API_TOKEN }} - project_id: '98233' - game_endpoint: 'minecraft' - file_path: './build/libs/OldCombatMechanics.jar' - changelog: ${{ github.event.release.body }} - changelog_type: 'markdown' - release_type: 'release' - display_name: 'OldCombatMechanics ${{ github.event.release.tag_name }}' - game_versions: ${{ env.GAME_VERSIONS }} - - - - name: Publish to Hangar - env: - HANGAR_API_TOKEN: ${{ secrets.HANGAR_API_TOKEN }} - HANGAR_CHANGELOG: ${{ github.event.release.body }} - run: ./gradlew build publishPluginPublicationToHangar --stacktrace diff --git a/.github/workflows/dev-builds.yml b/.github/workflows/dev-builds.yml deleted file mode 100644 index 0e4d757..0000000 --- a/.github/workflows/dev-builds.yml +++ /dev/null @@ -1,54 +0,0 @@ -name: Dev builds - -on: - push: - branches: - - master - pull_request: - branches-ignore: - - 'ingametesting' - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'adopt' - cache: gradle - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - with: - gradle-version: wrapper - - - name: Determine if this is a release version - run: | - IS_RELEASE=$(./gradlew -q printIsRelease) - echo "Is release? $IS_RELEASE" - echo "IS_RELEASE=$IS_RELEASE" >> $GITHUB_ENV - - - name: Run Gradle Build - run: | - ./gradlew clean build - - - name: Archive jar file - uses: actions/upload-artifact@v4 - with: - name: OldCombatMechanics - path: build/libs/OldCombatMechanics.jar - - - name: Publish Snapshot to Hangar - if: ${{ github.event_name == 'push' && github.event.pull_request == null && env.IS_RELEASE != 'true' }} - env: - HANGAR_API_TOKEN: ${{ secrets.HANGAR_API_TOKEN }} - run: | - ./gradlew publishPluginPublicationToHangar diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml deleted file mode 100644 index bdb87a4..0000000 --- a/.github/workflows/release-please.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Release Please - -on: - push: - branches: - - master - -permissions: - contents: write - pull-requests: write - -jobs: - release: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: release-please - uses: googleapis/release-please-action@v4 - with: - token: ${{ secrets.RELEASE_PLEASE_TOKEN }} - config-file: .github/release-please-config.json - manifest-file: .github/release-please-manifest.json diff --git a/.github/workflows/wrap-issue-form-codeblocks.yml b/.github/workflows/wrap-issue-form-codeblocks.yml deleted file mode 100644 index ee2b43c..0000000 --- a/.github/workflows/wrap-issue-form-codeblocks.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: Wrap issue form code blocks - -on: - issues: - types: [opened, edited] - -permissions: - issues: write - -jobs: - wrap: - runs-on: ubuntu-latest - steps: - - uses: actions/github-script@v8 - with: - script: | - // Avoid loops: when this workflow updates the issue, it triggers "edited" again. - if (context.actor === "github-actions[bot]") return; - - const issue = context.payload.issue; - if (!issue || !issue.body) return; - - // On edits, bail unless the body actually changed - if (context.payload.action === "edited") { - const changed = context.payload.changes && context.payload.changes.body; - if (!changed) return; - } - - function escapeRegExp(s) { - return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - } - - function wrapFirstCodeBlockAfterHeading(body, headingText, summaryText) { - const re = new RegExp( - `(^###\\s+${escapeRegExp(headingText)}\\s*\\n+)(\`\`\`[\\s\\S]*?\\n\`\`\`)(?=\\n|$)`, - "m" - ); - - return body.replace(re, (_m, heading, codeblock) => { - return ( - `${heading}` + - `
\n` + - `${summaryText}\n\n` + - `${codeblock}\n\n` + - `
` - ); - }); - } - - let body = issue.body; - - body = wrapFirstCodeBlockAfterHeading(body, "Server Log File", "Server log"); - body = wrapFirstCodeBlockAfterHeading(body, "OldCombatMechanics config.yml", "config.yml"); - - if (body === issue.body) return; - - await github.rest.issues.update({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: issue.number, - body - }); - diff --git a/.gitignore b/.gitignore index 7a55d3c..33cc87d 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,6 @@ builds target META-INF /build/ -/gradle/ /.gradle/ .gradle-user/ /.gradle-cache/ diff --git a/AGENTS.md b/AGENTS.md index 350030a..a9d5558 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -187,6 +187,7 @@ This file captures repo-specific context discovered while working on this branch - InvulnerabilityDamageIntegrationTest adds a case asserting environmental damage above the baseline applies during invulnerability (manual EntityDamageEvent). - `gradle.properties` gameVersions list now includes 1.21.11 down to 1.21.1 (plus 1.21) ahead of existing entries. - GitHub release asset now keeps a stable filename `OldCombatMechanics.jar` (no version suffix); the CurseForge upload uses the same path. +- Disabled the plain Gradle `jar` task; `assemble` now produces only the shaded `shadowJar` output `build/libs/OldCombatMechanics.jar`, avoiding an unshaded duplicate `OldCombatMechanics-.jar`. - Expanded `SwordBlockingIntegrationTest` to cover right-click blocking, non-sword handling, offhand restoration (hotbar change and drop cancel), permission gating, and preserving an existing real shield. - Added `PaperSwordBlockingDamageReductionIntegrationTest` (in KotestRunner list) to regression-test that Paper sword blocking is recognised server-side (via `ModuleSwordBlocking.isPaperSwordBlocking`) and produces a non-zero 1.8-style reduction from `applyPaperBlockingReduction`. This uses a synthetic damage event to avoid flakiness from mob AI / PvP settings. - Paper-only sword blocking uses a runtime-gated helper (`kernitus.plugin.OldCombatMechanics.paper.PaperSwordBlocking`) that applies consumable + blocking components via cached reflection (lookup once, MethodHandle invoke thereafter). 1.8-style reduction is applied via `EntityDamageByEntityListener` using the `BLOCKING` damage modifier, while legacy/non-Paper keeps the shield swap path. diff --git a/README.md b/README.md index f68e179..95785c5 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ ## by kernitus and Rayzr522 + +**TrueOG Network 1.19.4 Branch** + + Fine‑tune Minecraft combat, movement, and item balance without breaking your server. OldCombatMechanics is a free, open‑source toolkit for Spigot & Paper that lets you mix 1.8‑style snappiness with modern features, per world and per player. **Why servers pick OCM** ✨ @@ -107,12 +111,12 @@ Oftentimes a particular bug fix or feature has already been implemented, but a n yet. You can find the most up-to-date version of the plugin on [Hangar](https://hangar.papermc.io/kernitus/OldCombatMechanics/versions?channel=Snapshot&platform=PAPER). - -## 🤝 Contributions -If you are interested in contributing, please [check this page first](.github/CONTRIBUTING.md). -
- - - - bStats - +(??) +(??)## 🤝 Contributions +(??)If you are interested in contributing, please [check this page first](.github/CONTRIBUTING.md). +(??)
+(??) +(??) +(??) +(??) bStats +(??) diff --git a/build.gradle.kts b/build.gradle.kts index 7c40111..f4df708 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -31,6 +31,7 @@ plugins { id("com.gradleup.shadow") version "9.3.0" id("xyz.jpenilla.run-paper") version "3.0.2" idea + eclipse id("io.papermc.hangar-publish-plugin") version "0.1.4" } @@ -54,8 +55,6 @@ repositories { maven("https://repo.codemc.io/repository/maven-snapshots/") // Placeholder API maven("https://repo.extendedclip.com/content/repositories/placeholderapi/") - // CodeMC Repo for bStats - maven("https://repo.codemc.org/repository/maven-public/") // Auth library from Minecraft maven("https://libraries.minecraft.net/") } @@ -99,7 +98,6 @@ configurations.named("integrationTestCompileClasspath") { } dependencies { - implementation("org.bstats:bstats-bukkit:3.1.0") // Shaded in by Bukkit compileOnly("io.netty:netty-all:4.1.130.Final") // Placeholder API @@ -126,16 +124,6 @@ dependencies { // Integration test dependencies implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.3.0") - add("integrationTestImplementation", "org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.3.0") - add("integrationTestImplementation", "org.jetbrains.kotlin:kotlin-test:2.3.0") - add("integrationTestImplementation", "org.jetbrains.kotlin:kotlin-reflect:2.3.0") - add("integrationTestImplementation", "io.kotest:kotest-runner-junit5-jvm:5.9.1") - add("integrationTestImplementation", "io.kotest:kotest-assertions-core-jvm:5.9.1") - add("integrationTestImplementation", "net.kyori:adventure-api:4.26.1") - add("integrationTestImplementation", "xyz.jpenilla:reflection-remapper:0.1.3") - add("integrationTestCompileOnly", "org.spigotmc:spigot-api:1.21.11-R0.1-SNAPSHOT") - add("integrationTestCompileOnly", "com.mojang:authlib:6.0.54") - add("integrationTestCompileOnly", "io.netty:netty-all:4.1.130.Final") } // Substitute ${pluginVersion} in plugin.yml with version defined above @@ -160,13 +148,16 @@ tasks.withType { options.release.set(8) } +tasks.named("jar") { + enabled = false +} + val shadowJarTask = tasks.named("shadowJar") { dependsOn("jar") archiveFileName.set("${project.name}.jar") dependencies { exclude(dependency("org.jetbrains.kotlin:.*")) - relocate("org.bstats", "kernitus.plugin.OldCombatMechanics.lib.bstats") relocate("com.cryptomorin.xseries", "kernitus.plugin.OldCombatMechanics.lib.xseries") relocate("com.github.retrooper.packetevents", "kernitus.plugin.OldCombatMechanics.lib.packetevents.api") relocate("io.github.retrooper.packetevents", "kernitus.plugin.OldCombatMechanics.lib.packetevents.impl") diff --git a/src/main/java/kernitus/plugin/OldCombatMechanics/OCMMain.java b/src/main/java/kernitus/plugin/OldCombatMechanics/OCMMain.java index 1d65cb0..d498ae9 100644 --- a/src/main/java/kernitus/plugin/OldCombatMechanics/OCMMain.java +++ b/src/main/java/kernitus/plugin/OldCombatMechanics/OCMMain.java @@ -20,9 +20,6 @@ import kernitus.plugin.OldCombatMechanics.utilities.damage.EntityDamageByEntityL import kernitus.plugin.OldCombatMechanics.utilities.reflection.Reflector; import kernitus.plugin.OldCombatMechanics.utilities.storage.ModesetListener; import kernitus.plugin.OldCombatMechanics.utilities.storage.PlayerStorage; -import org.bstats.bukkit.Metrics; -import org.bstats.charts.SimpleBarChart; -import org.bstats.charts.SimplePie; import org.bukkit.Bukkit; import org.bukkit.entity.HumanEntity; import org.bukkit.event.EventException; @@ -94,37 +91,6 @@ public class OCMMain extends JavaPlugin { Config.reload(); - // BStats Metrics - final Metrics metrics = new Metrics(this, 53); - - metrics.addCustomChart(new SimplePie("server_software", () -> { - final String name = Bukkit.getServer().getName(); - if (name == null || name.isEmpty()) return "Unknown"; - final String cleaned = name.split("\\s", 2)[0].trim(); - return cleaned.isEmpty() ? "Unknown" : cleaned; - })); - - // Simple bar chart (kept in case bStats re-enables bar display) - metrics.addCustomChart( - new SimpleBarChart( - "enabled_modules", - () -> ModuleLoader.getModules().stream() - .filter(OCMModule::isEnabled) - .collect(Collectors.toMap(OCMModule::toString, module -> 1)))); - - // Pie chart of enabled/disabled for each module - ModuleLoader.getModules().forEach(module -> metrics.addCustomChart( - new SimplePie(module.getModuleName() + "_pie", - () -> module.isEnabled() ? "enabled" : "disabled"))); - - // Simple pie: exact count of enabled modules per server (as a string key). - metrics.addCustomChart(new SimplePie("enabled_modules_count", () -> { - int count = (int) ModuleLoader.getModules().stream().filter(OCMModule::isEnabled).count(); - return Integer.toString(count); - })); - - enableListeners.forEach(Runnable::run); - // Properly handle Plugman load/unload. final List joinListeners = Arrays .stream(PlayerJoinEvent.getHandlerList().getRegisteredListeners()) @@ -155,10 +121,6 @@ public class OCMMain extends JavaPlugin { Bukkit.getScheduler().runTaskLaterAsynchronously(this, () -> new UpdateChecker(this).performUpdate(), 20L); - metrics.addCustomChart(new SimplePie("auto_update_pie", - () -> Config.moduleSettingEnabled("update-checker", - "auto-update") ? "enabled" : "disabled")); - } @Override diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index ef4c608..04be967 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -21,19 +21,19 @@ always_enabled_modules: - "fishing-rod-velocity" - "projectile-knockback" - "disable-crafting" - - "update-checker" - "old-brewing-stand" - "disable-enderpearl-cooldown" + - "disable-offhand" + - "disable-sword-sweep-particles" + - "disable-attack-sounds" + - "old-burn-delay" + - "attack-range" disabled_modules: # Modules listed here are always disabled, regardless of modeset. # Of course, disabling a module which disables something will enable that something! - - "disable-offhand" - - "disable-sword-sweep-particles" - - "disable-attack-sounds" - "chorus-fruit" - - "old-burn-delay" - - "attack-range" + - "update-checker" modesets: # Modesets are lists of modules that are enabled for a player in that mode. @@ -61,17 +61,15 @@ worlds: # If player has no modeset when moving worlds they'll be assigned first mode in list, # unless the mode from the world they are coming from is also available in the new world. # Worlds not specified below will have all modesets available. - world: [ "old", "new" ] - world_nether: [ "old", "new" ] - world_the_end: [ "old", "new" ] - # old_world: ["old"] - # brave_new_world: ["new"] + world: [ "old" ] + world_nether: [ "old" ] + world_the_end: [ "old" ] mode-messages: # Messages used when changing player mode # To disable any message, leave the corresponding string empty (e.g., mode-status: ""). # This applies to all messages in the configuration. - mode-status: "&bYour current modeset is: &7%s" + mode-status: "&bYour current combat mode is: &7%s" message-usage: "&eYou can use &c/ocm mode [player] &eto change modeset" invalid-modeset: "&cPlease specify a valid modeset!" invalid-player: "&cPlease specify a valid player!" @@ -83,6 +81,7 @@ mode-messages: disable-attack-cooldown: # This is to disable the attack cooldown + enabled: true # What to set the attack speed to. Default for 1.9 is 4, at least 40 is needed for no cooldown. generic-attack-speed: 40 # Optional per-material override for the item in the player's main hand. @@ -104,6 +103,7 @@ disable-attack-cooldown: attack-frequency: # Allows changing the player invulnerability between hits + enabled: true # The hit delay to apply. Default for 1.9+ is 20 ticks (1 second) playerDelay: 18 mobDelay: 16 @@ -125,6 +125,7 @@ old-tool-damage: # IMPORTANT: Also enable disable-sword-sweep module or sweeps will have the damage value of the weapon in hand # NOTE: this will modify the damage, however the vanilla attribute tooltip will still show the 1.9+ values. # The tooltip section below is enabled by default so players can see the configured damage in-game. + enabled: true # Use old sharpness calculations, i.e. each level adds 1.25 damage # In 1.9+, sharpness adds 1 + 0.5 * level damage old-sharpness: true @@ -143,7 +144,6 @@ old-tool-damage: IRON_AXE: 6 DIAMOND_AXE: 7 NETHERITE_AXE: 8 - COPPER_AXE: 6 # Shovel damages GOLD_SPADE: 2 WOOD_SPADE: 2 @@ -151,7 +151,6 @@ old-tool-damage: IRON_SPADE: 4 DIAMOND_SPADE: 5 NETHERITE_SPADE: 6 - COPPER_SPADE: 3 # Sword damages GOLD_SWORD: 5 WOOD_SWORD: 5 @@ -159,7 +158,6 @@ old-tool-damage: IRON_SWORD: 7 DIAMOND_SWORD: 8 NETHERITE_SWORD: 9 - COPPER_SWORD: 6 # Pickaxe damages GOLD_PICKAXE: 3 WOOD_PICKAXE: 3 @@ -167,7 +165,6 @@ old-tool-damage: IRON_PICKAXE: 5 DIAMOND_PICKAXE: 6 NETHERITE_PICKAXE: 7 - COPPER_PICKAXE: 4 # Hoe damages GOLD_HOE: 1 WOOD_HOE: 1 @@ -175,16 +172,15 @@ old-tool-damage: IRON_HOE: 1 DIAMOND_HOE: 1 NETHERITE_HOE: 1 - COPPER_HOE: 1 # Trident and mace TRIDENT: 8 TRIDENT_THROWN: 8 - MACE: 6 old-critical-hits: # Makes critical hits work like in 1.8 # With a critical hit, the damage will be multiplied by 1.5 # In 1.9, the user must also not be sprinting for it to be a crit + enabled: true world: [ ] # What the damage, after applying potions effects, is multiplied by multiplier: 1.5 @@ -194,6 +190,7 @@ old-critical-hits: old-player-regen: # This is to make players' regeneration act mostly like it did in pre-1.9 # Based on https://minecraft.gamepedia.com/Hunger?oldid=948685 + enabled: true # How often a player should regenerate health, in milliseconds (In 1.8: 4 seconds) # The foodTickerTimer might not be perfectly accurate so we give it ~10ms of leeway interval: 3990 @@ -211,11 +208,13 @@ old-player-regen: old-armour-strength: # This is to make armour calculations like in 1.8 # Based on this: https://minecraft.gamepedia.com/index.php?title=Armor&oldid=909187 + enabled: true # Whether to introduce randomness in the calculation, as in 1.8 randomness: true old-armour-durability: # This makes armour take a constant amount of durability damage (except for explosions) + enabled: true # By how much to reduce durability every attack. 1.8 default is 1 reduction: 1 @@ -225,6 +224,7 @@ old-armour-durability: shield-damage-reduction: # This module allows changing the damage reduction behaviour of shields + enabled: true # How much damage blocking should reduce # Firstly, amount is subtracted, then value is multiplied by percentage # 1.8: (damage - 1) * 50% 1.9: damage * 33% 1.11: damage * 0% @@ -239,6 +239,7 @@ shield-damage-reduction: sword-blocking: # This is to allow players to block with swords again, by getting a shield while they hold right click with a sword # Paper 1.20.5+ uses a consumable-based blocking animation. Older/Paperless servers fall back to an offhand shield. + enabled: true # With ViaVersion, clients older than 1.20.5 will also fall back to the shield behaviour. # Set to false to disable the Paper animation path entirely and always use the legacy shield fallback. paper-animation: true @@ -257,6 +258,7 @@ disable-sword-sweep: disable-sword-sweep-particles: # This is to disable the sword sweep attack particles # Requires PacketEvents + enabled: true # ######################## # KNOCKBACK @@ -273,6 +275,7 @@ old-player-knockback: # knockback-extra-vertical: 0.085 # # Minigame servers use higher vertical knockback and lower horizontal knockback, exact values are unknown. + enabled: false # Horizontal knockback is reduced by 40% for every successful attack by the player, with no limit # Increase to make clicking more important, decrease to make it less important knockback-horizontal: 0.4 @@ -295,6 +298,7 @@ old-player-knockback: old-fishing-knockback: # This is to make the knockback of players when they get hit by a fishing bobber the same as it was in pre-1.9 + enabled: true # This is the damage done by the fishing rod attack damage: 0.0001 # This is to cancel dragging in the entity attached to the fishing rod when reeling in, like in 1.8 @@ -309,10 +313,12 @@ fishing-rod-velocity: # In 1.9+ fishing rods go 8 blocks instead of 12 blocks # This is due to both gravity and initial launch speed # Set to true to revert back to the old calculations and gravity + enabled: true projectile-knockback: # This adds knockback and/or damage to players when they get hit by snowballs, eggs & enderpearls # This has been a Bukkit bug for so long people thought it was vanilla when it was patched + enabled: true # This is the damage done by each projectile damage: snowball: 0.0001 @@ -326,6 +332,7 @@ projectile-knockback: old-golden-apples: # This is to change the behaviour / crafting of golden apples to how it was in pre-1.9 # WARNING: If on 1.12 or above and you disable this module you must reload the server for the recipe to disappear + enabled: true # Cooldown between eating the apples, in seconds cooldown: # The cooldown for normal golden apples @@ -387,6 +394,7 @@ old-golden-apples: old-potion-effects: # This is to restore the 1.8 potion effects and duration + enabled: true # DURATION: (in seconds) potion-durations: @@ -502,29 +510,33 @@ old-potion-effects: disable-crafting: # Disable the crafting of specified items + enabled: true # List of denied items denied: - shield # Show the user a message if they try to craft a blacklisted item showMessage: true - message: "&cYou cannot craft that item!" + message: "&cERROR: You cannot craft that item! &6To block, alt-click to deflect with your sword as in Minecraft 1.8." disable-offhand: # Disable the usage of the offhand # Won't affect sword-blocking module + enabled: true # Whether the following list allows items or blocks them whitelist: true # List of items that should be allowed/blocked # Example: [diamond_sword,BOW] - items: [ ] + items: [DRAGON_EGG,END_ROD,REDSTONE_TORCH,SOUL_TORCH,TORCH,APPLE,MUSHROOM_STEW,BREAD,PORKCHOP,COOKED_PORKCHOP,ENCHANTED_GOLDEN_APPLE,GOLDEN_APPLE,COD,COOKED_COD,SALMON,COOKED_SALMON,TROPICAL_FISH,PUFFERFISH,CAKE,COOKIE,MELON_SLICE,DRIED_KELP,BEEF,COOKED_BEEF,CHICKEN,COOKED_CHICKEN,ROTTEN_FLESH,CARROT,CARROT_ON_A_STICK,GOLDEN_CARROT,BAKED_POTATO,POISONOUS_POTATO,POTATO,PUMPKIN_PIE,COOKED_RABBIT,RABBIT,RABBIT_STEW,COOKED_MUTTON,MUTTON,CHORUS_FRUIT,BEETROOT,BEETROOT_SOUP,SUSPICIOUS_STEW,SWEET_BERRIES,HONEY_BOTTLE,GLOW_BERRIES,MILK_BUCKET] # Message to send user when denied. Set to '' to disable - denied-message: "&cOff-hand is disabled" + denied-message: "&cERROR: That item is not allowed in the offhand! &6This helps to even the playing field for 1.8 players." old-brewing-stand: # Automatically refuels brewing stands + enabled: true disable-enderpearl-cooldown: # Disables enderpearl cooldown + enabled: true # The cooldown, in seconds # PlaceholderAPI: %ocm_enderpearl_cooldown% cooldown: 0 @@ -534,6 +546,7 @@ disable-enderpearl-cooldown: chorus-fruit: # This makes the chorus fruit behaviour configurable + enabled: false # The maximum distance the fruit can teleport the player. This a PER AXIS value, so this outlines a cube with # 2 * max-teleportation-distance as the side length # Vanilla default is 8. @@ -553,35 +566,37 @@ chorus-fruit: old-burn-delay: # This makes it so entities will immediately start to burn when entering fire + enabled: true # How long, in ticks, entities should be on fire for after not being in direct contact anymore fire-ticks: 120 disable-attack-sounds: # Disables attack sounds that were added with 1.9+ # Requires PacketEvents + enabled: true # The sounds that will be blocked by this module blocked-sound-names: - "ENTITY_PLAYER_ATTACK_STRONG" - "ENTITY_PLAYER_ATTACK_SWEEP" - "ENTITY_PLAYER_ATTACK_NODAMAGE" - "ENTITY_PLAYER_ATTACK_KNOCKBACK" - - "ENTITY_PLAYER_ATTACK_CRIT" - "ENTITY_PLAYER_ATTACK_WEAK" # ######################## # SPECIAL SETTINGS BELOW # # ######################## -message-prefix: "&6[OCM]&r" +message-prefix: "&7[&6OCM&7]&r" # This is to toggle the update checker update-checker: # Whether to check for updates and notify players with the oldcombatmechanics.notify permission + enabled: false # Whether to automatically download an update of the plugin # The update is applied on the next restart/reload of the server # Auto update is disabled if Spigot version is below 1.18.1 and force-below-1-18-1-config-upgrade is false # This is to prevent accidentally resetting the config - auto-update: true + auto-update: false # Whether to force config upgrade even in Spigot versions below 1.18.1 # This is not advised, as all the comments would be removed