Fork-specific changes

This commit is contained in:
NotAlexNoyle committed 2026-04-22 12:09:33 -04:00
1 parent 7edb0a525d
commit bd88c2bc93
16 files changed
+58 -582

No files matched your search

-116
View File
@@ -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
-64
View File
@@ -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.
-65
View File
@@ -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
-1
View File
@@ -1 +0,0 @@
blank_issues_enabled: false
-23
View File
@@ -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"}
]
}
}
}
-1
View File
@@ -1 +0,0 @@
{".":"2.4.0"}
@@ -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
-54
View File
@@ -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
-24
View File
@@ -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
@@ -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}` +
`<details>\n` +
`<summary>${summaryText}</summary>\n\n` +
`${codeblock}\n\n` +
`</details>`
);
});
}
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
});
-1
View File
@@ -20,7 +20,6 @@ builds
target
META-INF
/build/
/gradle/
/.gradle/
.gradle-user/
/.gradle-cache/
+1
View File
@@ -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-<version>.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.
+13 -9
View File
@@ -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).
<hr/>
<a href="https://bstats.org/plugin/bukkit/OldCombatMechanics">
<img src="https://bstats.org/signatures/bukkit/OldCombatMechanics.svg" alt="bStats">
</a>
(??)
(??)## 🤝 Contributions
(??)If you are interested in contributing, please [check this page first](.github/CONTRIBUTING.md).
(??)<hr/>
(??)
(??)
(??)<a href="https://bstats.org/plugin/bukkit/OldCombatMechanics">
(??) <img src="https://bstats.org/signatures/bukkit/OldCombatMechanics.svg" alt="bStats">
(??)</a>
+5 -14
View File
@@ -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<JavaCompile> {
options.release.set(8)
}
tasks.named<Jar>("jar") {
enabled = false
}
val shadowJarTask =
tasks.named<ShadowJar>("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")
@@ -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<RegisteredListener> 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
+39 -24
View File
@@ -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 <modeset> [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