Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
* @EternalCodeTeam/eternalcodeteam-maintainers
/.github/CODEOWNERS @EternalCodeTeam/eternalcodeteam-maintainers
* @EternalCodeTeam/team-maintainer
72 changes: 31 additions & 41 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,64 +1,54 @@
# 👋 Contributing to EternalCombat

First off, thanks for taking the time to contribute! 🎉
We love user contributions and want to make it as easy as possible for you to get involved.
Thanks for taking the time to contribute! This page covers everything you need to get started.

## 🛠️ Development Setup
## 🛠️ Requirements

To start contributing, you'll need to set up your environment:
- **JDK 21** (the project targets Java 21)
- Git

1. **Java 21**: We use Java 21 for development. Ensure you have a JDK 21 installed.
2. **IDE**: We recommend [IntelliJ IDEA](https://www.jetbrains.com/idea/).
3. **Git**: Ensure you have Git installed.
The Gradle wrapper is committed, so you don't need Gradle installed.

### 📥 Getting the Code
## 🔨 Building and testing

```bash
# Fork the repository on GitHub first!
# https://github.com/EternalCodeTeam/EternalCombat/fork
git clone https://github.com/YOUR-USERNAME/EternalCombat.git
git clone https://github.com/EternalCodeTeam/EternalCombat.git
cd EternalCombat
./gradlew build
```

### 🔨 Building the Project
`./gradlew build` compiles both modules, runs the unit tests and produces the shaded plugin jar in
`eternalcombat-plugin/build/libs/`.

Run this command in your terminal:
To run only the tests:

```bash
./gradlew build
./gradlew test
```

## 🤝 How to Contribute

1. **Fork & Clone**: Fork the repo to your own account and clone it.
2. **Branch**: Create a new branch for your feature or fix.
```bash
git checkout -b feat/my-awesome-feature
```
3. **Code**: Hack away! 💻
4. **Test**: Run manual test by `runServer` to ensure you haven't broken anything.
```bash
./gradlew runServer
```
5. **Push**: Push your changes to your fork.
6. **Pull Request**: Open a PR against the `master` branch.

## 📏 Code Style
To try your changes on a real server, start a Paper server with the plugin and its dependencies
already installed:

Make sure that your code adheres to the plugin's existing coding style.
```bash
./gradlew runServer
```

## 🐛 Reporting Bugs
## 📏 Code style

If you find a bug, please use the **Bug Report** issue template.
- Check if the issue already exists.
- Provide a minimal reproduction if possible.
- Include logs and screenshots.
Formatting rules live in [`.editorconfig`](../.editorconfig) — 4 spaces, UTF-8, LF endings.
Enable EditorConfig support in your IDE and match the style of the surrounding code.

## 💡 Feature Requests
## 🚀 Pull requests

Have an idea? Use the **Feature Request** issue template.
- Explain *why* this feature is useful.
- Describe how it should look or behave.
1. Fork the repository and create a branch off `master`.
2. Keep the change focused — one topic per pull request.
3. Add or update tests when you change behaviour that can be tested without a server.
4. Make sure `./gradlew build` passes before opening the PR.
5. Prefix the PR title with the type of change, for example
`feat:`, `fix:`, `chore:`, `docs:`, or `GH-<issue>` when it closes an issue.
6. Describe what you changed and why — the pull request template is intentionally short.

## 📄 License
By contributing, you agree that your contributions will be licensed under the project's [License](../LICENSE).

By contributing, you agree that your contributions will be licensed under the
[Apache License 2.0](../LICENSE).
70 changes: 13 additions & 57 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -1,84 +1,40 @@
name: 🐛 Bug Report
description: File a bug report to help us improve EternalCombat
description: Report something that is broken in EternalCombat
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
Please ensure that you have searched the existing issues to see if this bug has already been reported.

- type: textarea
id: description
attributes:
label: Bug description
description: A clear and concise description of what the bug is.
placeholder: I was doing X and Y happened...
label: What happened?
description: What went wrong, and what did you expect instead?
placeholder: I was doing X and Y happened, but I expected Z.
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: Please provide a step-by-step guide to reproduce the issue.
placeholder: |
1. Launch the server
2. Tag yourself using the '/combat tag' command
3. See error
validations:
required: true

- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true

- type: textarea
id: screenshots
attributes:
label: Screenshots/Video
description: If applicable, add screenshots or a video to help explain your problem.

- type: dropdown
id: server-software
attributes:
label: Server Software
description: What server software are you using?
options:
- Paper
- Purpur
- Spigot
- Folia
- Other (please specify in logs)
validations:
required: true

- type: input
id: minecraft-version
attributes:
label: Minecraft Version
description: What version of Minecraft are you running? (e.g. 1.21.11)
placeholder: 1.21.11
1. Start the server
2. Run /combatlog tag <player>
3. See the error
validations:
required: true

- type: input
id: plugin-version
id: versions
attributes:
label: Plugin Version
description: What version of EternalCombat are you running? (Check with /eternalcombat version)
placeholder: v2.4.1
label: Versions
description: Server software and version, plus the EternalCombat version.
placeholder: Paper 1.21.11, EternalCombat 2.5.1
validations:
required: true

- type: textarea
id: logs
attributes:
label: Logs / Stack Trace
description: Please paste any relevant logs or stack traces here. Use a pastebin service if the log is too long.
label: Logs
description: Any relevant errors or stack traces. Use a paste service for long logs.
render: shell
30 changes: 5 additions & 25 deletions .github/ISSUE_TEMPLATE/feature-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,16 @@ description: Suggest an idea for EternalCombat
title: "[Feature]: "
labels: ["feature"]
body:
- type: markdown
attributes:
value: |
Thanks for suggesting a new feature! Please explain your idea in detail.

- type: textarea
id: problem
attributes:
label: Is your feature request related to a problem?
description: Please describe the problem you are trying to solve.
placeholder: I'm always frustrated when...
validations:
required: true

- type: textarea
id: solution
id: idea
attributes:
label: Describe the solution you'd like
description: A clear and concise description of what you want to happen.
label: What would you like to see?
description: Describe the feature and the problem it would solve.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Describe alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've considered.

- type: textarea
id: additional-context
id: context
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.
description: Optional — alternatives you considered, examples, or screenshots.
36 changes: 6 additions & 30 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,11 @@
---
name: Pull Request
about: Submit a contribution to EternalCombat
title: 'GH-{NUMBER} <title>'
labels: []
assignees: []
---
## What changed?

## 📝 Description
<!--
Please submit your PR using the following title format:
feat: Description of the new feature
fix: Description of the bug fix
chore: Maintenance tasks
docs: Documentation changes
-->
<!-- A short description of the change. -->

<!-- Describe your changes clearly and concisely. Why is this change needed? What does it accomplish? -->
## Why?

## 🎯 Type of Change
<!-- Please check the boxes that apply to your changes -->
- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
- [ ] ✨ New feature (non-breaking change which adds functionality)
- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] 🔧 Refactoring (no functional changes, just code improvements)
- [ ] 🎨 Style/Cosmetic (formatting, whitespace, visual changes)
- [ ] 📚 Documentation (updates to documentation or README)
- [ ] 🤖 CI/CD/Build (changes to workflows, gradle, etc.)
<!-- The problem this solves, or the issue it closes (e.g. Closes #123). -->

**Test Environment:**
- **Minecraft Version:** <!-- e.g. 1.20.4 -->
- **Java Version:** <!-- e.g. 21 -->
- **Platform:** <!-- e.g. Windows/Linux/MacOS -->
## Anything else?

## 📸 Screenshots (if applicable)
<!-- Optional: how you tested it, screenshots, or notes for reviewers. -->
17 changes: 17 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Security Policy

## Supported versions

Only the latest release of EternalCombat receives security fixes.
Please update before reporting an issue.

## Reporting a vulnerability

**Please do not open a public issue for security problems.**

Report them privately to the maintainers on our
[Discord server](https://discord.com/invite/FQ7jmGBd6c) — open a ticket or send a
direct message to a team member.

Include the plugin version, your server software and version, and the steps needed to
reproduce the problem. We will confirm the report and let you know once a fix is released.
27 changes: 10 additions & 17 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,44 +5,37 @@ on:
branches: [ "master" ]
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:

runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v7
with:
# The build derives the snapshot version from `git describe --tags`.
fetch-depth: 0

- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '17'
java-version: '21'
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Set Variables & Build
uses: actions/github-script@v9
with:
script: |
const isPR = context.eventName === 'pull_request';
const branch = isPR ? context.payload.pull_request.head.ref.replace(/\//g, '-') : 'master';
const sha = (isPR ? context.payload.pull_request.head.sha : context.sha).substring(0, 7);

const artifactName = `EternalCombat ${branch}+${sha}`;
core.exportVariable('FULL_ARTIFACT_NAME', artifactName);

- name: Build with Gradle
run: ./gradlew shadowJar
run: ./gradlew build

- name: Upload build artifact
uses: actions/upload-artifact@v7
with:
name: ${{ env.FULL_ARTIFACT_NAME }}
path: eternalcombat-plugin/build/libs/*.jar
path: eternalcombat-plugin/build/libs/EternalCombat*.jar
if-no-files-found: error
archive: false
8 changes: 6 additions & 2 deletions .github/workflows/hangar-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ on:
release:
types: [published]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false

jobs:
publish:
runs-on: ubuntu-latest
Expand All @@ -22,10 +26,10 @@ jobs:
with:
java-version: '21'
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Publish to Hangar
run: ./gradlew :eternalcombat-plugin:publishPluginPublicationToHangar
env:
Expand Down
Loading
Loading