diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..f2c7685 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,14 @@ +# These are supported funding model platforms + +github: Shweit +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: shweit +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +polar: # Replace with a single Polar username +buy_me_a_coffee: shweit +custom: https://www.paypal.com/donate/?hosted_button_id=TBG3UZALFT2T6 \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..bba39cd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,26 @@ +--- +name: Bug report +about: Create a report to help us improve +title: "[BUG]" +labels: Bug +assignees: Shweit + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Minecraft Version:** [e.g. 1.21.1] + +**Additional context** +Add any other context about the problem here. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..4d8d9c7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: "[Feature Request]" +labels: Feature Request +assignees: Shweit + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. \ No newline at end of file diff --git a/.github/workflows/runtime.yml b/.github/workflows/runtime.yml new file mode 100644 index 0000000..732773e --- /dev/null +++ b/.github/workflows/runtime.yml @@ -0,0 +1,76 @@ +name: Runtime Test + +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 21 + + - name: Maven Build + run: mvn clean package + + - name: Upload the artifact + uses: actions/upload-artifact@v3 + with: + name: artifact-${{ github.event.number }} + path: 'target/Poll*.jar' + + runtime-test: + name: Plugin Runtime Test + needs: [build] + runs-on: ubuntu-latest + strategy: + matrix: + include: + - mcVersion: '1.9.4' + javaVersion: '9' + - mcVersion: '1.10.2' + javaVersion: '10' + - mcVersion: '1.11.2' + javaVersion: '11' + - mcVersion: '1.12.2' + javaVersion: '12' + - mcVersion: '1.13.2' + javaVersion: '13' + - mcVersion: '1.14.4' + javaVersion: '14' + - mcVersion: '1.15.2' + javaVersion: '15' + - mcVersion: '1.16.5' + javaVersion: '16' + - mcVersion: '1.17.1' + javaVersion: '17' + - mcVersion: '1.18.2' + javaVersion: '18' + - mcVersion: '1.19.4' + javaVersion: '19' + - mcVersion: '1.20.1' + javaVersion: '20' + - mcVersion: '1.20.6' + javaVersion: '20' + - mcVersion: '1.21' + javaVersion: '21' + + steps: + - uses: FN-FAL113/minecraft-plugin-runtime-test@v1.1.2 + with: + server-version: ${{ matrix.mcVersion }} + java-version: ${{ matrix.javaVersion }} + artifact-name: artifact-${{ github.event.number }} \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..ed5a069 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +dennisvandenbrock54@gmail.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..23d09a3 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,32 @@ +# Contributing +> You can add yourself to the contributors in `src/main/resources/plugin.yml` when you make your first contribution. + +If you contribute to this project, you agree to abide by the [code of conduct](CODE_OF_CONDUCT.md). Please read the guidelines below before contributing. +## Best Practice +1. **Fork the Repository:** Fork the repository to your GitHub account. +2. **Create a New Branch:** Create a new branch for your feature or bug fix. +```bash +git checkout -b feature/my-feature +``` +3. **Write Clean Code:** Ensure your code follows the project's coding standards and conventions. +4. **Write Tests:** Write tests for your code. We use JUnit for unit testing, and the plugin can be tested against a real Minecraft server. +5. **Commit Changes:** Commit your changes and write meaningful commit messages. +```bash +git commit -m "Add feature: My new feature" +``` +6. **Push Changes:** Push your changes to your forked repository. +```bash +git push origin feature/my-feature +``` +7. **Create a Pull Request:** Create a pull request from your branch to the main repository. Describe the changes you have made and why they are beneficial. + +## Best Practices +- **Code Style:** Follow the project's code style and conventions. +- **Testing:** Write tests for your code to ensure it works as expected. +- **Documentation:** Document your code and any changes you make. + +## License +This project is licensed under the MIT License - see the [LICENSE](https://opensource.org/license/mit) file for details. + +## Contact +If you have any questions or suggestions, feel free to contact me at [dennisvandenbrock54@gmail.com](mailto:dennisvandenbrock54@gmail.com) \ No newline at end of file diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..529806e --- /dev/null +++ b/LICENCE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dennis van den Brock + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3da5a73 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# Poll Plugin + + +## Overview +The Poll Plugin is a versatile and easy-to-use tool for Minecraft servers, allowing administrators to create and manage polls directly in-game. With this plugin, server owners can engage their players by gathering feedback, making decisions, and encouraging participation in server activities. + +## Features +- **Create Polls:** Users with the appropriate permissions can create polls with custom questions and options. +- **Vote:** Players can vote on polls using the in-game chat or GUI interface. +- **Poll Management:** Polls can be easily managed and viewed, with options for pagination and filtering of open polls. +- **Detailed Poll View:** Players can view detailed information about each poll, including the number of votes for each option and their own selected answers. +- **Real-time Updates**: Poll results are updated in real-time, allowing players to see the outcome as votes are cast. + +## Commands +`/createpoll "" "" " ... [--multi]"` +- **Description:** Creates a new poll with the specified question and answers. The --multi flag allows multiple answers to be selected. +- **Permission:** poll.create +- **Example:** `/createpoll "What is your favorite color?" "Red" "Blue" "Green"` + +`/polls [page]` +- **Description:** Opens the polls GUI, showing a list of all active polls. Use the optional page argument to navigate through multiple pages of polls. +- **Permission:** poll.view +- **Example:** `/polls 2` + +`/vote ` +- **Description:** Votes for the specified answer in the given poll. +- **Permission:** poll.vote +- **Example:** `/vote 1 "Red"` + +## Installation +### Prerequisites +- **Java:** JDK 20 or higher is required to build and run the project. +- **Maven:** Make sure Maven is installed on your system. + You can download it [here](https://maven.apache.org/download.cgi). + +### Cloning the Repository +1. Clone the repository to your local machine. +```shell +git clone git@github.com:Shweit/Poll.git +cd POll +``` +### Building the Project +2. Build the project using Maven. +```shell +mvn clean install +``` +### Setting up the Minecraft Server +3. Copy the generated JAR file to the `plugins` directory of your Minecraft server. +```shell +cp target/Poll-*.jar /path/to/your/minecraft/server/plugins +``` +4. Start or restart your Minecraft server. +```shell +java -Xmx1024M -Xms1024M -jar paper-1.21.jar nogui +``` +5. Once the server is running, the plugin will be loaded automatically. You can verify it by running: +```shell +/plugins +``` + +## Contributing +Contributions are welcome! Please read the [contributing guidelines](CONTRIBUTING.md) to get started. \ No newline at end of file