Skip to content

Commit

Permalink
Auto choose by priority, added formats command
Browse files Browse the repository at this point in the history
  • Loading branch information
heychazza committed Feb 6, 2022
1 parent 8dbde7a commit ee7e18c
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 16 deletions.
33 changes: 31 additions & 2 deletions src/main/java/sh/charlie/chitchat/ChitChatPlugin.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,49 @@
package sh.charlie.chitchat;

import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import sh.charlie.chitchat.commands.AnalyseCommand;
import sh.charlie.chitchat.commands.ChitChatCommand;
import sh.charlie.chitchat.listener.ChatListener;

import java.util.Set;

public class ChitChatPlugin extends JavaPlugin implements Listener {

private Set<String> formats;
private MiniMessage miniMessage;
private BukkitAudiences adventure;

@Override
public void onEnable() {
saveDefaultConfig();

getCommand("chitchat").setExecutor(new AnalyseCommand(this));
getCommand("chitchat").setExecutor(new ChitChatCommand(this));
Bukkit.getPluginManager().registerEvents(new ChatListener(this), this);

setFormats();

miniMessage = MiniMessage.get();
adventure = BukkitAudiences.create(this);
}

public void setFormats() {
formats = getConfig().getConfigurationSection("formats").getKeys(false);
}

public Set<String> getFormats() {
return formats;
}

public MiniMessage getMiniMessage() {
return miniMessage;
}

public BukkitAudiences getAdventure() {
return adventure;
}

public String parse(String s) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,21 @@
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import sh.charlie.chitchat.commands.subcommands.FormatsCommand;
import sh.charlie.chitchat.commands.subcommands.ReloadCommand;
import java.util.*;

public class AnalyseCommand implements CommandExecutor {
public class ChitChatCommand implements CommandExecutor {

private final ChitChatPlugin plugin;
private final Map<String, SubCommand> commands = new HashMap<>();

public AnalyseCommand(ChitChatPlugin plugin) {
public ChitChatCommand(ChitChatPlugin plugin) {
this.plugin = plugin;

Arrays.asList(
new ReloadCommand(plugin)
new ReloadCommand(plugin),
new FormatsCommand(plugin)
).forEach(command -> commands.put(command.getName(), command));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package sh.charlie.chitchat.commands.subcommands;

import org.bukkit.entity.Player;
import sh.charlie.chitchat.ChitChatPlugin;
import sh.charlie.chitchat.commands.SubCommand;

public class FormatsCommand extends SubCommand {

public FormatsCommand(ChitChatPlugin plugin) {
super(plugin, "formats", "chitchat.formats");
}

@Override
public void execute(Player player, String[] args) {
player.sendMessage(plugin.parse("&7"));
player.sendMessage(plugin.parse("&b[ChitChat] &7Formats (" + plugin.getFormats().size() + "):"));
player.sendMessage(plugin.parse("&7"));
for (String format : plugin.getFormats()) {
player.sendMessage(plugin.parse(" &7- &b" + format + " &f(chatformat." + format + ")"));
}
player.sendMessage(plugin.parse("&7"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public ReloadCommand(ChitChatPlugin plugin) {
@Override
public void execute(Player player, String[] args) {
plugin.reloadConfig();
plugin.setFormats();

player.sendMessage(plugin.parse("&b[ChitChat] &7Configuration reloaded."));
}

Expand Down
22 changes: 11 additions & 11 deletions src/main/java/sh/charlie/chitchat/listener/ChatListener.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package sh.charlie.chitchat.listener;

import me.clip.placeholderapi.PlaceholderAPI;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.checkerframework.checker.nullness.qual.NonNull;
import sh.charlie.chitchat.ChitChatPlugin;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class ChatListener implements Listener {

Expand All @@ -22,15 +22,16 @@ public ChatListener(ChitChatPlugin plugin) {
this.plugin = plugin;
}

@EventHandler
@EventHandler(ignoreCancelled = true)
public void onChat(AsyncPlayerChatEvent e) {
Player player = e.getPlayer();
e.setCancelled(true);

Set<String> formats = plugin.getConfig().getConfigurationSection("formats").getKeys(false);
@NonNull MiniMessage miniMessage = MiniMessage.get();
BukkitAudiences adventure = BukkitAudiences.create(plugin);
List<String> formats = plugin.getFormats().stream().sorted(Comparator.comparing(item -> plugin.getConfig().getInt("formats." + item + ".priority"))).toList();

for (String format : formats) {
if(!format.equals("default") && !player.hasPermission("chatformat." + format)) continue;

StringBuilder miniStr = new StringBuilder();

List<String> configKeys = Arrays.asList("channel", "name", "prefix", "suffix", "chat");
Expand Down Expand Up @@ -59,16 +60,15 @@ public void onChat(AsyncPlayerChatEvent e) {
}
}

MiniMessage miniMessage = plugin.getMiniMessage();
miniStr = new StringBuilder(miniStr.toString().replace("%message%", miniMessage.escapeTokens(e.getMessage())));


if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
miniStr = new StringBuilder(PlaceholderAPI.setPlaceholders(e.getPlayer(), miniStr.toString()));
}

adventure.player(e.getPlayer()).sendMessage(miniMessage.parse(miniStr.toString()));
plugin.getAdventure().player(e.getPlayer()).sendMessage(miniMessage.parse(miniStr.toString()));
break;
}
}


}

0 comments on commit ee7e18c

Please sign in to comment.