Skip to content

Commit 87bf535

Browse files
Merge pull request #12 from AvionBlock/dev/v2
Full rewrite
2 parents 47f19cb + e380169 commit 87bf535

120 files changed

Lines changed: 7273 additions & 3722 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build.yml

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,50 @@
1-
name: Build and Archive
1+
name: Build
22

33
on:
44
push:
55
branches:
66
- main
7+
pull_request:
8+
9+
concurrency:
10+
group: build-${{ github.ref }}
11+
cancel-in-progress: true
712

813
jobs:
914
build:
1015
runs-on: ubuntu-latest
1116

1217
steps:
1318
- name: Checkout repository
14-
uses: actions/checkout@v2
19+
uses: actions/checkout@v4
1520

1621
- name: Set up JDK
17-
uses: actions/setup-java@v2
22+
uses: actions/setup-java@v4
1823
with:
19-
distribution: "adopt"
20-
java-version: "17"
24+
distribution: temurin
25+
java-version: "21"
26+
27+
- name: Set up Gradle
28+
uses: gradle/actions/setup-gradle@v4
2129

2230
- name: Make gradlew executable
2331
run: chmod +x gradlew
2432

2533
- name: Build with Gradle
26-
run: ./gradlew build
34+
run: ./gradlew clean build --no-daemon
35+
36+
- name: Collect release artifacts
37+
run: |
38+
mkdir -p dist
39+
find modules -path "*/build/libs/*.jar" \
40+
! -name "*-sources.jar" \
41+
! -name "*-thin.jar" \
42+
! -path "*/core/build/libs/*" \
43+
-exec cp {} dist/ \;
2744
2845
- name: Archive artifacts
2946
uses: actions/upload-artifact@v4
3047
with:
31-
name: geyser-voice-artifact
32-
path: build/libs/
48+
name: geyservoice-build
49+
path: dist/*.jar
50+
if-no-files-found: error

.github/workflows/release.yml

Lines changed: 51 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,56 @@ on:
99
status:
1010
required: true
1111
description: "Status (beta, stable)"
12+
publish_modrinth:
13+
required: true
14+
description: "Publish to Modrinth"
15+
default: "true"
1216

1317
env:
1418
VERSION: ${{ github.event.inputs.tag }}-${{ github.event.inputs.status }}
1519

20+
concurrency:
21+
group: release-${{ github.event.inputs.tag }}
22+
cancel-in-progress: false
23+
1624
jobs:
1725
build:
1826
runs-on: ubuntu-latest
1927

2028
steps:
2129
- name: Checkout repository
22-
uses: actions/checkout@v2
30+
uses: actions/checkout@v4
2331

2432
- name: Set up JDK
25-
uses: actions/setup-java@v2
33+
uses: actions/setup-java@v4
2634
with:
27-
distribution: "adopt"
28-
java-version: "17"
35+
distribution: temurin
36+
java-version: "21"
37+
38+
- name: Set up Gradle
39+
uses: gradle/actions/setup-gradle@v4
2940

3041
- name: Make gradlew executable
3142
run: chmod +x gradlew
3243

3344
- name: Build with Gradle
34-
run: ./gradlew build -PVERSION="${{ env.VERSION }}"
45+
run: ./gradlew clean build -PVERSION="${{ env.VERSION }}" --no-daemon
46+
47+
- name: Collect release artifacts
48+
run: |
49+
mkdir -p release-artifacts
50+
find modules -path "*/build/libs/*.jar" \
51+
! -name "*-sources.jar" \
52+
! -name "*-thin.jar" \
53+
! -path "*/core/build/libs/*" \
54+
-exec cp {} release-artifacts/ \;
3555
3656
- name: Archive artifacts
3757
uses: actions/upload-artifact@v4
3858
with:
39-
name: geyser-voice-artifact
40-
path: build/libs/
59+
name: geyservoice-release
60+
path: release-artifacts/*.jar
61+
if-no-files-found: error
4162

4263
publish_release:
4364
name: Publish release
@@ -49,47 +70,47 @@ jobs:
4970

5071
steps:
5172
- name: Checkout repository
52-
uses: actions/checkout@v2
73+
uses: actions/checkout@v4
5374

5475
- name: Download artifacts
5576
uses: actions/download-artifact@v4
5677
with:
57-
name: geyser-voice-artifact
58-
path: build/libs/
78+
name: geyservoice-release
79+
path: release-artifacts
5980

6081
- name: Create release
6182
if: github.event.inputs.status == 'stable'
62-
uses: ncipollo/release-action@v1.13.0
83+
uses: ncipollo/release-action@v1.14.0
6384
with:
6485
prerelease: false
6586
tag: ${{ github.event.inputs.tag }}
66-
artifacts: |
67-
build/libs/GeyserVoice-*.jar
68-
env:
69-
GITHUB_REPOSITORY: AvionBlock/GeyserVoice
87+
artifacts: release-artifacts/*.jar
88+
artifactErrorsFailBuild: true
89+
allowUpdates: true
90+
replacesArtifacts: true
7091

7192
- name: Create pre-release
7293
if: github.event.inputs.status != 'stable'
73-
uses: ncipollo/release-action@v1.13.0
94+
uses: ncipollo/release-action@v1.14.0
7495
with:
7596
prerelease: true
7697
tag: ${{ github.event.inputs.tag }}
77-
artifacts: |
78-
build/libs/GeyserVoice-*.jar
79-
env:
80-
GITHUB_REPOSITORY: AvionBlock/GeyserVoice
98+
artifacts: release-artifacts/*.jar
99+
artifactErrorsFailBuild: true
100+
allowUpdates: true
101+
replacesArtifacts: true
81102

82103
- name: Create Modrinth release
104+
if: github.event.inputs.publish_modrinth == 'true'
83105
uses: dsx137/modrinth-release-action@main
84106
env:
85-
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
107+
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }}
86108
with:
87-
name: GeyserVoice ${{ github.event.inputs.tag }}
88-
project_id: WtPu56Wa
89-
loaders: paper, spigot, bukkit, purpur, velocity, bungeecord
90-
game_versions: 1.20.2:1.21.10
91-
version_number: ${{ github.event.inputs.tag }}
92-
featured: ${{ github.event.inputs.status == 'stable' }}
93-
version_type: ${{ github.event.inputs.status == 'stable' && 'release' || 'beta' }}
94-
files: |
95-
./build/libs/GeyserVoice-*.jar
109+
name: GeyserVoice ${{ github.event.inputs.tag }}
110+
project_id: WtPu56Wa
111+
loaders: paper, purpur, velocity, bungeecord
112+
game_versions: 1.21.11:26.1
113+
version_number: ${{ github.event.inputs.tag }}
114+
featured: ${{ github.event.inputs.status == 'stable' }}
115+
version_type: ${{ github.event.inputs.status == 'stable' && 'release' || 'beta' }}
116+
files: release-artifacts/*.jar

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,4 +236,4 @@ nbdist/
236236
# End of https://www.gitignore.io/api/git,java,maven,eclipse,netbeans,jetbrains+all,visualstudiocode
237237

238238
### Gradle ###
239-
.gradle
239+
.gradle*

README.md

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
## GeyserVoice - Minecraft Proximity Voice Chat Plugin
22

3-
GeyserVoice is a Java plugin designed to enhance the multiplayer gaming experience on Minecraft servers by integrating the [VoiceCraft](https://github.com/SineVector241/VoiceCraft-MCBE_Proximity_Chat/) Proximity Chat application. The plugin facilitates cross-platform communication, allowing players on both Java and Bedrock editions to seamlessly engage in proximity-based voice conversations.
3+
GeyserVoice is a Java-side bridge for VoiceCraft built around `McApi TCP`. It now ships dedicated runtimes for `Paper`, `Velocity`, and `BungeeCord`, with direct Paper mode and proxy-relay mode for multi-server networks.
44

55
### Features
66

7-
- Cross-Platform Communication:
8-
GeyserVoice bridges the gap between Minecraft Java Edition and Bedrock Edition, enabling players on different platforms to communicate through the VoiceCraft Proximity Chat system.
9-
10-
- Immersive Proximity Chat:
11-
Experience a more immersive and realistic gameplay environment with proximity-based voice chat. Engage in conversations with nearby players, enhancing teamwork and coordination.
7+
- `McApi TCP` transport only for VoiceCraft communication
8+
- managed VoiceCraft runtime download/startup on direct Paper servers
9+
- proxy relay mode for `Velocity` and `BungeeCord`
10+
- server-side positioning updates from each Paper backend through the proxy
1211

1312
### How It Works
1413

15-
Installation: Simply install the GeyserVoice plugin on your Minecraft Java server. Make sure to follow the setup instructions to integrate it seamlessly with the VoiceCraft Proximity Chat application.
14+
Direct Paper mode:
15+
- install GeyserVoice on the Paper server
16+
- let the plugin download/start VoiceCraft locally if desired
17+
- the Paper plugin connects to VoiceCraft over `McApi TCP`
18+
19+
Proxy mode:
20+
- install GeyserVoice on each Paper backend and on the proxy
21+
- enable `config.server-behind-proxy: true` on the Paper backends
22+
- the proxy plugin owns the VoiceCraft connection
23+
- backend Paper servers stream player snapshots to the proxy through plugin messages
1624

1725
### Getting Started
1826

@@ -26,6 +34,8 @@ We welcome contributions from the community to improve and expand the functional
2634

2735
GeyserVoice is licensed under the MIT License. Feel free to use, modify, and distribute the plugin in accordance with the terms of the license.
2836

29-
### Proxy server support
37+
### Status
3038

31-
GeyserVoice also supports usage with Velocity and Bungeecord networks. Just install the .jar on your proxy server and on your paper server(s). Be sure to edit the config of the paper server(s) to set `server-behind-proxy` to `true` and then reload using `voice reload`. P.s. You don't need to set the server address, port and keys on the paper server(s), this is only needed on the proxy server.
39+
Current supported runtime paths:
40+
- `Paper -> McApi TCP -> VoiceCraft`
41+
- `Paper -> Proxy relay -> McApi TCP -> VoiceCraft`

0 commit comments

Comments
 (0)