Skip to content

Commit

Permalink
v0.75:
Browse files Browse the repository at this point in the history
  - Replace deprecated getLangString code.
  - Update to fix spying on servers with DeluxeChat.
  - Fix changing chat channels removing non-channel modes.
  - Add Towny version checking to enforce min. required versions.
  • Loading branch information
LlmDl committed Jul 29, 2020
1 parent d5c5171 commit 4c6a1e2
Show file tree
Hide file tree
Showing 9 changed files with 96 additions and 49 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>com.palmergames.bukkit</groupId>
<artifactId>TownyChat</artifactId>
<packaging>jar</packaging>
<version>0.74</version>
<version>0.75</version>

<licenses>
<license>
Expand Down
7 changes: 6 additions & 1 deletion resources/changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -318,4 +318,9 @@ v0.73:
- &#RRGGBB
- {#RRGGBB}
v0.74:
- Fix 0.96.2.5+ Towny API error spam.
- Fix 0.96.2.5+ Towny API error spam.
v0.75:
- Replace deprecated getLangString code.
- Update to fix spying on servers with DeluxeChat.
- Fix changing chat channels removing non-channel modes.
- Add Towny version checking to enforce min. required versions.
20 changes: 19 additions & 1 deletion src/com/palmergames/bukkit/TownyChat/Chat.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import com.palmergames.bukkit.TownyChat.tasks.onLoadedTask;
import com.palmergames.bukkit.TownyChat.util.FileMgmt;
import com.palmergames.bukkit.towny.Towny;
import com.palmergames.bukkit.util.Version;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandMap;
Expand Down Expand Up @@ -43,6 +45,7 @@ public class Chat extends JavaPlugin {
private Towny towny = null;
private DynmapAPI dynMap = null;

private static String requiredTownyVersion = "0.96.2.5";
public static boolean usingPlaceholderAPI = false;
boolean chatConfigError = false;
boolean channelsConfigError = false;
Expand All @@ -55,9 +58,17 @@ public void onEnable() {
channelsConfig = new ConfigurationHandler(this);
channels = new ChannelsHolder(this);

checkPlugins();
checkPlugins();
loadConfigs();

if (!townyVersionCheck(towny.getDescription().getVersion())) {
getLogger().severe("Towny version does not meet required version: " + requiredTownyVersion);
this.getServer().getPluginManager().disablePlugin(this);
return;
} else {
getLogger().info("Towny version " + towny.getDescription().getVersion() + " found.");
}

/*
* This executes the task with a 1 tick delay avoiding the bukkit
* depends bug.
Expand All @@ -79,6 +90,13 @@ public void onEnable() {
registerObjectCommands();
}

private boolean townyVersionCheck(String version) {
Version ver = new Version(version);
Version required = new Version(requiredTownyVersion);

return ver.compareTo(required) >= 0;
}

private void loadConfigs() {
FileMgmt.checkFolders(new String[] { getRootPath(), getChannelsPath() });
if (!ChatSettings.loadCommentedConfig(getChannelsPath() + FileMgmt.fileSeparator() + "ChatConfig.yml", this.getDescription().getVersion()))
Expand Down
54 changes: 27 additions & 27 deletions src/com/palmergames/bukkit/TownyChat/Command/ChannelCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import com.palmergames.bukkit.TownyChat.channels.channelTypes;
import com.palmergames.bukkit.TownyChat.util.TownyUtil;
import com.palmergames.bukkit.towny.TownyMessaging;
import com.palmergames.bukkit.towny.TownySettings;
import com.palmergames.bukkit.towny.command.BaseCommand;
import com.palmergames.bukkit.towny.object.Translation;
import com.palmergames.bukkit.towny.TownyUniverse;
import com.palmergames.bukkit.util.ChatTools;
import com.palmergames.bukkit.util.Colors;
Expand Down Expand Up @@ -114,17 +114,17 @@ public static void parseChannelList(Player player) {
Map<String, Channel> chanList = plugin.getChannelsHandler().getAllChannels();

TownyMessaging.sendMessage(player, ChatTools.formatTitle("Channels"));
TownyMessaging.sendMessage(player, Colors.Gold + "Channel" + Colors.Gray + " - " + Colors.LightBlue + TownySettings.getLangString("tc_channel_list_status"));
TownyMessaging.sendMessage(player, Colors.Gold + "Channel" + Colors.Gray + " - " + Colors.LightBlue + Translation.of("tc_channel_list_status"));
for (Map.Entry<String, Channel> channel : chanList.entrySet()) {
if (player.hasPermission(channel.getValue().getPermission()))
if (channel.getValue().isPresent(player.getName())) {
TownyMessaging.sendMessage(player, Colors.Gold + channel.getKey() + Colors.Gray + " - " + Colors.LightBlue + TownySettings.getLangString("tc_channel_list_in"));
TownyMessaging.sendMessage(player, Colors.Gold + channel.getKey() + Colors.Gray + " - " + Colors.LightBlue + Translation.of("tc_channel_list_in"));
} else {
/*if (!plugin.getTowny().isPermissions()
|| ( (plugin.getTowny().isPermissions())
&& (TownyUniverse.getPermissionSource().has(player, channel.getValue().getPermission()))
|| (channel.getValue().getPermission().isEmpty()))) {*/
TownyMessaging.sendMessage(player, Colors.Gold + channel.getKey() + Colors.Gray + " - " + Colors.LightBlue + TownySettings.getLangString("tc_channel_list_out"));
TownyMessaging.sendMessage(player, Colors.Gold + channel.getKey() + Colors.Gray + " - " + Colors.LightBlue + Translation.of("tc_channel_list_out"));
//}
}
}
Expand All @@ -142,7 +142,7 @@ public static void parseChannelMuteList(Player player, String[] split) {
if ((mutePerm == null && unmutePerm == null) ||
(mutePerm != null && (!TownyUniverse.getInstance().getPermissionSource().has(player, mutePerm))) ||
(unmutePerm != null && (!TownyUniverse.getInstance().getPermissionSource().has(player, unmutePerm)))) {
TownyMessaging.sendErrorMsg(player, TownySettings.getLangString("tc_err_you_dont_have_perm_mute_list"));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_you_dont_have_perm_mute_list"));
return;
}

Expand All @@ -164,7 +164,7 @@ public static void parseChannelMuteList(Player player, String[] split) {
}

if (chan == null) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_no_channel_called_channel"), split[0]));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_no_channel_called_channel", split[0]));
return;
}

Expand All @@ -187,11 +187,11 @@ public static void parseChannelMuteList(Player player, String[] split) {
}

if (count == 0) {
TownyMessaging.sendMessage(player, String.format(TownySettings.getLangString("tc_err_no_muted_players_in_channel"), chan.getName()));
TownyMessaging.sendMessage(player, Translation.of("tc_err_no_muted_players_in_channel", chan.getName()));
return;
}

TownyMessaging.sendMessage(player, String.format(TownySettings.getLangString("tc_players_muted_in_channel_players"), count, chan.getName(), players));
TownyMessaging.sendMessage(player, Translation.of("tc_players_muted_in_channel_players", count, chan.getName(), players));
}

public static void parseChannelMute(Player player, String[] split, boolean mute) {
Expand All @@ -205,7 +205,7 @@ public static void parseChannelMute(Player player, String[] split, boolean mute)
// Split[1} = Player to be muted
Player muteePlayer = Bukkit.getPlayer(split[1]);
if (muteePlayer == null) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_no_online_players_with_name"), split[1]));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_no_online_players_with_name", split[1]));
return;
}
Channel chan = plugin.getChannelsHandler().getChannel(split[0]);
Expand All @@ -226,53 +226,53 @@ public static void parseChannelMute(Player player, String[] split, boolean mute)
}

if (chan == null) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_no_channel_called_channel"), split[0]));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_no_channel_called_channel", split[0]));
return;
}

if (mute) {
String mutePerm = plugin.getChannelsHandler().getMutePermission();
if ((mutePerm == null) || (mutePerm != null && (!TownyUniverse.getInstance().getPermissionSource().has(player, mutePerm)))) {
TownyMessaging.sendErrorMsg(player, TownySettings.getLangString("tc_err_you_dont_have_mute_perms"));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_you_dont_have_mute_perms"));
return;
}

split[1] = muteePlayer.getName();

if (TownyUniverse.getInstance().getPermissionSource().isTownyAdmin(muteePlayer)) {
TownyMessaging.sendErrorMsg(player, TownySettings.getLangString("tc_err_you_cant_mute_admin"));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_you_cant_mute_admin"));
return;
}

String unmutePerm = plugin.getChannelsHandler().getUnmutePermission();
if ((mutePerm != null && (TownyUniverse.getInstance().getPermissionSource().has(muteePlayer, mutePerm))) ||
(unmutePerm != null && (TownyUniverse.getInstance().getPermissionSource().has(muteePlayer, unmutePerm)))) {
TownyMessaging.sendErrorMsg(player, TownySettings.getLangString("tc_err_you_cant_mute_chat_mod"));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_you_cant_mute_chat_mod"));
return;
}

if (!chan.mute(split[1])) {
TownyMessaging.sendMsg(player, String.format(TownySettings.getLangString("tc_player_already_muted_in_channel"), chan.getName()));
TownyMessaging.sendMsg(player, Translation.of("tc_player_already_muted_in_channel", chan.getName()));
return;
}

TownyMessaging.sendMsg(player, String.format(TownySettings.getLangString("tc_player_is_now_muted_in_channel"), split[1], chan.getName()));
TownyMessaging.sendMsg(player, Translation.of("tc_player_is_now_muted_in_channel", split[1], chan.getName()));
} else if (!mute) {
String unmutePerm = plugin.getChannelsHandler().getUnmutePermission();
if ((unmutePerm == null) || (unmutePerm != null && (!TownyUniverse.getInstance().getPermissionSource().has(player, unmutePerm)))) {
TownyMessaging.sendErrorMsg(player, TownySettings.getLangString("tc_err_you_dont_have_unmute_perm"));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_you_dont_have_unmute_perm"));
return;
}

split[1] = muteePlayer.getName();


if (!chan.unmute(split[1])) {
TownyMessaging.sendMsg(player, String.format(TownySettings.getLangString("tc_player_is_not_muted_in_channel"), chan.getName()));
TownyMessaging.sendMsg(player, Translation.of("tc_player_is_not_muted_in_channel", chan.getName()));
return;
}

TownyMessaging.sendMsg(player, String.format(TownySettings.getLangString("tc_player_is_now_unmuted_in_channel"), split[1], chan.getName()));
TownyMessaging.sendMsg(player, Translation.of("tc_player_is_now_unmuted_in_channel", split[1], chan.getName()));
return;
}
}
Expand Down Expand Up @@ -302,7 +302,7 @@ public static void parseChannelLeave(Player player, String[] split) {
}

if (chan == null) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_no_channel_called_channel"), split[0]));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_no_channel_called_channel", split[0]));
return;
}

Expand All @@ -313,18 +313,18 @@ public static void parseChannelLeave(Player player, String[] split) {
String leavePerm = chan.getLeavePermission();
if (leavePerm == null ||
(leavePerm != null && (!TownyUniverse.getInstance().getPermissionSource().has(player, leavePerm)))) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_you_cannot_leave_channel"), chan.getName()));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_you_cannot_leave_channel", chan.getName()));
return;
}

// If we fail you weren't in there to start with
if (!chan.leave(player.getName())) {
TownyMessaging.sendMessage(player, String.format(TownySettings.getLangString("tc_you_already_left_channel"), chan.getName()));
TownyMessaging.sendMessage(player, Translation.of("tc_you_already_left_channel", chan.getName()));
return;
}

// Announce it
TownyMessaging.sendMessage(player, String.format(TownySettings.getLangString("tc_you_left_channel"), chan.getName()));
TownyMessaging.sendMessage(player, Translation.of("tc_you_left_channel", chan.getName()));

// Find what the next channel is if any
Channel nextChannel = null;
Expand All @@ -340,7 +340,7 @@ public static void parseChannelLeave(Player player, String[] split) {

// If the new channel is not us, announce it
if (nextChannel != null && !chan.getName().equalsIgnoreCase(nextChannel.getName())) {
TownyMessaging.sendMessage(player, String.format(TownySettings.getLangString("tc_you_are_now_talking_in_channel"),nextChannel.getName()));
TownyMessaging.sendMessage(player, Translation.of("tc_you_are_now_talking_in_channel",nextChannel.getName()));
}
}

Expand Down Expand Up @@ -370,7 +370,7 @@ public static void parseChannelJoin(Player player, String[] split) {
}

if (chan == null) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_no_channel_called_channel"), split[0]));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_no_channel_called_channel", split[0]));
return;
}
// You can join if:
Expand All @@ -380,15 +380,15 @@ public static void parseChannelJoin(Player player, String[] split) {
// - player has channel permission
String joinPerm = chan.getPermission();
if ((joinPerm != null && (!TownyUniverse.getInstance().getPermissionSource().has(player, joinPerm)))) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_you_cannot_join_channel"), chan.getName()));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_you_cannot_join_channel", chan.getName()));
return;
}

if (!chan.join(player.getName())) {
TownyMessaging.sendMessage(player, String.format(TownySettings.getLangString("tc_you_are_already_in_channel"), chan.getName()));
TownyMessaging.sendMessage(player, Translation.of("tc_you_are_already_in_channel", chan.getName()));
return;
}

TownyMessaging.sendMessage(player, String.format(TownySettings.getLangString("tc_you_joined_channel"), chan.getName()));
TownyMessaging.sendMessage(player, Translation.of("tc_you_joined_channel", chan.getName()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.palmergames.bukkit.TownyChat.Chat;
import com.palmergames.bukkit.towny.TownyMessaging;
import com.palmergames.bukkit.towny.TownySettings;
import com.palmergames.bukkit.towny.command.BaseCommand;
import com.palmergames.bukkit.towny.object.Translation;
import com.palmergames.bukkit.util.ChatTools;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
Expand Down Expand Up @@ -53,9 +53,9 @@ private void parseTownyChatCommand(CommandSender sender, String[] split) {
}
} else if (split[0].equalsIgnoreCase("reload")) {
plugin.reload();
TownyMessaging.sendMsg(sender, TownySettings.getLangString("tc_settings_reloaded"));
TownyMessaging.sendMsg(sender, Translation.of("tc_settings_reloaded"));
} else {
TownyMessaging.sendErrorMsg(sender, TownySettings.getLangString("tc_err_unrecognized_command_format"));
TownyMessaging.sendErrorMsg(sender, Translation.of("tc_err_unrecognized_command_format"));
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import com.palmergames.bukkit.TownyChat.Chat;
import com.palmergames.bukkit.TownyChat.channels.Channel;
import com.palmergames.bukkit.towny.TownyMessaging;
import com.palmergames.bukkit.towny.TownySettings;
import com.palmergames.bukkit.towny.TownyUniverse;
import com.palmergames.bukkit.towny.object.Translation;
import com.palmergames.util.StringMgmt;

import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.command.defaults.BukkitCommand;
Expand Down Expand Up @@ -34,7 +36,7 @@ public boolean execute(CommandSender commandSender, String label, String[] args)
}
if (message.isEmpty()) {
if (plugin.getTowny().hasPlayerMode(player, channel.getName())) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_you_are_already_in_channel"), channel.getName()));
TownyMessaging.sendErrorMsg(player, String.format(Translation.of("tc_you_are_already_in_channel"), channel.getName()));
return true;
} else {
// You can join a channel if:
Expand All @@ -44,17 +46,30 @@ public boolean execute(CommandSender commandSender, String label, String[] args)
// - player has channel permission
String joinPerm = channel.getPermission();
if ((joinPerm != null && !TownyUniverse.getInstance().getPermissionSource().has(player, joinPerm))) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_you_cannot_join_channel"), channel.getName()));
TownyMessaging.sendErrorMsg(player, String.format(Translation.of("tc_err_you_cannot_join_channel"), channel.getName()));
return true;
}

plugin.getTowny().setPlayerMode(player, new String[]{channel.getName()}, false);
TownyMessaging.sendMsg(player, String.format(TownySettings.getLangString("tc_you_are_now_talking_in_channel"), channel.getName()));
// Add channel we're moving to.
ArrayList<String> newModes = new ArrayList<String>();
newModes.add(channel.getName());

// Add modes the player already had, except not any current chat channels.
for (String existingMode : plugin.getTowny().getPlayerMode(player))
if (!plugin.getChannelsHandler().isChannel(existingMode))
newModes.add(existingMode);

String[] modes = new String[newModes.size()];
for (int i = 0; i < newModes.size(); i++)
modes[i] = newModes.get(i);

plugin.getTowny().setPlayerMode(player, modes, false);
TownyMessaging.sendMsg(player, String.format(Translation.of("tc_you_are_now_talking_in_channel"), channel.getName()));
return true;
}
} else {
if (channel.isMuted(player.getName())) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_you_are_currently_muted_in_channel"), channel.getName()));
TownyMessaging.sendErrorMsg(player, String.format(Translation.of("tc_err_you_are_currently_muted_in_channel"), channel.getName()));
return true;
}
// You can speak in a channel if:
Expand All @@ -64,7 +79,7 @@ public boolean execute(CommandSender commandSender, String label, String[] args)
// - player has channel permission
String joinPerm = channel.getPermission();
if ((joinPerm != null && !TownyUniverse.getInstance().getPermissionSource().has(player, joinPerm))) {
TownyMessaging.sendErrorMsg(player, String.format(TownySettings.getLangString("tc_err_you_cannot_join_channel"), channel.getName()));
TownyMessaging.sendErrorMsg(player, String.format(Translation.of("tc_err_you_cannot_join_channel"), channel.getName()));
return true;
}

Expand Down
4 changes: 2 additions & 2 deletions src/com/palmergames/bukkit/TownyChat/channels/Channel.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import org.bukkit.event.player.AsyncPlayerChatEvent;

import com.palmergames.bukkit.towny.TownyMessaging;
import com.palmergames.bukkit.towny.TownySettings;
import com.palmergames.bukkit.towny.object.Translation;

public abstract class Channel {

Expand Down Expand Up @@ -270,7 +270,7 @@ public boolean isSpam(Player player) {
Spammers.put(player, timeNow);

if (timeNow - spam < (getSpam_time()*1000)) {
TownyMessaging.sendErrorMsg(player, TownySettings.getLangString("tc_err_unable_to_talk_you_are_spamming"));
TownyMessaging.sendErrorMsg(player, Translation.of("tc_err_unable_to_talk_you_are_spamming"));
return true;
}
return false;
Expand Down
Loading

0 comments on commit 4c6a1e2

Please sign in to comment.