Coder Social home page Coder Social logo

multichat / development Goto Github PK

View Code? Open in Web Editor NEW
48.0 48.0 26.0 24.01 MB

An advanced cross-server chat management system for Bungeecord

License: GNU General Public License v3.0

Java 100.00%
bukkit bukkit-plugin bungeecord bungeecord-plugin chat craftbukkit craftbukkit-plugin minecraft minecraft-plugin multichat paperspigot plugin spigot spigot-plugin spigotmc sponge sponge-plugin

development's People

Contributors

akshualy avatar csmither avatar gadsee avatar metzg avatar nogapra avatar olliemartin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

development's Issues

Optional console logging

Is your feature request related to a problem? Please describe.
Due to GDPR and privacy concerns my network have issues related to logging messages that are seen as private. This includes private messages between players and group messages. MultiChat logs all messages on both Spigot/Paper and BungeeCoord/Waterfall level.

Describe the solution you'd like
Add %MESSAGE% to https://github.com/MultiChat/Development/blob/master/multichat/src/main/resources/messages.yml#L21-L28 message template, or add config for each console message true/false in https://github.com/MultiChat/Development/blob/master/multichat/src/main/resources/config.yml

Chat format

Hello,

Could you add "globalformat:" for Local chat please ? Useful to prefix that channel like:

  • Global chat: [G] %DISPLAYNAME% :
  • Local chat: [L] %DISPLAYNAME% :

With the 1.4 update the chat color prefixes are broken (with luckperm, idk for the rest). It shows the prefixe's color codes without "&", color doesn't apply like:

  • b[Prefixe] Name :

Thanks !

critical exception - profanity chat control

Describe the bug
Our chat control is having problems filtering profanities, we have this entry in the config:

- look_for: 'fuck|fck|fuk|shit|sex|cunt|twat|bastard|piss|wank|retard|rape|dick|gay|bitch|asshole|blowjob|penis|dildo|cancer|lesbian|whore|cock|wtf|mofo|omfg|ffs|retard|homo'

Full startup log of affected servers
https://pastebin.com/Nz6Umr7y
Paste the FULL startup log of Bungeecord / Spigot here depending on where the issue occurs


**To Reproduce**
Steps to reproduce the behavior:
1. Player types profinity listed in above config
2. Console error occurs
3. Profanity is relayed to chat for all to see

**Expected behavior**
Profanity message should be cancelled and warning issues to player

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Platform and Versions (please complete the following information):**
 - OS: Debian 9 [e.g. Windows 10]
 - Java Version: 8 [e.g. Java 8]
 - MultiChat Version: 1.7.3 [e.g. 1.5.2]
 - Proxy Version: [e.g. Bungeecord-1523, Waterfall-156]
 - Local Server Version: spongeforge-1.12.2-2825-7.1.6  [e.g. craftbukkit234, spigot-1256, paperclip-456, spongevanilla-2456]

**Additional context**
Add any other context about the problem here.

a stack trace

Describe the bug
a stack trace

Full startup log of affected servers

https://pastebin.com/Q3F6FjL6

Platform and Versions (please complete the following information):

  • OS: [e.g. Linux (ubuntu 18.04.3)]
  • Java Version: [.Java 8]
  • MultiChat Version: [Latest]
  • Proxy Version: [Waterfall-294]
  • Local Server Version: [paper-1.14.4-192]

a player was crashing for some reason and this was the the stack trace

if this isn't enough info i really can't reproduce this cause it doesn't happend to me
then just close this issue and i will see if i can get it to reproduce in some way or another

Add %GROUP_META_XXXX% and %USER_META_XXXX% placeholder

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
I need a placeholder that reads a users Meta values for easier addition of extra prefixes from certain plugins that don't use the typical prefix.1.X way of adding prefixes.

Describe the solution you'd like
A clear and concise description of what you want to happen.
A placeholder that reads either group or user meta and shows the value of the meta key
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
PlaceholderAPI but does not offer LuckPerms support for Sponge

Bulletin list doesn't work

Describe the bug
A clear and concise description of what the bug is. Please make separate reports for different bugs!

Full startup log of affected servers

Paste the FULL startup log of Bungeecord / Spigot here depending on where the issue occurs

To Reproduce
Steps to reproduce the behavior:

  1. Install a fresh copy of '....'
  2. Start up version '....' of Bungeecord
  3. Type command '....' in chat
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Platform and Versions (please complete the following information):

  • OS: Debian
  • Java Version: Java 8
  • MultiChat Version: 1.7.3
  • Proxy Version: Bungeecord-1523
  • Local Server Version: [e.g. craftbukkit234, spigot-1256, paperclip-456, spongevanilla-2456]

Additional context
Everytime I do /bulletin list
this come:

17:59:07 [WARNING] Error in dispatching command
java.lang.IllegalArgumentException: Illegal group reference
at java.util.regex.Matcher.appendReplacement(Matcher.java:857)
at java.util.regex.Matcher.replaceAll(Matcher.java:955)
at java.lang.String.replaceAll(String.java:2223)
at xyz.olivermartin.multichat.bungee.MessageManager.sendSpecialMessage(MessageManager.java:417)
at xyz.olivermartin.multichat.bungee.commands.BulletinCommand.execute(BulletinCommand.java:50)
at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:189)
at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:142)
at net.md_5.bungee.connection.UpstreamBridge.handle(UpstreamBridge.java:145)
at net.md_5.bungee.protocol.packet.Chat.handle(Chat.java:50)
at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:104)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:796)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:427)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:328)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
at java.lang.Thread.run(Thread.java:748)

Re-generate config file on every update plugin

Is your feature request related to a problem? Please describe.
It is a pity that every time the plugin is updated it is necessary to delete the config file to re-generate it.
Because each time you have to redo the configurations it causes a loss of time quite substantial for me.
Indeed I am the owner of a French server and reconfigure each time the file messages. Yml and joinmessages. Yml takes me a lot of time.

Describe the solution you'd like
Would there not be the possibility that the configuration additions this adds directly to the files already present on the server?

Sorry for the approximate English I am French and I use the Windows translator

Kind regards

global/local chat format

Awesome plugin! Loving it so far. 2 things tho, it would be nice to be able to have a format for local & global chat. IE,
globalformat: "&7[&f%SERVER%&7] &r%DISPLAYNAME%&r: "
localformat: "%DISPLAYNAME%&r: "

Permissions for using special caracters in nickname

Usage of special characters in nickname is possible without the permission "multichatspigot.nick.special"

Platform and Versions (please complete the following information):

  • OS: CentOS
  • Java Version: Java 8
  • MultiChat Version: [1.7.4
  • Proxy Version: Bungeecord-1413
  • Local Server Version: Paper-624

BungeeCord plugin API request

Hi,

I'd like to see an API that I can hook into for sending and receiving messages. A simple message event would be great. And maybe a documented method of sending messages.

Nicknames don't persist between server restarts

Is your feature request related to a problem? Please describe.
As per the title, nicknames are not persisting between server restarts.

Using the plugin on Waterfall along with the Sponge plugin on backend servers.

Describe the solution you'd like
Nicknames to be persistent

Describe alternatives you've considered
N/A

Additional context
N/A

Nickname blacklist and inability to impersonate another user

Is your feature request related to a problem? Please describe.
There doesn't appear to be a way to block the use of certain nicknames, or stop users from setting nicknames of other users to impersonate them.

Describe the solution you'd like
A nickname blacklist ability, as well as the inability to set your nickname to that of another players username.

Describe alternatives you've considered
N/A

Additional context
N/A

Not loading/using chat format from config.yml??

@OllieMartin
It seems like MultiChat isn't loading the chat format from the config.yml for local chat, but is loading it for global chat.

This is the format in the config.yml (the j's are for effect)
chat snip 2
This is how it is formatted even after reloading the plugin and restarting BungeeCord/Spigot (with global chat off)
chat snip 1
This is when I remove MultiChat from Spigot (to make sure MultiChat is formatting the chat)
chat snip 3
This is when I turn on global chat (it uses the format from the config.yml)
chat snip 4

Thanks for making an awesome plugin!

Permissions issue

Hello creators.
I have an issue with the permissions. I use the plugin permssionsex which is hooked up to mysql. I have all the perms but whenever i do one of your commands (except /nick for some reason) It says i have no permissions. I tried giving it manually but it didn't work either. I have no idea what is causing this, but i hope you can help me.

[Feature] tooltips

can you add tooltips like the way DeluxeChat plugin works
https://www.spigotmc.org/resources/deluxechat.1277/
it would be great if you can add it too MultiChat because when player use nickname it can be hard when your on a different server then that player to see what there realname by using this feature it can help greatly thanks

Local is same as Global - unlimited range

Describe the bug
Players using local chat will show for everyone on the server regardless of how far away they are

To Reproduce
Move into local channel via /local
chat

Expected behavior
There should be a limited range on local chat, preferably a configurable setting.

Platform and Versions (please complete the following information):

  • OS: Debian 8
  • Java Version: Java 8
  • MultiChat Version: 1.7.3
  • Proxy Version: Bungeecord-1402
  • Local Server Version: SpongeForge 3680

Message events

I'm putting forward a feature reuqest to make it easier for PurpleBungeeIRC to integrate into MultiChat. I've specifically asked the plugin author of PurpleBungeeIRC (cnaude) to add support for it, as the current situation is support for an outdated version of Herochat premium plugin as well as BungeeChat which PurpleBungeeIRC originally was going to support does not seem to care much about keeping the plugin up to date.

06:24 cnaude: Does Multichat have those events you requested on BungeeChat github?
06:24 <@cnaude> yes and no
06:24 <@cnaude> it's going to take a few days
06:24 <@cnaude> i might sent a pull request

This feature request will also make it much easier for other plugins to integrate with MultiChat.

What I would like to see:
Four different event messages - one for each message type (global, local, admin and moderator channels), or one message event with all of the information. Information which is needed are: Sender, Receiver, Channel name etc.

Maybe something like this:

  • xyz.olivermartin.multichat.bungee.GlobalMessageEvent;
  • xyz.olivermartin.multichat.bungee.LocalMessageEvent;
  • xyz.olivermartin.multichat.bungee.AdminMessageEvent;
  • xyz.olivermartin.multichat.bungee.ModeratorMessageEvent;

I hope for positive reply. Thank you in advance!

Clickable Links in chat

Is your feature request related to a problem? Please describe.
N/A

Describe the solution you'd like
Pretty self explanatory by the title. I got used to this with other plugins handling chat, would be a nice have on MultiChat.

Describe alternatives you've considered
N/A

Additional context
N/A

Freeze chat doesn't block join, leave, or welcome messages

Describe the bug
/freezechat doesn't block join, leave, or welcome messages from being sent in chat. We had someone spam joining / leaving our server with a botnet of ~180 accounts and having the chat frozen didn't stop the onslaught of welcome, join, and leave messages.

Full startup log of affected servers
N/A

To Reproduce
Steps to reproduce the behavior:

  1. Have MultiChat join, leave, or welcome messages enabled
  2. /freezechat
  3. Join / leave the server

Expected behavior
Only people with freezechat permissions are able to send messages in chat and that that either extends to their join / leave messages, or all join / leave messages are blocked until chat is thawed.

Screenshots
N/A

Platform and Versions (please complete the following information):

  • MultiChat Version: 1.7.4

Additional context
I'm not sure if this was implemented this way intentionally, but the only way to block the join / leave messages now is for someone with FTP access to manually them in the MultiChat config and /multichat reload. That takes time and is not something lower level or non-technical staff can do. I can see instances where some people may still want to see join / leave messages, even while chat is frozen, so maybe something like /freezechat all | messages | notifications could work, though that would require a bit more work to implement.

Translations directory format

Describe the bug
Translations directory is being created as MultiChat\translations rather than what I assume intended, was for a sub-directory of translations in the MultiChat directory.

Doesn't affect a Linux server, but if done on windows this may break things.
\ in a file/dir name is illegal on Windows. Although this may result in the creation of said sub-directory on Windows...did not test to see.

Platform and Versions (please complete the following information):

  • OS: Debian 9.5
  • Java Version: OpenJDK 64-Bit Server VM, version 1.8.0_181
  • MultiChat Version: 1.7.1
  • Proxy Version: Waterfall-Bootstrap:1.13-SNAPSHOT:1732f85:258
  • Local Server Version: N/A

Additional context
N/A

AFK support

Is your feature request related to a problem? Please describe.
N/A

Describe the solution you'd like

If possible I would like to see AFK support added. Currently using Nucleus AFK on a Sponge server, but that doesn't support showing AFK across servers or nicknames provided by MultiChat for obvious reasons.
I know it's getting a little away from what is probably considered a "Chat" feature, but it does get posted to chat and notifies other players as such.

Describe alternatives you've considered
N/A

Additional context
N/A

discordsrv | chat messages are not sent to discord

timings
https://timings.aikar.co/?id=02444e1fb41b435aaf12cd49dcec3f3a

plugin discordsrv
https://www.spigotmc.org/resources/discordsrv.18494/

config

# Don't touch pls
ConfigVersion: 15.2

# Bot token; don't know what this is? Look at the video on the plugin page for instructions
BotToken: "*****"

# Channel links from game to Discord
# syntax is Channels: {"in-game channel name": "numerical channel ID from Discord", "another in-game channel name": "another numerical channel ID from Discord"}
# The first channel pair specified in this config option will be the "main" channel, used for sending player joins/quits/deaths/achievements/etc
#
Channels: {"global": "*****"}

# Console channel numerical ID (NOT NAME), leave blank to disable the console channel all together
DiscordConsoleChannelId: "*****"

# Debug options, don't touch unless needed
#
# DebugLevel: 0 = no debug, 1 = debug, 2 = debug with stack traces
#
DebugLevel: 0
DebugJda: false
CancelConsoleCommandIfLoggingFailed: true
DontSendCanceledChatEvents: true
AuthorizedDebuggers: []
EvalGuilds: []
ForcedLanguage: none
Experiment_WebhookChatMessageDelivery: false

# Disabled plugin hooks
# Generally, unless you have a reason to touch this, don't
#
DisabledPluginHooks: []

# Game information, this sets the "Playing ______" indicator for the bot, set to "" to disable
DiscordGameStatus: ""

# Chat channel information
# The chat channel is the text channel that all messages in-game will be sent to and all messages sent
# to this channel on Discord will be sent in-game
#
# DiscordChatChannelDiscordToMinecraft: whether or not to send messages in the chat channel to the server chat
# DiscordChatChannelMinecraftToDiscord: whether or not to send messages in the server chat to the chat channel
# DiscordChatChannelTruncateLength: the maximum length of messages from Discord to be sent to Minecraft
# DiscordChatChannelPrefix: the character(s) required to prefix a message for it to be sent from Minecraft to Discord (example "!")
# DiscordChatChannelRolesAllowedToUseColorCodesInChat: list of roles allowed to use color/format codes in Discord to Minecraft chat
# DiscordChatChannelBroadcastDiscordMessagesToConsole: whether or not to print processed discord messages to the console
# DiscordChatChannelRequireLinkedAccount: whether or not to require players have their Discord account linked to their Minecraft to have their Discord messages sent to Minecraft
# DiscordChatChannelBlockBots: whether or not bots should be blocked from Discord -> MC chat
# DiscordChatChannelBlockedIds: ids of discord users (or bots) that should not have their messages processed & sent to MC
# DiscordChatChannelColorTranslations: hex representations of Discord roles to be matched with for showing role colors in-game with their in-game equivalent
#
DiscordChatChannelDiscordToMinecraft: false
DiscordChatChannelMinecraftToDiscord: true
DiscordChatChannelTruncateLength: 100
DiscordChatChannelPrefix: ""
DiscordChatChannelRolesAllowedToUseColorCodesInChat: ["Developer", "Owner", "Admin", "Moderator"]
DiscordChatChannelBroadcastDiscordMessagesToConsole: true
DiscordChatChannelRequireLinkedAccount: false
DiscordChatChannelBlockBots: false
DiscordChatChannelBlockedIds: ["000000000000000000", "000000000000000000", "000000000000000000"]
DiscordChatChannelColorTranslations: {
  "99AAB5": "&f",
  "1ABC9C": "&a",
  "2ECC71": "&a",
  "3498DB": "&3",
  "9B59B6": "&5",
  "E91E63": "&d",
  "F1C40F": "&e",
  "E67E22": "&6",
  "E74C3C": "&c",
  "95A5A6": "&7",
  "607D8B": "&8",
  "11806A": "&2",
  "1F8B4C": "&2",
  "206694": "&1",
  "71368A": "&5",
  "AD1457": "&d",
  "C27C0E": "&6",
  "A84300": "&6",
  "992D22": "&4",
  "979C9F": "&7",
  "546E7A": "&8"
}

# Console channel information
# The console channel is the text channel that receives messages which are then run as server commands
# by the console as well as having the server's console being streamed to line by line
#
# You can customize the message including removing timestamps in messages.yml
#
# DiscordConsoleChannelLogRefreshRateInSeconds: rate in seconds between sending lines from the console
# DiscordConsoleChannelUsageLog: the file that logs all commands being executed by users in the console channel
# DiscordConsoleChannelBlacklistActsAsWhitelist: whether or not the blacklisted commands list acts as a whitelist instead of blacklist
# DiscordConsoleChannelBlacklistedCommands: phrases wrapped in quotation marks that users should not be able to send as commands to the console
# DiscordConsoleChannelDoNotSendPhrasesActsAsWhitelist: whether or not the do not send phrases list acts as a whitelist instead of blacklist
# DiscordConsoleChannelDoNotSendPhrases: phrases wrapped in quotation marks that should not be sent to the console channel
# DiscordConsoleChannelRegexFilter: the regex filter to be applied to console lines being sent to Discord
# DiscordConsoleChannelRegexReplacement: what the regex filter will replace with where matches are found
# DiscordConsoleChannelLevels: levels to send to console channel via appender
#
DiscordConsoleChannelLogRefreshRateInSeconds: 5
DiscordConsoleChannelUsageLog: "DiscordConsole.log"
DiscordConsoleChannelBlacklistActsAsWhitelist: false
DiscordConsoleChannelBlacklistedCommands: ["?", "op", "deop"]
DiscordConsoleChannelDoNotSendPhrasesActsAsWhitelist: false
DiscordConsoleChannelDoNotSendPhrases: ["Async Chat Thread"]
DiscordConsoleChannelRegexFilter: ""
DiscordConsoleChannelRegexReplacement: ""
DiscordConsoleChannelLevels: [info, warn, error]

# Chat channel command execute command
# These options control the ability to say "!c kick Notch", or whatever the prefix is to run a command,
# as the console, from a registered chat channel.
#
# DiscordChatChannelConsoleCommandEnabled: whether or not to allow console commands from a chat channel.
# DiscordChatChannelConsoleCommandNotifyErrors: whether or not to send a user who tries to run a command without permission that they don't have permission
# DiscordChatChannelConsoleCommandPrefix: prefix to use for console commands. e.g. "!c tps"
# DiscordChatChannelConsoleCommandRolesAllowed: the user roles that are allowed to execute server commands from the chat channel
# DiscordChatChannelConsoleCommandWhitelist: list of commands that are able to be ran with DiscordChatChannelConsoleCommandPrefix
# DiscordChatChannelConsoleCommandWhitelistBypassRoles: list of roles that bypass the whitelist
# DiscordChatChannelConsoleCommandWhitelistActsAsBlacklist: should the command whitelist act as a blacklist instead
# DiscordChatChannelConsoleCommandExpiration: time in seconds until a sent command output is automatically removed by the bot. set to 0 to disable expiration.
# DiscordChatChannelConsoleCommandExpirationDeleteRequest: whether or not to delete the message of the person that originally issued the command
#
DiscordChatChannelConsoleCommandEnabled: true
DiscordChatChannelConsoleCommandNotifyErrors: true
DiscordChatChannelConsoleCommandPrefix: "!c"
DiscordChatChannelConsoleCommandRolesAllowed: ["Developer", "Owner"]
DiscordChatChannelConsoleCommandWhitelist: ["say", "lag", "tps"]
DiscordChatChannelConsoleCommandWhitelistBypassRoles: ["Owner", "Developer"]
DiscordChatChannelConsoleCommandWhitelistActsAsBlacklist: false
DiscordChatChannelConsoleCommandExpiration: 0
DiscordChatChannelConsoleCommandExpirationDeleteRequest: true

# Chat channel player list command
# All the config stuff for the player list command
#
# DiscordChatChannelListCommandEnabled: whether the command is enabled
# DiscordChatChannelListCommandMessage: the command people can type to get the player list
# DiscordChatChannelListCommandExpiration: time in seconds until a sent player list message is automatically removed by the bot. set to 0 to disable expiration.
# DiscordChatChannelListCommandExpirationDeleteRequest: whether or not to delete the message of the person that originally requested for the player list
#
DiscordChatChannelListCommandEnabled: true
DiscordChatChannelListCommandMessage: "playerlist"
DiscordChatChannelListCommandExpiration: 10
DiscordChatChannelListCommandExpirationDeleteRequest: true

# Chat channel blacklisted phrases & regex
#
# DiscordChatChannelBlockedPhrases: phrases which if a message is sent in the chat channel containing a phrase here, the message won't be processed
# DiscordChatChannelCutPhrases: phrases which if said in the Minecraft chat will be removed from the message before sending it to the chat channel
# DiscordChatChannelRegex: regex to filter the chat going to Minecraft by
# DiscordChatChannelRegexReplacement: replacement for above option
#
DiscordChatChannelBlockedPhrases: ["Online players (", "**No online players**"]
DiscordChatChannelCutPhrases: ["@everyone"]
DiscordChatChannelRegex: ""
DiscordChatChannelRegexReplacement: ""

# Channel topic updater settings
#
# ChannelTopicUpdaterChannelTopicsAtShutdownEnabled: whether or not the channel topics should be changed at server shutdown at all
# ChannelTopicUpdaterRateInMinutes: amount of minutes between automatically updating the channel topics with fresh information
#
ChannelTopicUpdaterChannelTopicsAtShutdownEnabled: true
ChannelTopicUpdaterRateInMinutes: 5

# Unsubscribed user message forwarding
# Whether or not people who are unsubscribed from Discord chat messages will still have their messages
# sent to the chat channel, yet still not see anything from the chat channel
#
MinecraftUnsubscribedMessageForwarding: false

# Discord canned responses
# These are triggers (commands in a way) that will trigger a "canned response" to be sent as a reply to them
# You should probably change these from their defaults or add your own
#
# Syntax is {"TRIGGER": "RESPONSE", "TRIGGER": "RESPONSE", ...}
# If you do not want any canned responses, set this to just {}
# PlaceholderAPI placeholders are supported for the values
#
DiscordCannedResponses: {"!ip": "yourserveripchange.me", "!site": "http://yoursiteurl.net"}

# Minecraft to Discord account linking
# These are the config options pertaining to how linking a Minecraft account to a Discord account functions
#
# MinecraftDiscordAccountLinkedConsoleCommands: commands to run when an account is linked, see below for possible placeholders
# MinecraftDiscordAccountUnlinkedConsoleCommands: commands to run when an account is unlinked, see below for possible placeholders
# %minecraftplayername%: player's Minecraft username
#                         example: Notch
# %minecraftuuid%:       player's uuid
#                         example: you know what a uuid looks like
# %discordid%:           linked discord account's id
#                         example: 12345678901234567890
# %discordname%:         linked discord account's username
#                         example: Notch
#
# MinecraftDiscordAccountLinkedRoleToAddUserTo: the name of a discord role to add a discord user to when they link their account
# MinecraftDiscordAccountLinkedSetDiscordNicknameAsInGameName: whether or not to set the discord user's nickname to their in-game account name
#
MinecraftDiscordAccountLinkedConsoleCommands: ["", "", ""]
MinecraftDiscordAccountUnlinkedConsoleCommands: ["", "", ""]
MinecraftDiscordAccountLinkedRoleNameToAddUserTo: "Linked"
MinecraftDiscordAccountLinkedSetDiscordNicknameAsInGameName: false

# Minecraft group -> Discord role synchronization
#
# GroupRoleSynchronizationRoleIdsToSync: these are Discord role IDs that you want to be synchronized from Minecraft to Discord
#                                         if a role ID is not here, the permission for it (discordsrv.sync.[role id]) is effectively useless
#                                         to get your Discord guild's role IDs, run "/discord debug" and look at the first section
# GroupRoleSynchronizationCycleTime: amount of minutes between repeatedly triggering synchronization for all online players
# GroupRoleSynchronizationRemoveRolesOnUnlink: whether or not to remove synced roles from a Discord user when unlinking accounts
#
GroupRoleSynchronizationRoleIdsToSync: ["000000000000000000", "000000000000000000", "000000000000000000"]
GroupRoleSynchronizationCycleTime: 5
GroupRoleSynchronizationRemoveRolesOnUnlink: true

# Server watchdog
#
# The watchdog constantly monitors the last time your server performed a game tick
# If the time since the last tick goes above the set interval in seconds, Discord messages can be triggered
#
# ServerWatchdogEnabled: whether or not the watchdog is enabled at all
# ServerWatchdogTimeout: time in seconds that need to elapse before the watchdog takes action (Spigot's crash detection uses 60 for this)
#                        the minimum for this value is 10
# ServerWatchdogMessageCount: the amount of times ServerWatchdogMessage is sent. useful if you *really* want to make sure you know something's up
#
ServerWatchdogEnabled: true
ServerWatchdogTimeout: 30
ServerWatchdogMessageCount: 3

# Ban synchronization
# When a player gets banned on the server when they have a linked Discord account you can optionally ban them on the Discord server and vice versa
#
# BanSynchronizationDiscordToMinecraft: whether or not to ban people on the Minecraft server if they get banned from the Discord server
# BanSynchronizationDiscordToMinecraftReason: the message to be used as the ban reason for banning players from the Minecraft server
# BanSynchronizationMinecraftToDiscord: whether or not to ban people on the Discord server if they get banned from the Minecraft server
#
BanSynchronizationDiscordToMinecraft: false
BanSynchronizationDiscordToMinecraftReason: "&cYou have been banned until further notice from the server because you were banned on our Discord server."
BanSynchronizationMinecraftToDiscord: false

Chat listeners

Hey man, great plugin. However, I'm having some issues with other plugins;

We have our own staff chat system that's activated through using @, we also have ChatReaction and FactionChat. These don't work, since it's not detecting that you entered in chat to activate them. Also the same for colour chat with essentials. Is there a way around this?

Also, in one of my servers, I have it so that it shows the world they're in. Is there a way to enable this just for that server?

Spaces in Prefixes

Hi! For some reason since the newest update my groups in Luck Perms have an issue in /mc chat. Their normal prefix is &f<&dGrand Duke&f> &d" and it works, however when they talk in /mc it shows as &f<&dGrand &aDuke&f> &d"

Also when I give people perms it doesn't seem to work. Everyone who had perms before the update work fine, but now if I give someone "multichat.staff.admin" they can't use /ac. Same thing happening with /spy.

Disabling individual modules

Hey! I want to use the plugin for only a couple of (really useful :D) modules, but then the plugin would be more lightweight and easier to setup if you have the ability to turn of features (like the normal chat) alltogether. I wonder if you could add this?

Thanks in advance

Martijn

Global chat not sending

Describe the bug
A clear and concise description of what the bug is. Please make separate reports for different bugs!

Full startup log of affected servers

Paste the FULL startup log of Bungeecord / Spigot here depending on where the issue occurs

N/A - nothing shown, All servers start fine with no errors in console

To Reproduce
Steps to reproduce the behavior:

  1. Install a fresh copy of multichat 1.7.4
  2. Start up version paperspigot
  3. Type anything
  4. Nothing appears in other servers, even with their config duplicated.

Expected behavior
A clear and concise description of what you expected to happen.
Global chat to send from one server to the other, like the other 6 do just fine.
The server that won't send CAN recieve global chat however.
Screenshots
If applicable, add screenshots to help explain your problem.

Platform and Versions (please complete the following information):

  • OS: win server 2008 r2
  • Java Version: Java 8 latest version
  • MultiChat Version: 1.7.4
  • Proxy Version: No clue, latest from jenkins.
  • Local Server Version: Paper 195

Additional context
Add any other context about the problem here.

Implement permission nodes for individual regex rules

Describe the bug
Players will always have permission to use color and formatting codes in chat, regardless of permissions.

Full startup log of affected servers
N/A

To Reproduce
Steps to reproduce the behavior:

  1. Install multichat
  2. Deny color/format permissions
  3. Use color code
  4. See error

Expected behavior
It should properly check for permission.

Platform and Versions (please complete the following information):

  • OS: Linux CentOS 7
  • Java Version: Java 8 121
  • MultiChat Version: 1.7.5
  • Proxy Version: Waterfall-Bootstrap:1.15-SNAPSHOT:87d2873:326
  • Local Server Version: paper-153

Additional context
I turned on luckperms verbose and saw no checks for the color permissions, so possibly it just never checks it.

%SERVER% placeholder not working

Describe the bug
A clear and concise description of what the bug is. Please make separate reports for different bugs!

Full startup log of affected servers

Paste the FULL startup log of Bungeecord / Spigot here depending on where the issue occurs

Bungeecord log:
https://pastebin.com/EQLZqKJV

To Reproduce
Steps to reproduce the behavior:

  1. Update Multichat and generate new config file
  2. Add %SERVER% to chat formatting in config.yml
  3. See that SERVER_NAME is shown, rather than the actual server set in server.properties like it used to be

Expected behavior
A clear and concise description of what you expected to happen.
Server name to be displayed rather than SERVER_NAME
Screenshots
If applicable, add screenshots to help explain your problem.
https://i.imgur.com/22voIwd.png

Platform and Versions (please complete the following information):

  • OS: Win Server 08 enterprise
  • Java Version: J8 (build 1.8.0_221-b11)
  • MultiChat Version: 1.7.4
  • Proxy Version: I've got no idea, it's fresh as of 2 hrs ago from Jenkins
  • Local Server Version: Paper 194 1.14.4

Additional context
Add any other context about the problem here.

Fetching prefix and nicknames

I'm trying to have all nicknames synced across the servers while fetching the prefixes from every servers.
To my understanding if I want to fetch the prefixes, I would install multichat in the plugins server from every server, but it also fetches the nicknames which then aren't synced anymore between servers.

To solve this there would either be a way to only fetch the prefixes or having multichat nicknames synced on the spigot server side with an mysql database for example.

I am using:
PermissionsEX 1.23.4 To give all the players prefixes according to there rank.
Multichat on bungee 1.5 To have a global chat between all servers.
Multichat on every server 1.5 Only to fetch the prefixes.....
Bungee Display Name 1.29.5 To have all the nicknames synced.
Vault 1.5.6
Spigot 1.12 (git-spigot-7228328-11323bf)
Bungeecord 1.12 (Snapshot-6958943:1245)

Are there others ways to solve this? I would like to keep using PEX.
Thanks in advance

der71

Prefix and Suffix Issue

Hey, im currently having an issue that my prefixes and suffixes not get loaded in chat.
As I saw, the plugin get the prefixes from Vault cause it replaces my prefixes in the playerslist. So that works as acspacted. Tested the hole thing with diffrent versions. Tested with 1.6.1 and 1.6 of Multichat, running the newest version of Vault right now, tested also with an older one. Currently using spigot-1.12.2 and the newest BungeeCord Version. Rest of the plugin works perfectly fine. Tested with diffrent permissionsystems, tested with PEX and LuckPerms, same issue on both.

Hope that helps.
Greetins

Send messages to channels instead directly for the players

I've tried to listen the chat messages on Sponge but seems that the messages are sent directly to the players, so there's no way any Sponge plugins could listen to them. What I suggest is that instead sending directly to the player, send to a plugin channel a message containing the destination player UUID and the message, and the backend servers would send manually the message, possibly firing events or so. This would allow us to have control over the messages sent via this plugin.

Nickname permissions

How come there is no permission for setting nicknames? by default people can make really spammy nicknames with color codes in them. Like essentials, there should be a permission node for color nicknames and format nicknames.

Toggle chats (global / local)

Hello,

Using lastest snapshot (9)
Global chat is default chat, even if we do /local it still using the global chat.

spigot display name wont work

I recently updated my servers to 1.13 as well as all of the plugins. The only issue is, it grabs the chat format and such from multicraft, and doesn't display my PEX prefixes or anything. it's just the regular name and the chat.

staff chats not working

i've set the perms and everything and none of my staff are able to do /mc and /ac. even me, owner can't. it keeps saying "unknown command". help pls?

Port ?

I know 1.7 is going out of existence but is there any chance you could backport this to 1.7 ? we love the plugin but it doesn't seem to get prefix and stuff correctly on the 1.7 servers.

Buch of feature request

1-) It'd be nice if we can have @ feature, for example if a player with the right permission node texts @Spontini it will notify me with a bell sound or something like that.
2-) Support for Magibridge Plugin (https://ore.spongepowered.org/Eufranio/MagiBridge)
3-) A way to show the item in our hand in the chat, for example @hand.
4-) More customization. I've noticed we can not use some exist placeholders in some channels like StaffChat, i mean why do you guys remove a feature that's already been in the plugin? Let us decide our channel designs. (For example i can not use Prefixes in Staff or GroupChats.)

Players getting kicked when other players join

Doesn't happen all the time, but happens enough to be annoying :/
SpongeForge 1.10.2-2221-5.1.0-BETA-2136

[15:38:52] [Netty Epoll Server IO #4/ERROR] [FML/]: There was a critical exception handling a packet on channel MultiChat
java.util.NoSuchElementException: No value present
	at java.util.Optional.get(Optional.java:135) ~[?:1.8.0_121]
	at com.olivermartin410.plugins.MultiChatRawDataListener.handlePayload(MultiChatRawDataListener.java:24) ~[MultiChatRawDataListener.class:?]
	at org.spongepowered.mod.network.SpongeRawChannel.handlePacket(SpongeRawChannel.java:91) ~[SpongeRawChannel.class:1.10.2-2221-5.1.0-BETA-2136]
	at org.spongepowered.mod.network.SpongeRawDataInboundHandler.channelRead0(SpongeRawDataInboundHandler.java:50) ~[SpongeRawDataInboundHandler.class:1.10.2-2221-5.1.0-BETA-2136]
	at org.spongepowered.mod.network.SpongeRawDataInboundHandler.channelRead0(SpongeRawDataInboundHandler.java:36) ~[SpongeRawDataInboundHandler.class:1.10.2-2221-5.1.0-BETA-2136]
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[SimpleChannelInboundHandler.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) ~[AbstractChannelHandlerContext.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) ~[AbstractChannelHandlerContext.class:?]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) ~[DefaultChannelPipeline.class:?]
	at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
	at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:100) [FMLProxyPacket.class:?]
	at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:149) [eo.class:?]
	at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:51) [eo.class:?]
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:?]
	at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleServerSideCustomPacket(NetworkDispatcher.java:446) [NetworkDispatcher.class:?]
	at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:269) [NetworkDispatcher.class:?]
	at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:73) [NetworkDispatcher.class:?]
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [SimpleChannelInboundHandler.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:?]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:?]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:?]
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [ByteToMessageDecoder.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:?]
	at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:150) [ReadTimeoutHandler.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [AbstractChannelHandlerContext.class:?]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [AbstractChannelHandlerContext.class:?]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [DefaultChannelPipeline.class:?]
	at io.netty.channel.epoll.EpollSocketChannel$EpollSocketUnsafe.epollInReady(EpollSocketChannel.java:722) [EpollSocketChannel$EpollSocketUnsafe.class:?]
	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:326) [EpollEventLoop.class:?]
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:264) [EpollEventLoop.class:?]
	at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [SingleThreadEventExecutor$2.class:?]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]

shopkeepers | I can not change the name

ss
2017-09-09_14 27 26
2017-09-09_14 29 02
2017-09-09_14 27 38
2017-09-09_14 27 50

timings
https://timings.aikar.co/?id=02444e1fb41b435aaf12cd49dcec3f3a

shopkeepers plugin
https://dev.bukkit.org/projects/shopkeepers

config

disable-other-villagers: false
hire-other-villagers: false
block-villager-spawns: false
enable-spawn-verifier: false
bypass-spawn-blocking: true
bypass-shop-interaction-blocking: false
enable-purchase-logging: false
save-instantly: true
skip-custom-head-saving: true
file-encoding: UTF-8
enable-world-guard-restrictions: false
require-world-guard-allow-shop-flag: false
enable-towny-restrictions: false
create-player-shop-with-command: false
simulate-right-click-on-command: true
require-chest-recently-placed: true
protect-chests: false
delete-shopkeeper-on-break-chest: true
max-shops-per-player: 5
max-shops-perm-options: 1,2,3,4,5,6,7,8,9
max-chest-distance: 6
player-shopkeeper-inactive-days: 7
prevent-trading-with-own-shop: false
prevent-trading-while-owner-is-online: false
use-strict-item-comparison: true
tax-rate: 0
tax-round-up: false
shop-creation-item: 403
shop-creation-item-data: 0
shop-creation-item-name: '&aStragan'
shop-creation-item-lore: '&7Kliknij_x2_razy_prawym_na_skrzynie_aby_najac_sprzedawce'
prevent-shop-creation-item-regular-usage: false
deleting-player-shop-returns-creation-item: true
enabled-living-shops:
- VILLAGER
- COW
- ENDERMAN
- IRON_GOLEM
- MUSHROOM_COW
- OCELOT
- PIG
- PIG_ZOMBIE
- SHEEP
- SKELETON
- SNOWMAN
- WITCH
- WOLF
- ZOMBIE
- RABBIT
silence-living-shop-entities: true
enable-sign-shops: false
enable-citizen-shops: false
sign-shop-first-line: '[SHOP]'
show-nameplates: true
always-show-nameplates: false
nameplate-prefix: '&6'
name-regex: '[A-Za-z0-9 ]{3,25}'
allow-renaming-of-player-npc-shops: true
editor-title: '&1Co mam dzisiaj sprzedac?'
name-item: NAME_TAG
name-item-data: 0
delete-item: BARRIER
delete-item-data: 0
hire-item: EMERALD
hire-item-data: 0
hire-item-name: ''
hire-item-lore: []
hire-other-villagers-costs: 1
for-hire-title: For Hire
currency-item: EMERALD
currency-item-data: 0
currency-item-name: ''
currency-item-lore: []
zero-currency-item: SLIME_BALL
zero-currency-item-data: 0
zero-currency-item-name: ''
zero-currency-item-lore: []
high-currency-item: EMERALD_BLOCK
high-currency-item-data: 0
high-currency-item-name: ''
high-currency-item-lore: []
high-currency-value: 9
high-currency-min-cost: 20
high-zero-currency-item: SLIME_BALL
high-zero-currency-item-data: 0
high-zero-currency-item-name: ''
high-zero-currency-item-lore: []
language: pl
msg-creation-item-selected: |
  &aKliknij-Prawym w powietrze aby wybrac kostium sprzedawcy.
  &aShift + Kliknij-Prawym w powietrze aby wybrac profesje sprzedawcy.
  &aKliknij-Prawym na skrzynie, aby ja zaznaczyc.
  &aKliknij-Prawym na miejsce w ktorym ma sie pojawic sprzedawca.
msg-button-name: '&aNazwij Mnie'
msg-button-name-lore:
- Wybrales mi juz
- jakies imie?
msg-button-type: '&aPrzebierz Mnie'
msg-button-type-lore:
- Wybierz w co mam
- sie dzisiaj ubrac.
msg-button-delete: '&aZwolnij Mnie'
msg-button-delete-lore:
- Odeslij mnie do domu
- jesli nie ma niczego
- co moge zrobic.
msg-button-hire: '&aHire'
msg-button-hire-lore:
- Buy this shopkeeper
msg-selected-normal-shop: '&aWybrana profesja to: Zwykly Sprzedawca (&fsprzedaje itemy&a).'
msg-selected-book-shop: '&aWybrana profesja to: Sprzedawca Ksiazek (&fsprzedaje ksiazki&a).'
msg-selected-buy-shop: '&aWybrana profesja to: Sprzedawca Skupiciel (&fskupuje itemy&a).'
msg-selected-trade-shop: '&aWybrana profesja to: Sprzedawca Handlowiec (&fprowadzi
  handel wymienny&a).'
msg-selected-living-shop: '&aWybrany kostium to: &f{type}'
msg-selected-sign-shop: '&aYou selected: &fsign shop'
msg-selected-citizen-shop: '&aYou selected: &fcitizen npc shop'
msg-selected-chest: '&aSkrzynia zaznaczona! Kliknij prawym przyciskiem w miejsce w
  ktorym ma sie pojawic sprzedawca.'
msg-must-select-chest: '&aMusisz kliknac prawym przyciskiem na skrzynie, aby moc nastepnie
  utworzyc sprzedawce.'
msg-chest-too-far: '&aSkrzynia znajduje sie za daleko od miejsca w ktorym chcesz umiescic
  sprzedawce!'
msg-chest-not-placed: '&aPostaw skrzynie i sprobuj ponownie.'
msg-shop-create-fail: '&aNie mozesz tutaj utworzyc sprzedawcy.'
msg-too-many-shops: '&aMasz za duzo aktywnych sprzedawcow.'
msg-cant-open-shop-with-spawn-egg: '&7Nie mozesz rozpoczac handlu trzymajac jajo villagera
  w dloni.'
msg-type-new-name: '&aJak mam sie nazywac? Wpisz moje imie w czacie.'
msg-name-set: '&aDziekuje, teraz wiem jak sie nazywam.'
msg-name-invalid: '&aZ moja nazwa cos jest nie tak, nie moge tak sie nazywac.'
msg-unknown-shopkeeper: '&7Nie znaleziono sprzedawcy z takiem imieniem lub id.'
msg-unknown-player: '&7Nie znaleziono gracza z takim imieniem.'
msg-unknow-shop-type: '&7Unknown shop type ''{type}''.'
msg-shop-type-disabled: '&7The shop type ''{type}'' is disabled.'
msg-unknow-shop-object-type: '&7Unknown shop object type ''{type}''.'
msg-shop-object-type-disabled: '&7The shop object type ''{type}'' is disabled.'
msg-must-target-chest: '&7You have to target a chest.'
msg-unused-chest: '&7No shopkeeper is using this chest.'
msg-not-owner: '&7You are not the owner of this shopkeeper.'
msg-owner-set: '&aNew owner was set to &e{owner}'
msg-trade-perm-set: '&aThe shop''s trading permission has been set!'
msg-trade-term-removed: '&aThe shop''s trading permission has been removed!'
msg-trade-perm-view: '&aThe shop''s current trading permission is ''&e{perm}&a''.'
msg-must-hold-hire-item: '&7You have to hold the required hire item in your hand.'
msg-set-for-hire: '&aThe Shopkeeper was set for hire.'
msg-hired: '&aYou have hired this shopkeeper!'
msg-cant-hire: '&aYou cannot afford to hire this shopkeeper.'
msg-villager-for-hire: '&aThe villager offered his services as a shopkeeper in exchange
  for &6{costs}x {hire-item}&a.'
msg-missing-trade-perm: '&7You do not have the permission to trade with this shop.'
msg-missing-custom-trade-perm: '&7You do not have the permission to trade with this
  shop.'
msg-cant-trade-while-owner-online: '&7Nie mozesz teraz handlowac, wroc jak gracz {owner}
  opusci serwer.'
msg-player-shop-created: |
  &aZwykly Sprzedawca utworzony!
  &aWypelnij skrzynie itemkami ktore zamierzasz sprzedac.
  &aPrzytrzymaj klawisz shift i kliknij prawym na sprzedawce, aby moc ustawic cene i ilosc.
msg-book-shop-created: |
  &aSprzedawca Ksiazek Utworzony!
  &aDodaj do skrzyni zapisane ksiazki ktore zamierzasz sprzedac (&fksiazki nie znikaja jak ktos je kupuje&a).
  &aPrzytrzymaj klawisz shift i kliknij prawym na sprzedawce, aby moc ustawic cene.
msg-buy-shop-created: |
  &aSprzedawca Skupiciel Utworzony!
  &aDodaj do skrzyni po jednym itemku ktory ma byc skupowany, wrzuc tez emeraldy w odpowiedniej ilosci zeby bylo czym zaplacic.
  &aPrzytrzymaj klawisz shift i kliknij prawym na sprzedawce, aby moc ustawic cene i ilosc.
msg-trade-shop-created: |
  &aSprzedawca Handlowiec Utworzony!
  &aDodaj do skrzyni itemy ktore chcesz wymienic za...
  &aPrzytrzymaj klawisz shift i kliknij prawym na sprzedawce, aby moc ustawic ilosc (&fkliknij item w ekwipunku, kliknij pole w menu sprzedawcy na ktore item ma zostac przeniesiony&a).
msg-admin-shop-created: |
  &aSprzedawca Utworzony!
  &aPrzytrzymaj klawisz shift i kliknij prawym na sprzedawce, aby moc ustawic cene i ilosc.
msg-list-admin-shops-header: '&9There are &e{shopsCount} &9admin shops: &e(Page {page})'
msg-list-player-shops-header: '&9Player ''&e{player}&9'' has &e{shopsCount} &9shops:
  &e(Page {page})'
msg-list-shops-entry: '  &e{shopSessionId}) &7{shopName}&r&8at &7({location})&8, type:
  &7{shopType}&8, object type: &7{objectType}'
msg-removed-admin-shops: '&e{shopsCount} &aadmin shops were removed.'
msg-removed-player-shops: '&e{shopsCount} &ashops of player ''&e{player}&a'' were
  removed.'
msg-removed-all-player-shops: '&aAll &e{shopsCount} &aplayer shops were removed.'
msg-confirm-remove-admin-shops: |-
  &cYou are about to irrevocable remove all admin shops!
  &7Please confirm this action by typing &6/shopkeepers confirm
msg-confirm-remove-own-shops: |-
  &cYou are about to irrevocable remove all your shops!
  &7Please confirm this action by typing &6/shopkeepers confirm
msg-confirm-remove-player-shops: |-
  &cYou are about to irrevocable remove all shops of player &6{player}&c!
  &7Please confirm this action by typing &6/shopkeepers confirm
msg-confirm-remove-all-player-shops: |-
  &cYou are about to irrevocable remove all player shops of all players!
  &7Please confirm this action by typing &6/shopkeepers confirm
msg-confirmation-expired: '&cConfirmation expired.'
msg-nothing-to-confirm: '&cThere is nothing to confirm currently.'
msg-no-permission: '&cYou don''t have the permission to do that.'
msg-help-header: '&9***** &8[&6Shopkeepers Help&8] &9*****'
msg-command-help: '&a/shopkeepers help &8- &7Shows this help page.'
msg-command-reload: '&a/shopkeepers reload &8- &7Reloads this plugin.'
msg-command-debug: '&a/shopkeepers debug &8- &7Toggles debug mode on and off.'
msg-command-list: '&a/shopkeepers list [player|admin] [page] &8- &7Lists all shops
  for the specified player, or all admin shops.'
msg-command-remove: '&a/shopkeepers remove [player|all|admin] &8- &7Removes all shops
  for the specified player, all players, or all admin shops.'
msg-command-remote: '&a/shopkeepers remote <shopName> &8- &7Remotely opens a shop.'
msg-command-transfer: '&a/shopkeepers transfer <newOwner> &8- &7Transfers the ownership
  of a shop.'
msg-command-settradeperm: '&a/shopkeepers setTradePerm <shopId> <tradePerm|-|?> &8-
  &7Sets, removes (-) or displays (?) the trading permission.'
msg-command-setforhire: '&a/shopkeepers setForHire &8- &7Sets one of your shops for
  sale.'
msg-command-shopkeeper: '&a/shopkeepers [shop type] [object type] &8- &7Creates a
  shop.'
debug: false
msg-trade-perm-removed: '&aThe shop''s trading permission has been removed!'
enable-chest-option-on-player-shop: false
naming-of-player-shops-via-item: false
name-item-name: ''
name-item-lore: []
chest-item: CHEST
chest-item-data: 0
msg-button-chest: '&aView Chest Inventory'
msg-button-chest-lore:
- Lets you view the inventory
- ' your shopkeeper is using'
msg-trading-title-prefix: '&2'
msg-trading-title-default: Shopkeeper

DiscordSRV staff chat channel

This might be a stupid question, but I would love to be able to send both staff chat channels to a discord channel.

I have your plugin working just fine across the board and DiscordSRV is working just fine for global and local between all of my servers, I think I just need to know what the internal channel names are for Admin and Mod chat (if they are exposed at all for other plugins).

I have tried:

  • Staff
  • Admin and Administrator
  • Mod and Moderator

Hoping its just a case of me using the right string for it.

Mute player

Why you don't add /mute command ;__;?

I really need this feature.

Translation Support

Is your feature request related to a problem? Please describe.
Adding a translation support feature

Describe the solution you'd like
In config.yml file Added line for support multiple language

for exemple language : FR-fr

This setting would change the language of the messages.yml and joinmessage.yml files If it exists in the original config

I'm aware that you need a team that can translate the files into multiple languages.
In any case I am ready to provide my French translations of the files messages.yml and Joinmessages.yml.

Sorry for the approximate English I am French and I use the Windows translator

Kind regards

No permission

I am using PEX and I am set to the Owner rank which has all permissions, but for some reason, I can't use MultiChat commands. I tried adding a single permission node to a rank, but the player still couldn't use the command. I've got it to where it has our prefixes though.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.