mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2024-11-23 02:55:52 +01:00
Merge branch 'MV5' into perm-revamp-3
This commit is contained in:
commit
74e7a1c9f3
2
.github/labeler.yml
vendored
2
.github/labeler.yml
vendored
@ -1,2 +0,0 @@
|
|||||||
prerelease:
|
|
||||||
- '*'
|
|
34
.github/workflows/call.github_release.yml
vendored
Normal file
34
.github/workflows/call.github_release.yml
vendored
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
name: 'Call: GitHub Release'
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
release_mode:
|
||||||
|
description: 'Release mode'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
version_bump:
|
||||||
|
description: 'Version bump'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
promote_from:
|
||||||
|
description: 'Promote from'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
outputs:
|
||||||
|
release_created:
|
||||||
|
description: 'Release created'
|
||||||
|
value: ${{ jobs.github_release.outputs.release_created }}
|
||||||
|
tag_name:
|
||||||
|
description: 'Tag name'
|
||||||
|
value: ${{ jobs.github_release.outputs.tag_name }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
github_release:
|
||||||
|
uses: ./.github/workflows/generic.github_release.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
plugin_name: multiverse-core
|
||||||
|
release_mode: ${{ inputs.release_mode }}
|
||||||
|
version_bump: ${{ inputs.version_bump }}
|
||||||
|
promote_from: ${{ inputs.promote_from }}
|
83
.github/workflows/call.platform_uploads.yml
vendored
Normal file
83
.github/workflows/call.platform_uploads.yml
vendored
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
name: 'Call: Platform Uploads'
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
target_tag:
|
||||||
|
description: 'Version to upload'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
upload_modrinth:
|
||||||
|
description: 'Upload to modrinth.com'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
upload_dbo:
|
||||||
|
description: 'Upload to dev.bukkit.org'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
upload_hangar:
|
||||||
|
description: 'Upload to hangar.papermc.io'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
secrets:
|
||||||
|
MODRINTH_TOKEN:
|
||||||
|
required: true
|
||||||
|
DBO_UPLOAD_API_TOKEN:
|
||||||
|
required: true
|
||||||
|
HANGAR_UPLOAD_TOKEN:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
platform_uploads:
|
||||||
|
uses: ./.github/workflows/generic.platform_uploads.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
plugin_name: multiverse-core
|
||||||
|
modrinth_project_id: 3wmN97b8
|
||||||
|
modrinth_dependencies: >
|
||||||
|
[
|
||||||
|
{"project_id": "qvdtDX3s", "dependency_type": "optional"},
|
||||||
|
{"project_id": "8VMk6P0I", "dependency_type": "optional"},
|
||||||
|
{"project_id": "vtawPsTo", "dependency_type": "optional"},
|
||||||
|
{"project_id": "WuErDeI1", "dependency_type": "optional"}
|
||||||
|
]
|
||||||
|
|
||||||
|
dbo_project_id: 30765
|
||||||
|
dbo_project_relations: >
|
||||||
|
[
|
||||||
|
{"slug": "multiverse-inventories", "type": "optionalDependency"},
|
||||||
|
{"slug": "multiverse-portals", "type": "optionalDependency"},
|
||||||
|
{"slug": "multiverse-netherportals", "type": "optionalDependency"},
|
||||||
|
{"slug": "multiverse-signportals", "type": "optionalDependency"},
|
||||||
|
{"slug": "vault", "type": "optionalDependency"}
|
||||||
|
]
|
||||||
|
|
||||||
|
hangar_slug: Multiverse-Core
|
||||||
|
hangar_plugin_dependencies: >
|
||||||
|
{ "PAPER": [
|
||||||
|
{
|
||||||
|
"name": "Multiverse-Inventories",
|
||||||
|
"required": false,
|
||||||
|
"platforms": ["PAPER"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Multiverse-Portals",
|
||||||
|
"required": false,
|
||||||
|
"platforms": ["PAPER"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Multiverse-NetherPortals",
|
||||||
|
"required": false,
|
||||||
|
"platforms": ["PAPER"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Multiverse-SignPortals",
|
||||||
|
"required": false,
|
||||||
|
"platforms": ["PAPER"]
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
|
||||||
|
target_tag: ${{ inputs.target_tag }}
|
||||||
|
upload_modrinth: ${{ inputs.upload_modrinth }}
|
||||||
|
upload_dbo: ${{ inputs.upload_dbo }}
|
||||||
|
upload_hangar: ${{ inputs.upload_hangar }}
|
31
.github/workflows/dispatch.platform_uploads.yml
vendored
Normal file
31
.github/workflows/dispatch.platform_uploads.yml
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
name: 'Dispatch: Platform Uploads'
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
target_tag:
|
||||||
|
description: 'Version to upload'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
upload_modrinth:
|
||||||
|
description: 'Upload to modrinth.com'
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
upload_dbo:
|
||||||
|
description: 'Upload to dev.bukkit.org'
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
upload_hangar:
|
||||||
|
description: 'Upload to hangar.papermc.io'
|
||||||
|
required: true
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
dispatch_platform_uploads:
|
||||||
|
uses: ./.github/workflows/call.platform_uploads.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
target_tag: ${{ github.event.inputs.target_tag }}
|
||||||
|
upload_modrinth: ${{ github.event.inputs.upload_modrinth }}
|
||||||
|
upload_dbo: ${{ github.event.inputs.upload_dbo }}
|
||||||
|
upload_hangar: ${{ github.event.inputs.upload_hangar }}
|
38
.github/workflows/dispatch.promote_release.yml
vendored
Normal file
38
.github/workflows/dispatch.promote_release.yml
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
name: 'Dispatch: Promote Release'
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
target_tag:
|
||||||
|
description: 'Version to promote'
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check_version:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Verify input version is prerelease
|
||||||
|
run: |
|
||||||
|
if [[ "${{ github.event.inputs.target_tag }}" != *"pre"* ]]; then
|
||||||
|
echo "Version must be a prerelease"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
github_release:
|
||||||
|
needs: check_version
|
||||||
|
uses: ./.github/workflows/call.github_release.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
release_mode: promote
|
||||||
|
promote_from: ${{ github.event.inputs.target_tag }}
|
||||||
|
|
||||||
|
platform_uploads:
|
||||||
|
needs: github_release
|
||||||
|
if: needs.github_release.outputs.release_created == 'true'
|
||||||
|
uses: ./.github/workflows/call.platform_uploads.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
target_tag: ${{ needs.github_release.outputs.tag_name }}
|
||||||
|
upload_modrinth: 'true'
|
||||||
|
upload_dbo: 'true'
|
||||||
|
upload_hangar: 'true'
|
91
.github/workflows/generic.github_release.yml
vendored
Normal file
91
.github/workflows/generic.github_release.yml
vendored
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
name: 'Generic: GitHub Release'
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
# Plugin specific
|
||||||
|
plugin_name:
|
||||||
|
description: 'Plugin name'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
# Common params
|
||||||
|
release_mode:
|
||||||
|
description: 'Release mode'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
version_bump:
|
||||||
|
description: 'Version bump'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
promote_from:
|
||||||
|
description: 'Promote from'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
outputs:
|
||||||
|
release_created:
|
||||||
|
description: 'Release created'
|
||||||
|
value: ${{ jobs.github_release.outputs.release_created }}
|
||||||
|
tag_name:
|
||||||
|
description: 'Tag name'
|
||||||
|
value: ${{ jobs.github_release.outputs.tag_name }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
github_release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
release_created: ${{ steps.release.outputs.release_created }}
|
||||||
|
tag_name: ${{ steps.release.outputs.tag_name }}
|
||||||
|
steps:
|
||||||
|
- name: Echo inputs
|
||||||
|
run: |
|
||||||
|
echo "release_mode: ${{ inputs.release_mode }}"
|
||||||
|
echo "version_bump: ${{ inputs.version_bump }}"
|
||||||
|
echo "promote_from: ${{ inputs.promote_from }}"
|
||||||
|
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: ${{ inputs.promote_from }}
|
||||||
|
|
||||||
|
- uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: '11'
|
||||||
|
distribution: 'adopt'
|
||||||
|
cache: gradle
|
||||||
|
|
||||||
|
- name: Validate Gradle wrapper
|
||||||
|
uses: gradle/wrapper-validation-action@v1
|
||||||
|
|
||||||
|
- name: Build and test
|
||||||
|
uses: gradle/gradle-build-action@v2
|
||||||
|
with:
|
||||||
|
arguments: clean build -x assemble -x shadowJar -x checkStyleMain -x checkStyleTest
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Create release
|
||||||
|
id: release
|
||||||
|
uses: benwoo1110/semantic-release-action@v1
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
release_mode: ${{ inputs.release_mode }}
|
||||||
|
version_bump: ${{ inputs.version_bump }}
|
||||||
|
promote_from: ${{ inputs.promote_from }}
|
||||||
|
|
||||||
|
- name: Publish package
|
||||||
|
if: steps.release.outputs.release_created == 'true'
|
||||||
|
uses: gradle/gradle-build-action@v2
|
||||||
|
with:
|
||||||
|
arguments: publish -x checkStyleMain -x checkStyleTest -x test
|
||||||
|
env:
|
||||||
|
GITHUB_VERSION: ${{ steps.release.outputs.publish_version }}
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload release artifact
|
||||||
|
if: steps.release.outputs.release_created == 'true'
|
||||||
|
uses: svenstaro/upload-release-action@v2
|
||||||
|
with:
|
||||||
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
file: build/libs/${{ inputs.plugin_name }}-${{ steps.release.outputs.publish_version }}.jar
|
||||||
|
asset_name: ${{ inputs.plugin_name }}-${{ steps.release.outputs.tag_name }}.jar
|
||||||
|
tag: ${{ steps.release.outputs.tag_name }}
|
140
.github/workflows/generic.platform_uploads.yml
vendored
Normal file
140
.github/workflows/generic.platform_uploads.yml
vendored
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
name: 'Generic: Platform Uploads'
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
# Plugin specific params
|
||||||
|
plugin_name:
|
||||||
|
description: 'Plugin name'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
modrinth_project_id:
|
||||||
|
description: 'modrinth.com project ID'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
modrinth_dependencies:
|
||||||
|
description: 'modrinth.com project dependencies'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: '[]'
|
||||||
|
|
||||||
|
dbo_project_id:
|
||||||
|
description: 'dev.bukkit.org project ID'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
dbo_project_relations:
|
||||||
|
description: 'dev.bukkit.org project relations'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: '[]'
|
||||||
|
|
||||||
|
hangar_slug:
|
||||||
|
description: 'hangar.papermc.io project slug'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
hangar_plugin_dependencies:
|
||||||
|
description: 'hangar.papermc.io project dependencies'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
default: '{}'
|
||||||
|
|
||||||
|
# Common params
|
||||||
|
target_tag:
|
||||||
|
description: 'Version to upload'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
upload_modrinth:
|
||||||
|
description: 'Upload to modrinth.com'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
upload_dbo:
|
||||||
|
description: 'Upload to dev.bukkit.org'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
upload_hangar:
|
||||||
|
description: 'Upload to hangar.papermc.io'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
MODRINTH_TOKEN:
|
||||||
|
required: true
|
||||||
|
DBO_UPLOAD_API_TOKEN:
|
||||||
|
required: true
|
||||||
|
HANGAR_UPLOAD_TOKEN:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
platform_uploads:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Get release info
|
||||||
|
id: release-info
|
||||||
|
uses: cardinalby/git-get-release-action@1.2.4
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag: ${{ inputs.target_tag }}
|
||||||
|
|
||||||
|
- name: Download release artifact
|
||||||
|
id: release-artifact
|
||||||
|
uses: dsaltares/fetch-gh-release-asset@1.1.1
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
version: tags/${{ steps.release-info.outputs.tag_name }}
|
||||||
|
file: ${{ inputs.plugin_name }}-${{ steps.release-info.outputs.tag_name }}.jar
|
||||||
|
|
||||||
|
- name: Parse release type
|
||||||
|
id: parse-release-type
|
||||||
|
run: |
|
||||||
|
if [[ "${{ steps.release-info.outputs.prerelease }}" == "true" ]]; then
|
||||||
|
echo Setting release_type to Beta
|
||||||
|
echo "release_type=Beta" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo Setting release_type to Release
|
||||||
|
echo "release_type=Release" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Upload to Modrinth
|
||||||
|
if: ${{ !cancelled() && inputs.upload_modrinth == 'true' }}
|
||||||
|
uses: benwoo1110/modrinth-upload-action@v1
|
||||||
|
with:
|
||||||
|
api_token: ${{ secrets.MODRINTH_TOKEN }}
|
||||||
|
project_id: ${{ inputs.modrinth_project_id }}
|
||||||
|
version_number: ${{ steps.release-info.outputs.tag_name }}
|
||||||
|
files: '["${{ github.workspace }}/${{ inputs.plugin_name }}-${{ steps.release-info.outputs.tag_name }}.jar"]'
|
||||||
|
name: ${{ steps.release-info.outputs.tag_name }}
|
||||||
|
changelog: ${{ steps.release-artifact.outputs.body }}
|
||||||
|
game_versions: 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13
|
||||||
|
version_type: ${{ steps.parse-release-type.outputs.release_type }}
|
||||||
|
loaders: bukkit, spigot, paper
|
||||||
|
dependencies: ${{ inputs.modrinth_dependencies }}
|
||||||
|
|
||||||
|
- name: Upload to DBO
|
||||||
|
if: ${{ !cancelled() && inputs.upload_dbo == 'true' }}
|
||||||
|
uses: benwoo1110/dbo-upload-action@v1
|
||||||
|
with:
|
||||||
|
api_token: ${{ secrets.DBO_UPLOAD_API_TOKEN }}
|
||||||
|
project_id: ${{ inputs.dbo_project_id }}
|
||||||
|
changelog: ${{ steps.release-artifact.outputs.body }}
|
||||||
|
changelog_type: markdown
|
||||||
|
display_name: ${{ steps.release-info.outputs.tag_name }}
|
||||||
|
game_versions: 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17, 1.16, 1.15, 1.14, 1.13
|
||||||
|
release_type: ${{ steps.parse-release-type.outputs.release_type }}
|
||||||
|
project_relations: ${{ inputs.dbo_project_relations }}
|
||||||
|
file_path: ${{ github.workspace }}/${{ inputs.plugin_name }}-${{ steps.release-info.outputs.tag_name }}.jar
|
||||||
|
|
||||||
|
- name: Upload to Hangar
|
||||||
|
if: ${{ !cancelled() && inputs.upload_hangar == 'true' }}
|
||||||
|
uses: benwoo1110/hangar-upload-action@v1
|
||||||
|
with:
|
||||||
|
api_token: ${{ secrets.HANGAR_UPLOAD_TOKEN }}
|
||||||
|
slug: ${{ inputs.hangar_slug }}
|
||||||
|
version: ${{ steps.release-info.outputs.tag_name }}
|
||||||
|
channel: ${{ steps.parse-release-type.outputs.release_type }}
|
||||||
|
files: '[{"path": "${{ github.workspace }}/${{ inputs.plugin_name }}-${{ steps.release-info.outputs.tag_name }}.jar", "platforms": ["PAPER"]}]'
|
||||||
|
description: ${{ steps.release-artifact.outputs.body }}
|
||||||
|
platform_dependencies: '{"PAPER": ["1.13-1.20.1"]}'
|
||||||
|
plugin_dependencies: ${{ inputs.hangar_plugin_dependencies }}
|
@ -1,8 +1,12 @@
|
|||||||
name: Run unit tests against all PRs
|
name: 'Generic: Test'
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
workflow_call:
|
||||||
types: [opened, synchronize]
|
inputs:
|
||||||
|
plugin_name:
|
||||||
|
description: 'Plugin name'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
@ -32,5 +36,5 @@ jobs:
|
|||||||
- name: Artifact output
|
- name: Artifact output
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: multiverse-core-pr${{ github.event.pull_request.number }}
|
name: ${{ inputs.plugin_name }}-pr${{ github.event.pull_request.number }}
|
||||||
path: build/libs/multiverse-core-pr${{ github.event.pull_request.number }}.jar
|
path: build/libs/${{ inputs.plugin_name }}-pr${{ github.event.pull_request.number }}.jar
|
24
.github/workflows/main.prerelease.yml
vendored
Normal file
24
.github/workflows/main.prerelease.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
name: 'Main: Prerelease'
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
github_release_on_push:
|
||||||
|
uses: ./.github/workflows/call.github_release.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
release_mode: prerelease
|
||||||
|
version_bump: prlabel
|
||||||
|
|
||||||
|
platform_uploads_on_push:
|
||||||
|
needs: github_release_on_push
|
||||||
|
if: needs.github_release_on_push.outputs.release_created == 'true'
|
||||||
|
uses: ./.github/workflows/call.platform_uploads.yml
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
target_tag: ${{ needs.github_release_on_push.outputs.tag_name }}
|
||||||
|
upload_modrinth: 'true'
|
||||||
|
upload_dbo: 'false'
|
||||||
|
upload_hangar: 'false'
|
@ -1,4 +1,4 @@
|
|||||||
name: Require PR Labels
|
name: 'PR: Require Label'
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
@ -15,4 +15,4 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
mode: exactly
|
mode: exactly
|
||||||
count: 1
|
count: 1
|
||||||
labels: "release:major, release:minor, release:patch, no version bump"
|
labels: "release:major, release:minor, release:patch, no release"
|
11
.github/workflows/pr.test.yml
vendored
Normal file
11
.github/workflows/pr.test.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
name: 'PR: Test'
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
uses: ./.github/workflows/generic.test.yml
|
||||||
|
with:
|
||||||
|
plugin_name: multiverse-core
|
17
.github/workflows/pr_labeler.yml
vendored
17
.github/workflows/pr_labeler.yml
vendored
@ -1,17 +0,0 @@
|
|||||||
name: "Pull Request Labeler"
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
types: [opened]
|
|
||||||
branches: [main]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
prerelease_labeler:
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: write
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/labeler@v4
|
|
||||||
with:
|
|
||||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
|
90
.github/workflows/promote_release.yml
vendored
90
.github/workflows/promote_release.yml
vendored
@ -1,90 +0,0 @@
|
|||||||
name: Manually promote last prerelease to release
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
version:
|
|
||||||
description: 'Version to promote'
|
|
||||||
required: true
|
|
||||||
version-bump:
|
|
||||||
description: 'Version bump to apply - should usually match the version bump used for the prerelease since last release'
|
|
||||||
required: true
|
|
||||||
type: choice
|
|
||||||
options:
|
|
||||||
- 'patch'
|
|
||||||
- 'minor'
|
|
||||||
- 'major'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
manually_promote_release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Verify input version is prerelease
|
|
||||||
run: |
|
|
||||||
if [[ "${{ github.event.inputs.version }}" != *"pre"* ]]; then
|
|
||||||
echo "Version must be a prerelease"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Get release info
|
|
||||||
id: get-release
|
|
||||||
uses: cardinalby/git-get-release-action@v1
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
with:
|
|
||||||
tag: ${{ github.event.inputs.version }}
|
|
||||||
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
ref: ${{ steps.get-release.outputs.tag_name }}
|
|
||||||
|
|
||||||
- uses: actions/setup-java@v3
|
|
||||||
with:
|
|
||||||
java-version: '17'
|
|
||||||
distribution: 'adopt'
|
|
||||||
cache: gradle
|
|
||||||
|
|
||||||
- name: Validate Gradle wrapper
|
|
||||||
uses: gradle/wrapper-validation-action@v1
|
|
||||||
|
|
||||||
- name: Remove prerelease tag
|
|
||||||
run: |
|
|
||||||
echo "Removing prerelease tag from version"
|
|
||||||
echo "VERSION=$(echo ${{ steps.get-release.outputs.tag_name }} | sed -E 's/-pre.*//')" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
uses: gradle/gradle-build-action@v2
|
|
||||||
with:
|
|
||||||
arguments: clean build -x test -x checkstyleMain -x checkstyleTest
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
GITHUB_VERSION: ${{ env.VERSION }}
|
|
||||||
|
|
||||||
- name: Create release
|
|
||||||
id: release
|
|
||||||
uses: Multiverse/release-on-push-action@skip_prs
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
bump_version_scheme: ${{ github.event.inputs.version-bump }}
|
|
||||||
tag_prefix: ''
|
|
||||||
release_name: "<RELEASE_VERSION>"
|
|
||||||
use_github_release_notes: true
|
|
||||||
ref: ${{ steps.get-release.outputs.target_commitish }}
|
|
||||||
skip_prs: true
|
|
||||||
|
|
||||||
- name: Publish package
|
|
||||||
uses: gradle/gradle-build-action@v2
|
|
||||||
with:
|
|
||||||
arguments: publish
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
GITHUB_VERSION: ${{ env.VERSION }}
|
|
||||||
|
|
||||||
- name: Upload release artifact
|
|
||||||
uses: svenstaro/upload-release-action@v2
|
|
||||||
with:
|
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
file: build/libs/multiverse-core-${{ env.VERSION }}.jar
|
|
||||||
asset_name: multiverse-core-${{ steps.release.outputs.tag_name }}.jar
|
|
||||||
tag: ${{ steps.release.outputs.tag_name }}
|
|
64
.github/workflows/release.yml
vendored
64
.github/workflows/release.yml
vendored
@ -1,64 +0,0 @@
|
|||||||
name: Create Release Version & Publish Package
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release_on_push:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- uses: actions/setup-java@v3
|
|
||||||
with:
|
|
||||||
java-version: '17'
|
|
||||||
distribution: 'adopt'
|
|
||||||
cache: gradle
|
|
||||||
|
|
||||||
- name: Validate Gradle wrapper
|
|
||||||
uses: gradle/wrapper-validation-action@v1
|
|
||||||
|
|
||||||
- name: Test & Build
|
|
||||||
uses: gradle/gradle-build-action@v2
|
|
||||||
with:
|
|
||||||
arguments: clean build -x assemble -x shadowJar
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Create release
|
|
||||||
id: release
|
|
||||||
uses: Multiverse/release-on-push-action@support_prerelease
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
with:
|
|
||||||
bump_version_scheme: norelease
|
|
||||||
tag_prefix: ''
|
|
||||||
release_name: "<RELEASE_VERSION>"
|
|
||||||
use_github_release_notes: true
|
|
||||||
|
|
||||||
- name: Modify version scheme
|
|
||||||
run: |
|
|
||||||
if [[ "${{ steps.release.outputs.tag_name }}" == *"pre"* ]]; then
|
|
||||||
echo "Replacing prerelease version scheme with SNAPSHOT"
|
|
||||||
echo "VERSION=$(echo ${{ steps.release.outputs.tag_name }} | sed -E 's/-pre.*/-SNAPSHOT/')" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
echo "Using release version scheme"
|
|
||||||
echo "VERSION=${{ steps.release.outputs.tag_name }}" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Publish package
|
|
||||||
uses: gradle/gradle-build-action@v2
|
|
||||||
with:
|
|
||||||
arguments: publish
|
|
||||||
env:
|
|
||||||
GITHUB_VERSION: ${{ env.VERSION }}
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Upload release artifact
|
|
||||||
uses: svenstaro/upload-release-action@v2
|
|
||||||
with:
|
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
file: build/libs/multiverse-core-${{ env.VERSION }}.jar
|
|
||||||
asset_name: multiverse-core-${{ steps.release.outputs.tag_name }}.jar
|
|
||||||
tag: ${{ steps.release.outputs.tag_name }}
|
|
36
README.md
36
README.md
@ -1,26 +1,33 @@
|
|||||||
![Multiverse 2](config/multiverse2-long.png)
|
<p align="center">
|
||||||
|
<img src="config/multiverse2-long.png" alt="Multiverse Logo">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
[![Modrinth](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/available/modrinth_vector.svg)](https://modrinth.com/plugin/multiverse-core)
|
||||||
|
[![hangar](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/available/hangar_vector.svg)](https://hangar.papermc.io/Multiverse/Multiverse-Core)
|
||||||
|
[![bukkit](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/supported/bukkit_vector.svg)](https://dev.bukkit.org/projects/multiverse-core)
|
||||||
|
[![Spigot](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/cozy/supported/spigot_vector.svg)](https://www.spigotmc.org/resources/multiverse-core.390/)
|
||||||
|
|
||||||
[![Maven CI/CD](https://github.com/Multiverse/Multiverse-Core/actions/workflows/build.yml/badge.svg)](https://github.com/Multiverse/Multiverse-Core/actions/workflows/build.yml)
|
|
||||||
[![Release](https://img.shields.io/nexus/r/com.onarandombox.multiversecore/Multiverse-Core?label=release&server=https%3A%2F%2Frepo.onarandombox.com%2F)](https://dev.bukkit.org/projects/multiverse-core)
|
[![Release](https://img.shields.io/nexus/r/com.onarandombox.multiversecore/Multiverse-Core?label=release&server=https%3A%2F%2Frepo.onarandombox.com%2F)](https://dev.bukkit.org/projects/multiverse-core)
|
||||||
[![Dev builds](https://img.shields.io/nexus/s/com.onarandombox.multiversecore/Multiverse-Core?label=dev%20builds&server=http%3A%2F%2Frepo.onarandombox.com%2F)](https://ci.onarandombox.com/job/Multiverse-Core/)
|
[![Dev builds](https://img.shields.io/nexus/s/com.onarandombox.multiversecore/Multiverse-Core?label=dev%20builds&server=http%3A%2F%2Frepo.onarandombox.com%2F)](https://ci.onarandombox.com/job/Multiverse-Core/)
|
||||||
[![Discord](https://img.shields.io/discord/325459248047980545?label=discord&logo=discord)](https://discord.gg/NZtfKky)
|
[![Discord](https://img.shields.io/discord/325459248047980545?label=discord&logo=discord)](https://discord.gg/NZtfKky)
|
||||||
[![Support me on Patreon](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Ddumptruckman%26type%3Dpatrons&style=flat)](https://patreon.com/dumptruckman)
|
[![Support us on Patreon](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Ddumptruckman%26type%3Dpatrons&style=flat)](https://patreon.com/dumptruckman)
|
||||||
[![License](https://img.shields.io/github/license/Multiverse/Multiverse-Core)](LICENSE.md)
|
[![License](https://img.shields.io/github/license/Multiverse/Multiverse-Core)](LICENSE.md)
|
||||||
|
|
||||||
About
|
|
||||||
========
|
# About
|
||||||
|
|
||||||
[Multiverse](https://dev.bukkit.org/projects/multiverse-core) was created at the dawn of Bukkit multiworld support. It has since then grown into a **complete world management solution!** Multiverse provides the easiest to use world management solution for your Minecraft server, big or small, and with great addons like [Portals](https://dev.bukkit.org/projects/multiverse-portals) and [NetherPortals](https://dev.bukkit.org/projects/multiverse-netherportals/), what's not to love!
|
[Multiverse](https://dev.bukkit.org/projects/multiverse-core) was created at the dawn of Bukkit multiworld support. It has since then grown into a **complete world management solution!** Multiverse provides the easiest to use world management solution for your Minecraft server, big or small, and with great addons like [Portals](https://dev.bukkit.org/projects/multiverse-portals) and [NetherPortals](https://dev.bukkit.org/projects/multiverse-netherportals/), what's not to love!
|
||||||
<br><br>
|
|
||||||
Now it's time to create your very own Multiverse server, do check out our [Wiki](https://github.com/Multiverse/Multiverse-Core/wiki) and [Usage Guide](https://github.com/Multiverse/Multiverse-Core/wiki/Basics) to get started. Feel free to hop onto our [Discord](https://discord.gg/NZtfKky) if you have any question or just want to have a chat with us!
|
Now it's time to create your very own Multiverse server, do check out our [Wiki](https://github.com/Multiverse/Multiverse-Core/wiki) and [Usage Guide](https://github.com/Multiverse/Multiverse-Core/wiki/Basics) to get started. Feel free to hop onto our [Discord](https://discord.gg/NZtfKky) if you have any question or just want to have a chat with us!
|
||||||
|
|
||||||
### Amazing sub-modules available:
|
## Amazing sub-modules available:
|
||||||
|
|
||||||
* [Multiverse-NetherPortals](https://github.com/Multiverse/Multiverse-NetherPortals) -> Have separate nether and end worlds for each of your overworlds!
|
* [Multiverse-NetherPortals](https://github.com/Multiverse/Multiverse-NetherPortals) -> Have separate nether and end worlds for each of your overworlds!
|
||||||
* [Multiverse-Portals](https://github.com/Multiverse/Multiverse-Portals) -> Make custom portals to go to any destination!
|
* [Multiverse-Portals](https://github.com/Multiverse/Multiverse-Portals) -> Make custom portals to go to any destination!
|
||||||
* [Multiverse-Inventories](https://github.com/Multiverse/Multiverse-Inventories) -> Have separated players stats and inventories per world or per group of worlds.
|
* [Multiverse-Inventories](https://github.com/Multiverse/Multiverse-Inventories) -> Have separated players stats and inventories per world or per group of worlds.
|
||||||
* [Multiverse-SignPortals](https://github.com/Multiverse/Multiverse-SignPortals) -> Signs as teleprompters!
|
* [Multiverse-SignPortals](https://github.com/Multiverse/Multiverse-SignPortals) -> Signs as teleporters!
|
||||||
|
|
||||||
Building
|
## Building
|
||||||
========
|
|
||||||
Simply build the source with Gradle:
|
Simply build the source with Gradle:
|
||||||
```
|
```
|
||||||
./gradlew build
|
./gradlew build
|
||||||
@ -28,17 +35,16 @@ Simply build the source with Gradle:
|
|||||||
More details are available on the [build instructions wiki page](https://github.com/Multiverse/Multiverse-Core/wiki/Building).
|
More details are available on the [build instructions wiki page](https://github.com/Multiverse/Multiverse-Core/wiki/Building).
|
||||||
|
|
||||||
|
|
||||||
Contributing
|
## Contributing
|
||||||
=======
|
|
||||||
**Want to help improve Multiverse?** There are several ways you can support and contribute to the project.
|
**Want to help improve Multiverse?** There are several ways you can support and contribute to the project.
|
||||||
* Take a look at our "Bug: Unconfirmed" issues, where you can find issues that need extra testing and investigation.
|
* Take a look at our "Bug: Unconfirmed" issues, where you can find issues that need extra testing and investigation.
|
||||||
* Want others to love Multiverse too? You can join the [Multiverse Discord community](https://discord.gg/NZtfKky) and help others with issues and setup!
|
* Want others to love Multiverse too? You can join the [Multiverse Discord community](https://discord.gg/NZtfKky) and help others with issues and setup!
|
||||||
* A Multiverse guru? You can update our [Wiki](https://github.com/Multiverse/Multiverse-Core/wiki) with your latest tip, tricks and guides! The wiki open for all to edit and improve.
|
* A Multiverse guru? You can update our [Wiki](https://github.com/Multiverse/Multiverse-Core/wiki) with your latest tip, tricks and guides! The wiki open for all to edit and improve.
|
||||||
* Love coding? You could look at ["State: Open to PR"](https://github.com/Multiverse/Multiverse-Core/labels/State%3A%20Open%20to%20PR) and ["Resolution: Accepted"](https://github.com/Multiverse/Multiverse-Core/labels/Resolution%3A%20Accepted) issues. We're always happy to receive bug fixes and feature additions as [pull requests](https://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3/).
|
* Love coding? You could look at ["State: Open to PR"](https://github.com/Multiverse/Multiverse-Core/labels/State%3A%20Open%20to%20PR) and ["Resolution: Accepted"](https://github.com/Multiverse/Multiverse-Core/labels/Resolution%3A%20Accepted) issues. We're always happy to receive bug fixes and feature additions as [pull requests](https://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3/).
|
||||||
* If you'd like to make a financial contribution to the project, do consider joining our [patreon](https://www.patreon.com/dumptruckman) or make a one-time donation [here](https://paypal.me/dumptruckman)!
|
* If you'd like to make a financial contribution to the project, do consider joining our [Patreon](https://www.patreon.com/dumptruckman) or make a one-time donation [here](https://paypal.me/dumptruckman)!
|
||||||
|
|
||||||
Additionally, we would like to give a big thanks to everyone that has supported Multiverse over the years, as well as those in the years to come. Thank you!
|
Additionally, we would like to give a big thanks to everyone that has supported Multiverse over the years, as well as those in the years to come. Thank you!
|
||||||
|
|
||||||
License
|
## License
|
||||||
=======
|
|
||||||
Multiverse-Core is licensed under BSD-3-Clause License. Please see [LICENSE.md](LICENSE.md) for more info.
|
Multiverse-Core is licensed under BSD-3-Clause License. Please see [LICENSE.md](LICENSE.md) for more info.
|
||||||
|
83
build.gradle
83
build.gradle
@ -62,50 +62,58 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
|
// Add configuration for server API
|
||||||
|
compileOnly.extendsFrom serverApi
|
||||||
|
runtimeClasspath.extendsFrom serverApi
|
||||||
|
|
||||||
|
// Add configuration for external plugins
|
||||||
|
implementation.extendsFrom externalPlugin
|
||||||
|
|
||||||
|
// Add configuration for dependencies that will be included in fat jar
|
||||||
|
compileClasspath.extendsFrom shadowed
|
||||||
|
testCompileClasspath.extendsFrom shadowed
|
||||||
|
testRuntimeClasspath.extendsFrom shadowed
|
||||||
|
oldTestCompileClasspath.extendsFrom shadowed
|
||||||
|
oldTestRuntimeClasspath.extendsFrom shadowed
|
||||||
|
|
||||||
|
// Add configuration for old tests
|
||||||
oldTestImplementation.extendsFrom implementation
|
oldTestImplementation.extendsFrom implementation
|
||||||
oldTestRuntime.extendsFrom runtime
|
oldTestRuntime.extendsFrom runtime
|
||||||
relocatedApi
|
|
||||||
compileClasspath.extendsFrom relocatedApi
|
|
||||||
runtimeClasspath.extendsFrom relocatedApi
|
|
||||||
testCompileClasspath.extendsFrom relocatedApi
|
|
||||||
testRuntimeClasspath.extendsFrom relocatedApi
|
|
||||||
oldTestCompileClasspath.extendsFrom relocatedApi
|
|
||||||
oldTestRuntimeClasspath.extendsFrom relocatedApi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT'
|
serverApi 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT'
|
||||||
|
|
||||||
// Economy
|
// Economy
|
||||||
implementation('com.github.MilkBowl:VaultAPI:1.7.1') {
|
externalPlugin('com.github.MilkBowl:VaultAPI:1.7.1') {
|
||||||
exclude group: 'org.bukkit', module: 'bukkit'
|
exclude group: 'org.bukkit', module: 'bukkit'
|
||||||
}
|
}
|
||||||
|
|
||||||
// PlaceholderAPI
|
// PlaceholderAPI
|
||||||
implementation 'me.clip:placeholderapi:2.11.3'
|
externalPlugin 'me.clip:placeholderapi:2.11.3'
|
||||||
|
|
||||||
// Command Framework
|
// Command Framework
|
||||||
relocatedApi 'co.aikar:acf-paper:0.5.1-SNAPSHOT'
|
shadowed 'co.aikar:acf-paper:0.5.1-SNAPSHOT'
|
||||||
|
|
||||||
// Config
|
// Config
|
||||||
relocatedApi('me.main__.util:SerializationConfig:1.7') {
|
shadowed('me.main__.util:SerializationConfig:1.7') {
|
||||||
exclude group: 'org.bukkit', module: 'bukkit'
|
exclude group: 'org.bukkit', module: 'bukkit'
|
||||||
}
|
}
|
||||||
relocatedApi('io.github.townyadvanced.commentedconfiguration:CommentedConfiguration:1.0.1') {
|
shadowed('io.github.townyadvanced.commentedconfiguration:CommentedConfiguration:1.0.1') {
|
||||||
exclude group: 'org.spigotmc', module: 'spigot-api'
|
exclude group: 'org.spigotmc', module: 'spigot-api'
|
||||||
}
|
}
|
||||||
|
|
||||||
// Utils
|
// Utils
|
||||||
relocatedApi 'io.vavr:vavr:0.10.4'
|
shadowed 'io.vavr:vavr:0.10.4'
|
||||||
relocatedApi 'org.glassfish.hk2:hk2-locator:3.0.3'
|
shadowed 'org.glassfish.hk2:hk2-locator:3.0.3'
|
||||||
relocatedApi('com.dumptruckman.minecraft:Logging:1.1.1') {
|
shadowed('com.dumptruckman.minecraft:Logging:1.1.1') {
|
||||||
exclude group: 'junit', module: 'junit'
|
exclude group: 'junit', module: 'junit'
|
||||||
}
|
}
|
||||||
relocatedApi 'de.themoep.idconverter:mappings:1.2-SNAPSHOT'
|
shadowed 'de.themoep.idconverter:mappings:1.2-SNAPSHOT'
|
||||||
relocatedApi 'org.bstats:bstats-bukkit:2.2.1'
|
shadowed 'org.bstats:bstats-bukkit:2.2.1'
|
||||||
relocatedApi 'net.minidev:json-smart:2.4.8'
|
shadowed 'net.minidev:json-smart:2.4.8'
|
||||||
relocatedApi 'org.jetbrains:annotations:22.0.0'
|
shadowed 'org.jetbrains:annotations:22.0.0'
|
||||||
relocatedApi 'io.papermc:paperlib:1.0.8'
|
shadowed 'io.papermc:paperlib:1.0.8'
|
||||||
|
|
||||||
// Tests
|
// Tests
|
||||||
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10'
|
testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.10'
|
||||||
@ -170,6 +178,34 @@ publishing {
|
|||||||
publications {
|
publications {
|
||||||
maven(MavenPublication) {
|
maven(MavenPublication) {
|
||||||
from components.java
|
from components.java
|
||||||
|
|
||||||
|
pom.withXml {
|
||||||
|
Node pomNode = asNode()
|
||||||
|
|
||||||
|
// Remove Kotlin dependency
|
||||||
|
pomNode.dependencies.'*'.findAll() {
|
||||||
|
it.groupId.text() == 'org.jetbrains.kotlin'
|
||||||
|
}.each() {
|
||||||
|
it.parent().remove(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Switch runtime deps to provided
|
||||||
|
pomNode.dependencies.'*'.findAll() {
|
||||||
|
it.scope.text() == 'runtime'
|
||||||
|
}.each() {
|
||||||
|
it.scope*.value = 'provided'
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add spigot api to pom
|
||||||
|
project.configurations.serverApi.allDependencies.each { dependency ->
|
||||||
|
pomNode.dependencies[0].appendNode("dependency").with {
|
||||||
|
it.appendNode("groupId", dependency.group)
|
||||||
|
it.appendNode("artifactId", dependency.name)
|
||||||
|
it.appendNode("version", dependency.version)
|
||||||
|
it.appendNode("scope", "provided")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
@ -243,7 +279,7 @@ javadoc {
|
|||||||
project.configurations.api.canBeResolved = true
|
project.configurations.api.canBeResolved = true
|
||||||
|
|
||||||
shadowJar {
|
shadowJar {
|
||||||
relocate 'co.aikar.commands', 'com.onarandombox.acf'
|
relocate 'co.aikar', 'com.onarandombox.acf'
|
||||||
relocate 'com.dumptruckman.minecraft.util.Logging', 'com.onarandombox.MultiverseCore.utils.CoreLogging'
|
relocate 'com.dumptruckman.minecraft.util.Logging', 'com.onarandombox.MultiverseCore.utils.CoreLogging'
|
||||||
relocate 'com.dumptruckman.minecraft.util.DebugLog', 'com.onarandombox.MultiverseCore.utils.DebugFileLogger'
|
relocate 'com.dumptruckman.minecraft.util.DebugLog', 'com.onarandombox.MultiverseCore.utils.DebugFileLogger'
|
||||||
relocate 'de.themoep.idconverter', 'com.onarandombox.idconverter'
|
relocate 'de.themoep.idconverter', 'com.onarandombox.idconverter'
|
||||||
@ -263,7 +299,7 @@ shadowJar {
|
|||||||
relocate 'org.jetbrains', 'com.onarandombox.jetbrains'
|
relocate 'org.jetbrains', 'com.onarandombox.jetbrains'
|
||||||
relocate 'io.papermc.lib', 'com.onarandombox.paperlib'
|
relocate 'io.papermc.lib', 'com.onarandombox.paperlib'
|
||||||
|
|
||||||
configurations = [project.configurations.api, project.configurations.relocatedApi]
|
configurations = [project.configurations.shadowed]
|
||||||
|
|
||||||
archiveFileName = "$baseName-$version.$extension"
|
archiveFileName = "$baseName-$version.$extension"
|
||||||
|
|
||||||
@ -272,6 +308,7 @@ shadowJar {
|
|||||||
it.moduleGroup == 'org.jetbrains.kotlin'
|
it.moduleGroup == 'org.jetbrains.kotlin'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
//classifier = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
build.dependsOn shadowJar
|
build.dependsOn shadowJar
|
||||||
|
@ -2,4 +2,10 @@
|
|||||||
* This file was generated by the Gradle 'init' task.
|
* This file was generated by the Gradle 'init' task.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rootProject.name = 'multiverse-core'
|
rootProject.name = 'multiverse-core'
|
||||||
|
@ -7,14 +7,6 @@
|
|||||||
|
|
||||||
package com.onarandombox.MultiverseCore;
|
package com.onarandombox.MultiverseCore;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.lang.annotation.Annotation;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import com.dumptruckman.minecraft.util.Logging;
|
import com.dumptruckman.minecraft.util.Logging;
|
||||||
import com.onarandombox.MultiverseCore.anchor.AnchorManager;
|
import com.onarandombox.MultiverseCore.anchor.AnchorManager;
|
||||||
import com.onarandombox.MultiverseCore.api.Destination;
|
import com.onarandombox.MultiverseCore.api.Destination;
|
||||||
@ -47,6 +39,12 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jvnet.hk2.annotations.Service;
|
import org.jvnet.hk2.annotations.Service;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.lang.annotation.Annotation;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The implementation of the Multiverse-{@link MVCore}.
|
* The implementation of the Multiverse-{@link MVCore}.
|
||||||
*/
|
*/
|
||||||
@ -377,7 +375,7 @@ public class MultiverseCore extends JavaPlugin implements MVCore {
|
|||||||
* Gets the best service from this plugin that implements the given contract or has the given implementation.
|
* Gets the best service from this plugin that implements the given contract or has the given implementation.
|
||||||
*
|
*
|
||||||
* @param contractOrImpl The contract or concrete implementation to get the best instance of
|
* @param contractOrImpl The contract or concrete implementation to get the best instance of
|
||||||
* @param qualifiers The set of qualifiers that must match this service definition
|
* @param qualifiers The set of qualifiers that must match this service definition
|
||||||
* @return An instance of the contract or impl if it is a service and is already instantiated, null otherwise
|
* @return An instance of the contract or impl if it is a service and is already instantiated, null otherwise
|
||||||
* @throws MultiException if there was an error during service lookup
|
* @throws MultiException if there was an error during service lookup
|
||||||
*/
|
*/
|
||||||
@ -395,7 +393,7 @@ public class MultiverseCore extends JavaPlugin implements MVCore {
|
|||||||
* the provided qualifiers.
|
* the provided qualifiers.
|
||||||
*
|
*
|
||||||
* @param contractOrImpl The contract or concrete implementation to get the best instance of
|
* @param contractOrImpl The contract or concrete implementation to get the best instance of
|
||||||
* @param qualifiers The set of qualifiers that must match this service definition
|
* @param qualifiers The set of qualifiers that must match this service definition
|
||||||
* @return A list of services implementing this contract or concrete implementation. May not return null, but may
|
* @return A list of services implementing this contract or concrete implementation. May not return null, but may
|
||||||
* return an empty list
|
* return an empty list
|
||||||
* @throws MultiException if there was an error during service lookup
|
* @throws MultiException if there was an error during service lookup
|
||||||
@ -415,10 +413,10 @@ public class MultiverseCore extends JavaPlugin implements MVCore {
|
|||||||
/**
|
/**
|
||||||
* This is for unit testing ONLY. Do not use this constructor.
|
* This is for unit testing ONLY. Do not use this constructor.
|
||||||
*
|
*
|
||||||
* @param loader The PluginLoader to use.
|
* @param loader The PluginLoader to use.
|
||||||
* @param description The Description file to use.
|
* @param description The Description file to use.
|
||||||
* @param dataFolder The folder that other datafiles can be found in.
|
* @param dataFolder The folder that other datafiles can be found in.
|
||||||
* @param file The location of the plugin.
|
* @param file The location of the plugin.
|
||||||
*/
|
*/
|
||||||
public MultiverseCore(JavaPluginLoader loader, PluginDescriptionFile description, File dataFolder, File file) {
|
public MultiverseCore(JavaPluginLoader loader, PluginDescriptionFile description, File dataFolder, File file) {
|
||||||
super(loader, description, dataFolder, file);
|
super(loader, description, dataFolder, file);
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
package com.onarandombox.MultiverseCore.configuration.node;
|
package com.onarandombox.MultiverseCore.configuration.node;
|
||||||
|
|
||||||
|
import io.github.townyadvanced.commentedconfiguration.setting.CommentedNode;
|
||||||
|
import io.vavr.control.Option;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import io.github.townyadvanced.commentedconfiguration.setting.CommentedNode;
|
|
||||||
import io.vavr.control.Option;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A collection of {@link CommentedNode}s, with mappings to nodes by name.
|
* A collection of {@link CommentedNode}s, with mappings to nodes by name.
|
||||||
*/
|
*/
|
||||||
@ -52,7 +52,7 @@ public class NodeGroup implements Collection<Node> {
|
|||||||
/**
|
/**
|
||||||
* Gets the node with the given name.
|
* Gets the node with the given name.
|
||||||
*
|
*
|
||||||
* @param name The name of the node to get.
|
* @param name The name of the node to get.
|
||||||
* @return The node with the given name, or {@link Option.None} if no node with the given name exists.
|
* @return The node with the given name, or {@link Option.None} if no node with the given name exists.
|
||||||
*/
|
*/
|
||||||
public Option<Node> findNode(String name) {
|
public Option<Node> findNode(String name) {
|
||||||
|
@ -7,29 +7,12 @@
|
|||||||
|
|
||||||
package com.onarandombox.MultiverseCore.world;
|
package com.onarandombox.MultiverseCore.world;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FilenameFilter;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.Stack;
|
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import com.dumptruckman.minecraft.util.Logging;
|
import com.dumptruckman.minecraft.util.Logging;
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
import com.onarandombox.MultiverseCore.api.BlockSafety;
|
import com.onarandombox.MultiverseCore.api.BlockSafety;
|
||||||
import com.onarandombox.MultiverseCore.api.LocationManipulation;
|
import com.onarandombox.MultiverseCore.api.LocationManipulation;
|
||||||
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
|
||||||
import com.onarandombox.MultiverseCore.api.MVWorld;
|
import com.onarandombox.MultiverseCore.api.MVWorld;
|
||||||
|
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
||||||
import com.onarandombox.MultiverseCore.api.SafeTTeleporter;
|
import com.onarandombox.MultiverseCore.api.SafeTTeleporter;
|
||||||
import com.onarandombox.MultiverseCore.api.WorldPurger;
|
import com.onarandombox.MultiverseCore.api.WorldPurger;
|
||||||
import com.onarandombox.MultiverseCore.config.MVCoreConfig;
|
import com.onarandombox.MultiverseCore.config.MVCoreConfig;
|
||||||
@ -56,6 +39,22 @@ import org.bukkit.permissions.PermissionDefault;
|
|||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.jvnet.hk2.annotations.Service;
|
import org.jvnet.hk2.annotations.Service;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.Stack;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public facing API to add/remove Multiverse worlds.
|
* Public facing API to add/remove Multiverse worlds.
|
||||||
*/
|
*/
|
||||||
@ -179,7 +178,7 @@ public class SimpleMVWorldManager implements MVWorldManager {
|
|||||||
}
|
}
|
||||||
this.server.getWorld(oldName).setAutoSave(false);
|
this.server.getWorld(oldName).setAutoSave(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grab a bit of metadata from the old world.
|
// Grab a bit of metadata from the old world.
|
||||||
MVWorld oldWorld = getMVWorld(oldName);
|
MVWorld oldWorld = getMVWorld(oldName);
|
||||||
|
|
||||||
@ -207,7 +206,7 @@ public class SimpleMVWorldManager implements MVWorldManager {
|
|||||||
if (oldWorld != null && wasAutoSave) {
|
if (oldWorld != null && wasAutoSave) {
|
||||||
oldWorld.getCBWorld().setAutoSave(true);
|
oldWorld.getCBWorld().setAutoSave(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newWorldFile.exists()) {
|
if (newWorldFile.exists()) {
|
||||||
Logging.fine("Succeeded at copying files");
|
Logging.fine("Succeeded at copying files");
|
||||||
|
|
||||||
@ -227,8 +226,8 @@ public class SimpleMVWorldManager implements MVWorldManager {
|
|||||||
|
|
||||||
// actually load the world
|
// actually load the world
|
||||||
if (doLoad(newName)) {
|
if (doLoad(newName)) {
|
||||||
Logging.fine("Succeeded at loading cloned world '" + newName + "'");
|
Logging.fine("Succeeded at loading cloned world '" + newName + "'");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
Logging.severe("Failed to load the cloned world '" + newName + "'");
|
Logging.severe("Failed to load the cloned world '" + newName + "'");
|
||||||
return false;
|
return false;
|
||||||
@ -408,7 +407,7 @@ public class SimpleMVWorldManager implements MVWorldManager {
|
|||||||
this.worlds.remove(name);
|
this.worlds.remove(name);
|
||||||
Logging.info("World '%s' was unloaded from Bukkit.", name);
|
Logging.info("World '%s' was unloaded from Bukkit.", name);
|
||||||
return true;
|
return true;
|
||||||
} else if (!unloadBukkit){
|
} else if (!unloadBukkit) {
|
||||||
this.worlds.remove(name);
|
this.worlds.remove(name);
|
||||||
Logging.info("World '%s' was unloaded from Multiverse.", name);
|
Logging.info("World '%s' was unloaded from Multiverse.", name);
|
||||||
return true;
|
return true;
|
||||||
@ -992,6 +991,7 @@ public class SimpleMVWorldManager implements MVWorldManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the {@link FileConfiguration} that this {@link SimpleMVWorldManager} is using.
|
* Gets the {@link FileConfiguration} that this {@link SimpleMVWorldManager} is using.
|
||||||
|
*
|
||||||
* @return The {@link FileConfiguration} that this {@link SimpleMVWorldManager} is using.
|
* @return The {@link FileConfiguration} that this {@link SimpleMVWorldManager} is using.
|
||||||
*/
|
*/
|
||||||
public FileConfiguration getConfigWorlds() {
|
public FileConfiguration getConfigWorlds() {
|
||||||
@ -1001,24 +1001,24 @@ public class SimpleMVWorldManager implements MVWorldManager {
|
|||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean hasUnloadedWorld(String name, boolean includeLoaded) {
|
public boolean hasUnloadedWorld(String name, boolean includeLoaded) {
|
||||||
if (getMVWorld(name) != null) {
|
if (getMVWorld(name) != null) {
|
||||||
return includeLoaded;
|
return includeLoaded;
|
||||||
}
|
}
|
||||||
for (Map.Entry<String, WorldProperties> entry : this.worldsFromTheConfig.entrySet()) {
|
for (Map.Entry<String, WorldProperties> entry : this.worldsFromTheConfig.entrySet()) {
|
||||||
if (name.equals(entry.getKey()) || name.equals(entry.getValue().getAlias())) {
|
if (name.equals(entry.getKey()) || name.equals(entry.getValue().getAlias())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Collection<String> getPotentialWorlds() {
|
public Collection<String> getPotentialWorlds() {
|
||||||
File worldContainer = this.server.getWorldContainer();
|
File worldContainer = this.server.getWorldContainer();
|
||||||
if (worldContainer == null) {
|
if (worldContainer == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
Loading…
Reference in New Issue
Block a user