Skip to content

Commit

Permalink
3.2.2 Added Command to Disable Player Mention for Self
Browse files Browse the repository at this point in the history
  • Loading branch information
LOOHP committed Nov 5, 2020
1 parent 94e2738 commit 3184d23
Show file tree
Hide file tree
Showing 14 changed files with 407 additions and 13 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.loohp</groupId>
<artifactId>InteractiveChat</artifactId>
<version>3.2.1</version>
<version>3.2.2</version>
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
Expand Down
80 changes: 70 additions & 10 deletions src/com/loohp/interactivechat/Bungee/InteractiveChatBungee.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.lang.reflect.Field;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
Expand Down Expand Up @@ -69,6 +70,7 @@
import net.md_5.bungee.api.event.ServerSwitchEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.YamlConfiguration;
import net.md_5.bungee.event.EventHandler;
Expand All @@ -78,8 +80,10 @@

public class InteractiveChatBungee extends Plugin implements Listener {

public static net.md_5.bungee.config.Configuration configuration = null;
public static ConfigurationProvider config = null;
public static Configuration config = null;
public static ConfigurationProvider yamlConfigProvider = null;
public static File configFile;
public static File playerDataFolder;

public static Plugin plugin;
public static Metrics metrics;
Expand All @@ -104,15 +108,19 @@ public class InteractiveChatBungee extends Plugin implements Listener {
public void onEnable() {
plugin = this;

config = ConfigurationProvider.getProvider(YamlConfiguration.class);
if (!getDataFolder().exists())
yamlConfigProvider = ConfigurationProvider.getProvider(YamlConfiguration.class);
if (!getDataFolder().exists()) {
getDataFolder().mkdir();
}
configFile = new File(getDataFolder(), "bungeeconfig.yml");
playerDataFolder = new File(getDataFolder(), "player_data");
if (!playerDataFolder.exists()) {
playerDataFolder.mkdirs();
}

File file = new File(getDataFolder(), "bungeeconfig.yml");

if (!file.exists()) {
if (!configFile.exists()) {
try (InputStream in = getResourceAsStream("bungeeconfig.yml")) {
Files.copy(in, file.toPath());
Files.copy(in, configFile.toPath());
} catch (IOException e) {
e.printStackTrace();
}
Expand Down Expand Up @@ -142,8 +150,8 @@ public void onDisable() {

public static void loadConfig() {
try {
configuration = config.load(new File(plugin.getDataFolder(), "bungeeconfig.yml"));
parseCommands = configuration.getStringList("Settings.CommandsToParse");
config = yamlConfigProvider.load(configFile);
parseCommands = config.getStringList("Settings.CommandsToParse");
} catch (IOException e) {
e.printStackTrace();
}
Expand Down Expand Up @@ -308,6 +316,13 @@ public void run() {
placeholderList.put(((Server) event.getSender()).getInfo().getName(), list);
forwardPlaceholderList(list, ((Server) event.getSender()).getInfo());
break;
case 0x12:
UUID uuid2 = DataTypeIO.readUUID(input);
String playerdata = DataTypeIO.readString(input, StandardCharsets.UTF_8);
Configuration playerconfig = yamlConfigProvider.load(playerdata);
yamlConfigProvider.save(playerconfig, new File(playerDataFolder, uuid2.toString()));
forwardPlayerData(uuid2, playerdata, ((Server) event.getSender()).getInfo());
break;
}
} catch (IOException | DataFormatException e) {
e.printStackTrace();
Expand All @@ -322,6 +337,38 @@ public void run() {
}
}

private void forwardPlayerData(UUID uuid, String playerdata, ServerInfo serverFrom) throws IOException {
ByteArrayDataOutput output = ByteStreams.newDataOutput();

DataTypeIO.writeUUID(output, uuid);
DataTypeIO.writeString(output, playerdata, StandardCharsets.UTF_8);

int packetNumber = random.nextInt();
int packetId = 0x12;
byte[] data = output.toByteArray();

byte[][] dataArray = CustomArrayUtils.divideArray(CompressionUtils.compress(data), 32700);

for (int i = 0; i < dataArray.length; i++) {
byte[] chunk = dataArray[i];

ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeInt(packetNumber);

out.writeShort(packetId);
out.writeBoolean(i == (dataArray.length - 1));

out.write(chunk);

for (ServerInfo server : getProxy().getServers().values()) {
if (!server.getSocketAddress().equals(serverFrom.getSocketAddress())) {
server.sendData("interchat:main", out.toByteArray());
pluginMessagesCounter.incrementAndGet();
}
}
}
}

private void forwardPlaceholderList(List<ICPlaceholder> serverPlaceholderList, ServerInfo serverFrom) throws IOException {
ByteArrayDataOutput output = ByteStreams.newDataOutput();

Expand Down Expand Up @@ -539,10 +586,23 @@ public void write(ChannelHandlerContext channelHandlerContext, Object obj, Chann
@EventHandler
public void onPlayerConnected(PostLoginEvent event) {
ProxiedPlayer player = event.getPlayer();
UUID uuid = player.getUniqueId();
forwardedMessages.put(player.getUniqueId(), new ArrayList<>());
List<UUID> messageQueue = Collections.synchronizedList(new LinkedList<>());
requestedMessageProcesses.put(player.getUniqueId(), messageQueue);

File playerFile = new File(playerDataFolder, uuid.toString());
if (playerFile.exists()) {
try {
Configuration playerconfig = yamlConfigProvider.load(playerFile);
StringWriter writer = new StringWriter();
yamlConfigProvider.save(playerconfig, writer);
forwardPlayerData(uuid, writer.toString(), player.getServer().getInfo());
} catch (IOException e) {
e.printStackTrace();
}
}

UserConnection userConnection = (UserConnection) player;
ChannelWrapper channelWrapper;
Field channelField = null;
Expand Down
79 changes: 79 additions & 0 deletions src/com/loohp/interactivechat/Commands.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;

import com.loohp.interactivechat.Data.PlayerDataManager.PlayerData;
import com.loohp.interactivechat.PluginMessaging.BungeeMessageSender;
import com.loohp.interactivechat.Updater.Updater;
import com.loohp.interactivechat.Utils.ChatColorUtils;
Expand Down Expand Up @@ -70,6 +71,65 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
return true;
}

if (args[0].equalsIgnoreCase("mentiontoggle")) {
if (sender.hasPermission("interactivechat.mention.toggle")) {
if (args.length == 1) {
if (sender instanceof Player) {
Player player = (Player) sender;
PlayerData pd = InteractiveChat.playerDataManager.getPlayerData(player);
if (pd.isMentionDisabled()) {
pd.setMentionDisabled(false);
pd.saveConfig();
sender.sendMessage(InteractiveChat.mentionEnable);
} else {
pd.setMentionDisabled(true);
pd.saveConfig();
sender.sendMessage(InteractiveChat.mentionDisable);
}
if (InteractiveChat.bungeecordMode) {
try {
BungeeMessageSender.forwardPlayerDataUpdate(player.getUniqueId(), pd.getConfig());
} catch (IOException e) {
e.printStackTrace();
}
}
} else {
sender.sendMessage(InteractiveChat.Console);
}
} else {
if (sender.hasPermission("interactivechat.mention.toggle.others")) {
Player player = Bukkit.getPlayer(args[1]);
if (player != null) {
PlayerData pd = InteractiveChat.playerDataManager.getPlayerData(player);
if (pd.isMentionDisabled()) {
pd.setMentionDisabled(false);
pd.saveConfig();
sender.sendMessage(InteractiveChat.mentionEnable);
} else {
pd.setMentionDisabled(true);
pd.saveConfig();
sender.sendMessage(InteractiveChat.mentionDisable);
}
if (InteractiveChat.bungeecordMode) {
try {
BungeeMessageSender.forwardPlayerDataUpdate(player.getUniqueId(), pd.getConfig());
} catch (IOException e) {
e.printStackTrace();
}
}
} else {
sender.sendMessage(InteractiveChat.InvalidPlayer);
}
} else {
sender.sendMessage(InteractiveChat.NoPermission);
}
}
} else {
sender.sendMessage(InteractiveChat.NoPermission);
}
return true;
}

if (sender instanceof Player) {
Player player = (Player) sender;
if (args[0].equals("viewinv")) {
Expand Down Expand Up @@ -121,6 +181,9 @@ public List<String> onTabComplete(CommandSender sender, Command cmd, String labe
if (sender.hasPermission("interactivechat.update")) {
tab.add("update");
}
if (sender.hasPermission("interactivechat.mention.toggle")) {
tab.add("mentiontoggle");
}
return tab;
case 1:
if (sender.hasPermission("interactivechat.reload")) {
Expand All @@ -133,6 +196,22 @@ public List<String> onTabComplete(CommandSender sender, Command cmd, String labe
tab.add("update");
}
}
if (sender.hasPermission("interactivechat.mention.toggle")) {
if ("mentiontoggle".startsWith(args[0].toLowerCase())) {
tab.add("mentiontoggle");
}
}
return tab;
case 2:
if (sender.hasPermission("interactivechat.mention.toggle.others")) {
if ("mentiontoggle".equalsIgnoreCase(args[0])) {
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.getName().toLowerCase().startsWith(args[1])) {
tab.add(player.getName());
}
}
}
}
return tab;
default:
return tab;
Expand Down
5 changes: 5 additions & 0 deletions src/com/loohp/interactivechat/ConfigManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ public static void loadConfig() {
InteractiveChat.NoPermission = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.NoPermission"));
InteractiveChat.InvExpired = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.InvExpired"));
InteractiveChat.ReloadPlugin = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.ReloadPlugin"));
InteractiveChat.Console = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.PlayerOnlyCommand"));
InteractiveChat.InvalidPlayer = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.InvalidPlayer"));

InteractiveChat.useItem = getConfig().getBoolean("ItemDisplay.Item.Enabled");
InteractiveChat.useInventory = getConfig().getBoolean("ItemDisplay.Inventory.Enabled");
Expand Down Expand Up @@ -183,6 +185,9 @@ public static void loadConfig() {
InteractiveChat.mentionHover = String.join("\n", stringList3);
InteractiveChat.mentionDuration = getConfig().getLong("Chat.MentionedTitleDuration");

InteractiveChat.mentionEnable = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.EnableMentions"));
InteractiveChat.mentionDisable = ChatColorUtils.translateAlternateColorCodes('&', getConfig().getString("Messages.DisableMentions"));

InteractiveChat.UpdaterEnabled = getConfig().getBoolean("Options.Updater");
InteractiveChat.cancelledMessage = getConfig().getBoolean("Options.ShowCancelledNotice");

Expand Down
Loading

0 comments on commit 3184d23

Please sign in to comment.