Zrips / CMI

117 stars 99 forks source link

CMI Double message error #308

Closed 0xC1A551C closed 6 years ago

0xC1A551C commented 6 years ago

Description of issue or feature request:

There seems to be a double chat. I am using venturechat as the main chat, but when I switch to another server I see the full chat again but in white.

https://i.imgur.com/QXKi8eg.png https://i.imgur.com/QXKi8eg.png

IGNORE IF YOU ARE SUBMITTING A FEATURE REQUEST

ERROR (IGNORE IF YOU HAVE NO ERROR):

####################
## PASTE ERROR HERE ##
####################

CONFIG SECTION (IGNORE IF NOT RELEVANT):

#####################################
## PASTE RELEVANT CONFIG SECTION HERE ##
#####################################

CMI version: 7.7.0.0 Server Type (Spigot/Paperspigot/etc): Newest paperspigot Server Version (using /ver): 1.12.2 No console error.

MCTyler commented 6 years ago

https://github.com/Zrips/CMI/issues/307

Zrips commented 6 years ago

@0xC1A551C Could you provide Cmi config file and venturechat one for testing? As currently cant reproduce issue.

0xC1A551C commented 6 years ago

Here is the venturechat config

#===============================================================
#                     VentureChat Config                       =
#                      Author: Aust1n46                        =                     
#===============================================================

# - regex1,regex2
# Simple regex tips: Use \b to "cut" a section of the word or phrase.  Example: \bass,donuts
# Example filtered sentence: You are an ass.  Will become: You are an donuts.  
# Example filtered sentence: You caught a bass.  Will stay: You caught a bass.  
# Example filtered sentence: You are an asshole.  Will become: You are an donutshole.
# Default filters by Jabelpeeps
filters:
- (\b.?anus),donuts

# command without the /
blockablecommands:
- vote
- me

# blacklisted nicknames 
nicknames:
- Notch
- Admin
- Owner
- Moderator
- Fuck
- Join
- Name
- Gay

nickname-in-tablist: true

commandspy:
  worldeditcommands: true

antispam:
  enabled: false

  # number of messages to be spam
  spamnumber: 5

  # amount of time in seconds for it to be spam
  spamtime: 10

  # amount of time in minutes for the mute to last, use 0 for untimed mute
  mutetime: 10

# Logging chat and commands to a mysql database 
mysql:
  enabled: false
  user: User
  port: 3306
  password: Password
  host: localhost
  database: Database

# Login and logout messages
# Use Default for the vanilla login and logout messages
login:
  enabled: true
  message: login
logout:
  enabled: true
  message: logout

# Loglevel feature is still in the works for adding of debug messages
# Valid loglevels:
# Info: Regular logging
# Debug: Show extra messages and caught errors for debugging
# Severe: Only show severe messages
loglevel: info

# saveinterval is in minutes
saveinterval: 30

# The time in seconds between each check to remove timed mutes
unmuteinterval: 60

# The color of the private messages
tellcolor: blue

# Enables or disabled BungeeCord messaging
bungeecordmessaging: true

# This will allow vanished players to be exempt from being sent private messages, and will act as if they aren't online
vanishsupport: true

# {playerto} : player receivings name
# {playerfrom} : player sendings name
# use Default for the basic formatting
tellformatto: '&fYou &d-> &f{playerto} &8&l»&7'
tellformatfrom: '&f{playerfrom} &d-> &fYou &8&l»&7'
tellformatspy: '&c[Spy] &f{playerto} &7-> &f{playerfrom}&8: '
replyformatto: '&fYou &d-> &f{playerto} &8&l»&7'
replyformatfrom: '&f{playerfrom} &d-> &fYou &8&l»&7'
replyformatspy: '&c[Spy] &f{playerfrom} &7-> &f{playerto}&8: '

# {sender} : player sendings name
# {player} : player receivings name
# {time} : time mail was sent
# use Default for the basic formatting
mailformat: Default

# {host} : party hosts name
# {player} : player name
# use Default for the basic formatting
partyformat: Default

broadcastafk: false
formatcleaner: true

# If true, /ignore will block chat from the ignored player as well as PM's
ignorechat: false

# The message shown to players alerting them no one is in the channel to hear them
emptychannelalert: "&6No one is listening to you."

messageremoverpermissions: '&cYou need additional permissions to view this message!'

# The name of the group is the permissions node for the format
# Example: mineversechat.json.Owner is the node for the group Owner
# A lower priority overrides a higher priority if a player has more than 1 group
# Possible options for click_name and click_prefix are suggest_command, run_command, and open_url
jsonformatting:
  default: # This default format is required!  Do not delete or rename it!
    priority: 2147483647 # Integer.MAX_VALUE
    hover_name:
    - '&aTown: &a{mvdw_towny_town_name}'
    - ''
    - '&7Blocks Mined: &f{statistic_mine_block}'
    - '&7Rank Progress: &f{mvdw_ezrankspro_progress}%'
    - '&7Gem Balance: &aⒼ{vault_eco_balance_formatted}'
    - '&7Time Played: &a{statistic_time_played}'
    click_name: 'suggest_command'
    click_name_text: '/msg {player_name}'
    hover_prefix:
    - '&aTown: &a{mvdw_towny_town_name}'
    - ''
    - '&7Blocks Mined: &f{statistic_mine_block}'
    - '&7Rank Progress: &f{mvdw_ezrankspro_progress}%'
    - '&7Gem Balance: &aⒼ{vault_eco_balance_formatted}'
    - '&7Time Played: &a{statistic_time_played}'
    click_prefix: 'run_command'
    click_prefix_text: '/help'
    hover_suffix:
    - '&aTown: &a{mvdw_towny_town_name}'
    - ''
    - '&7Blocks Mined: &f{statistic_mine_block}'
    - '&7Rank Progress: &f{mvdw_ezrankspro_progress}%'
    - '&7Gem Balance: &aⒼ{vault_eco_balance_formatted}'
    - '&7Time Played: &a{statistic_time_played}'
    click_suffix: 'suggest_command'
    click_suffix_text: '/msg {player_name}'

# The icon is the block shown in the GUI
# The text is the display name of the block icon
# Include a slash (/) before the command   
# Permissions are the name of the button and automatically include "venturechat." 
# Example: mute equals venturechat.mute
venturegui:
  mute:
    icon: 'REDSTONE'
    durability: 0
    text: '&cMute {player_name}'
    permission: 'mute'
    command: '/mute {player_name} {channel} 10'
    slot: 1
  unmute:
    icon: 'DIAMOND_BLOCK'
    durability: 0
    text: '&bUnmute {player_name}'
    permission: 'mute'
    command: '/unmute {player_name} {channel}'
    slot: 2
  ban:
    icon: 'REDSTONE_BLOCK'
    durability: 0
    text: '&4Ban {player_name}'
    permission: 'ban'
    command: '/ban {player_name}'
    slot: 3
  banip:
    icon: 'BARRIER'
    durability: 0
    text: '&4Ban IP {player_name}'
    permission: 'ban'
    command: '/banip {player_name}'
    slot: 4
  removemessage:
    icon: 'DIAMOND_AXE'
    durability: 0
    text: '&cRemove Message'
    permission: 'removemessage'
    command: '/removemessage {hash} true'
    slot: 7

guiicon: '&c [✓]'
guitext: '&cOpen Moderation GUI'
guirows: 1

# All clickable URL's will be underlined if set to true
underlineurls: true

# broadcast information
broadcast:
  color: red
  permissions: venturechat.adminchannel
  displaytag: '[Broadcast]'

# Use $ to include arguments into the message  
# Valid component types are:
# Command: Sends a message or command in chat
# Message: Sends a message to the player
# Broadcast: Sends a broadcast to all players on the server
# Permissions automatically include "venturechat." 
# Example: permissions: alert equals venturechat.alert
# Use None for no permissions
# The number of arguments is the minimum number of required arguments, use 0 for no required arguments
alias:  
  alert:
    arguments: 1
    permissions: alert
    components:
    - 'Broadcast: &c<Alert> $'
  tell:
    arguments: 0
    permissions: None
    components:
    - 'Command: /vtell$'
  whisper:
    arguments: 0
    permissions: None
    components:
    - 'Command: /vwhisper$'
  w:
    arguments: 0
    permissions: None
    components:
    - 'Command: /vwhisper$' 
  msg:
    arguments: 0
    permissions: None
    components:
    - 'Command: /vmessage$' 
  message:
    arguments: 0
    permissions: None
    components:
    - 'Command: /vmessage$'

# Valid modes are:
# * Everyone
# v Voice and up
# h HalfOp and up
# q Owner
# o Op and up
# Enter components like console commands
# Arguments are accepted
irc:
  enabled: false
  nick: 'VentureChatBot'
  login: 'VentureChatbot'
  server: 'irc.freenode.net'
  port: 6667
  channel: '#venturechat'
  trustallcertificates: true
  # the delay before the bot logs into the channel in seconds
  # increase the time if the bot fails to login
  channeldelay: 60
  commands:
    mute:
      mode: 'v'
      components:
      - 'mute'
    ban:
      mode: 'o'
      components:
      - 'ban'
    kick:
      mode: 'v'
      components:
      - 'kick'

# color = [channel] color
# chatcolor = text color
# cooldown is in seconds
# bungeecord overrides distance
# channel permissions are configurable
# channels can be changed, and new channels can be created
# Permissions automatically include "venturechat." 
# Example: permissions: staff equals venturechat.staff
# Use None for no permissions

# Legacy Placeholders:  
# Use PlaceholderAPI
# {name} : player name
# {nickname} : player nickname or name if they have no nickname
# {prefix} : player prefix and color
# {suffix} : player suffix and color
# {servername} : name of the server in server.properties
# {herolevel} : heroes hero level
# {heroclass} : heroes hero class
# {heroxp} : heroes hero xp
# {herosecondclass} : heroes second class
# {party} : heroes party
# {herosecondmaster} : heroes second class master
# {heromaster} : heroes class master
# {herosecondlevel} : heroes second class level
# {herosecondxp} : heroes second class xp
# Use '' or "" around format, example: '[&2global&f] {prefix}{name}&2:'
# You must have prefixes and suffixes set in a Vault compatible permissions plugin to avoid errors
# Use "" as the prefix or suffix to have none
# use Default for the basic formatting
channels:
  Global:
    color: white
    chatcolor: white
    mutable: true
    filter: true
    autojoin: true
    default: true
    distance: 0
    cooldown: 0
    bungeecord: true
    alias: global
    permissions: None
    format: '{javascript_yt_rank} {suffix} {prefix} &f{nickname} &8&l»&f'
    irc: false
  Staff:
    color: red
    chatcolor: yellow
    mutable: false
    filter: false
    autojoin: false
    default: false
    distance: 0
    cooldown: 0
    bungeecord: true
    alias: stchat
    permissions: staffchannel
    format: '&4(Staff) {prefix} {nickname} &8&l»'
    irc: false
  Donator:
    color: dark_purple
    chatcolor: dark_purple
    mutable: true
    filter: false
    autojoin: true
    default: false
    distance: 0
    cooldown: 0
    bungeecord: true
    alias: dchat
    permissions: donatorchannel
    format: '{javascript_yt_rank} {suffix} {prefix} &f{nickname} &8&l»&f'
    irc: false
  Town:
    color: dark_green
    chatcolor: dark_green
    mutable: true
    filter: true
    autojoin: true
    default: false
    distance: 0
    cooldown: 0
    bungeecord: true
    alias: tchat
    permissions: None
    format: '&2({town}) {prefix} &f{nickname} &8&l»'
    irc: false
  Nation:
    color: gold
    chatcolor: gold
    mutable: true
    filter: true
    autojoin: true
    default: false
    distance: 0
    cooldown: 0
    bungeecord: true
    alias: nchat
    permissions: None
    format: '&6({nation}) {prefix} &f{nickname} &8&l»'
    irc: false

Here is the CMI config

# Language file you want to use
Language: EN
storage:
  # storage method, can be MySQL or sqlite
  method: MySQL
mysql:
  # Requires Mysql.
  username: server
  password: none
  hostname: 1.1.1.1:3306
  database: server
  tablePrefix: CMI_
  # If you have no clue what these values does, then keep it at default values
  autoReconnect: true
  useSSL: true
  verifyServerCertificate: false
# Auto save interval in seconds
# This will define how often to write down data into data base
# Save operation will not be performed if there is no changes to save
# !ATTENTION! Keep it in low numbers, around 60 seconds
# Minimal interval is 10 seconds
AutoSaveInterval: 60
Economy:
  # Enable or disable CMI economy in general
  # In case CMIInjector is present, then this will be set to true automatically.
  Enabled: true
  # Determines if player needs to confirm money payment by clicking on chat message
  Confirmation: false
  # Determines max amount of cheque player can create
  # Set it to 0 to remove limit
  MaxChequeValue: 1.0E8
  BalTop:
    # List of players to exclude from baltop list
    Exclude:
    - server
    # List of names to exclude from baltop
    # Can be used to filter out towny towns
    ExcludeStartingWith:
    - town_
    - town-
    - towny_
    - towny-
  Global:
    # Starting amount of money players will have
    StartingAmount: 100.0
    # Minimal amount, can go into negative if needed
    MinimalAmount: 0.0
    # Maximal amount of money player can have. Set to -1 to disable this limit
    MaximumAmount: 1.0E8
    # Currency symbol to be used when showing balance or similar
    CurrencySymbol: Ⓖ
FileSave:
  # Change this to true only if you have issues with drives I/O and you need to save players files in async mode to lower waiting time for mc server
  Async: false
Optimizations:
  # Enables or disables maintenance mode
  Maintenance: false
  # Sets indicator when creating elevator signs. Its case insensitive
  ElevatorIndicator: '[CMIElevator]'
  # Format used for displaying money
  MoneyFormat: '###,###.###'
  # Do you want to record sell hand actions into file
  SellLog: true
  # When set to true players with same name but different capitalization will be denyied from joining server to avoid posible issues. In example if on first day player Zrips joined server and on second day player zRips tries to join server, he will be rejected
  # RECOMMENDED to keep this at true
  PreventDifferentCapitalizationNames: false
  # When this set to true by using any command, requiring players name, in case plugin cant determine player by given full name, then partial matches from online players will be used. In example: /cmi heal rips can heal player Zrips 
  # Useful when you have players with complicated names
  PartialPlayerName: false
  # Enables DiscordSRV plugin support for messages
  DiscordSRVSupport: true
  # When set to true, commands in help page will be sorted alphabeticaly
  # If set to false, commands will be sorted by priority
  CommandSorting: true
  # When set to true, commands in help page starting with /cmi will get shortened by hiding base command. Example /cmi back becomes /back
  # Keep in mind that this is automatic feature if alias or custom alias is set to that command
  # And keep in mind that this is only cosmetic change and will not impact command usage
  RemoveLabel: false
  # When set to true, all players can see missing permission node by hovering over error message
  # When set to false only players with cmi.permisiononerror permission node can see missing permission node
  PermisionOnError: true
  # When set to true, each time player tries to use something he doesnthave permission, message will be shown in console
  PermisionInConsole: true
  Teleport:
    # Set this to true if you having issues with entities not being teleported with you
    # Keep in mind that this is work arround for some plugins (AKA Towny) and can have undesired results in some situations
    VehicleWorkArround: false
    # Set to true if you want to use tp commands as /cmi tp [WhoYouWantToTeleport] [WhereToTeleport] when its false, its /cmi tp [whereToTeleport] [WhoYouWantToTeleport]
    SwitchPlaces: true
    # Applies for tpa, tpahere and tpaall only
    # If set to true then player will be teleported to current player position after accepting teleport request
    # If set to false then player will be teleported to player at which teleport request was issued
    CurrentLoc: true
    # Default distance for jump command. Can be overriden with cmi.command.jump.[amount] permission node
    JumpDefault: 50
    # Defines time in seconds for accepting tpa or tpahere requests
    TpaTime: 60
    # Defines time in seconds for player being teleported after tpa or tpahere is being accepted
    TpaWarmup: 0
    # Defines if player can move when tpa or tpahere is being accepted
    TpaMove: true
    # Defines time in seconds for blocking player teleport offers after denying their request
    TpaBlock: 120
    # Defines time in seconds for bypassing prevented teleportation to unsafe location
    TpBypass: 15
    BlackListedItems:
      # Option to prevent player teleportation when he has blacklisted items in hies inventory. Can be bypassed with cmi.teleport.bypassblacklist
      Enabled: false
      EnabledFor:
        tp: true
        tpa: true
        tpahere: true
        warp: true
        home: true
        spawn: true
      # Item and amount (if not defined, defaults to 0) we want to protect
      # Separate amount with : in example IronOre:5 what will limit ironOre block in players inventory up to 5, more than that and player cant teleport
      List:
      - Diamond
      - DiamondBlock
      - DiamondOre
      - ironore:5
    # Back location will not be triggered if player teleports closer than defined amount of blocks
    BackMinDistance: 5
  IP:
    # How long in second to wait until players ip is being recorded into data base
    # This only applies for offline servers to allow for player first of all to login before recording ip
    # Try to keep this value lower than your login plugin's allowed login time
    delay: 30
  # Max amount of hp you can get when using /cmi maxhp command
  MaxHp: 200
  # When set to true, player play time will be grabbed from user stats file instead of from CMI user data file
  # This can help to get more accurate play time if you have older server and using players stats feature
  PlayTimeFromStats: false
  # Do you want to use CMI playtime tracking
  # While this is enabled, player play time will be record for each hour he playied in server
  CMIPlayTimeTracking: true
  OnDurabilityLoss:
    # Do you want to inform player when item durability gets lower than set treshhold
    # Player should have cmi.informDurability
    Use: true
    Percentage: 10
  OnLimitedItemUse:
    # Informs about left uses of item
    Inform: true
  # Can disable messages outputed durring start for world chunk checks
  DisableWorldChunkCheckInfo: true
  # Can prevent animals or monsters entering boats
  PreventEntityBoatEnter:
    Monsters: false
    Animals: false
  PreventBedExplosion:
    Nether: false
    TheEnd: false
  # Will teleport players down from nether 'roof'
  PreventPlayersOnNetherRoof: true
  PreventIronGolem:
    # When set to true, iron golems will not drop roses on death
    Roses: false
  # When set to true, fishing rod will not move grabed entity towards you
  PreventHook: false
  Multicraft:
    # When set to true, will prevent multicraft servers to console. This will disable /list command usage in general
    DisableList: false
ExploitPatcher:
  # When enabled this will prevent item pickup while you have openend workbench or player crafting window. Mainly to prevent 1.12 duplication glitch, until its fixed
  PreventItemPickup: true
  # When enabled this will prevent exp bootles being destroyied on portal edge and duplicating them in result of that
  PreventExpPortals: true
Vault:
  # If your having issues with vault grabbing correct players' group or balance, consider to turn this to false
  Money: true
  Group: true
Worth:
  # Defines lore that will prevent an item from being sold using /cmi sell.
  # Color codes and capitalization are being ignored
  BadLore:
  - Creative item by Gasha
BossBar:
  # Enables or disbales bossbar hp bar on 1.9+ servers
  HpBarEnabled: true
Ban:
  # When set to true players who are banned will get messages modified by CMI instead of seying vanilla type of message
  OverrideLoginMessage: false
Homes:
  # Homes groups to define max amount homes player can have. Permission: cmi.command.sethome.[groupname]
  # If players home group if not find then amount will be set to 1
  # To have unlimited homes use cmi.command.sethome.unlimited permission
  # In adition to this you can use simple numeric permission node cmi.command.sethome.[number] which will define max number of homes player can have
  Groups:
    Newbie: 2
    Advanced: 3
  # Requires cmi.bedhome permission node
  # When set to true by interacting with bed, regular home location will be created
  # When set to false vanilla bed home location will be set
  BedInteraction: true
ReSpawn:
  Global:
    # Defines respawn order if defined world is not present in Specific list
    # Posible respawn locations: spawn, bedLocation, homeLocation, worldSpawn, warp![warpName]
    # Where warp![warName] can be any valid warp you set for players to be teleported, they will bypass any requirements for that warp
    PriorityOrder:
    - bedLocation
    - spawn
  # Defines respawn order for defines worlds
  # Remove world if you want to leave respawn handling for server or 3rd party plugin
  Specific:
    world:
    - bedLocation
    - spawn
    world_nether:
    - spawn
    world_the_end:
    - spawn
    spawnworld:
    - spawn
Afk:
  # Enable or disable auto afk system entirely
  Enabled: true
  # Prevents jumping in one place to avoid afk status
  PreventJumping: true
  # Prevents damage while afk
  PreventDamage: true
  # Defines how often in seconds plugin will check for afk players state
  CheckInterval: 10
  # Defines how long to wait after player stops moving to set him as afk
  # Player needs to have cmi.command.afk.auto permission node
  AutoAfkIn: 1800
  # Defines commands to be performed when player enters afk mode
  # Supports specialized commands
  AutoAfkCmds:
  - null
  # Defines commands to be performed when player leaves afk mode
  AfkLeaveCmds:
  - null
  # Defines how long to wait after player stops moving to kick player
  # This can be used not only to kick but to perform repeating action every x seconds if needed
  # Keep it at -1 to disable auto kick
  # Can be bypassed with cmi.command.afk.kickbypass permission node
  AutoKickIn: 2700
  # This will define how long to wait before performing kick commands again
  RepeatingAutoKickInterval: 300
  # When set to true, kick command will be repeated each RepeatingAutoKickInterval seconds
  RepeatKickCommand: false
  # Defines commands to be performed when player can be kicked
  # If player is not kicked then commands will be repeated every RepeatingAutoKickInterval seconds
  AutoKickCmds:
  - cmi kick [playerName] &eYou have been kicked for idling more than [time]
  # Disables afk on interaction
  DisableOnInteract: true
  # Prevents player from going bypassing afk mode while continuously holding one button with particular items or on particular blocks
  SmartInteractCheck: true
  # Prevents from players abusing afk by constantly moving in afk machine
  AntiAfkMachines: true
  # Disables afk on inventory click
  DisableOnInventoryClick: true
  # Disables afk on command usage
  DisableOnCommand: true
  # Disables afk on public chat message
  DisableOnPublicChat: true
  # Disables afk on private chat message
  DisableOnPrivateChat: true
  # Disables afk on move
  DisableOnMove: true
  # Disables item pickup while afk
  DisableItemPickup: true
Votifier:
  # When set to true votifier votes will be counted for player
  CountVotes: false
  # When set to false, commands on sucessfull vote will not be performed
  PerformCommands: false
  # Defines commands to be performed when player votes
  # Supports specialized commands and placeholders
  # [serviceName] variable can be used to insert address
  CommandsOnVote:
  - cmi broadcast !&6[playerDisplayName] &evoted!
  - cmi give [playerName] diamond
  # List of players to be excluded from top voter list
  ExcludeList:
  - None
Ranks:
  AutoRankUp:
    # Defines how often in seconds plugin will check for posible player rankups
    # Set it to 0 or less to disable auto rankup checks
    Delay: 60
    # Defines how often in seconds each separate player will be checked for rankup
    # This is different than general check just to avoid couple players ranking up at same time
    # This also defines how often player will be notified about posible rankup and it will proportionaly increase with each time player get notification to avoid annoying spam in chat
    # Keep it longer or same as general delay time
    PlayerDelay: 120
Signs:
  # Defines in milliseconds how often to check if player entered sign trigger area
  # Bigger numbers can help slightly lower server load
  # This is not essential to keep in low numbers
  CheckInterval: 5000
  # List of colors to be translated from one to another to avoid unreadable text
  TranslateColors:
  - '&6-&8'
  - '&e-&f'
  - '&7-&8'
TabList:
  # Enable or disable tab list management
  Enabled: false
  # Defines if we want to run tablist updater in async mode
  # While enabled it can increase overall performance but some plugins can have same issues handling async placeholder requests
  Async: false
  UpdateTabListNames: true
  # Enable or disable grouped format tablist's
  # You can save some resources by disabling this if you are not interested in grouped format tablist feature
  # If disabled then this will use only default format and will skip checking for custom one to save some resources if needed
  GroupedEnabled: false
  Updates:
    # Automaticaly updates tab list every x seconds for ALL online players
    # If you are using static Footer and Header you can disable this by setting to -1
    # Consider setting this to -1 if its completely enough to update on player events
    AutoInterval: 60
    OnJoin: false
    OnLeave: false
    afkStateChange: false
    OnWorldChange: false
    OnDeath: false
    OnTeleport: false
    OnNickChange: false
  # PlaceholderAPI supported for any custom variable you want to insert into this
  # In adition CMI will handle some placeholders without PlaceHolderAPI
  # Full list can be checked ingame with /cmi placeholders
  GeneralFormat:
    PlayerName: '[playerDisplayName]'
    Header:
      '1':
      - '&f------------------------------------'
      - '&7Welcome'
      - '&7Online &f%server_online%&7/&f%server_max_players%'
      - '&f------------------------------------'
    Footer:
      '1':
      - '&f------------------------------------'
      - '&7%player_world% &f%player_x%:&7%player_y%:&f%player_z%'
      - '&7Money: &f%vault_eco_balance_formatted% &7Time: &f%server_time_HH:mm:ss%'
      - '&f------------------------------------'
  # Defines custom formats to be used for players.
  # Any player which have cmi.tablist.[number] permission node will use defined grouped format in tablist
  # Id should be a number and in case player has more than one, bigger number id will be used
  # You can have as many groups as you want by increasing increment
  # If player has more than one permission node, then biggest one will be used
  GroupFormat:
    '1':
      PlayerName: '&2{&r[playerDisplayName]&2}'
      Header:
        '1':
        - '&f------------------------------------'
        - '&7Online &f%server_online%&7/&f%server_max_players%'
        - '&f------------------------------------'
      Footer:
        '1':
        - '&f------------------------------------'
        - '&7%player_world% &f%player_x%:&7%player_y%:&f%player_z%'
        - '&7Time: &f%server_time_HH:mm:ss%'
        - '&f------------------------------------'
    '2':
      PlayerName: '&c[&r[playerDisplayName]&c]'
      Header:
        '1':
        - '&f------------------------------------'
        - '&7Online &f%server_online%&7/&f%server_max_players%'
        - '&f------------------------------------'
      Footer:
        '1':
        - '&f------------------------------------'
        - '&7Money: &f%vault_eco_balance_formatted% &7Time: &f%server_time_HH:mm:ss%'
        - '&f------------------------------------'
Notes:
  # When enebled, when player logs in who has alert set on him, staff member will get notification that this player have some notes attached to him
  ShowOnAlertEvent: true
GroundClean:
  # List of item types not to be removed on ground clean action
  WhiteList:
  - itemType
Chat:
  # Will try to modify chat to display it in defined format
  ModifyChatFormat: false
  # When set to true, regular and private messages (excludes clean messages) will have aditional information when hovering over it (PlaceHOlderAPI supported) and can be clicked for quick reply option
  ClickHoverMessages: false
  # When set to false, each time you will use /r you will reply to person you previously sent message directly or to person who sent you message if there is none you have conversion before
  # When this set to true, players with /r will reply to person who last sent private message. This can result in confusion when using /r while getting private messages from multiple players
  ReplyToLastMessenger: false
  # Defines regex when replacing url in chat with short word
  LinkRegex2: (https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9]\.[^\s]{2,})
  # Do you want to enable private messaging over bungeecord
  BungeeMessages: false
  # Used for simple chat messages. Optional variables: {prefix} {suffix} {group}. Supporting PlaceHolderAPI variables like %player_server%
  GeneralFormat: '{prefix}&f{displayName}&7: &r{message}'
  # Defines range of regular messages to travel
  # Set to -1 to disable range restriction
  GeneralRange: -1
  # Defines range of shout messages to travel
  # Shout messages should start with ! and player should have cmi.shout permission
  # GeneralRange should be enabled
  # set to 0 to shout across all worlds, -1 to disable
  ShoutRange: 200
  # Defines cost for each shout message
  ShoutCost: 0
  # Use numeric increments to separate groups from each other. If player has more than one, then line with higher number will be used
  # Add as many lines as you need too
  # cmi.chatgroup.[id] permnission node to use
  GroupFormat:
    '1': '{prefix}&f{displayName}&f: &r{message}'
    '2': '{prefix}&f{displayName}&7: &r{message}'
    '3': '{prefix}&f{displayName}&8: &r{message}'
  Colors:
    # If set to true then all public messages will be filtered from color codes and will allow to colorize them with appropriate permission node
    # cmi.colors.publicmessage.[colorName]
    # Colors: black(&0), darkblue(&1), darkgreen(&2), darkaqua(&3), darkred(&4), darkpurple(&5), gold(&6), gray(&7), darkgray(&8), blue(&9), green(&a), aqua(&b), red(&c), lightpurple(&d), yellow(&e), white(&f), magic(&k), bold(&l), strikethrough(&m), underline(&n), italic(&o), reset(&r)
    PublicMessage: false
    PrivateMessage: false
    # If set to true then /me messages will be filtered from color codes and will allow to colorize them with appropriate permission node
    # cmi.colors.me.[colorName]
    me: false
    # If set to true, then color codes will get removed from text instead of leaving them if player dont have appropriate permission node for that color
    CleanUp:
      publicmessage: false
      privatemessage: false
      me: false
      signs: false
      # List of strings to ignore when checkign chat for color codes player cant use.
      # This will bypass players colorcode restrictions and will allow usage of particular chat formats
      # Applies only for public and private messages
      WhiteList:
      - '&c❤&7'
    # If set to true then nickName will be filtered from color codes when player changes it
    # cmi.colors.nickname.[colorName]
    NickName: false
  ChatFilter:
    Enabled: false
    Deny:
      ipBlock:
        # If not set to true, this filter will not be used
        Enabled: true
        # Defines filter group and defines required permission node to bypass this filter: cmi.chatfilter.bypass.[groupName]
        Group: Advertising
        # Regex expresion to filter by. How to use regex https://regexone.com/
        Regex:
        - \b[0-9]{1,3}(\.|dot|\(dot\)|-|;|:|,|(\W|\d|_)*\s)+[0-9]{1,3}(\.|dot|\(dot\)|-|;|:|,|(\W|\d|_)*\s)+[0-9]{1,3}(\.|dot|\(dot\)|-|;|:|,|(\W|\d|_)*\s)+[0-9]{1,3}\b
        - '[a-zA-Z0-9\-\.]+\s?(\.|dot|\(dot\)|-|;|:|,|_|/)\s?([a-zA-Z]{2,4})\b'
        # With what we need to replace word, if not defined found expresion will not be changed
        ReplaceWith: all
        # posible: none, orhers, all
        # Where 'none' means everyone will receive this message
        # 'others' means that sender will get message but not other players, this is usefull to prevent advertising and silently block it
        # 'all' means that no one will receive sent message
        BlockType: others
        # Players with cmi.chatfilter.inform permisison will receive defined message when rule is broken
        msgToStaff: '&4!&6[playerName] &4advertising with: &r[message]'
        # List of commands to perform when rule is broken. Use [senderName] to include message sender name. Supports global variales same as locale file
        Commands: []
      swearing1:
        Enabled: false
        Group: Swearing
        Regex:
        - \bass\b|\basshole
        ReplaceWith: dude
        BlockType: none
        msgToStaff: '&4!&6[playerName] &4swearing'
        Commands:
        - msg [senderName] &eDon't swear!
      swearing2:
        Enabled: false
        Group: Swearing
        Regex:
        - \bfu+ck
        ReplaceWith: not good
        BlockType: none
        msgToStaff: '&4!&6[playerName] &4swearing'
        Commands:
        - msg [senderName] &eDon't swear!
    # List of regex filter to exlude from block list. Usefull if you want to block all ip/host address but want to allow usage of your own server.
    WhiteList:
    - \bgoogle.\s?([a-zA-Z]{2,4})\b
    - \bspigotmc.\s?([a-zA-Z]{2,4})\b
    DuplicatedMessagePrevention:
      # When set to true, plugin will prevent spaming of same or similar messages in short time range. Can be bypased with cmi.chatfilter.spambypass permission
      Use: false
      # How much in percentage message is counted as same
      Percentage: 80
      # Defines how often in seconds you can send same/similar message
      Interval: 3
      # How many commands you can repeat before stopped for cooldown
      MinAmount: 2
  # If set to true, players public message who is in your ignore list will not be shown
  IgnorePublicMessage: false
  Tag:
    # Enable or not tag system. This will inform player wbout hies name mentioning in public chat if name have @ in front of it
    Enabled: true
    # When this is set to true, any player mentionings in public messages will be colorized and player will get informed as usual
    # This is allot more heavier on server than usual tagging with @, so enable if you know what you are doing
    HardCoreMode: false
    # Determines color of taged user name in chat with @ in front of name/nickname. Sender should have cmi.tag.color
    Color: '&c'
    Sound:
      # Sound name
      Name: BLOCK_NOTE_HARP
      Volume: 1
      Pitch: 3
    # When set to true, @ simbol will be removed
    RemoveEta: false
Command:
  CommandFilter:
    Duplicate:
      # When set to true, plugin will prevent spaming of same or similar command in short time range. Can be bypased with cmi.commandfilter.bypass permission
      Use: false
      # How much in percentage command is counted as same
      Percentage: 80
      # Defines how often in seconds you can send same/similar commands
      Interval: 5
      # How many commands you can repeat before stopped for cooldown
      MinAmount: 2
      # Whitelisted commands to ignore
      WhiteList:
      - msg
      - tell
      - login
      - register
  Spy:
    # Delay in seconds for commands spy to turn on after relog
    # This will prevent some one from loging in with admin account and seying commands before loging in
    # Keep it at same or higher than your login plugin delay for entering password
    # This includes social spy too
    DelayForTrigger: 60
    # Commands in this list will not be shown when command spy is enabled for player for security/privacy reasons
    BlackListed:
    - register
    - login
    - l
    # Players without cmi.security.admin will only see commands from this list with command spy feature
    CommandList:
    - cmi spawn
    - cmi tp
    - cmi tpa
    - cmi heal
    - cmi feed
    - cmi fly
PlayerNotes:
  # For how long to keep players notes in days
  ExpiresIn: 30
PlayerMail:
  # For how long to keep players mail in days
  ExpiresIn: 30
  # Mailing to all players will send mails to players who loged into server in last x days
  mailAllDays: 7
DisplayName:
  # Format of players display name. By default only nick name will be visible, if its set, if not, then players name
  # Posible varibales: {prefix} {suffix}
  Format: '{nickName}'
NickName:
  # Prevents players to change their nick name to one of defined without permission
  # Use lower case
  # cmi.command.nick.bypassblacklist
  # to bypass protection against already in use name/nickname use cmi.command.nick.bypassinuse
  BlackList:
  - admin
  - administrator
  - server
  - staff
  - staf
  # Max length of nick name, can be bypassed with cmi.command.nick.bypass.length
  MaxLength: 16
# Shows if there is an available new version on login with cmi.versioncheck permission node
ShowNewVersion: false
Spawners:
  # If you experiencing issues with spawner handling, set this to true to avoid any spawner manipulations from CMI side
  # This will disable features like, spawner placement, spawner drops, spawner charges and so on
  FullDisable: true
  Break:
    # Enable or disable spawner handler for spawner break
    # If enabled player will get spawner if using silktouch pickaxe and have cmi.dropspawner permission node
    # If player has cmi.dropspawner.nosilk permission node, player is not required to use silk touch pickaxe to get droped spawner
    Enabled: false
    # When set tp fa;se, exp will not be dropped from broken spawner independent if spawner it self is being dropped
    # When set to true exp will be dropped only if spawner is not
    DropExp: false
    # Minimal silktouch level required to get spawner back
    SilkTouchLevel: 1
  Place:
    # Enable or disable spawner handler for spawner place
    # If enabled player will place spawner depending from what it is by its type
    # If disabled then spawner will be placed in normal way and it will allow other plugins to handle its placement
    Enabled: false
    # If set to true, player will need to have appropriate permission node to place spawner by its type
    RequiresPermission: false
    # RequiresPermission should be set to true for this to work. If set to true, player will need to have particular permission node to place particular spawner.
    # In example: player should have cmi.placespawner.pig to place pig spawner, or cmi.placespawner.zombie to place zombie spawner
    # If set to false, then player will need to have basic cmi.placespawner permission to place any type of spawner
    RequiresExactPermission: false
  Interact:
    # When set to true, players trying to change spawner with monster egg will require approrpiate permission node
    # In example: player should have cmi.egginteract.pig to change spawner into pig, or cmi.egginteract.zombie to change into zombie spawner
    EggRequiresPermission: true
  # If set to true, spawners will have chance to be dropped when destroying with tnt
  TnTExplosionDrop:
    use: false
    # Chance in percentage for spawner to drop
    Chance: 10
  # If set to true, spawners will have chance to be dropped when destroyed by creeper
  CreeperExplosionDrop:
    use: false
    Chance: 30
  Charges:
    # When enabled players will be assigned to particular spawner charges group who have cmi.spawners.charge.[groupName] permission node
    # Players will be limited to how many spawners they can mine
    # StartingCharge will determine how many charges they will have on first time joining group
    # MaxCharge will limit to how many charges you can have at one time
    # Cooldown determines how often new charge will be given
    # Bonus is optional and it will determine by how many seconds to lower cooldown for next charge when placing spawner
    # Option to bypass limitations with cmi.spawners.charge.bypass
    Use: false
    # If set to true when player runs out of spawner charges spawner will be destroyed without droping it
    BreakWithoutCharge: false
    List:
      Noob:
        Use: false
        StartingCharge: 2
        MaxCharge: 5
        Cooldown: 3600
        Bonus: 10
      Advanced:
        Use: false
        StartingCharge: 3
        MaxCharge: 6
        Cooldown: 3000
        Bonus: 10
  Proximity:
    # Allws to limit how tight spawners can be placed from each other
    Use: false
    # Radius in blocks from blaced block. Max range is 16
    # Can bypass with cmi.spawners.proximity.bypass
    Range: 0
ItemRenaming:
  # When set to true, players will be denyied from renaming defined items
  # Option to define specific name by using regex format
  Prevent: false
  List:
  - mobspawner:([A-z]+ (?i)\w*spawner)
SpawnMob:
  # Defines how many passengers entities can be spawned at once
  MaxQuantity: 10
  MaxPassengers: 10
Counter:
  # Default range to use when performing /counter start
  Range: 10
Mirror:
  # Defines how far in blocks from mirror center you can build
  # This is mainly to protect from forgeting to turn off mirror and starting to build on different side of map
  MaxRange: 80
NetherPortal:
  # Can prevent nether portal creation entirely. Option to bypass with cmi.netherportalbypass
  PreventCreation: false
  # Maximum height nether portal can be created. Vanilla size is 23
  MaxHeight: 23
  # Maximum width nether portal can be created. Vanilla size is 23
  MaxWidth: 23
Portals:
  # Defines in milliseconds how often to check if player entered portal or not
  # Bigger numbers can help slightly lower server load but small portals, 1 block depth without back wall can be passed through without teleportations if player moves fast enought
  CheckInterval: 300
  # Defines in milliseconds how often to check if player entered portal range for particles to apear
  CheckParticleInterval: 500
  # Perform commands on teleport or not
  PerformCommands: true
  # Commands to be performed on teleport event
  Commands:
  - cmi effect [playerName] blindness 2 1 -s
Animations:
  # Enable siting on stair block by clicking on them with empty hand or by looking and using command
  # Requires cmi.command.sit.stairs
  SitOnStairs: true
  StairsAsChairs: true
  SlabsAsChairs: false
  # Player will sit on chair only after rapid double click
  DoubleClick: false
  # Delay in milliseconds between clicks to sit on chair when double click is enabled
  DoubleClickDelay: 200
# All posible damage causes: contact, entity_attack, entity_sweep_attack, projectile, suffocation, fall, fire, fire_tick, melting, lava, drowning, block_explosion, entity_explosion, void, lightning, suicide, starvation, poison, magic, wither, falling_block, thorns, dragon_breath, custom, fly_into_wall, hot_floor, cramming, 
# Sintax should be [permissionNode]:[damageCause]:[multiplier]
# Example: nolavadamage:lava:0 will prevent lava damage with cmi.damagecontrol.nolavadamage permission node
# Negative values will heal player instead of damaging him
# If player have more than one permission node for same damage cause, then last one in list will be used to determine final damage
DamageControl:
- nowalldamage:fly_into_wall:0
- lowermagmacubedamage:hot_floor:0.5
Totem:
  # When this set to true, on players death totem will be used even if he is not holding it in hand
  RemoveFromInventory: false
  Cooldown:
    # When this set to true player can use totem only every X second
    Use: false
    Time: 600
  Warmup:
    # When this set to true player can use totem to have X amount of second's, during which he can die and be resurected
    # Totem will be consumed durring activation and wont be returned even if resurection is not used during warmup time
    Use: false
    Time: 10
Elytra:
  # cmi.elytra - allows usage of elytra
  # cmi.elytra.boost - allows usage of boost
  # cmi.elytra.superboost - allows ussage of super boost
  # cmi.elytra.speedometer - allows to see speedometer
  Boost:
    # Max speed until player wont get any boost
    SpeedLimit: 300
    # When enabled items/exp wont be consumed if player is over speed limit
    SpeedLimitStop: false
    # Do you want to show decimals in speed
    SpeedDecimals: true
    # By how much boost player on each use
    GeneralMultyplier: 2.0
    # By how much boost player on each super boost use
    # Use shift while using simple boost
    SuperMultyplier: 5.0
    # Uses defined items instead of exp
    UseItems: false
    # item id
    Item: '288'
    # Requires to hold defined item in hand. Only when UseItems is set to false
    RequiresItem: false
    # Amount consumed on each boost
    Amount: 1
    # Amount consumed on each super boost
    SuperAmount: 2
    # Shows particles when flying
    ShowParticles: true
  Launch:
    Time: 1
FlightCharge:
  # Do you want to enable flight charge feature
  Enabled: true
  # When set to true, each time player gets flight charge or relogs, his fly mode will be toggled on
  # If set to false, then players will have to manualy turn on flight with /cmi flyc
  EnabledByDefault: true
  # When set to true, in event of player changing his game mode from survival/adventure to creative/spectator his flight charge  mode will get disabled
  # Same applies when changind game mode from creative/spectator to survival/adventure
  AutoSwitch: false
  # How much charge to give for one exp point
  # Set to 0 to disable this type of recharge
  ExpRechargeRate: 4
  # How much charge to give for one currency point
  # Set to 0 to disable this type of recharge
  MoneyRechargeRate: 8
  # Defines maximum amount of charge player can have
  # One charge is one traveled block while flying
  # if player dosent move, then one charge for each second while hovering
  MaxChargeLevel: 10000
  # Defines multiplier when player doesnt move but is hovering. For each second player hovers.
  # Set to 0 to disable
  DeductOnIdling: 0
  # Defines multiplier when player falls down of charge to be taken
  # This only effects when player falls from above 3 blocks of hight
  # In example if player falls from 10 blocks height, then 7 * 2 = 14 charges will be taken
  # This is to prevent avoiding no penealty from jumping from clifs
  # Set to 0 if you want to disable it
  DeductOnFallMulti: 0
  # Defines if you want to damage player when he falls down from higher than 3 blocks height
  # This will not kill player even if he would drop from 200 block height, but will leave him with 1 hp
  # This will only effect players who jumped down and not those who disabled fly mode in mid air
  DamageOnFall: true
  # DamageOnFall should be enabled for this to work
  # This will define if you want to damage player when he deactivates fly mode in mid air
  DamageOnToggle: false
  # DamageOnFall should be enabled for this to work
  # This will define if you want to kill player if fall damage if higher than his health amount
  KillOnFall: false
Point:
  # Default particle for point command. Options: fireworks_spark, crit, magic_crit, potion_swirl, potion_swirl_transparent, spell, instant_spell, witch_magic, note, portal, flying_glyph, flame, lava_pop, footstep, splash, particle_smoke, explosion_huge, explosion_large, explosion, void_fog, small_smoke, cloud, coloured_dust, snowball_break, waterdrip, lavadrip, snow_shovel, slime, heart, villager_thundercloud, happy_villager, large_smoke, tile_break, tile_dust, 
  DefaultParticle: COLOURED_DUST
Messages:
  Login:
    # If set to true, login message wont be shown
    Disabled: false
    Custom:
      # If set to true, custom login message will be used. cmi.messages.disablelogin can be used to disable message for player
      Use: true
  Logout:
    # If set to true, logout message wont be shown
    Disabled: true
    Custom:
      # If set to true, custom logout message will be used. cmi.messages.disablequit can be used to disable message for player
      Use: false
  # Check locale file for translation and custom placeholders: [playername], [totalUsers], [onlinePlayers]
  FirstJoinMessage:
    Use: true
Books:
  # Defines default creator name for books when using getbook command
  DefaultAuthor: Server
# Defines name of customtext on players login to server. To disable just set name to non existing customText
Motd: welcomeMessage
Spawn:
  # Defines players spawn point after death if set to true, if not, then it will be used only for /cmi spawn command
  Main:
    World: spawnworld
    X: -2089.6391235820947
    Y: 111.0
    Z: -1669.419850664036
    Pitch: -4.3501244
    Yaw: 269.3998
    RespawnLocation: false
    Rng: 0
  # Defines players first spawn point when he logs into server for the first time
  FirstSpawn:
    Use: true
    World: spawnworld
    X: -2089.610176642361
    Y: 111.0
    Z: -1669.4688745438198
    Pitch: 6.300169
    Yaw: 264.26636
Newbie:
  # Kit name to give for new players joining server
  Kit: Starter
Kits:
  # When set to true, kit list will be shown in GUI instead of chat list
  GUI: false
  # When set to true, kit selection gui empty fields will get filled with definet item
  FillEmptyFields: true
Warps:
  # When set to true, warps list will be shown in GUI instead of chat list
  GUI: false
  # How many warps to show in each page
  perPage: 50
  # Do you want to save warp creator
  saveCreator: false
  # Do you want to show creator in warp list
  showCreator: false
GlobalGui:
  # Defines item type in empty fields in GUI when its needed to be filled up
  EmptyField: STAINED_GLASS_PANE:15
DynamicViewRange:
  # By setting to true will enable dynamic view range feature. Its still in beta stage and can result in some CPU load increase.
  # Don't enable if you are not using this feature on your server
  Enabled: false
WorldLimits:
  # By setting to true fly and gamemode limitations per world will be aplied for player on world change if they dont have appropiate permission node
  Enabled: false
  # World list with default game modes
  # If player will have cmi.worldlimit.gamemode.bypass permission node, game mode wont be changed
  # Posible modes: creative, survival, adventure, spectator, 
  Gamemode:
  - world:Survival
  # If player will have cmi.worldlimit.fly.bypass permission node, fly mode wont be changed
  Fly:
  - world:False
  # If player will have cmi.worldlimit.god.bypass permission node, fly mode wont be changed
  GodMode:
  - world:False
  # Prevents particular entity spawn reasons in defined worlds. All posible reasons: NATURAL, JOCKEY, CHUNK_GEN, SPAWNER, EGG, SPAWNER_EGG, LIGHTNING, BUILD_SNOWMAN, BUILD_IRONGOLEM, BUILD_WITHER, VILLAGE_DEFENSE, VILLAGE_INVASION, BREEDING, SLIME_SPLIT, REINFORCEMENTS, NETHER_PORTAL, DISPENSE_EGG, INFECTION, CURED, OCELOT_BABY, SILVERFISH_BLOCK, MOUNT, TRAP, ENDER_PEARL, SHOULDER_ENTITY, CUSTOM, DEFAULT
  SpawnReasons:
    world:
    - None
    world_nether:
    - None
    world_the_end:
    - None
    spawnworld:
    - None
# Checks and shows on players login if he have been changed hes name over Mojang
# Looks to be working only with online servers, duhhhh
CheckForNameChange:
  OnLogin: true
  AmountToShow: 3
  OnInfoShow: true
inv:
  # Do you want to save the player's inventory on his death
  SaveOnDeath: true
  # When set to true, empty inventories (no items in inventory) will not be saved on players death
  IgnoreEmpty: true
  # If set to true then player should have cmi.saveinv permission node for inventory to be saved on death
  RequiresPermission: false
  # How many inventories, we will keep for each player
  SavedInventories: 5
hunger:
  # Do you want to give more than 20 hunger for players
  overide: false
heal:
  RemoveNegative:
    # Do you want to remove negative potion effects from player on heal
    use: false
    List:
    - blindness
    - confusion
    - harm
    - hunger
    - poison
    - slow
    - slow_digging
    - weakness
    - wither
Cuff:
  # When set to false will allow players to talk who is cuffed
  Mute: true
  AllowedCommands:
  - msg
  - r
  - tell
Dispose:
  # defines how big is dispose ui 1-6
  UILines: 3
ItemRepair:
  RepairShare:
    # When enabled will prevent players repairing items for others in anvil regular way. They still can use items and repairs normaly for them selfs
    # Can be bypassed with cmi.command.repair.repairshare.bypass
    ProtectNormalRepair: false
    # When enabled will prevent players repairing items for others with CMI command. They still can use items and repairs normaly for them selfs
    ProtectCommandRepair: false
    # Sets durability on item when another picks it up or selects in inventory. Set to 0 or less if you don't want to change durability
    Durability: 1
    # When set to true, player who have cmi.command.repair permission will bypass this protection and can use other user repaired items without any aditional actions
    BypassWithRepairPermission: true
    # When enabled aditional lore line will be added when player can't use that item. This will not be shown for owner of item
    AddLore: true
    # When set to true, interact event will be canceled to prevent item usage
    CancelEvent: true
    # When set to true, player will get message informing about item usage he dint repaired him self
    InformWithMessage: true
Cooldowns:
  # You can enable any command cooldown to prevent instant usage of it
  # cmi heal:180 means that player can use /cmi heal command only once every 180 seconds
  # if cooldown set to -1 then this command can be performed only one time
  # Administration can bypass limitations with cmi.command.[comandName].cooldownbypass permission node
  # Always use full command name and not its alias
  Enabled: false
  List:
  - Heal:180
  - Feed:120
WarmUps:
  # You can enable any command warmup to prevent instant command usage
  # tp:5:false means that when player performs /tp command he will need to wait 5 sec
  # false variable is optional and when its set to false player cant move while warmup is counting
  # If you dont want to deny empty warp command but want to deny any extra variable after that, then just add space, in example 'warp :5:false'
  # When setting warmups for CMI commands, use full command name and not allias, in example 'cmi warp:5false'
  # Administration can bypass limitations with cmi.command.[comandName].warmupbypass permission node
  # ATTENTION! cmi home command is being handled in special way and to prevent double warmup, add space, example: - cmi home :5:false
  Enabled: false
  InformOnNoMove: true
  List:
  - tp:5:false
  - back:3:true
Jail:
  # Defines in milliseconds how often to check if player leaves jail area
  # Bigger numbers can help slightly lower server load
  CheckInterval: 500
  # Defines default jail time when time is not povided with command
  DefaultTime: 300
  # Chat range in blocks while player is in jail
  # Set to 0 to allow talking
  # set to -1 to prevent talking in general while jailed
  ChatRange: 20
  WhiteListedCmds:
  - cmi msg
  - cmi reply
scan:
  # Tps cap from which to start adjusting scan speed
  SoftCap: 19.0
  # Staring speed when scanning. Range from 1 to 30
  DefaultSpeed: 15
  # When this set to true, when using scan feature and not providing range, whole map will be scanned
  GlobalRangeByDefault: false
  # Range in chunks. 2 is 25 chunks, 1 is 9 and 0 is only chunk you are standing in
  DefaultRange: 2
  # When this set to true, all found items in containers will be removed automaticaly durring scan. Ex: /scan id 7 purge
  EnablePurge: false
search:
  # When this set to true, all found items in inventories will be deleted durring search. Ex: /cmi search id 7 purge
  EnablePurge: false
lfix:
  # This is heavy on server resourses feature, enable if you have to spare some or pregenerating world
  # When set to true, plugin will try to fix light issues on chunk generation
  # This will remove most light gliches but its not 100% bullet prof and some bugs can still be seen
  # In some cases you will need to relog to see updated light's
  FixOnChunkGeneration: false
  # List of worlds where we need to fix light issues on chunk generation
  WorldsToFix:
  - world
  - world_nether
  - world_the_end
  - spawnworld
  # Tps cap from which to start adjusting light fix speed
  SoftCap: 19.0
  # Staring speed when fixing light. Range from 1 to 100
  DefaultSpeed: 15
purge:
  # Cleans files on server startup
  CleanOnStart: false
  # How long player should be offline for his data to be moved
  OfflineDays: 90
  PlayerData:
    # Do you want to enable player data file cleaning
    Enabled: true
    # Source folder to take files from
    SourceFolder: world/playerdata
    # When this is false, data files will be moved to backup folder. When its true files will be deleted
    DeleteFiles: false
    # Target folder to put files into if DeleteFiles set to false
    DestinationFolder: world/playerdata_backup
  PlayerStats:
    # Do you want to enable player stats file cleaning
    Enabled: false
    # Source folder to take files from
    SourceFolder: world/stats
    # When this is false, data files will be moved to backup folder. When its true files will be deleted
    DeleteFiles: false
    # Target folder to put files into if DeleteFiles set to false
    DestinationFolder: world/stats_backup
  PlayerAdvancements:
    # Do you want to enable player Advancements file cleaning
    Enabled: false
    # Source folder to take files from
    SourceFolder: world/Advancements
    # When this is false, data files will be moved to backup folder. When its true files will be deleted
    DeleteFiles: false
    # Target folder to put files into if DeleteFiles set to false
    DestinationFolder: world/Advancements_backup
  Essentials:
    # Do you want to enable essentials playerdata file cleaning
    Enabled: false
    # Source folder to take files from
    SourceFolder: plugins/Essentials/userdata
    # When this is false, data files will be moved to backup folder. When its true files will be deleted
    DeleteFiles: false
    # Target folder to put files into if DeleteFiles set to false
    DestinationFolder: plugins/Essentials/userdata_backup
  LWC:
    # Do you want to enable lwc protection cleaning
    Enabled: false
Selection:
  # Tool id to use for selection actions
  Tool: wood_hoe
Time:
  # Defines preset time
  Day: '12:00'
  Night: '24:00'
  Morning: 06:00
  Dusk: '18:00'
  AutoTime:
    # Time in seconds time in game will be adjusted to match real
    # Keep it at arround one minute
    Interval: 60
    # Worlds effected by autotime adjustment
    Worlds: []
Enchanting:
  enchantLimits:
    # By disabling this, no limitation to enchanting will be applied
    Enabled: true
    MaxLevel:
      protection_environmental: 4
      protection_fire: 4
      protection_fall: 4
      protection_explosions: 4
      protection_projectile: 4
      oxygen: 3
      water_worker: 1
      mending: 1
      thorns: 3
      vanishing_curse: 1
      depth_strider: 3
      frost_walker: 2
      binding_curse: 1
      damage_all: 5
      damage_undead: 5
      damage_arthropods: 5
      knockback: 2
      fire_aspect: 2
      loot_bonus_mobs: 3
      sweeping_edge: 3
      dig_speed: 5
      silk_touch: 1
      durability: 3
      loot_bonus_blocks: 3
      'null': 10
      arrow_damage: 5
      arrow_knockback: 2
      arrow_fire: 1
      arrow_infinite: 1
      luck: 3
      lure: 3

I removed the mysql login info.

0xC1A551C commented 6 years ago

Downgrading to the last version of cmi seems to fix the problem. I will also check on my end once again.

0xC1A551C commented 6 years ago

I reset venture chat as well, and it is the same issue. My setup is 1 bungee server with venture chat on it then 2 spigot instances running venturechat & cmi. Being op then using /cmi server name to transfer to the other server it then shows my last chat all in white.

Zrips commented 6 years ago

At this moment cant reproduce. Settup same thing, 1 bungee with venture and 2 instances of minecraft with venture and cmi. Used your config files. Messages are not being duplicated. In general, try negating cmi.bungee.publicmessages.[servername] permission node. But i did tested it with OP and regular player. No issues found. Possible interference from another plugin?

0xC1A551C commented 6 years ago

I'll test again and report back soon. thanks for trying.

0xC1A551C commented 6 years ago

After updating CMI the error seems to go away. I found the bug to be relation to multiverse's last dev build. thanks