Fork-specific changes
This commit is contained in:
1 parent
7edb0a525d
commit
bd88c2bc93
16 files changed
+58
-582
No files matched your search
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
@@ -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 +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
|
||||
@@ -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
|
||||
@@ -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
|
||||
});
|
||||
|
||||
@@ -20,7 +20,6 @@ builds
|
||||
target
|
||||
META-INF
|
||||
/build/
|
||||
/gradle/
|
||||
/.gradle/
|
||||
.gradle-user/
|
||||
/.gradle-cache/
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user