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}.' BlockCommandPlayer: '&cYou have been blocked from entering command {command}.'
BlockCommandSender: '&cBlocked player &6{player} &cfrom entering command {command}.' BlockCommandSender: '&cBlocked player &6{player} &cfrom entering command {command}.'
BlockedCommand: '&cYou are blocked from entering this 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' ChannelListWithPermissions: '{channel_color}{channel_name} : {channel_alias} - Permission Required'
ChannelNoPermission: '&cYou do not have permission for this channel.' ChannelNoPermission: '&cYou do not have permission for this channel.'
ChannelNoPermissionView: '&cYou do not have permission to look at 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}' ChannelPlayerListHeader: '&6Players in Channel: {channel_color}{channel_name}'
ChannelMuted: '&cYou are muted in this channel: {channel_color}{channel_name}&c{time}' ChannelMuted: '&cYou are muted in this channel: {channel_color}{channel_name}&c{time}'
CommandInvalidArguments: '&cInvalid command: {command} {args}' CommandInvalidArguments: '&cInvalid command: {command} {args}'

View File

@ -1,4 +1,4 @@
name: VentureChat name: VentureChat
main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee
version: 2.19.3 version: 2.20.0
author: Aust1n46 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 # 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 "" 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: channels:
GroupChatColorExample: GroupChatColorExample:
color: '#706C1E' color: '#706C1E'
@ -308,6 +312,7 @@ channels:
bungeecord: false bungeecord: false
alias: ge alias: ge
permissions: None permissions: None
speak_permissions: None
format: '&f[#706C1EGroupColorChat&f] {vault_prefix} {player_displayname}#706C1E:{vault_suffix}' format: '&f[#706C1EGroupColorChat&f] {vault_prefix} {player_displayname}#706C1E:{vault_suffix}'
HexExample: HexExample:
color: '#ff0000' color: '#ff0000'
@ -321,6 +326,7 @@ channels:
bungeecord: false bungeecord: false
alias: he alias: he
permissions: None permissions: None
speak_permissions: None
format: '&f[#ff0000Hex&f] {vault_prefix} {player_displayname}#ff0000:' format: '&f[#ff0000Hex&f] {vault_prefix} {player_displayname}#ff0000:'
BungeeExample: BungeeExample:
color: gold color: gold
@ -334,7 +340,22 @@ channels:
bungeecord: true bungeecord: true
alias: be alias: be
permissions: None permissions: None
speak_permissions: None
format: '&f[&6Network&f] {vault_prefix} {player_displayname}&6:' 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: Global:
color: dark_green color: dark_green
chatcolor: dark_green chatcolor: dark_green
@ -347,6 +368,7 @@ channels:
bungeecord: false bungeecord: false
alias: g alias: g
permissions: None permissions: None
speak_permissions: None
format: '&f[&2Global&f] {vault_prefix} {player_displayname}&2:' format: '&f[&2Global&f] {vault_prefix} {player_displayname}&2:'
Staff: Staff:
color: green color: green
@ -360,6 +382,7 @@ channels:
bungeecord: false bungeecord: false
alias: st alias: st
permissions: staffchannel permissions: staffchannel
speak_permissions: None
format: '&f[&aStaff&f] {vault_prefix} {player_displayname}&a:' format: '&f[&aStaff&f] {vault_prefix} {player_displayname}&a:'
Donator: Donator:
color: light_purple color: light_purple
@ -373,6 +396,7 @@ channels:
bungeecord: false bungeecord: false
alias: d alias: d
permissions: donatorchannel permissions: donatorchannel
speak_permissions: None
format: '&f[&dDonator&f] {vault_prefix} {player_displayname}&d:' format: '&f[&dDonator&f] {vault_prefix} {player_displayname}&d:'
Help: Help:
color: aqua color: aqua
@ -386,6 +410,7 @@ channels:
bungeecord: false bungeecord: false
alias: h alias: h
permissions: None permissions: None
speak_permissions: None
format: '&f[&bHelp&f] {vault_prefix} {player_displayname}&b:' format: '&f[&bHelp&f] {vault_prefix} {player_displayname}&b:'
Trade: Trade:
color: dark_aqua color: dark_aqua
@ -399,6 +424,7 @@ channels:
bungeecord: false bungeecord: false
alias: t alias: t
permissions: None permissions: None
speak_permissions: None
format: '&f[&3Trade&f] {vault_prefix} {player_displayname}&3:' format: '&f[&3Trade&f] {vault_prefix} {player_displayname}&3:'
Local: Local:
color: yellow color: yellow
@ -412,4 +438,5 @@ channels:
bungeecord: false bungeecord: false
alias: l alias: l
permissions: None permissions: None
speak_permissions: None
format: '&f[&eLocal&f] {vault_prefix} {player_displayname}&e:' 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 # 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 "" 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: channels:
GroupChatColorExample: GroupChatColorExample:
color: '#706C1E' color: '#706C1E'
@ -308,6 +312,7 @@ channels:
bungeecord: false bungeecord: false
alias: ge alias: ge
permissions: None permissions: None
speak_permissions: None
format: '&f[#706C1EGroupColorChat&f] {vault_prefix} {player_displayname}#706C1E:{vault_suffix}' format: '&f[#706C1EGroupColorChat&f] {vault_prefix} {player_displayname}#706C1E:{vault_suffix}'
HexExample: HexExample:
color: '#ff0000' color: '#ff0000'
@ -321,6 +326,7 @@ channels:
bungeecord: false bungeecord: false
alias: he alias: he
permissions: None permissions: None
speak_permissions: None
format: '&f[#ff0000Hex&f] {vault_prefix} {player_displayname}#ff0000:' format: '&f[#ff0000Hex&f] {vault_prefix} {player_displayname}#ff0000:'
BungeeExample: BungeeExample:
color: gold color: gold
@ -334,7 +340,22 @@ channels:
bungeecord: true bungeecord: true
alias: be alias: be
permissions: None permissions: None
speak_permissions: None
format: '&f[&6Network&f] {vault_prefix} {player_displayname}&6:' 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: Global:
color: dark_green color: dark_green
chatcolor: dark_green chatcolor: dark_green
@ -347,6 +368,7 @@ channels:
bungeecord: false bungeecord: false
alias: g alias: g
permissions: None permissions: None
speak_permissions: None
format: '&f[&2Global&f] {vault_prefix} {player_displayname}&2:' format: '&f[&2Global&f] {vault_prefix} {player_displayname}&2:'
Staff: Staff:
color: green color: green
@ -360,6 +382,7 @@ channels:
bungeecord: false bungeecord: false
alias: st alias: st
permissions: staffchannel permissions: staffchannel
speak_permissions: None
format: '&f[&aStaff&f] {vault_prefix} {player_displayname}&a:' format: '&f[&aStaff&f] {vault_prefix} {player_displayname}&a:'
Donator: Donator:
color: light_purple color: light_purple
@ -373,6 +396,7 @@ channels:
bungeecord: false bungeecord: false
alias: d alias: d
permissions: donatorchannel permissions: donatorchannel
speak_permissions: None
format: '&f[&dDonator&f] {vault_prefix} {player_displayname}&d:' format: '&f[&dDonator&f] {vault_prefix} {player_displayname}&d:'
Help: Help:
color: aqua color: aqua
@ -386,6 +410,7 @@ channels:
bungeecord: false bungeecord: false
alias: h alias: h
permissions: None permissions: None
speak_permissions: None
format: '&f[&bHelp&f] {vault_prefix} {player_displayname}&b:' format: '&f[&bHelp&f] {vault_prefix} {player_displayname}&b:'
Trade: Trade:
color: dark_aqua color: dark_aqua
@ -399,6 +424,7 @@ channels:
bungeecord: false bungeecord: false
alias: t alias: t
permissions: None permissions: None
speak_permissions: None
format: '&f[&3Trade&f] {vault_prefix} {player_displayname}&3:' format: '&f[&3Trade&f] {vault_prefix} {player_displayname}&3:'
Local: Local:
color: yellow color: yellow
@ -412,4 +438,5 @@ channels:
bungeecord: false bungeecord: false
alias: l alias: l
permissions: None permissions: None
speak_permissions: None
format: '&f[&eLocal&f] {vault_prefix} {player_displayname}&e:' 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 //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. //information is read in from the config file when the server starts up.
public class ChatChannel { 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 name;
private String permission; private String permission;
private String speakPermission;
private Boolean mutable; private Boolean mutable;
private String color; private String color;
private String chatcolor; private String chatColor;
private Boolean defaultChannel; private Boolean defaultChannel;
private Boolean autojoin; private Boolean autojoin;
private String alias; private String alias;
@ -25,50 +34,32 @@ public class ChatChannel {
private Boolean bungee; private Boolean bungee;
private String format; private String format;
private int cooldown; 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() { 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"); ConfigurationSection cs = plugin.getConfig().getConfigurationSection("channels");
int len = (cs.getKeys(false)).size(); int len = (cs.getKeys(false)).size();
channels = new ChatChannel[len]; channels = new ChatChannel[len];
int x = 0; int counter = 0;
for(String key : cs.getKeys(false)) { for(String key : cs.getKeys(false)) {
_color = (String) cs.getString(key + ".color", "white"); String color = cs.getString(key + ".color", "white");
_chatcolor = (String) cs.getString(key + ".chatcolor", "white"); String chatColor = cs.getString(key + ".chatcolor", "white");
_name = key; String name = key;
_permission = (String) cs.getString(key + ".permissions", "None"); String permission = cs.getString(key + ".permissions", "None");
_mutable = (Boolean) cs.getBoolean(key + ".mutable", false); String speakPermission = cs.getString(key + ".speak_permissions", "None");
_filter = (Boolean) cs.getBoolean(key + ".filter", true); boolean mutable = cs.getBoolean(key + ".mutable", false);
_bungee = (Boolean) cs.getBoolean(key + ".bungeecord", false); boolean filter = cs.getBoolean(key + ".filter", true);
_format = cs.getString(key + ".format", "Default"); boolean bungee = cs.getBoolean(key + ".bungeecord", false);
_defaultchannel = (Boolean) cs.getBoolean(key + ".default", false); String format = cs.getString(key + ".format", "Default");
_alias = (String) cs.getString(key + ".alias", "None"); boolean defaultChannel = cs.getBoolean(key + ".default", false);
_distance = (Double) cs.getDouble(key + ".distance", (double) 0); String alias = cs.getString(key + ".alias", "None");
_cooldown = (int) cs.getInt(key + ".cooldown", 0); double distance = cs.getDouble(key + ".distance", (double) 0);
_autojoin = (Boolean) cs.getBoolean(key + ".autojoin", false); int cooldown = cs.getInt(key + ".cooldown", 0);
ChatChannel c = new ChatChannel(_name, _color, _chatcolor, _permission, _mutable, _filter, _defaultchannel, _alias, _distance, _autojoin, _bungee, _cooldown, _format); boolean autojoin = cs.getBoolean(key + ".autojoin", false);
channels[x++] = c; ChatChannel chatChannel = new ChatChannel(name, color, chatColor, permission, speakPermission, mutable, filter, defaultChannel, alias, distance, autojoin, bungee, cooldown, format);
if(_defaultchannel) { channels[counter++] = chatChannel;
defaultChatChannel = c; if(defaultChannel) {
defaultColor = _color; defaultChatChannel = chatChannel;
defaultColor = color;
} }
} }
} }
@ -108,46 +99,35 @@ public class ChatChannel {
return joinlist; 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) { 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) {
name = _Name; this.name = name;
permission = "venturechat." + _Permission; this.color = color;
mutable = _mutable; this.chatColor = chatColor;
setColor(_color); this.permission = PERMISSION_PREFIX + permission;
setChatColor(_chatcolor); this.speakPermission = PERMISSION_PREFIX + speakPermission;
setDefaultChannel(_defaultchannel); this.mutable = mutable;
setAlias(_alias); this.filter = filter;
setDistance(_distance); this.defaultChannel = defaultChannel;
setFilter(_filter); this.alias = alias;
setAutojoin(_autojoin); this.distance = distance;
setBungee(_bungee); this.autojoin = autojoin;
setCooldown(_cooldown); this.bungee = bungee;
setFormat(_format); this.cooldown = cooldown;
this.format = format;
} }
public String getName() { public String getName() {
return name; return name;
} }
public void setFormat(String _format) {
format = _format;
}
public String getFormat() { public String getFormat() {
return format; return format;
} }
public void setCooldown(int _cooldown) {
cooldown = _cooldown;
}
public int getCooldown() { public int getCooldown() {
return cooldown; return cooldown;
} }
public void setBungee(Boolean _bungee) {
bungee = _bungee;
}
public Boolean getBungee() { public Boolean getBungee() {
return bungee; return bungee;
} }
@ -160,10 +140,6 @@ public class ChatChannel {
return autojoin; return autojoin;
} }
public void setAutojoin(Boolean _autojoin) {
autojoin = _autojoin;
}
public Boolean isMutable() { public Boolean isMutable() {
return mutable; return mutable;
} }
@ -182,55 +158,35 @@ public class ChatChannel {
return color; return color;
} }
public void setColor(String color) {
this.color = color;
}
public String getChatColor() { public String getChatColor() {
if(chatcolor.equalsIgnoreCase("None")) { if(chatColor.equalsIgnoreCase("None")) {
return chatcolor; return chatColor;
} }
if(Format.isValidColor(chatcolor)) { if(Format.isValidColor(chatColor)) {
return String.valueOf(ChatColor.valueOf(chatcolor.toUpperCase())); return String.valueOf(ChatColor.valueOf(chatColor.toUpperCase()));
} }
if(Format.isValidHexColor(chatcolor)) { if(Format.isValidHexColor(chatColor)) {
return Format.convertHexColorCodeToBukkitColorCode(chatcolor); return Format.convertHexColorCodeToBukkitColorCode(chatColor);
} }
return Format.DEFAULT_COLOR_CODE; return Format.DEFAULT_COLOR_CODE;
} }
public String getChatColorRaw() { public String getChatColorRaw() {
return chatcolor; return chatColor;
}
public void setChatColor(String chatcolor) {
this.chatcolor = chatcolor;
} }
public Boolean isDefaultchannel() { public Boolean isDefaultchannel() {
return defaultChannel; return defaultChannel;
} }
public void setDefaultChannel(Boolean defaultChannel) {
this.defaultChannel = defaultChannel;
}
public String getAlias() { public String getAlias() {
return alias; return alias;
} }
public void setAlias(String alias) {
this.alias = alias;
}
public Double getDistance() { public Double getDistance() {
return distance; return distance;
} }
public void setDistance(Double distance) {
this.distance = distance;
}
public Boolean hasDistance() { public Boolean hasDistance() {
return distance > 0; return distance > 0;
} }
@ -240,21 +196,21 @@ public class ChatChannel {
} }
public Boolean hasPermission() { 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() { public Boolean isFiltered() {
return filter; return filter;
} }
public void setFilter(Boolean filter) {
this.filter = filter;
}
public boolean isIRC() {
return irc;
}
@Override @Override
public boolean equals(Object channel) { public boolean equals(Object channel) {
return channel instanceof ChatChannel && this.name.equals(((ChatChannel) channel).getName()); return channel instanceof ChatChannel && this.name.equals(((ChatChannel) channel).getName());

View File

@ -243,6 +243,11 @@ public class ChatListener implements Listener {
mcp.setCurrentChannel(ChatChannel.getDefaultChannel()); mcp.setCurrentChannel(ChatChannel.getDefaultChannel());
return; 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(); curColor = eventChannel.getChatColor();
bungee = eventChannel.getBungee(); bungee = eventChannel.getBungee();

View File

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

View File

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

View File

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