diff --git a/MineverseChat/Messages.yml b/MineverseChat/Messages.yml index 3c4df72..46ff32f 100644 --- a/MineverseChat/Messages.yml +++ b/MineverseChat/Messages.yml @@ -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}' diff --git a/MineverseChat/bungee.yml b/MineverseChat/bungee.yml index 0ed96ad..2e58ef4 100644 --- a/MineverseChat/bungee.yml +++ b/MineverseChat/bungee.yml @@ -1,4 +1,4 @@ name: VentureChat main: mineverse.Aust1n46.chat.bungee.MineverseChatBungee -version: 2.19.3 +version: 2.20.0 author: Aust1n46 \ No newline at end of file diff --git a/MineverseChat/config.yml b/MineverseChat/config.yml index aaf52e8..dbe055b 100644 --- a/MineverseChat/config.yml +++ b/MineverseChat/config.yml @@ -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:' \ No newline at end of file diff --git a/MineverseChat/defaultconfig.yml b/MineverseChat/defaultconfig.yml index aaf52e8..dbe055b 100644 --- a/MineverseChat/defaultconfig.yml +++ b/MineverseChat/defaultconfig.yml @@ -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:' \ No newline at end of file diff --git a/MineverseChat/mineverse/Aust1n46/chat/channel/ChatChannel.java b/MineverseChat/mineverse/Aust1n46/chat/channel/ChatChannel.java index 9030a49..740e263 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/channel/ChatChannel.java +++ b/MineverseChat/mineverse/Aust1n46/chat/channel/ChatChannel.java @@ -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) { diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java index 8b84df1..a618eb5 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java @@ -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(); diff --git a/MineverseChat/mineverse/Aust1n46/chat/localization/Localization.java b/MineverseChat/mineverse/Aust1n46/chat/localization/Localization.java index b881d4a..4a28528 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/localization/Localization.java +++ b/MineverseChat/mineverse/Aust1n46/chat/localization/Localization.java @@ -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"); diff --git a/MineverseChat/mineverse/Aust1n46/chat/localization/LocalizedMessage.java b/MineverseChat/mineverse/Aust1n46/chat/localization/LocalizedMessage.java index 7a53428..de424ed 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/localization/LocalizedMessage.java +++ b/MineverseChat/mineverse/Aust1n46/chat/localization/LocalizedMessage.java @@ -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"), diff --git a/MineverseChat/plugin.yml b/MineverseChat/plugin.yml index 40d23c0..dfa66c8 100644 --- a/MineverseChat/plugin.yml +++ b/MineverseChat/plugin.yml @@ -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]