Skip to content

Feelings

Feelings are the core of BetterChatFeelings. Each feeling is a custom emote command that players can send to each other. Feelings are defined in feelings.yml, where each top-level key is the internal feeling name used for permissions and player data.

How It Works

When a player sends a feeling (e.g., /hug Steve), the plugin:

  1. Runs validation checks (cooldown, permissions, ignore list, toggles).
  2. Sends the sender message to the player who used the command.
  3. Sends the receiver message to the target player.
  4. Broadcasts the global message to all other online players.
  5. Spawns particles at the receiver's location.
  6. Plays sounds to both the sender and receiver.
  7. Optionally sends a Discord embed via DiscordSRV.

If only_use_global_messages is enabled in settings.yml, only the global message is sent to everyone.

Feeling Properties

PropertyTypeRequiredDefaultDescription
enabledBooleanNotrueWhether this feeling is registered as a command. Disabled feelings are not available in-game.
commandStringYesThe command name players will use (e.g., hug registers /hug).
aliasesListNo[]Alternative command names for this feeling.
descriptionStringNoShort description shown in the /feelings list.

Messages

Messages are nested under the messages key of each feeling and support MiniMessage formatting.

PropertyDescription
senderMessage shown only to the player who sent the feeling.
receiverMessage shown only to the player who received the feeling.
globalMessage broadcast to all other online players and the console.
discordPlain text message sent as a Discord embed (requires DiscordSRV integration).

Placeholders

PlaceholderDescription
%sender%The sender's raw username.
%receiver%The receiver's raw username.

PlaceholderAPI support: If PlaceholderAPI is installed, you can use any PlaceholderAPI placeholder directly in message templates. Placeholders are resolved using the sender as the player context and are applied after %sender% and %receiver% substitution. See Configuration for details.

Discord Embed Color

PropertyTypeDefaultDescription
discord_embed_colorStringInherited from settingsPer-feeling override of the Discord embed color in #RRGGBB format. Falls back to discordsrv_integration.default_embed_color in settings.yml.

Sounds

Sounds are nested under the sounds key. Each sub-key is an arbitrary name for the sound entry. Sounds are played to both the sender and receiver.

PropertyTypeRequiredDefaultDescription
nameStringYesThe Bukkit Sound enum name (e.g., ENTITY_CAT_PURREOW).
delayIntegerNo0Delay in ticks before playing the sound.
volumeFloatNo1.0Sound volume.
pitchFloatNo1.0Sound pitch.

Particles

Particles are nested under the particles key. Each sub-key is an arbitrary name for the particle entry. Particles are spawned at the receiver's location.

PropertyTypeRequiredDefaultDescription
nameStringYesThe Bukkit Particle enum name (e.g., HEART).
delayIntegerNo0Delay in ticks before spawning.
countIntegerNo1Number of particles to spawn.
position_offset.xDoubleNo0Horizontal spread on the X axis.
position_offset.yDoubleNo0Vertical spread on the Y axis.
position_offset.zDoubleNo0Horizontal spread on the Z axis.

Permissions

Each feeling has its own permission node: betterchatfeelings.feeling.<feeling_name>, where <feeling_name> is the top-level key in feelings.yml (not necessarily the command name). By default, all players can use all feelings unless restricted by a permissions plugin.

Example

yaml
hug:
  enabled: true
  command: hug
  aliases: [cuddle]
  description: 'Give someone a warm hug!'
  messages:
    sender: '<gold>You gave %receiver% a warm hug!'
    receiver: '<gold>%sender% gave you a warm hug!'
    global: '<gold>%sender% gave %receiver% a warm hug!'
    discord: '%sender% gave %receiver% a warm hug!'
  discord_embed_color: "#FF6B6B"
  sounds:
    purr:
      name: ENTITY_CAT_PURREOW
      delay: 0
      volume: 2.0
      pitch: 2.0
  particles:
    hearts:
      name: HEART
      delay: 0
      count: 9
      position_offset:
        x: 0.5
        y: 1
        z: 0.5

All rights reserved