★NoteBlockPlus★

★NoteBlockPlus★

173 Downloads

NoteBlokPlus makes it more convenient/comfortable to use note blocks on your server. It uses different mechanics for adjusting the pitch (tone) both up and down and adds a user-friendly visual design. Despite the fact that all the functionality of the plugin is designed for one block, it is very customizable and convenient. Even if you are from countries where the musical culture uses a different notation, you can easily customize this.
The mechanics of interacting with the note block are different from the standard minecraft mechanics. Normal interaction with the note block  (standing straight) plays a sound. To change the pitch, you must use the sneak mode. The rest of the mechanics of the note block are preserved. The note block must still have an air block on top to make sound, and the bottom block determines the type of instrument. Player statistics continue to update according to the standard mechanics ("Note Blocks Played" / "Note Blocks Tuned")
Interaction with the note block is visualized on the screen, and displays not only the name of the note, but also the piano keyboard itself with the key pressed.
 
1. Play notes (straight mode).
Attacking or interacting with a note block while standing straight, plays the note. At the same time, the attack continues to affect the destruction of the block. In creative mode, the attack breaks the block without playing a note. Keep your sword in hand to work around this situation.
2. Adjust the note pitch/tone (sneak mode).
Attack while sneaking - decreases the pitch (tone). It also continues to affect the block, destroying it. In creative mode, the block breaking is canceled.
Interact while sneaking - increases the pitch (tone). Also interacts with the object in the hand, if it is not empty.
Playing the note and adjusting the pitch is accompanied by a message to the player that contains the name of the note and the piano keyboard with the key pressed. The message can be displayed in the center of the screen (titlesubtitle), at the bottom of the screen (action bar) and in the player's chat. You can display arbitrary text in the message, as well as the name of the current note and/or a pseudo graphic representation of the piano keyboard with the key pressed.
Message display settings are set in the configuration file.
/noteblockplus-admin [<subcommand>] - the main administrative command.
Alias: /nbp-admin
Permission: noteblockplus.admin
Defaults to op.

Subcommands:
/nbp-admin <on|activate|enable|start> - activates the plugin mechanics of player interaction with the note block.
/nbp-admin <off|deactivate|disable|stop> - deactivates the plugin mechanics of player interaction with the note block.
/nbp-admin <reload> - reloads the plugin configuration.
/nbp-admin [help] - show help.

Synopsis:
< > - required parameter
[ ] - optional parameter
| - "one of"
# The version of the config.yml
version
: 1

# Activate note block mechanics on startup. Use command nbp-admin on/off to manually activate/deactivate
# note block mechanics. Defaults to true.
activate-on-start
: true

# ABOUT INHERITANCE
# Some sections can support inheritance (default values) from another configuration yaml file.
# These sections use the string property "inheritance", which is optional.
# The value is the path of the configuration yml-file relative to the folder of this file.
# You can still override all or some of the properties after inheritance.
# Be aware that properties with null values (~) do not override anything and default values will be used.
# Inherited files can also be inherited from other files, etc. In such files, the property 'inheritance'
# defines the path to the next one, but relative to the folder where the file itself is located.

####################################################################################################################
# Textual representation of notes.
# Supports inheritance (see ABOUT INHERITANCE).
notes
:
  # Currently available:
  # Relative path               Notation
  # locale/notes.yml            C♯
  # locale/notes_English.yml    C sharp
  # locale/notes_German.yml     Cis (H instead B)
  # locale/notes_Dutch.yml      Cis
  # locale/notes_Neo-Latin.yml  Do♯
  # locale/notes_Byzantine.yml  Ni diesis
  # locale/notes_Japanese.yml   嬰ハ
  # locale/notes_Hindustani.yml रे॒
  # locale/notes_Carnatic.yml   Shuddha Ri
  # locale/notes_Bengali.yml    ঋ
  # locale/notes_Russian.yml    До♯
  inheritance
: locale/notes_Neo-Latin.yml

  # The note that will correspond to the lowest note of the note block (ATM the lowest note in minecraft is F#0).
  # In this way, you can simulate the displacement of the notes range when displayed.
  # Defaults to 'F#0'
  first-note-as
: ~

  # You can define note representations with three ways:
  #
  # 1. Basic formatting.
  # This method has the lowest priority and should be used first if possible. The note will be displayed as text
  # with three consecutive parts: tone, sharpness (if required) and octave number. Each part can be surrounded
  # by a prefix and a suffix. The entire note can also be surrounded by a prefix and suffix. The note construction
  # scheme will be as follows:
  #   note-prefix
  #     tone-prefix + TONE + tone-suffix
  #     sharped-prefix + sharped-symbol + sharped-suffix
  #     octave-prefix + OCTAVE NUMBER + octave-suffix
  #   note-suffix
  # The order of the tone, sharpness and octave number is determined by the parameters "swap-tone-sharp" and
  # "put-octave-first". To swap the output of tone and sharpness set "swap-tone-sharp" parameter to true.
  # To place the octave number at the beginning set "put-octave-first" parameter to true.
  # TONE will take on values as tone names. By default they are C,D,E,F,G,A,B (from Do to Si).
  # You can override some or all of them with custom names. For example:
  #   C: 'Do'
  # OCTAVE NUMBER will take on values as the zero-based index of the octave to which the current note belongs.
  # By default in minecraft the first octave (index=0) will contain the first 12 notes from F#0 to E0. The second
  # octave (index=1) will contain the next 12 notes from F#1 to E1. And the last octave (index=2) will contain
  # the last 24th note F#2.
  # It is not always convenient when the octave starts with F#. It is more usual when the octave starts from
  # the note Do. To redefine the note from which the octave will begin, you can use the "base-octave-at" parameter.
  # The base octave (one-lined) will have an index of 0. You can also change the display of the index itself.
  # To do this, use a parameter of the form "octave[n]", where instead of "n" substitute the desired index.
  # For example:
  #   octave[-1]: 'small'
  #   octave[0]: 'one-lined'
  #
  # 2. Formatting for sharp tone notation.
  # This method has a higher priority than the "Basic formatting" and is used when it is necessary to define
  # individual sharped notes within an octave that have their own notation. In this case, the note construction
  # scheme will be as follows:
  #   note-prefix
  #     tone-prefix + SHARPED TONE + tone-suffix
  #     octave-prefix + OCTAVE NUMBER + octave-suffix
  #   note-suffix
  # SHARP TONE will take on the values specified by the parameters "C#", "D#", "F#", "G#" and "A#". For example:
  #   A#: 'Si bemolle' # instead 'La diesis'
  # OCTAVE NUMBER has the same meaning as described in "Basic formatting".
  #
  # 3. Formatting for fully qualified note notation with octave.
  # Finally, you can define a format to display a specific note in a specific octave. This method has the highest
  # priority and is used in exceptional situations. The note construction scheme will be as follows:
  #   note-prefix + FULLY QUALIFIED NOTE + note-suffix
  # FULLY QUALIFIED NOTE will take values that will be determined by the parameters in any of the following forms:
  #   "F#0" - where "0" - is the zero-based index of the octave.
  #   "note[0]" - where "0" - is the zero-based index of the note.
  #   "[0]" - where "0" - is the zero-based index of the note.
  # For example:
  #   C0: 'Middle Do'
  #   C#0: 'Do Fa at the base (one-lined) octave'
  #   note[12]: 'Fa diesis at the base (one-lined) octave'
  #   [24]: 'Fa diesis at second (two-lined) octave'

  # Prefix and suffix to display before and after the note, respectively.
  # No default values
  note-prefix
: ~
  note-suffix
: ~

  # Prefix and suffix to display before and after the tone of the note, respectively.
  # No default values
  tone-prefix
: ~
  tone-suffix
: ~

  # TONE parameters (see 1. Basic formatting).
  # Defaults to 'C', 'D', 'E', 'F', 'G', 'A', 'B'
  C
: ~
  D
: ~
  E
: ~
  F
: ~
  G
: ~
  A
: ~
  B
: ~

  # SHARPED TONE parameters (see 2. Formatting for sharp tone notation).
  # No default values (Basic formatting will be used instead).
  C#: ~
  D#: ~
  F#: ~
  G#: ~
  A#: ~

  # FULLY QUALIFIED NOTE parameter names examples (see 3. Formatting for fully qualified note notation with octave).
  # No default values (Basic or sharped tone formatting will be used instead).
  F#0: ~
  note[12]
: ~
  [24]
: ~

  # Prefix and suffix to display before and after the sharped symbol, respectively.
  # No default values
  sharped-prefix
: ~
  sharped-suffix
: ~

  # Sharped symbol.
  # Defaults to '#'
  sharped-symbol
: ~

  # Swaps the output of tone and sharpness. To place the sharpness in front of the tone, set this parameter to true.
  # Defaults to false (tone first)
  swap-tone-sharp
: ~

  # Prefix and suffix to display before and after the octave index, respectively.
  # No default values
  octave-prefix
: ~
  octave-suffix
: ~

  # Octave number position. To place an octave number before tone and sharpness, set this parameter to true.
  # Defaults to false (octave number at the end)
  put-octave-first
: ~

  # The note at which the base (one-lined) octave begins. The base octave will have index 0. An octave below this one
  # will have a negative index, and above it will have a positive one. See octave[xx] to override individual indices.
  # Defaults to 'F#0'
  base-octave-at
: ~

  # You can override individual octave indices
  octave[-1]
: ~

####################################################################################################################
# Pseudo graphic representation of the piano keyboard with a pressed key
# Supports inheritance (see ABOUT INHERITANCE).
piano
:
 # Currently available:
  # Relative path       Description
  # locale/piano.yml    Basic piano keyboard
  inheritance
: locale/piano.yml

  # The note that will correspond to the lowest note of the note block (F#0). In this way, you can simulate
  # the displacement of the piano keys range when displayed.
  # Defaults to 'F#0'
  first-note-as
: ~

  # Whether to expand piano keyboard if left/right keys are sharped.
  # The keyboard will be expanded one key left/right to hold white keys on the sides.
  # These keys will be disabled and use disabled colors (see white-color-disabled, black-color-disabled)
  # Defaults to false
  expand-on-sharp
: ~

  # Prefix and suffix to display before and after the piano keyboard, respectively.
  # No default values
  piano-prefix
: ~
  piano-suffix
: ~

  # Symbols for displaying keys of the piano keyboard.
  white-key
: ~ # Defaults to '▍' ("\u258d")
  white-key-narrow
: ~ # Defaults to the "white-key" parameter
  white-key-narrow-left
: ~ # Defaults to the "white-key-narrow" parameter
  white-key-narrow-right
: ~ # Defaults to the "white-key-narrow" parameter
  black-key
: ~ # Defaults to '▎' ("\u258e")

  # Colors for regular keys of the piano keyboard.
  white-color
: ~ # Defaults to '§f' (WHITE)
  black-color
: ~ # Defaults to '§0' (BLACK)

  # Colors for pressed keys of the piano keyboard.
  white-color-pressed
: ~ # Defaults to '§4' (DARK_RED)
  black-color-pressed
: ~ # Defaults to '§4' (DARK_RED)

  # Colors for disabled keys of the piano keyboard (that are outside the legacy minecraft note range).
  # It occurs when expanding the piano keyboard (see expand-on-sharp).
  white-color-disabled
: ~ # Defaults to '§7' (GRAY)
  black-color-disabled
: ~ # Defaults to '§8' (DARK_GRAY)

####################################################################################################################
# Messages.
# Supports inheritance (see ABOUT INHERITANCE).
messages
:
 # Currently available:
  # Relative path        Description
  # locale/messages.yml  Default messages in English
  inheritance
: locale/messages.yml

  # Messages. The general format is <key>: <message>
  # Some messages support placeholders.
  # The placeholder syntax is '%placeholder%'. To include the single literal '%' in messages type it twice.
  # Examine the resource 'locale/messages.yml' in the plugin jar-file to get all the actual default messages.

  # Help for the nbp-admin command.
  nbp-admin-help
: ~

  # The message when configuration is reloaded (reload command).
  config-reloaded
: ~

  # The message when plugin mechanics is activated (activate command).
  plugin-activated
: ~

  # The message when plugin mechanics has already been activated (activate command).
  plugin-already-activated
: ~

  # The message when plugin mechanics is deactivated (deactivate command).
  plugin-deactivated
: ~

  # The message when plugin mechanics has already been deactivated (deactivate command).
  plugin-already-deactivated
: ~

  # The message when config version is incorrect.
  # Placeholders:
  #   %EXPECTED% - The version that was expected in config.yml
  #   %VERSION% - The version that was found in config.yml
  error-version
: ~

  # The message when inherited file not found.
  # Placeholders:
  #   %FILE% - The file that was specified in inheritance but was not found.
  error-inheritance-no-file
: ~

  # The message when looping occurs in the chain of inherited files.
  # Placeholders:
  #   %FILE% - The file specified in inheritance that caused the loop.
  error-inheritance-loop
: ~

  # The message when a player tries to execute an unknown command.
  error-unknown-command
: ~

  # The messages when a player clicks a note block.
  # The "noteblock-click" section allows to configure when, where and what messages to display when the player
  # clicks on the note block.
  # Messages can be defined for:
  #   title and/or subtitle - two lines at the center of the screen.
  #   action-bar - one line above the hot bar.
  #   chat - one or more lines of text in the player chat.
  # All messages support placeholders:
  #   %NOTE% - The pressed note.
  #   %PIANO% - The piano keyboard with pressed note.
  noteblock-click
:
    title
: ~
    subtitle
: ~
    action-bar
: ~
    chat
: ~
    # The "while-straight" section overrides messages when the player clicks a note block while standing straight.
    # This allows the player to play a note, but not tune it.
    while-straight
:
      title
: ~
      subtitle
: ~
      action-bar
: ~
      chat
: ~
    # The "while-sneaking" section overrides messages when the player clicks a note block while sneaking.
    # This allows the player to tune the note.
    while-sneaking
:
      title
: ~
      subtitle
: ~
      action-bar
: ~
      chat
: ~
★★
This is a beta version of the plugin. Please, find and post on Issue page (NOT IN COMMENTS) any bugs, bugs in documentation (my english is not very good), other comments and suggestions, as well as translations into other languages (in the form of configuration files). They will be taken into account in the new version of the plugin.
Source codes will be published on github after the first final version of the plugin is released.