From f35188b6aa78c736dbc42d636ea034e798a2d918 Mon Sep 17 00:00:00 2001 From: yzp-python Date: Fri, 25 Jul 2025 21:31:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=20/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 198 ++++++++++++++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 151 ++++++++++++++++++++++++++++++++++++ build.gradle | 89 ++++++++++++++++++++++ 3 files changed, 438 insertions(+) create mode 100644 .gitignore create mode 100644 CONTRIBUTING.md create mode 100644 build.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..09fed1e --- /dev/null +++ b/.gitignore @@ -0,0 +1,198 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath +.gradle/ + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + +################# +## IntelliJ +################# + +*.iml +*.ipr +*.iws +.idea/ + +################# +## NetBeans +################# + +nb-configuration.xml +nbbuild.xml +nbproject + +################# +## Maven +################# + +target +dependency-reduced-pom.xml +test/ + +# Wrapper files +mvnw +mvnw.cmd + +################# +## Gradle +################# + +build +gradle + +# Wrapper files +gradlew +gradlew.bat + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Rr]elease/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.vspscc +.builds +*.dotCover + +## TODO: If you have NuGet Package Restore enabled, uncomment this +#packages/ + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +# Visual Studio profiler +*.psess +*.vsp + +# ReSharper is a .NET coding add-in +_ReSharper* + +# Installshield output folder +[Ee]xpress + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish + +# Others +[Bb]in +[Oo]bj +sql +TestResults +*.Cache +ClientBin +stylecop.* +~$* +*.dbmdl +Generated_Code #added for RIA/Silverlight projects + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML + +############ +## System +############ + +# Windows image file caches +Thumbs.db + +# Folder config file +Desktop.ini + +# Mac +.DS_Store + +############# +## Misc. +############# + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# Documentation dev folder +docs/dev/ \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f1848c4 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,151 @@ +# Contributing + +When contributing to this repository, please first discuss the change you wish to make via issue, +on Discord, or any other method with the owners of this repository before making a change. + +Please note we have a code of conduct, please follow it in all your interactions with the project. + +## Pull Request Guidelines + +- For consistency, please only use spaces for indentation. +- Use descriptiveCamelCase for variable/method names. Names containing underscore or abbreviations should be changed. +- Restrict changes in a commit to a single event or section of code (e.g. refactor BlockBreakEvent and BlockPlaceEvent in separate commits) +- Attempt to keep the amount of code modified in a single pull request small and readable. +- Please utilize [SonarLint](https://www.sonarlint.org) in your IDE. Contributions are automatically analyzed. +- When adding new functionality, please also be sure to update the documentation as well. +- Use common sense. If you have a suggestion for a contribution guideline, post it on Discord. + +Please note that although numerous improvements have been made to the codebase over the past few years, there’s still significant work to be done. Parts of this plugin are over a decade old, and new functionality is continuously being added. Refactoring is welcomed, but please be sure to keep commits a reasonable size. + +## 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, caste, color, 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 on our Discord server, at +[discord.gg/b4DZ4jy](https://discord.gg/b4DZ4jy). +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][v2.0]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available +at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..727d019 --- /dev/null +++ b/build.gradle @@ -0,0 +1,89 @@ +import org.apache.tools.ant.filters.ReplaceTokens + +plugins { + id 'java' + id 'com.github.johnrengelman.shadow' version '8.1.1' + id 'com.palantir.git-version' version '0.13.0' +} + +group = 'net.coreprotect' +String projectVersion = '22.4' +String projectBranch = '' +version = projectVersion // `version` might be modified, we don't always want that (e.g. plugin.yml) +description = 'Provides block protection for your server.' +sourceCompatibility = '21' + +if (System.getenv("BUILD_NUMBER") != null) { + // Being built in Jenkins, append Build ID + version += "-${System.getenv("BUILD_NUMBER")}" +} else if (!(version ==~ '^[^.]*\\.[^.]*\\.[^.]*$')) { // Thanks https://stackoverflow.com/a/9949200/1709894 + // Append the Git hash if 'version' has less than two periods + version += "-${gitVersion()}" +} +logger.info("Building version $version") + +repositories { + maven { url = 'https://hub.spigotmc.org/nexus/content/groups/public/' } + maven { url = 'https://repo.papermc.io/repository/maven-public/' } + maven { url = 'https://repo.codemc.org/repository/maven-public/' } +} + +dependencies { + implementation(platform("com.intellectualsites.bom:bom-newest:1.44")) // Ref: https://github.com/IntellectualSites/bom + compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") + compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") + compileOnly 'io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT' + implementation 'org.bstats:bstats-bukkit-lite:1.8' + implementation 'com.zaxxer:HikariCP:5.0.1' +} + +jar { + archiveClassifier.set("original") +} + +artifacts { + archives shadowJar +} + +shadowJar { + dependencies { + // #toString because #getGroup technically returns an Object + relocate('org.bstats', project.group.toString()) + relocate('com.zaxxer', project.group.toString()) + exclude(dependency('com.google.code.gson:.*')) + exclude(dependency('org.intellij:.*')) + exclude(dependency('org.jetbrains:.*')) + exclude(dependency('org.slf4j:.*')) + } + archiveClassifier.set(null) +} + +ext { + author = 'Intelli' + + resourceTokens = [ + 'project.version': projectVersion, + 'project.branch': projectBranch, + ] +} + +processResources { + include 'plugin.yml' + // Whole lotta boilerplate to get the same functionality as Maven here. + // Replace this if Gradle ever lets us configure the filter before filtering. + filter(new Transformer() { + @Override + String transform(String s) { + ReplaceTokens replaceTokens = new ReplaceTokens(new StringReader(s)) + replaceTokens.setBeginToken('${') + replaceTokens.setEndToken('}') + resourceTokens.forEach { key, val -> + def token = new ReplaceTokens.Token() + token.setKey(key.toString()) + token.setValue(val.toString()) + replaceTokens.addConfiguredToken(token) + } + return replaceTokens.readLines().join('\n') + } + }) +}