diff --git a/MineverseChat/config.yml b/MineverseChat/config.yml index bc0d95d..5b3c863 100644 --- a/MineverseChat/config.yml +++ b/MineverseChat/config.yml @@ -306,6 +306,7 @@ channels: autojoin: true default: true distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: g @@ -319,6 +320,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: st @@ -332,6 +334,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: a @@ -345,6 +348,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: d @@ -358,6 +362,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: h @@ -371,6 +376,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: t @@ -384,6 +390,7 @@ channels: autojoin: true default: false distance: 230 + distanceIsCube: false cooldown: 0 bungeecord: false alias: l @@ -397,6 +404,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 60 bungeecord: true alias: n diff --git a/MineverseChat/defaultconfig.yml b/MineverseChat/defaultconfig.yml index dd91c69..d5d1370 100644 --- a/MineverseChat/defaultconfig.yml +++ b/MineverseChat/defaultconfig.yml @@ -304,6 +304,7 @@ channels: autojoin: true default: true distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: g @@ -317,6 +318,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: st @@ -330,6 +332,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: a @@ -343,6 +346,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: d @@ -356,6 +360,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: h @@ -369,6 +374,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 0 bungeecord: false alias: t @@ -382,6 +388,7 @@ channels: autojoin: true default: false distance: 230 + distanceIsCube: false cooldown: 0 bungeecord: false alias: l @@ -395,6 +402,7 @@ channels: autojoin: true default: false distance: 0 + distanceIsCube: false cooldown: 60 bungeecord: true alias: n diff --git a/MineverseChat/mineverse/Aust1n46/chat/VentureChatPlaceholders.java b/MineverseChat/mineverse/Aust1n46/chat/VentureChatPlaceholders.java index 51e5227..a2bb5cf 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/VentureChatPlaceholders.java +++ b/MineverseChat/mineverse/Aust1n46/chat/VentureChatPlaceholders.java @@ -43,6 +43,8 @@ public class VentureChatPlaceholders extends PlaceholderHook { return mcp.getCurrentChannel().getCooldown() + ""; case "channel_distance": return mcp.getCurrentChannel().getDistance() + ""; + case "channel_distance_is_cube": + return mcp.getCurrentChannel().getDistanceIsCube() ? PlaceholderAPIPlugin.booleanTrue() : PlaceholderAPIPlugin.booleanFalse(); } } return null; diff --git a/MineverseChat/mineverse/Aust1n46/chat/channel/ChatChannel.java b/MineverseChat/mineverse/Aust1n46/chat/channel/ChatChannel.java index 0481dc3..2e00ad7 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/channel/ChatChannel.java +++ b/MineverseChat/mineverse/Aust1n46/chat/channel/ChatChannel.java @@ -20,6 +20,7 @@ public class ChatChannel { private Boolean autojoin; private String alias; private Double distance; + private Boolean distanceIsCube; private Boolean filter; private Boolean bungee; private String format; @@ -41,6 +42,7 @@ public class ChatChannel { Boolean _defaultchannel = false; String _alias = ""; Double _distance = (double) 0; + Boolean _distanceIsCube = false; Boolean _autojoin = false; Boolean _bungee = false; String _format = ""; @@ -69,9 +71,10 @@ public class ChatChannel { _defaultchannel = (Boolean) cs.getBoolean(key + ".default", false); _alias = (String) cs.getString(key + ".alias", "None"); _distance = (Double) cs.getDouble(key + ".distance", (double) 0); + _distanceIsCube = (Boolean) cs.getBoolean(key + ".distanceIsCube", false); _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); + ChatChannel c = new ChatChannel(_name, _color, _chatcolor, _permission, _mutable, _filter, _defaultchannel, _alias, _distance, _distanceIsCube, _autojoin, _bungee, _cooldown, _format); channels[x++] = c; if(_defaultchannel) { defaultChatChannel = c; @@ -115,7 +118,7 @@ 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) { + public ChatChannel(String _Name, String _color, String _chatcolor, String _Permission, Boolean _mutable, Boolean _filter, Boolean _defaultchannel, String _alias, Double _distance, Boolean _distanceIsCube, Boolean _autojoin, Boolean _bungee, int _cooldown, String _format) { name = _Name; permission = "venturechat." + _Permission; mutable = _mutable; @@ -124,6 +127,7 @@ public class ChatChannel { setDefaultChannel(_defaultchannel); setAlias(_alias); setDistance(_distance); + setDistanceIsCube(_distanceIsCube); setFilter(_filter); setAutojoin(_autojoin); setBungee(_bungee); @@ -215,6 +219,10 @@ public class ChatChannel { this.distance = distance; } + public void setDistanceIsCube(Boolean distanceIsCube) { this.distanceIsCube = distanceIsCube; } + + public Boolean getDistanceIsCube() { return distanceIsCube; } + public Boolean hasDistance() { return distance > 0; } diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Chwho.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Chwho.java index b7edd9a..cc67d3f 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Chwho.java +++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Chwho.java @@ -72,7 +72,7 @@ public class Chwho extends MineverseCommand { } } if(channel.hasDistance() && sender instanceof Player) { - if(!this.isPlayerWithinDistance((Player) sender, p.getPlayer(), channel.getDistance())) { + if(!this.isPlayerWithinDistance((Player) sender, p.getPlayer(), channel.getDistance(), channel.getDistanceIsCube())) { continue; } } @@ -203,8 +203,9 @@ public class Chwho extends MineverseCommand { } } - private boolean isPlayerWithinDistance(Player p1, Player p2, double Distance) { + private boolean isPlayerWithinDistance(Player p1, Player p2, double Distance, boolean DistanceIsCube) { Double chDistance = Distance; + boolean chDistanceIsCube = DistanceIsCube; Location locreceip; Location locsender = p1.getLocation(); Location diff; @@ -212,7 +213,7 @@ public class Chwho extends MineverseCommand { locreceip = p2.getLocation(); if(locreceip.getWorld() == p1.getWorld()) { diff = locreceip.subtract(locsender); - if(Math.abs(diff.getX()) > chDistance || Math.abs(diff.getZ()) > chDistance) { + if(Math.abs(diff.getX()) > chDistance || Math.abs(diff.getZ()) > chDistance || (chDistanceIsCube && Math.abs(diff.getY()) > chDistance)) { return false; } } diff --git a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Config.java b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Config.java index f0386ba..b51e5ec 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/command/chat/Config.java +++ b/MineverseChat/mineverse/Aust1n46/chat/command/chat/Config.java @@ -1049,6 +1049,38 @@ public class Config extends MineverseCommand { break; } } + case "distanceIsCube": { + try { + switch(args[3]) { + case "true": { + plugin.getConfig().getConfigurationSection("channels." + args[1]).set("distanceIsCube", true); + sender.sendMessage(ChatColor.GREEN + "distanceIsCube: has been set to true"); + plugin.saveConfig(); + plugin.reloadConfig(); + Bukkit.getPluginManager().disablePlugin(plugin); + Bukkit.getPluginManager().enablePlugin(plugin); + break; + } + case "false": { + plugin.getConfig().getConfigurationSection("channels." + args[1]).set("distanceIsCube", false); + sender.sendMessage(ChatColor.GREEN + "distanceIsCube: has been set to false"); + plugin.saveConfig(); + plugin.reloadConfig(); + Bukkit.getPluginManager().disablePlugin(plugin); + Bukkit.getPluginManager().enablePlugin(plugin); + break; + } + default: { + sender.sendMessage(ChatColor.RED + "Invalid arguments, /config channels [channel] distanceIsCube [true/false]"); + break; + } + } + } + catch(Exception e) { + sender.sendMessage(ChatColor.GREEN + "distanceIsCube: " + plugin.getConfig().getConfigurationSection("channels." + args[1]).getBoolean("distanceIsCube")); + } + break; + } case "cooldown": { try { if(Integer.parseInt(args[3]) >= 0) { @@ -1125,13 +1157,13 @@ public class Config extends MineverseCommand { } } default: { - sender.sendMessage(ChatColor.RED + "Invalid arguments, /config channels " + args[1] + " [color, chatcolor, mutable, alias, default, autojoin, distance, cooldown, bungeecord, format]"); + sender.sendMessage(ChatColor.RED + "Invalid arguments, /config channels " + args[1] + " [color, chatcolor, mutable, alias, default, autojoin, distance, distanceIsCube, cooldown, bungeecord, format]"); break; } } } catch(Exception e) { - sender.sendMessage(ChatColor.RED + "Invalid arguments, /config channels " + args[1] + " [color, chatcolor, mutable, alias, default, autojoin, distance, cooldown, bungeecord, format]"); + sender.sendMessage(ChatColor.RED + "Invalid arguments, /config channels " + args[1] + " [color, chatcolor, mutable, alias, default, autojoin, distance, distanceIsCube, cooldown, bungeecord, format]"); } break; } @@ -1150,6 +1182,7 @@ public class Config extends MineverseCommand { plugin.getConfig().getConfigurationSection("channels." + args[2]).set("default", false); plugin.getConfig().getConfigurationSection("channels." + args[2]).set("autojoin", true); plugin.getConfig().getConfigurationSection("channels." + args[2]).set("distance", 0.0); + plugin.getConfig().getConfigurationSection("channels." + args[2]).set("distanceIsCube", false); plugin.getConfig().getConfigurationSection("channels." + args[2]).set("cooldown", 0); plugin.getConfig().getConfigurationSection("channels." + args[2]).set("bungeecord", false); plugin.getConfig().getConfigurationSection("channels." + args[2]).set("servername", false); @@ -1218,7 +1251,7 @@ public class Config extends MineverseCommand { sender.sendMessage(ChatColor.GREEN + "/config broadcastafk [true/false]"); sender.sendMessage(ChatColor.GREEN + "/config formatcleaner [true/false]"); sender.sendMessage(ChatColor.GREEN + "/config broadcast [color, permissions, displaytag]"); - sender.sendMessage(ChatColor.GREEN + "/config channels [channel] [chatcolor, mutable, permissions, alias, default, autojoin, distance, cooldown, bungeecord, format, create , delete]"); + sender.sendMessage(ChatColor.GREEN + "/config channels [channel] [chatcolor, mutable, permissions, alias, default, autojoin, distance, distanceIsCube, cooldown, bungeecord, format, create , delete]"); sender.sendMessage(ChatColor.GREEN + "/config help"); break; } diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java index a86db61..cc95f7f 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java @@ -43,7 +43,7 @@ public class ChatListener implements Listener { } // this event isn't always asynchronous even though the event's name starts with "Async" - // blame md_5 for that one (•_•) + // blame md_5 for that one (�_�) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) { event.setCancelled(true); @@ -90,16 +90,16 @@ public class ChatListener implements Listener { mcp.setConversation(null); } else { - if(tp.getIgnores().contains(mcp.getUUID())) { + if(tp.getIgnores().contains(mcp.getUUID())) { mcp.getPlayer().sendMessage(LocalizedMessage.IGNORING_MESSAGE.toString() .replace("{player}", tp.getName())); - event.setCancelled(true); + event.setCancelled(true); return; } - if(!tp.getMessageToggle()) { + if(!tp.getMessageToggle()) { mcp.getPlayer().sendMessage(LocalizedMessage.BLOCKING_MESSAGE.toString() .replace("{player}", tp.getName())); - event.setCancelled(true); + event.setCancelled(true); return; } String filtered = chat; @@ -234,6 +234,7 @@ public class ChatListener implements Listener { return; } Double chDistance = (double) 0; + boolean chDistanceIsCube = false; int chCooldown = 0; String curColor = ""; if(eventChannel.hasPermission() && !mcp.getPlayer().hasPermission(eventChannel.getPermission())) { @@ -321,6 +322,7 @@ public class ChatListener implements Listener { if(eventChannel.hasDistance()) { chDistance = eventChannel.getDistance(); + chDistanceIsCube = eventChannel.getDistanceIsCube(); } format = PlaceholderAPI.setBracketPlaceholders(mcp.getPlayer(), Format.FormatStringAll(plugin.getConfig().getConfigurationSection("channels." + eventChannel.getName()).getString("format"))); @@ -422,7 +424,7 @@ public class ChatListener implements Listener { locreceip = p.getPlayer().getLocation(); if(locreceip.getWorld() == mcp.getPlayer().getWorld()) { diff = locreceip.subtract(locsender); - if(Math.abs(diff.getX()) > chDistance || Math.abs(diff.getZ()) > chDistance) { + if(Math.abs(diff.getX()) > chDistance || Math.abs(diff.getZ()) > chDistance || (chDistanceIsCube && Math.abs(diff.getY()) > chDistance)) { recipients.remove(p.getPlayer()); recipientCount--; continue; @@ -464,7 +466,7 @@ public class ChatListener implements Listener { String globalJSON = Format.convertToJson(mcp, format, chat); String consoleChat = format + chat; - String message = consoleChat.replaceAll("(§([a-z0-9]))", ""); + String message = consoleChat.replaceAll("(�([a-z0-9]))", ""); int hash = message.hashCode(); //Create VentureChatEvent