Added speak permissions for chat channels.

This commit is contained in:
Aust1n46 2020-08-22 23:16:40 -05:00
parent e23480805c
commit d4a693d213
9 changed files with 128 additions and 111 deletions

View File

@ -1,4 +1,4 @@
Version: 2.18.2
Version: 2.20.0
BlockCommandPlayer: '&cYou have been blocked from entering command {command}.'
BlockCommandSender: '&cBlocked player &6{player} &cfrom entering command {command}.'
BlockedCommand: '&cYou are blocked from entering this command: {command}'
@ -14,6 +14,7 @@ ChannelListHeader: '&6Channel List : Alias'
ChannelListWithPermissions: '{channel_color}{channel_name} : {channel_alias} - Permission Required'
ChannelNoPermission: '&cYou do not have permission for this channel.'
ChannelNoPermissionView: '&cYou do not have permission to look at this channel.'
ChannelNoSpeakPermissions: '&cYou do not have permission to speak in this channel.'
ChannelPlayerListHeader: '&6Players in Channel: {channel_color}{channel_name}'
ChannelMuted: '&cYou are muted in this channel: {channel_color}{channel_name}&c{time}'
CommandInvalidArguments: '&cInvalid command: {command} {args}'

View File

@ -1,4 +1,4 @@
name: VentureChat
main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee
version: 2.19.3
version: 2.20.0
author: Aust1n46

View File

@ -294,7 +294,11 @@ enable_factions_channel: false
# 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
#Set chatcolor to 'None' to have a group based chat color! Don't forget to put a suffix or other placeholder at the end of the format!
# Set chatcolor to 'None' to have a group based chat color! Don't forget to put a suffix or other placeholder at the end of the format!
# Important!!!
# Important!!!
# If you delete a channel, restart the server! Do not use /chatreload!!!
channels:
GroupChatColorExample:
color: '#706C1E'
@ -308,6 +312,7 @@ channels:
bungeecord: false
alias: ge
permissions: None
speak_permissions: None
format: '&f[#706C1EGroupColorChat&f] {vault_prefix} {player_displayname}#706C1E:{vault_suffix}'
HexExample:
color: '#ff0000'
@ -321,6 +326,7 @@ channels:
bungeecord: false
alias: he
permissions: None
speak_permissions: None
format: '&f[#ff0000Hex&f] {vault_prefix} {player_displayname}#ff0000:'
BungeeExample:
color: gold
@ -334,7 +340,22 @@ channels:
bungeecord: true
alias: be
permissions: None
speak_permissions: None
format: '&f[&6Network&f] {vault_prefix} {player_displayname}&6:'
AnnouncementExample:
color: red
chatcolor: red
mutable: false
filter: false
autojoin: true
default: false
distance: 0
cooldown: 0
bungeecord: true
alias: announce
permissions: None
speak_permissions: announcement
format: '&f[&aServer Announcement&f] {vault_prefix} {player_displayname}&c:'
Global:
color: dark_green
chatcolor: dark_green
@ -347,6 +368,7 @@ channels:
bungeecord: false
alias: g
permissions: None
speak_permissions: None
format: '&f[&2Global&f] {vault_prefix} {player_displayname}&2:'
Staff:
color: green
@ -360,6 +382,7 @@ channels:
bungeecord: false
alias: st
permissions: staffchannel
speak_permissions: None
format: '&f[&aStaff&f] {vault_prefix} {player_displayname}&a:'
Donator:
color: light_purple
@ -373,6 +396,7 @@ channels:
bungeecord: false
alias: d
permissions: donatorchannel
speak_permissions: None
format: '&f[&dDonator&f] {vault_prefix} {player_displayname}&d:'
Help:
color: aqua
@ -386,6 +410,7 @@ channels:
bungeecord: false
alias: h
permissions: None
speak_permissions: None
format: '&f[&bHelp&f] {vault_prefix} {player_displayname}&b:'
Trade:
color: dark_aqua
@ -399,6 +424,7 @@ channels:
bungeecord: false
alias: t
permissions: None
speak_permissions: None
format: '&f[&3Trade&f] {vault_prefix} {player_displayname}&3:'
Local:
color: yellow
@ -412,4 +438,5 @@ channels:
bungeecord: false
alias: l
permissions: None
speak_permissions: None
format: '&f[&eLocal&f] {vault_prefix} {player_displayname}&e:'

View File

@ -294,7 +294,11 @@ enable_factions_channel: false
# 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
#Set chatcolor to 'None' to have a group based chat color! Don't forget to put a suffix or other placeholder at the end of the format!
# Set chatcolor to 'None' to have a group based chat color! Don't forget to put a suffix or other placeholder at the end of the format!
# Important!!!
# Important!!!
# If you delete a channel, restart the server! Do not use /chatreload!!!
channels:
GroupChatColorExample:
color: '#706C1E'
@ -308,6 +312,7 @@ channels:
bungeecord: false
alias: ge
permissions: None
speak_permissions: None
format: '&f[#706C1EGroupColorChat&f] {vault_prefix} {player_displayname}#706C1E:{vault_suffix}'
HexExample:
color: '#ff0000'
@ -321,6 +326,7 @@ channels:
bungeecord: false
alias: he
permissions: None
speak_permissions: None
format: '&f[#ff0000Hex&f] {vault_prefix} {player_displayname}#ff0000:'
BungeeExample:
color: gold
@ -334,7 +340,22 @@ channels:
bungeecord: true
alias: be
permissions: None
speak_permissions: None
format: '&f[&6Network&f] {vault_prefix} {player_displayname}&6:'
AnnouncementExample:
color: red
chatcolor: red
mutable: false
filter: false
autojoin: true
default: false
distance: 0
cooldown: 0
bungeecord: true
alias: announce
permissions: None
speak_permissions: announcement
format: '&f[&aServer Announcement&f] {vault_prefix} {player_displayname}&c:'
Global:
color: dark_green
chatcolor: dark_green
@ -347,6 +368,7 @@ channels:
bungeecord: false
alias: g
permissions: None
speak_permissions: None
format: '&f[&2Global&f] {vault_prefix} {player_displayname}&2:'
Staff:
color: green
@ -360,6 +382,7 @@ channels:
bungeecord: false
alias: st
permissions: staffchannel
speak_permissions: None
format: '&f[&aStaff&f] {vault_prefix} {player_displayname}&a:'
Donator:
color: light_purple
@ -373,6 +396,7 @@ channels:
bungeecord: false
alias: d
permissions: donatorchannel
speak_permissions: None
format: '&f[&dDonator&f] {vault_prefix} {player_displayname}&d:'
Help:
color: aqua
@ -386,6 +410,7 @@ channels:
bungeecord: false
alias: h
permissions: None
speak_permissions: None
format: '&f[&bHelp&f] {vault_prefix} {player_displayname}&b:'
Trade:
color: dark_aqua
@ -399,6 +424,7 @@ channels:
bungeecord: false
alias: t
permissions: None
speak_permissions: None
format: '&f[&3Trade&f] {vault_prefix} {player_displayname}&3:'
Local:
color: yellow
@ -412,4 +438,5 @@ channels:
bungeecord: false
alias: l
permissions: None
speak_permissions: None
format: '&f[&eLocal&f] {vault_prefix} {player_displayname}&e:'

View File

@ -12,11 +12,20 @@ import mineverse.Aust1n46.chat.utilities.Format;
//This class is used to create ChatChannel objects, which store all the information for a channel. This
//information is read in from the config file when the server starts up.
public class ChatChannel {
private static final String PERMISSION_PREFIX = "venturechat.";
private static final String NO_PERMISSIONS = "venturechat.none";
private static MineverseChat plugin = MineverseChat.getInstance();
private static ChatChannel defaultChatChannel;
private static ChatChannel[] channels;
private static String defaultColor;
private String name;
private String permission;
private String speakPermission;
private Boolean mutable;
private String color;
private String chatcolor;
private String chatColor;
private Boolean defaultChannel;
private Boolean autojoin;
private String alias;
@ -25,50 +34,32 @@ public class ChatChannel {
private Boolean bungee;
private String format;
private int cooldown;
private boolean irc;
private static MineverseChat plugin = MineverseChat.getInstance();
private static ChatChannel defaultChatChannel;
private static ChatChannel[] channels;
private static String defaultColor;
public static void initialize() {
String _color = "";
String _chatcolor = "";
String _name = "";
String _permission = "";
Boolean _mutable = false;
Boolean _filter = false;
Boolean _defaultchannel = false;
String _alias = "";
Double _distance = (double) 0;
Boolean _autojoin = false;
Boolean _bungee = false;
String _format = "";
int _cooldown = 0;
ConfigurationSection cs = plugin.getConfig().getConfigurationSection("channels");
int len = (cs.getKeys(false)).size();
channels = new ChatChannel[len];
int x = 0;
int counter = 0;
for(String key : cs.getKeys(false)) {
_color = (String) cs.getString(key + ".color", "white");
_chatcolor = (String) cs.getString(key + ".chatcolor", "white");
_name = key;
_permission = (String) cs.getString(key + ".permissions", "None");
_mutable = (Boolean) cs.getBoolean(key + ".mutable", false);
_filter = (Boolean) cs.getBoolean(key + ".filter", true);
_bungee = (Boolean) cs.getBoolean(key + ".bungeecord", false);
_format = cs.getString(key + ".format", "Default");
_defaultchannel = (Boolean) cs.getBoolean(key + ".default", false);
_alias = (String) cs.getString(key + ".alias", "None");
_distance = (Double) cs.getDouble(key + ".distance", (double) 0);
_cooldown = (int) cs.getInt(key + ".cooldown", 0);
_autojoin = (Boolean) cs.getBoolean(key + ".autojoin", false);
ChatChannel c = new ChatChannel(_name, _color, _chatcolor, _permission, _mutable, _filter, _defaultchannel, _alias, _distance, _autojoin, _bungee, _cooldown, _format);
channels[x++] = c;
if(_defaultchannel) {
defaultChatChannel = c;
defaultColor = _color;
String color = cs.getString(key + ".color", "white");
String chatColor = cs.getString(key + ".chatcolor", "white");
String name = key;
String permission = cs.getString(key + ".permissions", "None");
String speakPermission = cs.getString(key + ".speak_permissions", "None");
boolean mutable = cs.getBoolean(key + ".mutable", false);
boolean filter = cs.getBoolean(key + ".filter", true);
boolean bungee = cs.getBoolean(key + ".bungeecord", false);
String format = cs.getString(key + ".format", "Default");
boolean defaultChannel = cs.getBoolean(key + ".default", false);
String alias = cs.getString(key + ".alias", "None");
double distance = cs.getDouble(key + ".distance", (double) 0);
int cooldown = cs.getInt(key + ".cooldown", 0);
boolean autojoin = cs.getBoolean(key + ".autojoin", false);
ChatChannel chatChannel = new ChatChannel(name, color, chatColor, permission, speakPermission, mutable, filter, defaultChannel, alias, distance, autojoin, bungee, cooldown, format);
channels[counter++] = chatChannel;
if(defaultChannel) {
defaultChatChannel = chatChannel;
defaultColor = color;
}
}
}
@ -108,46 +99,35 @@ public class ChatChannel {
return joinlist;
}
public ChatChannel(String _Name, String _color, String _chatcolor, String _Permission, Boolean _mutable, Boolean _filter, Boolean _defaultchannel, String _alias, Double _distance, Boolean _autojoin, Boolean _bungee, int _cooldown, String _format) {
name = _Name;
permission = "venturechat." + _Permission;
mutable = _mutable;
setColor(_color);
setChatColor(_chatcolor);
setDefaultChannel(_defaultchannel);
setAlias(_alias);
setDistance(_distance);
setFilter(_filter);
setAutojoin(_autojoin);
setBungee(_bungee);
setCooldown(_cooldown);
setFormat(_format);
public ChatChannel(String name, String color, String chatColor, String permission, String speakPermission, Boolean mutable, Boolean filter, Boolean defaultChannel, String alias, Double distance, Boolean autojoin, Boolean bungee, int cooldown, String format) {
this.name = name;
this.color = color;
this.chatColor = chatColor;
this.permission = PERMISSION_PREFIX + permission;
this.speakPermission = PERMISSION_PREFIX + speakPermission;
this.mutable = mutable;
this.filter = filter;
this.defaultChannel = defaultChannel;
this.alias = alias;
this.distance = distance;
this.autojoin = autojoin;
this.bungee = bungee;
this.cooldown = cooldown;
this.format = format;
}
public String getName() {
return name;
}
public void setFormat(String _format) {
format = _format;
}
public String getFormat() {
return format;
}
public void setCooldown(int _cooldown) {
cooldown = _cooldown;
}
public int getCooldown() {
return cooldown;
}
public void setBungee(Boolean _bungee) {
bungee = _bungee;
}
public Boolean getBungee() {
return bungee;
}
@ -160,10 +140,6 @@ public class ChatChannel {
return autojoin;
}
public void setAutojoin(Boolean _autojoin) {
autojoin = _autojoin;
}
public Boolean isMutable() {
return mutable;
}
@ -182,55 +158,35 @@ public class ChatChannel {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getChatColor() {
if(chatcolor.equalsIgnoreCase("None")) {
return chatcolor;
if(chatColor.equalsIgnoreCase("None")) {
return chatColor;
}
if(Format.isValidColor(chatcolor)) {
return String.valueOf(ChatColor.valueOf(chatcolor.toUpperCase()));
if(Format.isValidColor(chatColor)) {
return String.valueOf(ChatColor.valueOf(chatColor.toUpperCase()));
}
if(Format.isValidHexColor(chatcolor)) {
return Format.convertHexColorCodeToBukkitColorCode(chatcolor);
if(Format.isValidHexColor(chatColor)) {
return Format.convertHexColorCodeToBukkitColorCode(chatColor);
}
return Format.DEFAULT_COLOR_CODE;
}
public String getChatColorRaw() {
return chatcolor;
}
public void setChatColor(String chatcolor) {
this.chatcolor = chatcolor;
return chatColor;
}
public Boolean isDefaultchannel() {
return defaultChannel;
}
public void setDefaultChannel(Boolean defaultChannel) {
this.defaultChannel = defaultChannel;
}
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias = alias;
}
public Double getDistance() {
return distance;
}
public void setDistance(Double distance) {
this.distance = distance;
}
public Boolean hasDistance() {
return distance > 0;
}
@ -240,20 +196,20 @@ public class ChatChannel {
}
public Boolean hasPermission() {
return !permission.equalsIgnoreCase("venturechat.none");
return !permission.equalsIgnoreCase(NO_PERMISSIONS);
}
public boolean hasSpeakPermission() {
return !speakPermission.equalsIgnoreCase(NO_PERMISSIONS);
}
public String getSpeakPermission() {
return speakPermission;
}
public Boolean isFiltered() {
return filter;
}
public void setFilter(Boolean filter) {
this.filter = filter;
}
public boolean isIRC() {
return irc;
}
@Override
public boolean equals(Object channel) {

View File

@ -243,6 +243,11 @@ public class ChatListener implements Listener {
mcp.setCurrentChannel(ChatChannel.getDefaultChannel());
return;
}
if(eventChannel.hasSpeakPermission() && !mcp.getPlayer().hasPermission(eventChannel.getSpeakPermission())) {
mcp.getPlayer().sendMessage(LocalizedMessage.CHANNEL_NO_SPEAK_PERMISSIONS.toString());
mcp.setQuickChat(false);
return;
}
curColor = eventChannel.getChatColor();
bungee = eventChannel.getBungee();

View File

@ -14,7 +14,7 @@ public class Localization {
private static MineverseChat plugin = MineverseChat.getInstance();
private static FileConfiguration localization;
private static final String VERSION = "2.18.2";
private static final String VERSION = "2.20.0";
public static void initialize() {
File localizationFile = new File(plugin.getDataFolder().getAbsolutePath(), "Messages.yml");

View File

@ -21,6 +21,7 @@ public enum LocalizedMessage {
CHANNEL_LIST_WITH_PERMISSIONS("ChannelListWithPermissions"),
CHANNEL_NO_PERMISSION("ChannelNoPermission"),
CHANNEL_NO_PERMISSION_VIEW("ChannelNoPermissionView"),
CHANNEL_NO_SPEAK_PERMISSIONS("ChannelNoSpeakPermissions"),
CHANNEL_PLAYER_LIST_HEADER("ChannelPlayerListHeader"),
CHANNEL_MUTED("ChannelMuted"),
COMMAND_INVALID_ARGUMENTS("CommandInvalidArguments"),

View File

@ -1,5 +1,5 @@
name: VentureChat
version: 2.19.3
version: 2.20.0
api-version: 1.13
main: mineverse.Aust1n46.chat.MineverseChat
depend: [Vault, ProtocolLib, PlaceholderAPI]