Repository files navigation

BlockParty 3.x

BuildGitHub licenseGitHub release

BlockParty 3 is the modernized BlockParty line for current Minecraft servers, built on a Java 21 baseline with a Paper-first compatibility target.

Support policy

  • BlockParty 3.x supports Minecraft 1.20.6+ and 1.21.x
  • Java 21 is required to build and run this line
  • Legacy support for 1.8 through 1.19.x belongs on the 2.x line

See COMPATIBILITY.md for the runtime matrix and release split.

Installation

Download the jar file and place it into your plugins folder. A new folder is created (named BlockParty) after the server is started. A few file and sub-folders should be located there.

Building from source

Requires JDK 21 and Maven.

mvn clean verify

The distributable plugin jar is produced at target/BlockParty-<version>.jar.

Development

Git hooks are versioned in .githooks/ and install themselves on your first Maven build (mvn sets core.hooksPath via the git-build-hook plugin). To enable them without building, run once:

git config core.hooksPath .githooks
HookWhenWhat it does
pre-commitgit commitBlocks conflict markers, whitespace errors, and >5 MiB files (instant).
commit-msggit commitEnforces Conventional Commits.
pre-pushgit pushRuns mvn clean verify so red never reaches the remote.

The commit-msg rule is defined once in scripts/lint-commit-msg.sh and reused by CI's commit-lint job, so local and CI checks can never drift apart. Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, security.

Bypass a hook only when you must: git commit --no-verify, git push --no-verify (or SKIP_HOOKS=1 git push). CI re-checks everything regardless, and the build status check must be green before a PR can merge.

Configuration

config.yml

# BlockParty configuration# Locale file located in plugins/BlockParty/Locale/*.ymlLocaleFileName: locale_en.yml# Saves all data on plugin shutdown. Not necessarySaveOnDisable: false# Disables listed sub commands, example:# DisabledSubCommands: ["help", "reload", "join"]DisabledSubCommands: []# Enables command shortcuts# Command shortcuts: /start <arenaName> - /stopEnableCommandShortcuts: falseChat:
# Chat format when in arena# Placeholders:# %ARENA%: Arena player is in# %NAME%: Player name without formatting (e.g. rank, colors)# %DISPLAY%: Name with formatting# %MESSAGE%: Message sentArenaChatFormat: "&8[&7%ARENA%&8] &7%DISPLAY% &8> &r%MESSAGE%"# Separates normal from arena chat# Useful for non-bungee serversArenaPrivateChat: True# How to use join signs:# Line 1: [BlockParty]# Line 2: Arena name (case sensitive)JoinSigns:
# Enable join signsEnabled: True# Update signs every x millisecondsUpdateMillis: 1000Lines:
Disabled:
1: "&4[Off-%ARENA%]"2: "Not available"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&4• Stopped •"Lobby:
1: "&5[Join-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"LobbyFull:
1: "&4[Full-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"Ingame:
1: "&8[Ingame-%ARENA%]"2: "%ALIVE% players alive"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&8• Ingame •"Ending:
2: "&8&lLobby"3: "&8&lrestarting..."BungeeCord:
# When set to "True", players will automatically connect to DefaultArena (see below)# and will be kicked from the server when leaving the arena.# This is mostly useful for BungeeCord serversEnabled: False# Arena players will connect to when BungeeCord is enabled. Please note the spelling and case sensitivityDefaultArena: ArenaAudio:
# Enables external web audio playback providersEnabled: False# Available providers: "openaudiomc", "central_hub"Provider: central_hub# Public base URL where your audio files are hostedCdnBaseUrl: "https://cdn.example.com/blockparty/"Database:
# Use "MySQL" to enable MySQL, "SQL" to store data locallyMethod: SQL# Tables will have this prefix in front of the nameTablePrefix: "bp_"SQLOptions:
# File to save database to when using SQLFileName: "database.db"# MySQL credentialsMySQLOptions:
Host: localhostPort: 3306Database: databaseUsername: usernamePassword: password# End of configuration

Arena setup

  • Create an arena
    • Use the /bp create <arenaName>
    • Replace <arenaName> with the name of your arena
  • Set the lobby spawn
    • Place yourself where you want to have your lobby spawn. Use /bp setspawn <arenaName> lobby
    • Players get teleported to this position when they enter the lobby
  • Set the boundaries of the arena floor
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
    • Finally use /bp setfloor <arenaName> to set the floor boundaries for you arena
  • Set the game spawn
    • Place yourself where you want to have your game spawn. Use /bp setspawn <arenaName> game
    • Players get teleported to this position when the game starts
  • Enable your arena
    • To be able to play in an arena you need to enable it first. Use /bp enable <arenaName>

Thats it for the arena setup. To customize your arena, use ingame commands or head to the <arenaName>.yml located in your plugins/BlockParty/Arenas/ folder. Here you can find an example arena config:

Example arena config
Settings:
DistanceToOutArea: 5TimeToSearch: 8LevelAmount: 15MinPlayers: 2MaxPlayers: 20LobbyCountdown: 30TimeReductionPerLevel: 0.5TimeModifier: 0.1Enabled: trueEnableParticles: trueEnableLightnings: trueAutoRestart: falseAutoKick: falseEnableBoosts: trueEnableFallingBlocks: falseUseAutoGeneratedFloors: trueUsePatternFloors: trueEnableActionbarInfo: trueUseNoteBlockSongs: falseUseWebSongs: trueEnableFireworksOnWin: trueTimerResetOnPlayerJoin: falseAllowJoinDuringGame: trueEnableScoreboard: falseName: exampleSongManager:
- examplesong.mp3Signs: []LobbySpawn:
World: world1.13X: 119.96556415260845Y: 64.0Z: 26.73431969945681Yaw: -57.567917Pitch: 35.83339GameSpawn:
World: world1.13X: 126.06898491630506Y: 63.0Z: 30.055373974750374Yaw: -57.567917Pitch: 35.83339Floor:
A:
World: world1.13X: 124.0Y: 62.0Z: 28.0Yaw: 0.0Pitch: 0.0B:
World: world1.13X: 127.0Y: 62.0Z: 31.0Yaw: 0.0Pitch: 0.0Patterns:
- exampleFloorWidth: 4.0Length: 4.0

Floor setup

In BlockParty we are using our own format to save block data. We are making use of the Run-length encoding to keep the file as small as possible. You can create your own floors, save and use them.

Creating your own floor

  • Build a two dimensional pattern using terracotta, wool and/or glass (all blocks supported in > 1.13)
  • Set the boundaries of pattern
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
  • Save your pattern
    • Finally use /bp save <patternName> to save your pattern to the /plugins/BlockParty/Floors/ folder

Add a floor to your arena

  • Test your pattern
    • This is optional but you may want to test your floor
    • Use /bp placepattern <patternName> to test it
  • Activate UsePatternFloors
    • Make sure you set UsePatternFloors: true in your arena config
    • You can also add patterns in your arena config
    • Reload with /bp reload if you have just changed a value
  • Selecting an initial pattern
    • If you name a pattern start it will load first
  • Selecting the game over pattern
    • If you name a pattern end it will load when the game is over

Remove a pattern

  • List the active patterns
    • Use /bp listpatterns <arenaName> to list all active patterns for this arena
  • Remove a paattern
    • Use /bp removepattern <arenaName> <patternName> to list all active patterns for this arena

Audio setup

Music playback is handled by an external audio provider. Two providers are supported:

  • OpenAudioMc — requires the OpenAudioMc plugin on the same server. Audio files are served from your CdnBaseUrl.
  • Central Hub (Aura) — connects to a hosted Aura instance. Configure ApiBaseUrl and FrontendBaseUrl; a ServerKey is generated automatically on first startup. Both URLs must use https://.

Enable and choose a provider in the Audio section of config.yml, then:

  • Add songs to your arena
    • Ingame: /bp addsong <arenaName> <trackName> (with the Central Hub provider, track names are validated against the synced catalog — use /bp songs to browse it)
    • Or add them to the SongManager list in your arena config
  • Enable the use of web songs
    • Make sure UseWebSongs: true is set in your arena config

Sign setup

You can also use signs to let players join to the arena. Your sign should look something like this:

LineText
1[BlockParty]
2<arenaName>
3
4

Customize your sign messages

Head over to your config.yml in the plugins/BlockParty/ folder. You can edit the used text that is displayed on the sign right there.

Permissions

  • blockparty.admin.*
    • This provides access to all BlockParty commands (/bp admin)
  • blockparty.user.*
    • This provides access to basic BlockParty commands (/bp help)

About

BlockParty Plugin for Spigot/Bukkit servers

Resources

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

BlockParty 3.x

BuildGitHub licenseGitHub release

BlockParty 3 is the modernized BlockParty line for current Minecraft servers, built on a Java 21 baseline with a Paper-first compatibility target.

Support policy

  • BlockParty 3.x supports Minecraft 1.20.6+ and 1.21.x
  • Java 21 is required to build and run this line
  • Legacy support for 1.8 through 1.19.x belongs on the 2.x line

See COMPATIBILITY.md for the runtime matrix and release split.

Installation

Download the jar file and place it into your plugins folder. A new folder is created (named BlockParty) after the server is started. A few file and sub-folders should be located there.

Building from source

Requires JDK 21 and Maven.

mvn clean verify

The distributable plugin jar is produced at target/BlockParty-<version>.jar.

Development

Git hooks are versioned in .githooks/ and install themselves on your first Maven build (mvn sets core.hooksPath via the git-build-hook plugin). To enable them without building, run once:

git config core.hooksPath .githooks
HookWhenWhat it does
pre-commitgit commitBlocks conflict markers, whitespace errors, and >5 MiB files (instant).
commit-msggit commitEnforces Conventional Commits.
pre-pushgit pushRuns mvn clean verify so red never reaches the remote.

The commit-msg rule is defined once in scripts/lint-commit-msg.sh and reused by CI's commit-lint job, so local and CI checks can never drift apart. Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, security.

Bypass a hook only when you must: git commit --no-verify, git push --no-verify (or SKIP_HOOKS=1 git push). CI re-checks everything regardless, and the build status check must be green before a PR can merge.

Configuration

config.yml

# BlockParty configuration# Locale file located in plugins/BlockParty/Locale/*.ymlLocaleFileName: locale_en.yml# Saves all data on plugin shutdown. Not necessarySaveOnDisable: false# Disables listed sub commands, example:# DisabledSubCommands: ["help", "reload", "join"]DisabledSubCommands: []# Enables command shortcuts# Command shortcuts: /start <arenaName> - /stopEnableCommandShortcuts: falseChat:
# Chat format when in arena# Placeholders:# %ARENA%: Arena player is in# %NAME%: Player name without formatting (e.g. rank, colors)# %DISPLAY%: Name with formatting# %MESSAGE%: Message sentArenaChatFormat: "&8[&7%ARENA%&8] &7%DISPLAY% &8> &r%MESSAGE%"# Separates normal from arena chat# Useful for non-bungee serversArenaPrivateChat: True# How to use join signs:# Line 1: [BlockParty]# Line 2: Arena name (case sensitive)JoinSigns:
# Enable join signsEnabled: True# Update signs every x millisecondsUpdateMillis: 1000Lines:
Disabled:
1: "&4[Off-%ARENA%]"2: "Not available"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&4• Stopped •"Lobby:
1: "&5[Join-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"LobbyFull:
1: "&4[Full-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"Ingame:
1: "&8[Ingame-%ARENA%]"2: "%ALIVE% players alive"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&8• Ingame •"Ending:
2: "&8&lLobby"3: "&8&lrestarting..."BungeeCord:
# When set to "True", players will automatically connect to DefaultArena (see below)# and will be kicked from the server when leaving the arena.# This is mostly useful for BungeeCord serversEnabled: False# Arena players will connect to when BungeeCord is enabled. Please note the spelling and case sensitivityDefaultArena: ArenaAudio:
# Enables external web audio playback providersEnabled: False# Available providers: "openaudiomc", "central_hub"Provider: central_hub# Public base URL where your audio files are hostedCdnBaseUrl: "https://cdn.example.com/blockparty/"Database:
# Use "MySQL" to enable MySQL, "SQL" to store data locallyMethod: SQL# Tables will have this prefix in front of the nameTablePrefix: "bp_"SQLOptions:
# File to save database to when using SQLFileName: "database.db"# MySQL credentialsMySQLOptions:
Host: localhostPort: 3306Database: databaseUsername: usernamePassword: password# End of configuration

Arena setup

  • Create an arena
    • Use the /bp create <arenaName>
    • Replace <arenaName> with the name of your arena
  • Set the lobby spawn
    • Place yourself where you want to have your lobby spawn. Use /bp setspawn <arenaName> lobby
    • Players get teleported to this position when they enter the lobby
  • Set the boundaries of the arena floor
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
    • Finally use /bp setfloor <arenaName> to set the floor boundaries for you arena
  • Set the game spawn
    • Place yourself where you want to have your game spawn. Use /bp setspawn <arenaName> game
    • Players get teleported to this position when the game starts
  • Enable your arena
    • To be able to play in an arena you need to enable it first. Use /bp enable <arenaName>

Thats it for the arena setup. To customize your arena, use ingame commands or head to the <arenaName>.yml located in your plugins/BlockParty/Arenas/ folder. Here you can find an example arena config:

Example arena config
Settings:
DistanceToOutArea: 5TimeToSearch: 8LevelAmount: 15MinPlayers: 2MaxPlayers: 20LobbyCountdown: 30TimeReductionPerLevel: 0.5TimeModifier: 0.1Enabled: trueEnableParticles: trueEnableLightnings: trueAutoRestart: falseAutoKick: falseEnableBoosts: trueEnableFallingBlocks: falseUseAutoGeneratedFloors: trueUsePatternFloors: trueEnableActionbarInfo: trueUseNoteBlockSongs: falseUseWebSongs: trueEnableFireworksOnWin: trueTimerResetOnPlayerJoin: falseAllowJoinDuringGame: trueEnableScoreboard: falseName: exampleSongManager:
- examplesong.mp3Signs: []LobbySpawn:
World: world1.13X: 119.96556415260845Y: 64.0Z: 26.73431969945681Yaw: -57.567917Pitch: 35.83339GameSpawn:
World: world1.13X: 126.06898491630506Y: 63.0Z: 30.055373974750374Yaw: -57.567917Pitch: 35.83339Floor:
A:
World: world1.13X: 124.0Y: 62.0Z: 28.0Yaw: 0.0Pitch: 0.0B:
World: world1.13X: 127.0Y: 62.0Z: 31.0Yaw: 0.0Pitch: 0.0Patterns:
- exampleFloorWidth: 4.0Length: 4.0

Floor setup

In BlockParty we are using our own format to save block data. We are making use of the Run-length encoding to keep the file as small as possible. You can create your own floors, save and use them.

Creating your own floor

  • Build a two dimensional pattern using terracotta, wool and/or glass (all blocks supported in > 1.13)
  • Set the boundaries of pattern
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
  • Save your pattern
    • Finally use /bp save <patternName> to save your pattern to the /plugins/BlockParty/Floors/ folder

Add a floor to your arena

  • Test your pattern
    • This is optional but you may want to test your floor
    • Use /bp placepattern <patternName> to test it
  • Activate UsePatternFloors
    • Make sure you set UsePatternFloors: true in your arena config
    • You can also add patterns in your arena config
    • Reload with /bp reload if you have just changed a value
  • Selecting an initial pattern
    • If you name a pattern start it will load first
  • Selecting the game over pattern
    • If you name a pattern end it will load when the game is over

Remove a pattern

  • List the active patterns
    • Use /bp listpatterns <arenaName> to list all active patterns for this arena
  • Remove a paattern
    • Use /bp removepattern <arenaName> <patternName> to list all active patterns for this arena

Audio setup

Music playback is handled by an external audio provider. Two providers are supported:

  • OpenAudioMc — requires the OpenAudioMc plugin on the same server. Audio files are served from your CdnBaseUrl.
  • Central Hub (Aura) — connects to a hosted Aura instance. Configure ApiBaseUrl and FrontendBaseUrl; a ServerKey is generated automatically on first startup. Both URLs must use https://.

Enable and choose a provider in the Audio section of config.yml, then:

  • Add songs to your arena
    • Ingame: /bp addsong <arenaName> <trackName> (with the Central Hub provider, track names are validated against the synced catalog — use /bp songs to browse it)
    • Or add them to the SongManager list in your arena config
  • Enable the use of web songs
    • Make sure UseWebSongs: true is set in your arena config

Sign setup

You can also use signs to let players join to the arena. Your sign should look something like this:

LineText
1[BlockParty]
2<arenaName>
3
4

Customize your sign messages

Head over to your config.yml in the plugins/BlockParty/ folder. You can edit the used text that is displayed on the sign right there.

Permissions

  • blockparty.admin.*
    • This provides access to all BlockParty commands (/bp admin)
  • blockparty.user.*
    • This provides access to basic BlockParty commands (/bp help)

About

BlockParty Plugin for Spigot/Bukkit servers

Resources

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

BlockParty 3.x

BuildGitHub licenseGitHub release

BlockParty 3 is the modernized BlockParty line for current Minecraft servers, built on a Java 21 baseline with a Paper-first compatibility target.

Support policy

  • BlockParty 3.x supports Minecraft 1.20.6+ and 1.21.x
  • Java 21 is required to build and run this line
  • Legacy support for 1.8 through 1.19.x belongs on the 2.x line

See COMPATIBILITY.md for the runtime matrix and release split.

Installation

Download the jar file and place it into your plugins folder. A new folder is created (named BlockParty) after the server is started. A few file and sub-folders should be located there.

Building from source

Requires JDK 21 and Maven.

mvn clean verify

The distributable plugin jar is produced at target/BlockParty-<version>.jar.

Development

Git hooks are versioned in .githooks/ and install themselves on your first Maven build (mvn sets core.hooksPath via the git-build-hook plugin). To enable them without building, run once:

git config core.hooksPath .githooks
HookWhenWhat it does
pre-commitgit commitBlocks conflict markers, whitespace errors, and >5 MiB files (instant).
commit-msggit commitEnforces Conventional Commits.
pre-pushgit pushRuns mvn clean verify so red never reaches the remote.

The commit-msg rule is defined once in scripts/lint-commit-msg.sh and reused by CI's commit-lint job, so local and CI checks can never drift apart. Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, security.

Bypass a hook only when you must: git commit --no-verify, git push --no-verify (or SKIP_HOOKS=1 git push). CI re-checks everything regardless, and the build status check must be green before a PR can merge.

Configuration

config.yml

# BlockParty configuration# Locale file located in plugins/BlockParty/Locale/*.ymlLocaleFileName: locale_en.yml# Saves all data on plugin shutdown. Not necessarySaveOnDisable: false# Disables listed sub commands, example:# DisabledSubCommands: ["help", "reload", "join"]DisabledSubCommands: []# Enables command shortcuts# Command shortcuts: /start <arenaName> - /stopEnableCommandShortcuts: falseChat:
# Chat format when in arena# Placeholders:# %ARENA%: Arena player is in# %NAME%: Player name without formatting (e.g. rank, colors)# %DISPLAY%: Name with formatting# %MESSAGE%: Message sentArenaChatFormat: "&8[&7%ARENA%&8] &7%DISPLAY% &8> &r%MESSAGE%"# Separates normal from arena chat# Useful for non-bungee serversArenaPrivateChat: True# How to use join signs:# Line 1: [BlockParty]# Line 2: Arena name (case sensitive)JoinSigns:
# Enable join signsEnabled: True# Update signs every x millisecondsUpdateMillis: 1000Lines:
Disabled:
1: "&4[Off-%ARENA%]"2: "Not available"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&4• Stopped •"Lobby:
1: "&5[Join-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"LobbyFull:
1: "&4[Full-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"Ingame:
1: "&8[Ingame-%ARENA%]"2: "%ALIVE% players alive"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&8• Ingame •"Ending:
2: "&8&lLobby"3: "&8&lrestarting..."BungeeCord:
# When set to "True", players will automatically connect to DefaultArena (see below)# and will be kicked from the server when leaving the arena.# This is mostly useful for BungeeCord serversEnabled: False# Arena players will connect to when BungeeCord is enabled. Please note the spelling and case sensitivityDefaultArena: ArenaAudio:
# Enables external web audio playback providersEnabled: False# Available providers: "openaudiomc", "central_hub"Provider: central_hub# Public base URL where your audio files are hostedCdnBaseUrl: "https://cdn.example.com/blockparty/"Database:
# Use "MySQL" to enable MySQL, "SQL" to store data locallyMethod: SQL# Tables will have this prefix in front of the nameTablePrefix: "bp_"SQLOptions:
# File to save database to when using SQLFileName: "database.db"# MySQL credentialsMySQLOptions:
Host: localhostPort: 3306Database: databaseUsername: usernamePassword: password# End of configuration

Arena setup

  • Create an arena
    • Use the /bp create <arenaName>
    • Replace <arenaName> with the name of your arena
  • Set the lobby spawn
    • Place yourself where you want to have your lobby spawn. Use /bp setspawn <arenaName> lobby
    • Players get teleported to this position when they enter the lobby
  • Set the boundaries of the arena floor
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
    • Finally use /bp setfloor <arenaName> to set the floor boundaries for you arena
  • Set the game spawn
    • Place yourself where you want to have your game spawn. Use /bp setspawn <arenaName> game
    • Players get teleported to this position when the game starts
  • Enable your arena
    • To be able to play in an arena you need to enable it first. Use /bp enable <arenaName>

Thats it for the arena setup. To customize your arena, use ingame commands or head to the <arenaName>.yml located in your plugins/BlockParty/Arenas/ folder. Here you can find an example arena config:

Example arena config
Settings:
DistanceToOutArea: 5TimeToSearch: 8LevelAmount: 15MinPlayers: 2MaxPlayers: 20LobbyCountdown: 30TimeReductionPerLevel: 0.5TimeModifier: 0.1Enabled: trueEnableParticles: trueEnableLightnings: trueAutoRestart: falseAutoKick: falseEnableBoosts: trueEnableFallingBlocks: falseUseAutoGeneratedFloors: trueUsePatternFloors: trueEnableActionbarInfo: trueUseNoteBlockSongs: falseUseWebSongs: trueEnableFireworksOnWin: trueTimerResetOnPlayerJoin: falseAllowJoinDuringGame: trueEnableScoreboard: falseName: exampleSongManager:
- examplesong.mp3Signs: []LobbySpawn:
World: world1.13X: 119.96556415260845Y: 64.0Z: 26.73431969945681Yaw: -57.567917Pitch: 35.83339GameSpawn:
World: world1.13X: 126.06898491630506Y: 63.0Z: 30.055373974750374Yaw: -57.567917Pitch: 35.83339Floor:
A:
World: world1.13X: 124.0Y: 62.0Z: 28.0Yaw: 0.0Pitch: 0.0B:
World: world1.13X: 127.0Y: 62.0Z: 31.0Yaw: 0.0Pitch: 0.0Patterns:
- exampleFloorWidth: 4.0Length: 4.0

Floor setup

In BlockParty we are using our own format to save block data. We are making use of the Run-length encoding to keep the file as small as possible. You can create your own floors, save and use them.

Creating your own floor

  • Build a two dimensional pattern using terracotta, wool and/or glass (all blocks supported in > 1.13)
  • Set the boundaries of pattern
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
  • Save your pattern
    • Finally use /bp save <patternName> to save your pattern to the /plugins/BlockParty/Floors/ folder

Add a floor to your arena

  • Test your pattern
    • This is optional but you may want to test your floor
    • Use /bp placepattern <patternName> to test it
  • Activate UsePatternFloors
    • Make sure you set UsePatternFloors: true in your arena config
    • You can also add patterns in your arena config
    • Reload with /bp reload if you have just changed a value
  • Selecting an initial pattern
    • If you name a pattern start it will load first
  • Selecting the game over pattern
    • If you name a pattern end it will load when the game is over

Remove a pattern

  • List the active patterns
    • Use /bp listpatterns <arenaName> to list all active patterns for this arena
  • Remove a paattern
    • Use /bp removepattern <arenaName> <patternName> to list all active patterns for this arena

Audio setup

Music playback is handled by an external audio provider. Two providers are supported:

  • OpenAudioMc — requires the OpenAudioMc plugin on the same server. Audio files are served from your CdnBaseUrl.
  • Central Hub (Aura) — connects to a hosted Aura instance. Configure ApiBaseUrl and FrontendBaseUrl; a ServerKey is generated automatically on first startup. Both URLs must use https://.

Enable and choose a provider in the Audio section of config.yml, then:

  • Add songs to your arena
    • Ingame: /bp addsong <arenaName> <trackName> (with the Central Hub provider, track names are validated against the synced catalog — use /bp songs to browse it)
    • Or add them to the SongManager list in your arena config
  • Enable the use of web songs
    • Make sure UseWebSongs: true is set in your arena config

Sign setup

You can also use signs to let players join to the arena. Your sign should look something like this:

LineText
1[BlockParty]
2<arenaName>
3
4

Customize your sign messages

Head over to your config.yml in the plugins/BlockParty/ folder. You can edit the used text that is displayed on the sign right there.

Permissions

  • blockparty.admin.*
    • This provides access to all BlockParty commands (/bp admin)
  • blockparty.user.*
    • This provides access to basic BlockParty commands (/bp help)

About

BlockParty Plugin for Spigot/Bukkit servers

Resources

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

BlockParty 3.x

BuildGitHub licenseGitHub release

BlockParty 3 is the modernized BlockParty line for current Minecraft servers, built on a Java 21 baseline with a Paper-first compatibility target.

Support policy

  • BlockParty 3.x supports Minecraft 1.20.6+ and 1.21.x
  • Java 21 is required to build and run this line
  • Legacy support for 1.8 through 1.19.x belongs on the 2.x line

See COMPATIBILITY.md for the runtime matrix and release split.

Installation

Download the jar file and place it into your plugins folder. A new folder is created (named BlockParty) after the server is started. A few file and sub-folders should be located there.

Building from source

Requires JDK 21 and Maven.

mvn clean verify

The distributable plugin jar is produced at target/BlockParty-<version>.jar.

Development

Git hooks are versioned in .githooks/ and install themselves on your first Maven build (mvn sets core.hooksPath via the git-build-hook plugin). To enable them without building, run once:

git config core.hooksPath .githooks
HookWhenWhat it does
pre-commitgit commitBlocks conflict markers, whitespace errors, and >5 MiB files (instant).
commit-msggit commitEnforces Conventional Commits.
pre-pushgit pushRuns mvn clean verify so red never reaches the remote.

The commit-msg rule is defined once in scripts/lint-commit-msg.sh and reused by CI's commit-lint job, so local and CI checks can never drift apart. Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, security.

Bypass a hook only when you must: git commit --no-verify, git push --no-verify (or SKIP_HOOKS=1 git push). CI re-checks everything regardless, and the build status check must be green before a PR can merge.

Configuration

config.yml

# BlockParty configuration# Locale file located in plugins/BlockParty/Locale/*.ymlLocaleFileName: locale_en.yml# Saves all data on plugin shutdown. Not necessarySaveOnDisable: false# Disables listed sub commands, example:# DisabledSubCommands: ["help", "reload", "join"]DisabledSubCommands: []# Enables command shortcuts# Command shortcuts: /start <arenaName> - /stopEnableCommandShortcuts: falseChat:
# Chat format when in arena# Placeholders:# %ARENA%: Arena player is in# %NAME%: Player name without formatting (e.g. rank, colors)# %DISPLAY%: Name with formatting# %MESSAGE%: Message sentArenaChatFormat: "&8[&7%ARENA%&8] &7%DISPLAY% &8> &r%MESSAGE%"# Separates normal from arena chat# Useful for non-bungee serversArenaPrivateChat: True# How to use join signs:# Line 1: [BlockParty]# Line 2: Arena name (case sensitive)JoinSigns:
# Enable join signsEnabled: True# Update signs every x millisecondsUpdateMillis: 1000Lines:
Disabled:
1: "&4[Off-%ARENA%]"2: "Not available"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&4• Stopped •"Lobby:
1: "&5[Join-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"LobbyFull:
1: "&4[Full-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"Ingame:
1: "&8[Ingame-%ARENA%]"2: "%ALIVE% players alive"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&8• Ingame •"Ending:
2: "&8&lLobby"3: "&8&lrestarting..."BungeeCord:
# When set to "True", players will automatically connect to DefaultArena (see below)# and will be kicked from the server when leaving the arena.# This is mostly useful for BungeeCord serversEnabled: False# Arena players will connect to when BungeeCord is enabled. Please note the spelling and case sensitivityDefaultArena: ArenaAudio:
# Enables external web audio playback providersEnabled: False# Available providers: "openaudiomc", "central_hub"Provider: central_hub# Public base URL where your audio files are hostedCdnBaseUrl: "https://cdn.example.com/blockparty/"Database:
# Use "MySQL" to enable MySQL, "SQL" to store data locallyMethod: SQL# Tables will have this prefix in front of the nameTablePrefix: "bp_"SQLOptions:
# File to save database to when using SQLFileName: "database.db"# MySQL credentialsMySQLOptions:
Host: localhostPort: 3306Database: databaseUsername: usernamePassword: password# End of configuration

Arena setup

  • Create an arena
    • Use the /bp create <arenaName>
    • Replace <arenaName> with the name of your arena
  • Set the lobby spawn
    • Place yourself where you want to have your lobby spawn. Use /bp setspawn <arenaName> lobby
    • Players get teleported to this position when they enter the lobby
  • Set the boundaries of the arena floor
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
    • Finally use /bp setfloor <arenaName> to set the floor boundaries for you arena
  • Set the game spawn
    • Place yourself where you want to have your game spawn. Use /bp setspawn <arenaName> game
    • Players get teleported to this position when the game starts
  • Enable your arena
    • To be able to play in an arena you need to enable it first. Use /bp enable <arenaName>

Thats it for the arena setup. To customize your arena, use ingame commands or head to the <arenaName>.yml located in your plugins/BlockParty/Arenas/ folder. Here you can find an example arena config:

Example arena config
Settings:
DistanceToOutArea: 5TimeToSearch: 8LevelAmount: 15MinPlayers: 2MaxPlayers: 20LobbyCountdown: 30TimeReductionPerLevel: 0.5TimeModifier: 0.1Enabled: trueEnableParticles: trueEnableLightnings: trueAutoRestart: falseAutoKick: falseEnableBoosts: trueEnableFallingBlocks: falseUseAutoGeneratedFloors: trueUsePatternFloors: trueEnableActionbarInfo: trueUseNoteBlockSongs: falseUseWebSongs: trueEnableFireworksOnWin: trueTimerResetOnPlayerJoin: falseAllowJoinDuringGame: trueEnableScoreboard: falseName: exampleSongManager:
- examplesong.mp3Signs: []LobbySpawn:
World: world1.13X: 119.96556415260845Y: 64.0Z: 26.73431969945681Yaw: -57.567917Pitch: 35.83339GameSpawn:
World: world1.13X: 126.06898491630506Y: 63.0Z: 30.055373974750374Yaw: -57.567917Pitch: 35.83339Floor:
A:
World: world1.13X: 124.0Y: 62.0Z: 28.0Yaw: 0.0Pitch: 0.0B:
World: world1.13X: 127.0Y: 62.0Z: 31.0Yaw: 0.0Pitch: 0.0Patterns:
- exampleFloorWidth: 4.0Length: 4.0

Floor setup

In BlockParty we are using our own format to save block data. We are making use of the Run-length encoding to keep the file as small as possible. You can create your own floors, save and use them.

Creating your own floor

  • Build a two dimensional pattern using terracotta, wool and/or glass (all blocks supported in > 1.13)
  • Set the boundaries of pattern
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
  • Save your pattern
    • Finally use /bp save <patternName> to save your pattern to the /plugins/BlockParty/Floors/ folder

Add a floor to your arena

  • Test your pattern
    • This is optional but you may want to test your floor
    • Use /bp placepattern <patternName> to test it
  • Activate UsePatternFloors
    • Make sure you set UsePatternFloors: true in your arena config
    • You can also add patterns in your arena config
    • Reload with /bp reload if you have just changed a value
  • Selecting an initial pattern
    • If you name a pattern start it will load first
  • Selecting the game over pattern
    • If you name a pattern end it will load when the game is over

Remove a pattern

  • List the active patterns
    • Use /bp listpatterns <arenaName> to list all active patterns for this arena
  • Remove a paattern
    • Use /bp removepattern <arenaName> <patternName> to list all active patterns for this arena

Audio setup

Music playback is handled by an external audio provider. Two providers are supported:

  • OpenAudioMc — requires the OpenAudioMc plugin on the same server. Audio files are served from your CdnBaseUrl.
  • Central Hub (Aura) — connects to a hosted Aura instance. Configure ApiBaseUrl and FrontendBaseUrl; a ServerKey is generated automatically on first startup. Both URLs must use https://.

Enable and choose a provider in the Audio section of config.yml, then:

  • Add songs to your arena
    • Ingame: /bp addsong <arenaName> <trackName> (with the Central Hub provider, track names are validated against the synced catalog — use /bp songs to browse it)
    • Or add them to the SongManager list in your arena config
  • Enable the use of web songs
    • Make sure UseWebSongs: true is set in your arena config

Sign setup

You can also use signs to let players join to the arena. Your sign should look something like this:

LineText
1[BlockParty]
2<arenaName>
3
4

Customize your sign messages

Head over to your config.yml in the plugins/BlockParty/ folder. You can edit the used text that is displayed on the sign right there.

Permissions

  • blockparty.admin.*
    • This provides access to all BlockParty commands (/bp admin)
  • blockparty.user.*
    • This provides access to basic BlockParty commands (/bp help)

About

BlockParty Plugin for Spigot/Bukkit servers

Resources

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

BlockParty 3.x

BuildGitHub licenseGitHub release

BlockParty 3 is the modernized BlockParty line for current Minecraft servers, built on a Java 21 baseline with a Paper-first compatibility target.

Support policy

  • BlockParty 3.x supports Minecraft 1.20.6+ and 1.21.x
  • Java 21 is required to build and run this line
  • Legacy support for 1.8 through 1.19.x belongs on the 2.x line

See COMPATIBILITY.md for the runtime matrix and release split.

Installation

Download the jar file and place it into your plugins folder. A new folder is created (named BlockParty) after the server is started. A few file and sub-folders should be located there.

Building from source

Requires JDK 21 and Maven.

mvn clean verify

The distributable plugin jar is produced at target/BlockParty-<version>.jar.

Development

Git hooks are versioned in .githooks/ and install themselves on your first Maven build (mvn sets core.hooksPath via the git-build-hook plugin). To enable them without building, run once:

git config core.hooksPath .githooks
HookWhenWhat it does
pre-commitgit commitBlocks conflict markers, whitespace errors, and >5 MiB files (instant).
commit-msggit commitEnforces Conventional Commits.
pre-pushgit pushRuns mvn clean verify so red never reaches the remote.

The commit-msg rule is defined once in scripts/lint-commit-msg.sh and reused by CI's commit-lint job, so local and CI checks can never drift apart. Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, security.

Bypass a hook only when you must: git commit --no-verify, git push --no-verify (or SKIP_HOOKS=1 git push). CI re-checks everything regardless, and the build status check must be green before a PR can merge.

Configuration

config.yml

# BlockParty configuration# Locale file located in plugins/BlockParty/Locale/*.ymlLocaleFileName: locale_en.yml# Saves all data on plugin shutdown. Not necessarySaveOnDisable: false# Disables listed sub commands, example:# DisabledSubCommands: ["help", "reload", "join"]DisabledSubCommands: []# Enables command shortcuts# Command shortcuts: /start <arenaName> - /stopEnableCommandShortcuts: falseChat:
# Chat format when in arena# Placeholders:# %ARENA%: Arena player is in# %NAME%: Player name without formatting (e.g. rank, colors)# %DISPLAY%: Name with formatting# %MESSAGE%: Message sentArenaChatFormat: "&8[&7%ARENA%&8] &7%DISPLAY% &8> &r%MESSAGE%"# Separates normal from arena chat# Useful for non-bungee serversArenaPrivateChat: True# How to use join signs:# Line 1: [BlockParty]# Line 2: Arena name (case sensitive)JoinSigns:
# Enable join signsEnabled: True# Update signs every x millisecondsUpdateMillis: 1000Lines:
Disabled:
1: "&4[Off-%ARENA%]"2: "Not available"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&4• Stopped •"Lobby:
1: "&5[Join-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"LobbyFull:
1: "&4[Full-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"Ingame:
1: "&8[Ingame-%ARENA%]"2: "%ALIVE% players alive"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&8• Ingame •"Ending:
2: "&8&lLobby"3: "&8&lrestarting..."BungeeCord:
# When set to "True", players will automatically connect to DefaultArena (see below)# and will be kicked from the server when leaving the arena.# This is mostly useful for BungeeCord serversEnabled: False# Arena players will connect to when BungeeCord is enabled. Please note the spelling and case sensitivityDefaultArena: ArenaAudio:
# Enables external web audio playback providersEnabled: False# Available providers: "openaudiomc", "central_hub"Provider: central_hub# Public base URL where your audio files are hostedCdnBaseUrl: "https://cdn.example.com/blockparty/"Database:
# Use "MySQL" to enable MySQL, "SQL" to store data locallyMethod: SQL# Tables will have this prefix in front of the nameTablePrefix: "bp_"SQLOptions:
# File to save database to when using SQLFileName: "database.db"# MySQL credentialsMySQLOptions:
Host: localhostPort: 3306Database: databaseUsername: usernamePassword: password# End of configuration

Arena setup

  • Create an arena
    • Use the /bp create <arenaName>
    • Replace <arenaName> with the name of your arena
  • Set the lobby spawn
    • Place yourself where you want to have your lobby spawn. Use /bp setspawn <arenaName> lobby
    • Players get teleported to this position when they enter the lobby
  • Set the boundaries of the arena floor
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
    • Finally use /bp setfloor <arenaName> to set the floor boundaries for you arena
  • Set the game spawn
    • Place yourself where you want to have your game spawn. Use /bp setspawn <arenaName> game
    • Players get teleported to this position when the game starts
  • Enable your arena
    • To be able to play in an arena you need to enable it first. Use /bp enable <arenaName>

Thats it for the arena setup. To customize your arena, use ingame commands or head to the <arenaName>.yml located in your plugins/BlockParty/Arenas/ folder. Here you can find an example arena config:

Example arena config
Settings:
DistanceToOutArea: 5TimeToSearch: 8LevelAmount: 15MinPlayers: 2MaxPlayers: 20LobbyCountdown: 30TimeReductionPerLevel: 0.5TimeModifier: 0.1Enabled: trueEnableParticles: trueEnableLightnings: trueAutoRestart: falseAutoKick: falseEnableBoosts: trueEnableFallingBlocks: falseUseAutoGeneratedFloors: trueUsePatternFloors: trueEnableActionbarInfo: trueUseNoteBlockSongs: falseUseWebSongs: trueEnableFireworksOnWin: trueTimerResetOnPlayerJoin: falseAllowJoinDuringGame: trueEnableScoreboard: falseName: exampleSongManager:
- examplesong.mp3Signs: []LobbySpawn:
World: world1.13X: 119.96556415260845Y: 64.0Z: 26.73431969945681Yaw: -57.567917Pitch: 35.83339GameSpawn:
World: world1.13X: 126.06898491630506Y: 63.0Z: 30.055373974750374Yaw: -57.567917Pitch: 35.83339Floor:
A:
World: world1.13X: 124.0Y: 62.0Z: 28.0Yaw: 0.0Pitch: 0.0B:
World: world1.13X: 127.0Y: 62.0Z: 31.0Yaw: 0.0Pitch: 0.0Patterns:
- exampleFloorWidth: 4.0Length: 4.0

Floor setup

In BlockParty we are using our own format to save block data. We are making use of the Run-length encoding to keep the file as small as possible. You can create your own floors, save and use them.

Creating your own floor

  • Build a two dimensional pattern using terracotta, wool and/or glass (all blocks supported in > 1.13)
  • Set the boundaries of pattern
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
  • Save your pattern
    • Finally use /bp save <patternName> to save your pattern to the /plugins/BlockParty/Floors/ folder

Add a floor to your arena

  • Test your pattern
    • This is optional but you may want to test your floor
    • Use /bp placepattern <patternName> to test it
  • Activate UsePatternFloors
    • Make sure you set UsePatternFloors: true in your arena config
    • You can also add patterns in your arena config
    • Reload with /bp reload if you have just changed a value
  • Selecting an initial pattern
    • If you name a pattern start it will load first
  • Selecting the game over pattern
    • If you name a pattern end it will load when the game is over

Remove a pattern

  • List the active patterns
    • Use /bp listpatterns <arenaName> to list all active patterns for this arena
  • Remove a paattern
    • Use /bp removepattern <arenaName> <patternName> to list all active patterns for this arena

Audio setup

Music playback is handled by an external audio provider. Two providers are supported:

  • OpenAudioMc — requires the OpenAudioMc plugin on the same server. Audio files are served from your CdnBaseUrl.
  • Central Hub (Aura) — connects to a hosted Aura instance. Configure ApiBaseUrl and FrontendBaseUrl; a ServerKey is generated automatically on first startup. Both URLs must use https://.

Enable and choose a provider in the Audio section of config.yml, then:

  • Add songs to your arena
    • Ingame: /bp addsong <arenaName> <trackName> (with the Central Hub provider, track names are validated against the synced catalog — use /bp songs to browse it)
    • Or add them to the SongManager list in your arena config
  • Enable the use of web songs
    • Make sure UseWebSongs: true is set in your arena config

Sign setup

You can also use signs to let players join to the arena. Your sign should look something like this:

LineText
1[BlockParty]
2<arenaName>
3
4

Customize your sign messages

Head over to your config.yml in the plugins/BlockParty/ folder. You can edit the used text that is displayed on the sign right there.

Permissions

  • blockparty.admin.*
    • This provides access to all BlockParty commands (/bp admin)
  • blockparty.user.*
    • This provides access to basic BlockParty commands (/bp help)

About

BlockParty Plugin for Spigot/Bukkit servers

Resources

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

BlockParty 3.x

BuildGitHub licenseGitHub release

BlockParty 3 is the modernized BlockParty line for current Minecraft servers, built on a Java 21 baseline with a Paper-first compatibility target.

Support policy

  • BlockParty 3.x supports Minecraft 1.20.6+ and 1.21.x
  • Java 21 is required to build and run this line
  • Legacy support for 1.8 through 1.19.x belongs on the 2.x line

See COMPATIBILITY.md for the runtime matrix and release split.

Installation

Download the jar file and place it into your plugins folder. A new folder is created (named BlockParty) after the server is started. A few file and sub-folders should be located there.

Building from source

Requires JDK 21 and Maven.

mvn clean verify

The distributable plugin jar is produced at target/BlockParty-<version>.jar.

Development

Git hooks are versioned in .githooks/ and install themselves on your first Maven build (mvn sets core.hooksPath via the git-build-hook plugin). To enable them without building, run once:

git config core.hooksPath .githooks
HookWhenWhat it does
pre-commitgit commitBlocks conflict markers, whitespace errors, and >5 MiB files (instant).
commit-msggit commitEnforces Conventional Commits.
pre-pushgit pushRuns mvn clean verify so red never reaches the remote.

The commit-msg rule is defined once in scripts/lint-commit-msg.sh and reused by CI's commit-lint job, so local and CI checks can never drift apart. Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, security.

Bypass a hook only when you must: git commit --no-verify, git push --no-verify (or SKIP_HOOKS=1 git push). CI re-checks everything regardless, and the build status check must be green before a PR can merge.

Configuration

config.yml

# BlockParty configuration# Locale file located in plugins/BlockParty/Locale/*.ymlLocaleFileName: locale_en.yml# Saves all data on plugin shutdown. Not necessarySaveOnDisable: false# Disables listed sub commands, example:# DisabledSubCommands: ["help", "reload", "join"]DisabledSubCommands: []# Enables command shortcuts# Command shortcuts: /start <arenaName> - /stopEnableCommandShortcuts: falseChat:
# Chat format when in arena# Placeholders:# %ARENA%: Arena player is in# %NAME%: Player name without formatting (e.g. rank, colors)# %DISPLAY%: Name with formatting# %MESSAGE%: Message sentArenaChatFormat: "&8[&7%ARENA%&8] &7%DISPLAY% &8> &r%MESSAGE%"# Separates normal from arena chat# Useful for non-bungee serversArenaPrivateChat: True# How to use join signs:# Line 1: [BlockParty]# Line 2: Arena name (case sensitive)JoinSigns:
# Enable join signsEnabled: True# Update signs every x millisecondsUpdateMillis: 1000Lines:
Disabled:
1: "&4[Off-%ARENA%]"2: "Not available"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&4• Stopped •"Lobby:
1: "&5[Join-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"LobbyFull:
1: "&4[Full-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"Ingame:
1: "&8[Ingame-%ARENA%]"2: "%ALIVE% players alive"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&8• Ingame •"Ending:
2: "&8&lLobby"3: "&8&lrestarting..."BungeeCord:
# When set to "True", players will automatically connect to DefaultArena (see below)# and will be kicked from the server when leaving the arena.# This is mostly useful for BungeeCord serversEnabled: False# Arena players will connect to when BungeeCord is enabled. Please note the spelling and case sensitivityDefaultArena: ArenaAudio:
# Enables external web audio playback providersEnabled: False# Available providers: "openaudiomc", "central_hub"Provider: central_hub# Public base URL where your audio files are hostedCdnBaseUrl: "https://cdn.example.com/blockparty/"Database:
# Use "MySQL" to enable MySQL, "SQL" to store data locallyMethod: SQL# Tables will have this prefix in front of the nameTablePrefix: "bp_"SQLOptions:
# File to save database to when using SQLFileName: "database.db"# MySQL credentialsMySQLOptions:
Host: localhostPort: 3306Database: databaseUsername: usernamePassword: password# End of configuration

Arena setup

  • Create an arena
    • Use the /bp create <arenaName>
    • Replace <arenaName> with the name of your arena
  • Set the lobby spawn
    • Place yourself where you want to have your lobby spawn. Use /bp setspawn <arenaName> lobby
    • Players get teleported to this position when they enter the lobby
  • Set the boundaries of the arena floor
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
    • Finally use /bp setfloor <arenaName> to set the floor boundaries for you arena
  • Set the game spawn
    • Place yourself where you want to have your game spawn. Use /bp setspawn <arenaName> game
    • Players get teleported to this position when the game starts
  • Enable your arena
    • To be able to play in an arena you need to enable it first. Use /bp enable <arenaName>

Thats it for the arena setup. To customize your arena, use ingame commands or head to the <arenaName>.yml located in your plugins/BlockParty/Arenas/ folder. Here you can find an example arena config:

Example arena config
Settings:
DistanceToOutArea: 5TimeToSearch: 8LevelAmount: 15MinPlayers: 2MaxPlayers: 20LobbyCountdown: 30TimeReductionPerLevel: 0.5TimeModifier: 0.1Enabled: trueEnableParticles: trueEnableLightnings: trueAutoRestart: falseAutoKick: falseEnableBoosts: trueEnableFallingBlocks: falseUseAutoGeneratedFloors: trueUsePatternFloors: trueEnableActionbarInfo: trueUseNoteBlockSongs: falseUseWebSongs: trueEnableFireworksOnWin: trueTimerResetOnPlayerJoin: falseAllowJoinDuringGame: trueEnableScoreboard: falseName: exampleSongManager:
- examplesong.mp3Signs: []LobbySpawn:
World: world1.13X: 119.96556415260845Y: 64.0Z: 26.73431969945681Yaw: -57.567917Pitch: 35.83339GameSpawn:
World: world1.13X: 126.06898491630506Y: 63.0Z: 30.055373974750374Yaw: -57.567917Pitch: 35.83339Floor:
A:
World: world1.13X: 124.0Y: 62.0Z: 28.0Yaw: 0.0Pitch: 0.0B:
World: world1.13X: 127.0Y: 62.0Z: 31.0Yaw: 0.0Pitch: 0.0Patterns:
- exampleFloorWidth: 4.0Length: 4.0

Floor setup

In BlockParty we are using our own format to save block data. We are making use of the Run-length encoding to keep the file as small as possible. You can create your own floors, save and use them.

Creating your own floor

  • Build a two dimensional pattern using terracotta, wool and/or glass (all blocks supported in > 1.13)
  • Set the boundaries of pattern
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
  • Save your pattern
    • Finally use /bp save <patternName> to save your pattern to the /plugins/BlockParty/Floors/ folder

Add a floor to your arena

  • Test your pattern
    • This is optional but you may want to test your floor
    • Use /bp placepattern <patternName> to test it
  • Activate UsePatternFloors
    • Make sure you set UsePatternFloors: true in your arena config
    • You can also add patterns in your arena config
    • Reload with /bp reload if you have just changed a value
  • Selecting an initial pattern
    • If you name a pattern start it will load first
  • Selecting the game over pattern
    • If you name a pattern end it will load when the game is over

Remove a pattern

  • List the active patterns
    • Use /bp listpatterns <arenaName> to list all active patterns for this arena
  • Remove a paattern
    • Use /bp removepattern <arenaName> <patternName> to list all active patterns for this arena

Audio setup

Music playback is handled by an external audio provider. Two providers are supported:

  • OpenAudioMc — requires the OpenAudioMc plugin on the same server. Audio files are served from your CdnBaseUrl.
  • Central Hub (Aura) — connects to a hosted Aura instance. Configure ApiBaseUrl and FrontendBaseUrl; a ServerKey is generated automatically on first startup. Both URLs must use https://.

Enable and choose a provider in the Audio section of config.yml, then:

  • Add songs to your arena
    • Ingame: /bp addsong <arenaName> <trackName> (with the Central Hub provider, track names are validated against the synced catalog — use /bp songs to browse it)
    • Or add them to the SongManager list in your arena config
  • Enable the use of web songs
    • Make sure UseWebSongs: true is set in your arena config

Sign setup

You can also use signs to let players join to the arena. Your sign should look something like this:

LineText
1[BlockParty]
2<arenaName>
3
4

Customize your sign messages

Head over to your config.yml in the plugins/BlockParty/ folder. You can edit the used text that is displayed on the sign right there.

Permissions

  • blockparty.admin.*
    • This provides access to all BlockParty commands (/bp admin)
  • blockparty.user.*
    • This provides access to basic BlockParty commands (/bp help)

About

BlockParty Plugin for Spigot/Bukkit servers

Resources

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

BlockParty 3.x

BuildGitHub licenseGitHub release

BlockParty 3 is the modernized BlockParty line for current Minecraft servers, built on a Java 21 baseline with a Paper-first compatibility target.

Support policy

  • BlockParty 3.x supports Minecraft 1.20.6+ and 1.21.x
  • Java 21 is required to build and run this line
  • Legacy support for 1.8 through 1.19.x belongs on the 2.x line

See COMPATIBILITY.md for the runtime matrix and release split.

Installation

Download the jar file and place it into your plugins folder. A new folder is created (named BlockParty) after the server is started. A few file and sub-folders should be located there.

Building from source

Requires JDK 21 and Maven.

mvn clean verify

The distributable plugin jar is produced at target/BlockParty-<version>.jar.

Development

Git hooks are versioned in .githooks/ and install themselves on your first Maven build (mvn sets core.hooksPath via the git-build-hook plugin). To enable them without building, run once:

git config core.hooksPath .githooks
HookWhenWhat it does
pre-commitgit commitBlocks conflict markers, whitespace errors, and >5 MiB files (instant).
commit-msggit commitEnforces Conventional Commits.
pre-pushgit pushRuns mvn clean verify so red never reaches the remote.

The commit-msg rule is defined once in scripts/lint-commit-msg.sh and reused by CI's commit-lint job, so local and CI checks can never drift apart. Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, security.

Bypass a hook only when you must: git commit --no-verify, git push --no-verify (or SKIP_HOOKS=1 git push). CI re-checks everything regardless, and the build status check must be green before a PR can merge.

Configuration

config.yml

# BlockParty configuration# Locale file located in plugins/BlockParty/Locale/*.ymlLocaleFileName: locale_en.yml# Saves all data on plugin shutdown. Not necessarySaveOnDisable: false# Disables listed sub commands, example:# DisabledSubCommands: ["help", "reload", "join"]DisabledSubCommands: []# Enables command shortcuts# Command shortcuts: /start <arenaName> - /stopEnableCommandShortcuts: falseChat:
# Chat format when in arena# Placeholders:# %ARENA%: Arena player is in# %NAME%: Player name without formatting (e.g. rank, colors)# %DISPLAY%: Name with formatting# %MESSAGE%: Message sentArenaChatFormat: "&8[&7%ARENA%&8] &7%DISPLAY% &8> &r%MESSAGE%"# Separates normal from arena chat# Useful for non-bungee serversArenaPrivateChat: True# How to use join signs:# Line 1: [BlockParty]# Line 2: Arena name (case sensitive)JoinSigns:
# Enable join signsEnabled: True# Update signs every x millisecondsUpdateMillis: 1000Lines:
Disabled:
1: "&4[Off-%ARENA%]"2: "Not available"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&4• Stopped •"Lobby:
1: "&5[Join-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"LobbyFull:
1: "&4[Full-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"Ingame:
1: "&8[Ingame-%ARENA%]"2: "%ALIVE% players alive"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&8• Ingame •"Ending:
2: "&8&lLobby"3: "&8&lrestarting..."BungeeCord:
# When set to "True", players will automatically connect to DefaultArena (see below)# and will be kicked from the server when leaving the arena.# This is mostly useful for BungeeCord serversEnabled: False# Arena players will connect to when BungeeCord is enabled. Please note the spelling and case sensitivityDefaultArena: ArenaAudio:
# Enables external web audio playback providersEnabled: False# Available providers: "openaudiomc", "central_hub"Provider: central_hub# Public base URL where your audio files are hostedCdnBaseUrl: "https://cdn.example.com/blockparty/"Database:
# Use "MySQL" to enable MySQL, "SQL" to store data locallyMethod: SQL# Tables will have this prefix in front of the nameTablePrefix: "bp_"SQLOptions:
# File to save database to when using SQLFileName: "database.db"# MySQL credentialsMySQLOptions:
Host: localhostPort: 3306Database: databaseUsername: usernamePassword: password# End of configuration

Arena setup

  • Create an arena
    • Use the /bp create <arenaName>
    • Replace <arenaName> with the name of your arena
  • Set the lobby spawn
    • Place yourself where you want to have your lobby spawn. Use /bp setspawn <arenaName> lobby
    • Players get teleported to this position when they enter the lobby
  • Set the boundaries of the arena floor
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
    • Finally use /bp setfloor <arenaName> to set the floor boundaries for you arena
  • Set the game spawn
    • Place yourself where you want to have your game spawn. Use /bp setspawn <arenaName> game
    • Players get teleported to this position when the game starts
  • Enable your arena
    • To be able to play in an arena you need to enable it first. Use /bp enable <arenaName>

Thats it for the arena setup. To customize your arena, use ingame commands or head to the <arenaName>.yml located in your plugins/BlockParty/Arenas/ folder. Here you can find an example arena config:

Example arena config
Settings:
DistanceToOutArea: 5TimeToSearch: 8LevelAmount: 15MinPlayers: 2MaxPlayers: 20LobbyCountdown: 30TimeReductionPerLevel: 0.5TimeModifier: 0.1Enabled: trueEnableParticles: trueEnableLightnings: trueAutoRestart: falseAutoKick: falseEnableBoosts: trueEnableFallingBlocks: falseUseAutoGeneratedFloors: trueUsePatternFloors: trueEnableActionbarInfo: trueUseNoteBlockSongs: falseUseWebSongs: trueEnableFireworksOnWin: trueTimerResetOnPlayerJoin: falseAllowJoinDuringGame: trueEnableScoreboard: falseName: exampleSongManager:
- examplesong.mp3Signs: []LobbySpawn:
World: world1.13X: 119.96556415260845Y: 64.0Z: 26.73431969945681Yaw: -57.567917Pitch: 35.83339GameSpawn:
World: world1.13X: 126.06898491630506Y: 63.0Z: 30.055373974750374Yaw: -57.567917Pitch: 35.83339Floor:
A:
World: world1.13X: 124.0Y: 62.0Z: 28.0Yaw: 0.0Pitch: 0.0B:
World: world1.13X: 127.0Y: 62.0Z: 31.0Yaw: 0.0Pitch: 0.0Patterns:
- exampleFloorWidth: 4.0Length: 4.0

Floor setup

In BlockParty we are using our own format to save block data. We are making use of the Run-length encoding to keep the file as small as possible. You can create your own floors, save and use them.

Creating your own floor

  • Build a two dimensional pattern using terracotta, wool and/or glass (all blocks supported in > 1.13)
  • Set the boundaries of pattern
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
  • Save your pattern
    • Finally use /bp save <patternName> to save your pattern to the /plugins/BlockParty/Floors/ folder

Add a floor to your arena

  • Test your pattern
    • This is optional but you may want to test your floor
    • Use /bp placepattern <patternName> to test it
  • Activate UsePatternFloors
    • Make sure you set UsePatternFloors: true in your arena config
    • You can also add patterns in your arena config
    • Reload with /bp reload if you have just changed a value
  • Selecting an initial pattern
    • If you name a pattern start it will load first
  • Selecting the game over pattern
    • If you name a pattern end it will load when the game is over

Remove a pattern

  • List the active patterns
    • Use /bp listpatterns <arenaName> to list all active patterns for this arena
  • Remove a paattern
    • Use /bp removepattern <arenaName> <patternName> to list all active patterns for this arena

Audio setup

Music playback is handled by an external audio provider. Two providers are supported:

  • OpenAudioMc — requires the OpenAudioMc plugin on the same server. Audio files are served from your CdnBaseUrl.
  • Central Hub (Aura) — connects to a hosted Aura instance. Configure ApiBaseUrl and FrontendBaseUrl; a ServerKey is generated automatically on first startup. Both URLs must use https://.

Enable and choose a provider in the Audio section of config.yml, then:

  • Add songs to your arena
    • Ingame: /bp addsong <arenaName> <trackName> (with the Central Hub provider, track names are validated against the synced catalog — use /bp songs to browse it)
    • Or add them to the SongManager list in your arena config
  • Enable the use of web songs
    • Make sure UseWebSongs: true is set in your arena config

Sign setup

You can also use signs to let players join to the arena. Your sign should look something like this:

LineText
1[BlockParty]
2<arenaName>
3
4

Customize your sign messages

Head over to your config.yml in the plugins/BlockParty/ folder. You can edit the used text that is displayed on the sign right there.

Permissions

  • blockparty.admin.*
    • This provides access to all BlockParty commands (/bp admin)
  • blockparty.user.*
    • This provides access to basic BlockParty commands (/bp help)

About

BlockParty Plugin for Spigot/Bukkit servers

Resources

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

BlockParty 3.x

BuildGitHub licenseGitHub release

BlockParty 3 is the modernized BlockParty line for current Minecraft servers, built on a Java 21 baseline with a Paper-first compatibility target.

Support policy

  • BlockParty 3.x supports Minecraft 1.20.6+ and 1.21.x
  • Java 21 is required to build and run this line
  • Legacy support for 1.8 through 1.19.x belongs on the 2.x line

See COMPATIBILITY.md for the runtime matrix and release split.

Installation

Download the jar file and place it into your plugins folder. A new folder is created (named BlockParty) after the server is started. A few file and sub-folders should be located there.

Building from source

Requires JDK 21 and Maven.

mvn clean verify

The distributable plugin jar is produced at target/BlockParty-<version>.jar.

Development

Git hooks are versioned in .githooks/ and install themselves on your first Maven build (mvn sets core.hooksPath via the git-build-hook plugin). To enable them without building, run once:

git config core.hooksPath .githooks
HookWhenWhat it does
pre-commitgit commitBlocks conflict markers, whitespace errors, and >5 MiB files (instant).
commit-msggit commitEnforces Conventional Commits.
pre-pushgit pushRuns mvn clean verify so red never reaches the remote.

The commit-msg rule is defined once in scripts/lint-commit-msg.sh and reused by CI's commit-lint job, so local and CI checks can never drift apart. Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, security.

Bypass a hook only when you must: git commit --no-verify, git push --no-verify (or SKIP_HOOKS=1 git push). CI re-checks everything regardless, and the build status check must be green before a PR can merge.

Configuration

config.yml

# BlockParty configuration# Locale file located in plugins/BlockParty/Locale/*.ymlLocaleFileName: locale_en.yml# Saves all data on plugin shutdown. Not necessarySaveOnDisable: false# Disables listed sub commands, example:# DisabledSubCommands: ["help", "reload", "join"]DisabledSubCommands: []# Enables command shortcuts# Command shortcuts: /start <arenaName> - /stopEnableCommandShortcuts: falseChat:
# Chat format when in arena# Placeholders:# %ARENA%: Arena player is in# %NAME%: Player name without formatting (e.g. rank, colors)# %DISPLAY%: Name with formatting# %MESSAGE%: Message sentArenaChatFormat: "&8[&7%ARENA%&8] &7%DISPLAY% &8> &r%MESSAGE%"# Separates normal from arena chat# Useful for non-bungee serversArenaPrivateChat: True# How to use join signs:# Line 1: [BlockParty]# Line 2: Arena name (case sensitive)JoinSigns:
# Enable join signsEnabled: True# Update signs every x millisecondsUpdateMillis: 1000Lines:
Disabled:
1: "&4[Off-%ARENA%]"2: "Not available"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&4• Stopped •"Lobby:
1: "&5[Join-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"LobbyFull:
1: "&4[Full-%ARENA%]"2: "Voting..."3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&5• Lobby •"Ingame:
1: "&8[Ingame-%ARENA%]"2: "%ALIVE% players alive"3: "&8&l%PLAYERS%/%MAX_PLAYERS%"4: "&8• Ingame •"Ending:
2: "&8&lLobby"3: "&8&lrestarting..."BungeeCord:
# When set to "True", players will automatically connect to DefaultArena (see below)# and will be kicked from the server when leaving the arena.# This is mostly useful for BungeeCord serversEnabled: False# Arena players will connect to when BungeeCord is enabled. Please note the spelling and case sensitivityDefaultArena: ArenaAudio:
# Enables external web audio playback providersEnabled: False# Available providers: "openaudiomc", "central_hub"Provider: central_hub# Public base URL where your audio files are hostedCdnBaseUrl: "https://cdn.example.com/blockparty/"Database:
# Use "MySQL" to enable MySQL, "SQL" to store data locallyMethod: SQL# Tables will have this prefix in front of the nameTablePrefix: "bp_"SQLOptions:
# File to save database to when using SQLFileName: "database.db"# MySQL credentialsMySQLOptions:
Host: localhostPort: 3306Database: databaseUsername: usernamePassword: password# End of configuration

Arena setup

  • Create an arena
    • Use the /bp create <arenaName>
    • Replace <arenaName> with the name of your arena
  • Set the lobby spawn
    • Place yourself where you want to have your lobby spawn. Use /bp setspawn <arenaName> lobby
    • Players get teleported to this position when they enter the lobby
  • Set the boundaries of the arena floor
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
    • Finally use /bp setfloor <arenaName> to set the floor boundaries for you arena
  • Set the game spawn
    • Place yourself where you want to have your game spawn. Use /bp setspawn <arenaName> game
    • Players get teleported to this position when the game starts
  • Enable your arena
    • To be able to play in an arena you need to enable it first. Use /bp enable <arenaName>

Thats it for the arena setup. To customize your arena, use ingame commands or head to the <arenaName>.yml located in your plugins/BlockParty/Arenas/ folder. Here you can find an example arena config:

Example arena config
Settings:
DistanceToOutArea: 5TimeToSearch: 8LevelAmount: 15MinPlayers: 2MaxPlayers: 20LobbyCountdown: 30TimeReductionPerLevel: 0.5TimeModifier: 0.1Enabled: trueEnableParticles: trueEnableLightnings: trueAutoRestart: falseAutoKick: falseEnableBoosts: trueEnableFallingBlocks: falseUseAutoGeneratedFloors: trueUsePatternFloors: trueEnableActionbarInfo: trueUseNoteBlockSongs: falseUseWebSongs: trueEnableFireworksOnWin: trueTimerResetOnPlayerJoin: falseAllowJoinDuringGame: trueEnableScoreboard: falseName: exampleSongManager:
- examplesong.mp3Signs: []LobbySpawn:
World: world1.13X: 119.96556415260845Y: 64.0Z: 26.73431969945681Yaw: -57.567917Pitch: 35.83339GameSpawn:
World: world1.13X: 126.06898491630506Y: 63.0Z: 30.055373974750374Yaw: -57.567917Pitch: 35.83339Floor:
A:
World: world1.13X: 124.0Y: 62.0Z: 28.0Yaw: 0.0Pitch: 0.0B:
World: world1.13X: 127.0Y: 62.0Z: 31.0Yaw: 0.0Pitch: 0.0Patterns:
- exampleFloorWidth: 4.0Length: 4.0

Floor setup

In BlockParty we are using our own format to save block data. We are making use of the Run-length encoding to keep the file as small as possible. You can create your own floors, save and use them.

Creating your own floor

  • Build a two dimensional pattern using terracotta, wool and/or glass (all blocks supported in > 1.13)
  • Set the boundaries of pattern
    • Use /bp pos <1|2> to set the positions to your current positions. OR:
    • Use /bp wand to get a stick to set the positions via left and right click
  • Save your pattern
    • Finally use /bp save <patternName> to save your pattern to the /plugins/BlockParty/Floors/ folder

Add a floor to your arena

  • Test your pattern
    • This is optional but you may want to test your floor
    • Use /bp placepattern <patternName> to test it
  • Activate UsePatternFloors
    • Make sure you set UsePatternFloors: true in your arena config
    • You can also add patterns in your arena config
    • Reload with /bp reload if you have just changed a value
  • Selecting an initial pattern
    • If you name a pattern start it will load first
  • Selecting the game over pattern
    • If you name a pattern end it will load when the game is over

Remove a pattern

  • List the active patterns
    • Use /bp listpatterns <arenaName> to list all active patterns for this arena
  • Remove a paattern
    • Use /bp removepattern <arenaName> <patternName> to list all active patterns for this arena

Audio setup

Music playback is handled by an external audio provider. Two providers are supported:

  • OpenAudioMc — requires the OpenAudioMc plugin on the same server. Audio files are served from your CdnBaseUrl.
  • Central Hub (Aura) — connects to a hosted Aura instance. Configure ApiBaseUrl and FrontendBaseUrl; a ServerKey is generated automatically on first startup. Both URLs must use https://.

Enable and choose a provider in the Audio section of config.yml, then:

  • Add songs to your arena
    • Ingame: /bp addsong <arenaName> <trackName> (with the Central Hub provider, track names are validated against the synced catalog — use /bp songs to browse it)
    • Or add them to the SongManager list in your arena config
  • Enable the use of web songs
    • Make sure UseWebSongs: true is set in your arena config

Sign setup

You can also use signs to let players join to the arena. Your sign should look something like this:

LineText
1[BlockParty]
2<arenaName>
3
4

Customize your sign messages

Head over to your config.yml in the plugins/BlockParty/ folder. You can edit the used text that is displayed on the sign right there.

Permissions

  • blockparty.admin.*
    • This provides access to all BlockParty commands (/bp admin)
  • blockparty.user.*
    • This provides access to basic BlockParty commands (/bp help)

About

BlockParty Plugin for Spigot/Bukkit servers

Resources

Stars

7 stars

Watchers

5 watching

Forks

Releases

Packages

Used by

Contributors

Languages