ZcY7qCH.png
The game is played as follows:
You begin at a track and aim to guide your ball into the hole using the fewest strokes possible. The ball travels in the direction you're facing and moves at the speed you've set.
 
SibE6.gif
 
Features:
The plugin is highly configurable, allowing you to customize nearly every aspect. Some notable features of this game mode include:
  • Design Your Own Tracks: Unleash your creativity by designing personalized tracks.
  • Music Integration: Enhance the gaming experience by adding music through NBS files.
  • Per-server/Multi-arena: Set one game per server (BungeeCord) or multiple games per server.
  • MySql Support: Keep track of win streaks with efficient MySql integration.
  • PlaceholderAPI Support: Enjoy compatibility with PlaceholderAPI for streamlined integration.
  • Custom Models: Immerse players with support for custom models.
 
e8fsvvn.jpeg
(You can get the map on the picture here: Golf Party Default Map)
 
Setup:
  1. Get the plugin and put it in the plugins folder. Start the server and let the plugin generate the folders.
  2. Feel free to modify any settings in the configuration file as you see fit. Afterward, restart the server, and you'll be able to join with your new changes.
  3. For both the multi-games per server and single game on the server mode, you'll want to create at least one game. You can do so with the "/gp create [game_name]" command.
  4. Set up the game. Your inventory will now have tools.
  5. First, set the lobby location (waiting location before the game starts) using the blue terracotta.
  6. Next, go to your track and set the start and end positions with the stone and iron swords by pressing on the blocks.
  7. Next, you'll want to set the collider locations, which you set with a gold sword. Colliders are boxes that are used to define an edge for the track. They can be straight or diagonal. You set them by starting in one corner and then selecting the other corner. In the chat, you'll see two messages: "Location 1 set" and then "Placed!" (If this is confusing, I suggest watching a video.)
  8. Then you have two more tools for visual additions. The diamond sword is for making the edge, and you place it the same way as colliders. The goal display is to make the hole for the end smaller looking; you set it just by clicking on the hole.
  9. When you're done with one track, you can click on the yellow terracotta to start setting up the new track. If you keep clicking on the yellow block, you'll loop around the tracks.
  10. When you're done, save the game by clicking the green terracotta.
  11. Enjoy!
 
When setting up the game for older verions you will have to replace all the sounds and materials in config!
 
giphy.gif
 
Setup videos:
 
 
Game play:
 
Adding your own music:
For music, you'll need to download an additional plugin [NoteBlockAPI]
Restart the server and you'll get a folder in GolfParty called music, where you drop in the NBS files.
You'll need a Note Block Studio.
If you want to see where to get those files you can watch this video:
 
 
When you have a song in Note Block Studio just export it as NBS.
 
Commands:
/gp join - Join the best game.
/gp join [name] - Join the game.
/gp leave - Leave game.
/gp create [game_name] - Create a new game.
/gp edit [game_name] - Edit a game.
 
Permissions:
Permissions for balls follow this pattern:
This is permission for material BLACK_CONCRETE -> GolfParty.ball.BLACK_CONCRETE
This is permission for material PURPLE_CONCRETE -> GolfParty.ball.PURPLE_CONCRETE
 
PlaceholderAPI:
  Player stats:
  • %golfparty_player_uuid%
  • %golfparty_player_name%
  • %golfparty_player_games-played%
  • %golfparty_player_win-streak%
  • %golfparty_player_wins%
  • %golfparty_player_score%
  • %golfparty_player_placement%
  Game stats:
  • %golfparty_game-count_<game_name>%
  • %golfparty_game-state_<game_name>%
  Scoreboard:
  • %golfparty_scoreboard_waiting_date%
  • %golfparty_scoreboard_waiting_time%
  • %golfparty_scoreboard_waiting_status%
  • %golfparty_scoreboard_waiting_count-players%
  • %golfparty_scoreboard_waiting_count-max%
 
  • %golfparty_scoreboard_playing_game-time%
  • %golfparty_scoreboard_playing_round-time%
  • %golfparty_scoreboard_playing_strokes%
  • %golfparty_scoreboard_playing_n_1%
  • %golfparty_scoreboard_playing_n_2%
  • %golfparty_scoreboard_playing_n_3%
  • %golfparty_scoreboard_playing_n_4%
  • %golfparty_scoreboard_playing_n_5%
  • %golfparty_scoreboard_playing_color_1%
  • %golfparty_scoreboard_playing_color_2%
  • %golfparty_scoreboard_playing_color_3%
  • %golfparty_scoreboard_playing_color_4%
  • %golfparty_scoreboard_playing_color_5%
  • %golfparty_scoreboard_playing_name_1%
  • %golfparty_scoreboard_playing_name_2%
  • %golfparty_scoreboard_playing_name_3%
  • %golfparty_scoreboard_playing_name_4%
  • %golfparty_scoreboard_playing_name_5%
  Top stats:
 
Structure of top placeholders:
%golfparty_top_games-played_1_name%
 
golfparty_top_ - is always the same.
games-played_ - can be (games-played, win-streak, wins or score) - represents top 10 category.
1_ - is a placement number which can be from 1 .. 10.
name - this part can be (uuid, name, games-played, win-streak, wins, score or placement) - data of the player in this placement of the top 10 category.
 
Examples:
 
  • %golfparty_top_games-played_5_name%
  • %golfparty_top_win-streak_10_score%
  • %golfparty_top_wins_1_win-streak%
  • %golfparty_top_score_3_name%
Config:
# GOLF PARTY
# CREATED BY ALANDIODA
# VERSION 2.0.6

# MYSQL INFORMATION
mysql:
   enabled: false
   host: localhost
   port: 3306
   database: database
   username: username
   password: password
   tablename: GolfPartyData

# Top 10 update rate (in seconds, 0 = disable)
top_10_update_rate: 300

# Ball materials
#
# Here are default ball blocks which will be used in the game.
#
# The layout of the config is as follows:
# MATERIAL_NAME:
#    color: COLOR_WHICH_THE_BLOCK_REPRESENTS_IN_HEX
#    name: COLOR_DISPLAY_NAME
#    custom_model_data: NUMBER_CUSTOM_MODEL_DATA
#
# For older versions you can add data number to change the variant.
# MATERIAL_NAME-4:
#    color: COLOR_WHICH_THE_BLOCK_REPRESENTS_IN_HEX
#    name: COLOR_DISPLAY_NAME
#    custom_model_data: NUMBER_CUSTOM_MODEL_DATA
#

balls:
   RED_CONCRETE:
      color: 8c2020
      name: red
   ORANGE_CONCRETE:
      color: de6101
      name: orange
   YELLOW_CONCRETE:
      color: eead15
      name: yellow
   LIME_CONCRETE:
      color: 5ca618
      name: lime
   GREEN_CONCRETE:
      color: 485a23
      name: green
   CYAN_CONCRETE:
      color: 167687
      name: cyan
   LIGHT_BLUE_CONCRETE:
      color: 2287c4
      name: blue
   BLUE_CONCRETE:
      color: 2b2d8d
      name: blue
   PURPLE_CONCRETE:
      color: 631f9a
      name: purple
   MAGENTA_CONCRETE:
      color: a72f9d
      name: magenta
   PINK_CONCRETE:
      color: d3658e
      name: pink
   WHITE_CONCRETE:
      color: ccd2d3
      name: white
   LIGHT_GRAY_CONCRETE:
      color: 7b7b71
      name: light gray
   GRAY_CONCRETE:
      color: 35383c
      name: gray
   BLACK_CONCRETE:
      color: 090b10
      name: black
   BROWN_CONCRETE:
      color: 5f3a1f
      name: brown

# Materials for display
# not_reset_blocks are surfaces where the ball won't be reset if it lands on them.
# for this you don't have to specify the exact block you can just add a part of the material.
materials:
   edge: GRAY_CONCRETE
   floor: LIME_TERRACOTTA
   not_reset_blocks:
   - HARD_CLAY
   - STAINED_CLAY
   - TERRACOTTA
   - CONCRETE
   - _SLAB

# Settings
# Admin permission node
permission_admin: GolfParty.admin
permission_ball: GolfParty.ball
# Enable ball permissions
enable_ball_permissions: false

# Commands
# you can use <player> when not using player mode ( give <player> gold ).
# as well as <uuid>
win:
   command: 'give <player> minecraft:gold_ingot'
   player: false
lose:
   command: ''
   player: false

# End game
# you can use <player> or <uuid> for cmd.
end:
   command:
      enabled: false
      cmd: some command
   start_new_game: false

# Game mode:
# true = the whole server is for one game.
# false = have a lobby and games in one server.
is_game_per_server: false

# Scoreboard settings
scoreboard_enabled: true

# if is_game_per_server is set to true ignore this
lobby:
   world: world
   x: 0.0
   y: 64.0
   z: 0.0
   yaw: 0.0
   pitch: 0.0
   return_to_lobby_after_game_ends: true

# Start
# Start the game when at least 2 players join the game
start_on_player_count: 2

# Max players count
max_players_count: 10

# Round time in seconds
round_time: 120

# Game start countdown
countdown_time: 30

# Countdown sound
countdown:
   sound: BLOCK_NOTE_BLOCK_PLING
   play_per_sec: 5

# Ending
# Display effects before the game ends
win_celebration_seconds: 10

# After the game ends restart the server
when_ends_shutdown: false

# Effects
effects:
   enable_players_vanishing: true
   balls: true
   end:
      fireworks:
         enabled: true
         color: ff1778

# Formats
formats:
   commands:
      no_games_for_player: '&8[&aGolfParty&8] &cThere is no games you can join!'
      already_in_game: '&8[&aGolfParty&8] &cYou are already in a game!'
      not_in_game: '&8[&aGolfParty&8] &cYou are not in a game!'
      game_not_exist: '&8[&aGolfParty&8] &cA game with this name does not exist!'
      game_already_playing: '&8[&aGolfParty&8] &cThe game is already running!'
   connection:
      join: '&8[&aGolfParty&8] &fPlayer &a<player_name> &fhas joined the game! &8[&a<count_players>&8/&a<count_max>&8]'
      leave: '&8[&aGolfParty&8] &fPlayer &a<player_name> &fhas left the game! &8[&a<count_players>&8/&a<count_max>&8]'
      everyone_left:
         title:
            format: &cEveryone left!
            sub: &cStopping the game!
      rules:
         text: "RULES: Golf Party is a game where each player tries to get their own ball in to the hole with the least possible strokes. There are around 10 tracks (rounds) and you have 2 minutes to get the ball in to the hole. You're also limited to 12 strokes per track."
         color: "79BC53"
   display:
      score:
         title: "&a<score_name>"
         subtitle: "&7(&aYou scored with <track_strokes> strokes&7)"
         chat: "&8[&aGolfParty&8] &fYou scored with &a<track_strokes> &fstrokes!"
      help_buttons: "&aQ - Fly &7| &aClick - Throw &7| &aScroll - Change speed"
      speed: "&aSpeed: <speed>"
      fly_time_left: "&aFly time left: <time>"
      all_time_used: "&8[&aGolfParty&8] &cYou already used all of your fly time!"
      ball: "&8Ball"
      stroke: "<number> strokes"
      stroke1:
         title: "Hole in one"
         sub: "&8(&aYou scored whith 1 stroke&8)"
      stroke2:
         title: "Par"
         sub: "&8(&aYou scored whith 2 strokes&8)"
      stroke3:
         title: "Bogey"
         sub: "&8(&aYou scored whith 3 strokes&8)"
      stroke4:
         title: "Double bogey"
         sub: "&8(&aYou scored whith 4 strokes&8)"
      stroke5:
         title: "5 strokes"
         sub: "&8(&aYou scored whith 5 strokes&8)"
      stroke6:
         title: "6 strokes"
         sub: "&8(&aYou scored whith 6 strokes&8)"
      stroke7:
         title: "7 strokes"
         sub: "&8(&aYou scored whith 7 strokes&8)"
      stroke8:
         title: "8 strokes"
         sub: "&8(&aYou scored whith 8 strokes&8)"
      stroke9:
         title: "9 strokes"
         sub: "&8(&aYou scored whith 9 strokes&8)"
      stroke10:
         title: "10 strokes"
         sub: "&8(&aYou scored whith 10 strokes&8)"
      stroke11:
         title: "11 strokes"
         sub: "&8(&aYou scored whith 11 strokes&8)"
      stroke12:
         title: "12 strokes"
         sub: "&8(You scored whith 12 strokes&8)"
      stroke_ran_out:
         title: "Ran out of shots"
         sub: "&8(&aYou ran out of shots&8)"
   countdown:
      chat:
         format: '&8[&aGolfParty&8] &fStarting in &a<time>&f!'
         display_per_sec: 5
      title:
         format: '&fStarting in &a<time>'
         sub: '&aThe game will start soon!'
         display_per_sec: 5
   winning:
      title:
         format: '&a&l<name> &f&lhas won!'
         sub: ''
   win_display:
      chat:
      - '&e&l<num_1_name> &f&lhas won the game!'
      - ''
      - '----------------------------'
      - '&6&l1th &f<num_1_name>'
      - '&6&l2nd &f<num_2_name>'
      - '&6&l3rd &f<num_3_name>'
      - '----------------------------'
   new_round:
      title: '&fRound <round_number>'
      subtitle: '&fYour color is <color><color_name>'
      chat: '&8[&aGolfParty&8] &fYour color is <color><color_name>&f.'
   ball_reset: "&8[&aGolfParty&8] &cBall reset!"
   game:
      chat:
         enabled: true
         waiting: '&7<player_name>: &f<message>'
         playing: '&7<player_name>: &f<message>'
         spectating: '&8[SPEC] &7<player_name>: <message>'

# Status display
status:
# This will be shown on waiting scoreboards <lobby_status>
   gamestate:
      WAITING: Waiting
      STARTING: Starting
      PLAYING: Playing
      ENDING: Ending

# Scoreboards
scoreboard:
   waiting:
      title: Golf Party
      lines:
      - ''
      - '&7<date>'
      - '&7<time>'
      - '&aServer: &fserver_id'
      - ''
      - '&aStatus: &f<lobby_status>'
      - '&aPlayers: &f<count_players>&7/&f<count_max>'
      - ''
      - '&eplay.myserver.net'
   playing:
      title: Golf Party
      lines:
      - ''
      - '&aTime: &f<game_time>'
      - '&aRound: &f<game_round_time>'
      - ''
      - '&a<n_1>. <player_color_1><player_name_1>'
      - '&a<n_2>. <player_color_2><player_name_2>'
      - '&a<n_3>. <player_color_3><player_name_3>'
      - '&a<n_4>. <player_color_4><player_name_4>'
      - '&a<n_5>. <player_color_5><player_name_5>'
      - ''
      - '&aStrokes: &f<player_strokes>'
      - ''
      - '&eplay.myserver.net'
 
Before you buy the plugin make sure to read carefully this page just so you'll understand what you're getting.
 
Terms and conditions:
This plugin cannot be refunded.
You aren't allowed to redistribute/resell this plugin.
You aren't allowed to modify or decompile the plugin.