From 80cf17d14a36e77042cdea5f149fe6e8398d371e Mon Sep 17 00:00:00 2001 From: hexlocation pc Date: Wed, 24 Jul 2024 12:19:32 +0200 Subject: [PATCH 01/10] Add discord bot support --- pom.xml | 16 ++++ .../java/rip/iwakura/civilcore/CivilCore.java | 12 +++ .../java/rip/iwakura/civilcore/Court.java | 64 ++++++++++++++++ .../rip/iwakura/civilcore/PlayerHandler.java | 2 + .../civilcore/commands/TeamCommand.java | 2 +- .../iwakura/civilcore/discord/Discord.java | 73 +++++++++++++++++++ .../civilcore/discord/MessageReceive.java | 22 ++++++ .../iwakura/civilcore/types/CoreCommand.java | 7 ++ src/main/resources/plugin.yml | 4 + 9 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 src/main/java/rip/iwakura/civilcore/Court.java create mode 100644 src/main/java/rip/iwakura/civilcore/discord/Discord.java create mode 100644 src/main/java/rip/iwakura/civilcore/discord/MessageReceive.java create mode 100644 src/main/java/rip/iwakura/civilcore/types/CoreCommand.java diff --git a/pom.xml b/pom.xml index 8fd1e50..1447579 100644 --- a/pom.xml +++ b/pom.xml @@ -24,9 +24,25 @@ papermc https://repo.papermc.io/repository/maven-public/ + + jitpack.io + https://jitpack.io + + + net.dv8tion + JDA + 5.0.1 + compile + + + club.minnced + discord-webhooks + 0.1.6 + compile + org.postgresql postgresql diff --git a/src/main/java/rip/iwakura/civilcore/CivilCore.java b/src/main/java/rip/iwakura/civilcore/CivilCore.java index efa312e..cf40b56 100644 --- a/src/main/java/rip/iwakura/civilcore/CivilCore.java +++ b/src/main/java/rip/iwakura/civilcore/CivilCore.java @@ -4,18 +4,28 @@ import java.sql.SQLException; import java.util.ArrayList; import org.bukkit.Bukkit; +import org.bukkit.WorldCreator; import org.bukkit.plugin.java.JavaPlugin; import net.md_5.bungee.api.ChatColor; import rip.iwakura.civilcore.commands.TeamCommand; +import rip.iwakura.civilcore.discord.Discord; public class CivilCore extends JavaPlugin { public Database db = new Database(); + public Discord bot; @Override public void onEnable() { this.saveDefaultConfig(); + this.bot = new Discord(getConfig().getString("discord.token"), getConfig().getString("discord.channel"), this); + this.bot.initialize(); + + if (Bukkit.getWorld("court") == null) { + new WorldCreator("court").createWorld(); + } + try { Class.forName("org.postgresql.Driver"); } catch (ClassNotFoundException e) { @@ -28,6 +38,8 @@ public class CivilCore extends JavaPlugin { e.printStackTrace(); } getServer().getPluginManager().registerEvents(new PlayerHandler(this), this); + getServer().getPluginManager().registerEvents(new Court(), this); this.getCommand("team").setExecutor(new TeamCommand(this)); + this.getCommand("court").setExecutor(new Court()); } } diff --git a/src/main/java/rip/iwakura/civilcore/Court.java b/src/main/java/rip/iwakura/civilcore/Court.java new file mode 100644 index 0000000..30fd160 --- /dev/null +++ b/src/main/java/rip/iwakura/civilcore/Court.java @@ -0,0 +1,64 @@ +package rip.iwakura.civilcore; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockBurnEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.block.BlockSpreadEvent; + +public class Court implements Listener,CommandExecutor{ + private World court_world = Bukkit.getWorld("court"); + + private Location court_location = new Location(court_world, 4.5, 70.0, 0.5, -90f, 1.0f); + + @EventHandler + public void PlayerBreak(BlockBreakEvent e) { + if (e.getPlayer().isOp()) return; + if (e.getBlock().getWorld().getName().equals(court_world.getName())) e.setCancelled(true); + } + @EventHandler + public void PlayerPlace(BlockPlaceEvent e) { + if (e.getPlayer().isOp()) return; + if (e.getBlock().getWorld().getName().equals(court_world.getName())) e.setCancelled(true); + } + @EventHandler + public void PlayerBurn(BlockBurnEvent e) { + if (e.getBlock().getWorld().getName().equals(court_world.getName())) e.setCancelled(true); + } + @EventHandler + public void FireSpread(BlockSpreadEvent e) { + if (e.getBlock().getWorld().getName().equals(court_world.getName())) e.setCancelled(true); + } + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage("Non-player type."); + return true; + } + + Player p = (Player) sender; + + switch (args[0]) { + case "enter": + p.teleport(court_location); + break; + case "leave": + Location loc = p.getBedSpawnLocation(); + if (loc == null) { + loc = Bukkit.getWorld("world").getSpawnLocation(); + } + p.teleport(loc); + break; + } + return true; + } + +} diff --git a/src/main/java/rip/iwakura/civilcore/PlayerHandler.java b/src/main/java/rip/iwakura/civilcore/PlayerHandler.java index 15cc9ac..219cfc2 100644 --- a/src/main/java/rip/iwakura/civilcore/PlayerHandler.java +++ b/src/main/java/rip/iwakura/civilcore/PlayerHandler.java @@ -31,6 +31,8 @@ public class PlayerHandler implements Listener { String prefix = dbPlayer.team.prefix == null ? "" : ChatColor.translateAlternateColorCodes('&', dbPlayer.team.prefix) + " "; Bukkit.broadcastMessage(String.format("%s%s: %s", prefix, player_name, e.getMessage())); + + civilCore.bot.sendMessage(e); } @EventHandler public void PlayerJoinEvent(PlayerJoinEvent e) { diff --git a/src/main/java/rip/iwakura/civilcore/commands/TeamCommand.java b/src/main/java/rip/iwakura/civilcore/commands/TeamCommand.java index 0e1a282..66040dd 100644 --- a/src/main/java/rip/iwakura/civilcore/commands/TeamCommand.java +++ b/src/main/java/rip/iwakura/civilcore/commands/TeamCommand.java @@ -22,7 +22,7 @@ public class TeamCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - args = Utils.parser(args).toArray(new String[args.length]); + args = Utils.parser(args).toArray(new String[0]); if(args.length == 0) { sender.sendMessage(ChatColor.RED + "Usage: /team [options]"); diff --git a/src/main/java/rip/iwakura/civilcore/discord/Discord.java b/src/main/java/rip/iwakura/civilcore/discord/Discord.java new file mode 100644 index 0000000..85c9fb2 --- /dev/null +++ b/src/main/java/rip/iwakura/civilcore/discord/Discord.java @@ -0,0 +1,73 @@ +package rip.iwakura.civilcore.discord; + +import java.util.EnumSet; + +import org.bukkit.Bukkit; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.checkerframework.common.reflection.qual.GetConstructor; + +import club.minnced.discord.webhook.WebhookClient; +import club.minnced.discord.webhook.WebhookClientBuilder; +import club.minnced.discord.webhook.send.WebhookMessage; +import club.minnced.discord.webhook.send.WebhookMessageBuilder; +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; +import net.dv8tion.jda.api.hooks.ListenerAdapter; +import net.dv8tion.jda.api.requests.GatewayIntent; +import rip.iwakura.civilcore.CivilCore; +import net.dv8tion.jda.api.events.session.ReadyEvent; + +public class Discord extends ListenerAdapter { + private String token; + private CivilCore civilCore; + + public String channelId; + + private TextChannel channel; + private WebhookClient webhook; + + public JDA bot; + + private EnumSet intents = EnumSet.of(GatewayIntent.GUILD_MESSAGES, GatewayIntent.MESSAGE_CONTENT, GatewayIntent.GUILD_WEBHOOKS); + + public Discord(String token, String channelId, CivilCore civilCore){ + this.civilCore = civilCore; + this.channelId = channelId; + this.token = token; + } + + public void initialize() { + this.bot = JDABuilder.createLight(token, intents) + .addEventListeners(new MessageReceive(civilCore)) + .addEventListeners(this) + .build(); + } + + public void sendMessage(AsyncPlayerChatEvent e) { + String player_name = e.getPlayer().getName(); + WebhookMessageBuilder builder = new WebhookMessageBuilder() + .setUsername(player_name) + .setAvatarUrl(String.format("https://mc-heads.net/avatar/%s", player_name)) + .setContent(e.getMessage()); + webhook.send(builder.build()); + //channel.sendMessage(String.format("%s: %s", e.getPlayer().getName(), e.getMessage())).complete(); + } + + @Override + public void onReady(ReadyEvent e) { + this.channel = bot.getTextChannelById(channelId); + String webhook_token = civilCore.getConfig().getString("discord.webhook.token"); + Long webhook_id = Long.parseLong(civilCore.getConfig().getString("discord.webhook.id")); + if (webhook_token != null) { + this.webhook = new WebhookClientBuilder(webhook_id, webhook_token).build(); + } else { + channel.createWebhook("CivilBot").queue((hook) -> { + civilCore.getConfig().set("discord.webhook.id", hook.getId()); + civilCore.getConfig().set("discord.webhook.token", hook.getToken()); + civilCore.saveConfig(); + this.webhook = new WebhookClientBuilder(Long.parseLong(hook.getId()), hook.getToken()).build(); + }); + } + } +} diff --git a/src/main/java/rip/iwakura/civilcore/discord/MessageReceive.java b/src/main/java/rip/iwakura/civilcore/discord/MessageReceive.java new file mode 100644 index 0000000..a2a5617 --- /dev/null +++ b/src/main/java/rip/iwakura/civilcore/discord/MessageReceive.java @@ -0,0 +1,22 @@ +package rip.iwakura.civilcore.discord; + +import org.bukkit.Bukkit; + +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; +import net.md_5.bungee.api.ChatColor; +import rip.iwakura.civilcore.CivilCore; + +public class MessageReceive extends ListenerAdapter { + private CivilCore civilCore; + + public MessageReceive (CivilCore civilCore) { + this.civilCore = civilCore; + } + + @Override + public void onMessageReceived(MessageReceivedEvent e) { + if (e.getAuthor().isBot()) return; + if(e.getChannel().getId().equals(civilCore.bot.channelId)) Bukkit.broadcastMessage(String.format("%sDiscord%s %s: %s", ChatColor.BLUE, ChatColor.RESET, e.getAuthor().getName(), e.getMessage())); + } +} diff --git a/src/main/java/rip/iwakura/civilcore/types/CoreCommand.java b/src/main/java/rip/iwakura/civilcore/types/CoreCommand.java new file mode 100644 index 0000000..9f24454 --- /dev/null +++ b/src/main/java/rip/iwakura/civilcore/types/CoreCommand.java @@ -0,0 +1,7 @@ +package rip.iwakura.civilcore.types; + +import org.bukkit.command.CommandSender; + +public interface CoreCommand { + public boolean run(CommandSender sender); +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 7152f6b..097916b 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -8,3 +8,7 @@ commands: team: description: Team Manager usage: / + permission: "civil.teams" + court: + description: Court Manager + usage: / From 55fc458c024116ee4ee4de714637529408dc5d14 Mon Sep 17 00:00:00 2001 From: hexlocation pc Date: Wed, 24 Jul 2024 19:32:22 +0200 Subject: [PATCH 02/10] fix: court bug which kills yall & disable pvp --- src/main/java/rip/iwakura/civilcore/Court.java | 17 +++++++++++++++++ .../rip/iwakura/civilcore/discord/Discord.java | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/rip/iwakura/civilcore/Court.java b/src/main/java/rip/iwakura/civilcore/Court.java index 30fd160..b2a7fc2 100644 --- a/src/main/java/rip/iwakura/civilcore/Court.java +++ b/src/main/java/rip/iwakura/civilcore/Court.java @@ -13,12 +13,29 @@ import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockSpreadEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; public class Court implements Listener,CommandExecutor{ private World court_world = Bukkit.getWorld("court"); private Location court_location = new Location(court_world, 4.5, 70.0, 0.5, -90f, 1.0f); + @EventHandler + public void PlayerHurt(EntityDamageEvent e) { + if (!(e.getEntity() instanceof Player)) return; + Player p = (Player) e.getEntity(); + + if (!p.getLocation().getWorld().getName().equals("court")) return; + + e.setCancelled(true); + + if (e.getCause() == DamageCause.VOID) { + p.teleport(court_location); + return; + } + } + @EventHandler public void PlayerBreak(BlockBreakEvent e) { if (e.getPlayer().isOp()) return; diff --git a/src/main/java/rip/iwakura/civilcore/discord/Discord.java b/src/main/java/rip/iwakura/civilcore/discord/Discord.java index 85c9fb2..49f1384 100644 --- a/src/main/java/rip/iwakura/civilcore/discord/Discord.java +++ b/src/main/java/rip/iwakura/civilcore/discord/Discord.java @@ -58,8 +58,8 @@ public class Discord extends ListenerAdapter { public void onReady(ReadyEvent e) { this.channel = bot.getTextChannelById(channelId); String webhook_token = civilCore.getConfig().getString("discord.webhook.token"); - Long webhook_id = Long.parseLong(civilCore.getConfig().getString("discord.webhook.id")); if (webhook_token != null) { + Long webhook_id = Long.parseLong(civilCore.getConfig().getString("discord.webhook.id")); this.webhook = new WebhookClientBuilder(webhook_id, webhook_token).build(); } else { channel.createWebhook("CivilBot").queue((hook) -> { From fc27e415f4575ff51234ea53d4da7f69f8581b78 Mon Sep 17 00:00:00 2001 From: hexlocation pc Date: Wed, 24 Jul 2024 20:32:05 +0200 Subject: [PATCH 03/10] feat: add team chat func + handle water bucket in court --- .../java/rip/iwakura/civilcore/CivilCore.java | 5 ++ .../java/rip/iwakura/civilcore/Court.java | 8 ++++ .../java/rip/iwakura/civilcore/Database.java | 11 +++++ .../rip/iwakura/civilcore/PlayerHandler.java | 27 +++++++++-- .../civilcore/commands/TeamChatCommand.java | 48 +++++++++++++++++++ src/main/resources/plugin.yml | 3 ++ 6 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java diff --git a/src/main/java/rip/iwakura/civilcore/CivilCore.java b/src/main/java/rip/iwakura/civilcore/CivilCore.java index cf40b56..137e0e1 100644 --- a/src/main/java/rip/iwakura/civilcore/CivilCore.java +++ b/src/main/java/rip/iwakura/civilcore/CivilCore.java @@ -2,18 +2,22 @@ package rip.iwakura.civilcore; import java.sql.SQLException; import java.util.ArrayList; +import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.WorldCreator; +import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import net.md_5.bungee.api.ChatColor; +import rip.iwakura.civilcore.commands.TeamChatCommand; import rip.iwakura.civilcore.commands.TeamCommand; import rip.iwakura.civilcore.discord.Discord; public class CivilCore extends JavaPlugin { public Database db = new Database(); public Discord bot; + public ArrayList teamChatRegister = new ArrayList<>(); @Override public void onEnable() { @@ -41,5 +45,6 @@ public class CivilCore extends JavaPlugin { getServer().getPluginManager().registerEvents(new Court(), this); this.getCommand("team").setExecutor(new TeamCommand(this)); this.getCommand("court").setExecutor(new Court()); + this.getCommand("tc").setExecutor(new TeamChatCommand(this)); } } diff --git a/src/main/java/rip/iwakura/civilcore/Court.java b/src/main/java/rip/iwakura/civilcore/Court.java index b2a7fc2..b0e723a 100644 --- a/src/main/java/rip/iwakura/civilcore/Court.java +++ b/src/main/java/rip/iwakura/civilcore/Court.java @@ -15,12 +15,20 @@ import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockSpreadEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerBucketEmptyEvent; public class Court implements Listener,CommandExecutor{ private World court_world = Bukkit.getWorld("court"); private Location court_location = new Location(court_world, 4.5, 70.0, 0.5, -90f, 1.0f); + @EventHandler + public void PlayerPlaceWater(PlayerBucketEmptyEvent e) { + Player p = (Player) e.getPlayer(); + if (!p.getLocation().getWorld().getName().equals("court")) return; + e.setCancelled(true); + } + @EventHandler public void PlayerHurt(EntityDamageEvent e) { if (!(e.getEntity() instanceof Player)) return; diff --git a/src/main/java/rip/iwakura/civilcore/Database.java b/src/main/java/rip/iwakura/civilcore/Database.java index 4fe2e86..044fc05 100644 --- a/src/main/java/rip/iwakura/civilcore/Database.java +++ b/src/main/java/rip/iwakura/civilcore/Database.java @@ -82,6 +82,17 @@ public class Database { rs.close(); } + public List getPlayersInTeam(String team_name) { + List filtered = players.stream().filter( + s -> { + if (s.team.name == null) return false; + return s.team.name.equals(team_name); + }) + .collect(Collectors.toList()); + if(filtered.isEmpty()) return null; + return filtered; + } + public void refreshPlayers() throws SQLException { players.clear(); String sql = "SELECT players.NAME AS player_name, teams.NAME AS team_name, teams.TEAM_ID as t_team_id, teams.PREFIX AS team_prefix " + diff --git a/src/main/java/rip/iwakura/civilcore/PlayerHandler.java b/src/main/java/rip/iwakura/civilcore/PlayerHandler.java index 219cfc2..07eca75 100644 --- a/src/main/java/rip/iwakura/civilcore/PlayerHandler.java +++ b/src/main/java/rip/iwakura/civilcore/PlayerHandler.java @@ -1,6 +1,7 @@ package rip.iwakura.civilcore; import java.sql.SQLException; +import java.util.List; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -26,14 +27,34 @@ public class PlayerHandler implements Listener { Player p = e.getPlayer(); String player_name = p.getName(); + boolean inTeamChat = civilCore.teamChatRegister.contains(p); DbPlayer dbPlayer = civilCore.db.getPlayerByName(player_name); - String prefix = dbPlayer.team.prefix == null ? "" : ChatColor.translateAlternateColorCodes('&', dbPlayer.team.prefix) + " "; + String prefix = (inTeamChat ? ChatColor.DARK_BLUE + "TC " + ChatColor.RESET : "") + + (dbPlayer.team.prefix == null ? + "" : + ChatColor.translateAlternateColorCodes('&', dbPlayer.team.prefix) + " "); + String message = String.format("%s%s: %s", prefix, player_name, e.getMessage()); - Bukkit.broadcastMessage(String.format("%s%s: %s", prefix, player_name, e.getMessage())); + if (!inTeamChat) { + Bukkit.broadcastMessage(message); + civilCore.bot.sendMessage(e); + } else { + List players = civilCore.db.getPlayersInTeam(dbPlayer.team.name); + + if (players == null) return; + + for (DbPlayer team_dbp : players) { + Player team_p = Bukkit.getPlayer(team_dbp.name); + + if (team_p == null) continue; + + team_p.sendMessage(message); + } + } - civilCore.bot.sendMessage(e); } + @EventHandler public void PlayerJoinEvent(PlayerJoinEvent e) { Player p = e.getPlayer(); diff --git a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java new file mode 100644 index 0000000..0a729e0 --- /dev/null +++ b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java @@ -0,0 +1,48 @@ +package rip.iwakura.civilcore.commands; + +import java.sql.SQLException; + +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerEvent; + +import net.md_5.bungee.api.ChatColor; +import rip.iwakura.civilcore.Utils; +import rip.iwakura.civilcore.CivilCore; +import rip.iwakura.civilcore.types.DbPlayer; +import rip.iwakura.civilcore.types.Team; + +public class TeamChatCommand implements CommandExecutor { + private CivilCore civilCore = null; + + public TeamChatCommand(CivilCore civilCore) { + this.civilCore = civilCore; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + args = Utils.parser(args).toArray(new String[0]); + + if (!(sender instanceof Player)) return true; + + Player p = (Player) sender; + + if (civilCore.teamChatRegister.contains(p)) { + civilCore.teamChatRegister.remove(p); + p.sendMessage(ChatColor.RED + "Team chat has been disabled."); + return true; + } + + if (civilCore.db.getPlayerByName(p.getName()).team.name == null) { + p.sendMessage(ChatColor.RED + "You aren't in a team :("); + return true; + } + civilCore.teamChatRegister.add(p); + p.sendMessage(ChatColor.GREEN + "Team chat has been enabled."); + + return true; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 097916b..529c1fa 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -12,3 +12,6 @@ commands: court: description: Court Manager usage: / + tc: + description: Team Chat + usage: / From 08cfd82d093849041877d034e37ccbf25ec36ce9 Mon Sep 17 00:00:00 2001 From: grng <36968271+grngxd@users.noreply.github.com> Date: Thu, 25 Jul 2024 00:35:52 +0100 Subject: [PATCH 04/10] code that i havnt tested, gn chat --- build.ps1 | 10 ++++++ .../civilcore/commands/TeamChatCommand.java | 34 +++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 build.ps1 diff --git a/build.ps1 b/build.ps1 new file mode 100644 index 0000000..65f7076 --- /dev/null +++ b/build.ps1 @@ -0,0 +1,10 @@ +# Check if the test_server directory exists, if not, create it +if (-not (Test-Path -Path test_server)) { + New-Item -ItemType Directory -Path test_server +} + +# mvn clean package dependency:copy -DskipTests -DoutputDirectory=test_server/plugins + +Set-Location -Path test_server +java -jar server.jar -nogui +Set-Location -Path .. \ No newline at end of file diff --git a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java index 0a729e0..c931b6a 100644 --- a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java +++ b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java @@ -30,9 +30,9 @@ public class TeamChatCommand implements CommandExecutor { Player p = (Player) sender; - if (civilCore.teamChatRegister.contains(p)) { + /*if (civilCore.teamChatRegister.contains(p)) { civilCore.teamChatRegister.remove(p); - p.sendMessage(ChatColor.RED + "Team chat has been disabled."); + p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "GLOBAL" + ChatColor.GREEN + " channel"); return true; } @@ -41,7 +41,35 @@ public class TeamChatCommand implements CommandExecutor { return true; } civilCore.teamChatRegister.add(p); - p.sendMessage(ChatColor.GREEN + "Team chat has been enabled."); + p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "TEAM" + ChatColor.GREEN + " channel");*/ + + // /c [msg] -> if team chat toggled: broadcast to global chat, if global chat toggled send to team + // /tc or /c -> switch between global chat & team chat + + if (args.length == 0) { + if (civilCore.teamChatRegister.contains(p)) { + civilCore.teamChatRegister.remove(p); + p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "GLOBAL" + ChatColor.GREEN + " channel"); + return true; + } else { + civilCore.teamChatRegister.add(p); + p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "TEAM" + ChatColor.GREEN + " channel"); + return true; + } + } + + String message = String.join(" ", args); + if (civilCore.teamChatRegister.contains(p)) { + civilCore.teamChatRegister.remove(p); + Bukkit.broadcastMessage(ChatColor.DARK_GREEN + "TEAM > " + ChatColor.GREEN + p.getName() + ": " + message); + civilCore.teamChatRegister.add(p); + } else { + civilCore.teamChatRegister.add(p); + Bukkit.broadcastMessage(p.getName() + ": " + message); + civilCore.teamChatRegister.remove(p); + } + + return true; } From d10e195b35bd4a678aa9bcdfb9076a93e675a5f2 Mon Sep 17 00:00:00 2001 From: grng <36968271+grngxd@users.noreply.github.com> Date: Thu, 25 Jul 2024 00:41:36 +0100 Subject: [PATCH 05/10] done (untested code) --- .../rip/iwakura/civilcore/PlayerHandler.java | 4 +- .../civilcore/commands/TeamChatCommand.java | 38 ++++--------------- 2 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/main/java/rip/iwakura/civilcore/PlayerHandler.java b/src/main/java/rip/iwakura/civilcore/PlayerHandler.java index 07eca75..f3e37bc 100644 --- a/src/main/java/rip/iwakura/civilcore/PlayerHandler.java +++ b/src/main/java/rip/iwakura/civilcore/PlayerHandler.java @@ -15,7 +15,7 @@ import rip.iwakura.civilcore.types.DbPlayer; public class PlayerHandler implements Listener { - private CivilCore civilCore = null; + private final CivilCore civilCore; public PlayerHandler(CivilCore civilCore) { this.civilCore = civilCore; @@ -33,7 +33,7 @@ public class PlayerHandler implements Listener { String prefix = (inTeamChat ? ChatColor.DARK_BLUE + "TC " + ChatColor.RESET : "") + (dbPlayer.team.prefix == null ? "" : - ChatColor.translateAlternateColorCodes('&', dbPlayer.team.prefix) + " "); + ChatColor.translateAlternateColorCodes('&', "[" + dbPlayer.team.prefix + "]") + " "); String message = String.format("%s%s: %s", prefix, player_name, e.getMessage()); if (!inTeamChat) { diff --git a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java index c931b6a..5da2f3f 100644 --- a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java +++ b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java @@ -1,61 +1,39 @@ package rip.iwakura.civilcore.commands; -import java.sql.SQLException; - import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerEvent; import net.md_5.bungee.api.ChatColor; +import org.jetbrains.annotations.NotNull; import rip.iwakura.civilcore.Utils; import rip.iwakura.civilcore.CivilCore; -import rip.iwakura.civilcore.types.DbPlayer; -import rip.iwakura.civilcore.types.Team; + +import java.util.Objects; public class TeamChatCommand implements CommandExecutor { - private CivilCore civilCore = null; + private final CivilCore civilCore; public TeamChatCommand(CivilCore civilCore) { this.civilCore = civilCore; } @Override - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - args = Utils.parser(args).toArray(new String[0]); - - if (!(sender instanceof Player)) return true; - - Player p = (Player) sender; - - /*if (civilCore.teamChatRegister.contains(p)) { - civilCore.teamChatRegister.remove(p); - p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "GLOBAL" + ChatColor.GREEN + " channel"); - return true; - } - - if (civilCore.db.getPlayerByName(p.getName()).team.name == null) { - p.sendMessage(ChatColor.RED + "You aren't in a team :("); - return true; - } - civilCore.teamChatRegister.add(p); - p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "TEAM" + ChatColor.GREEN + " channel");*/ - - // /c [msg] -> if team chat toggled: broadcast to global chat, if global chat toggled send to team - // /tc or /c -> switch between global chat & team chat + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + args = Objects.requireNonNull(Utils.parser(args)).toArray(new String[0]); + if (!(sender instanceof Player p)) return true; if (args.length == 0) { if (civilCore.teamChatRegister.contains(p)) { civilCore.teamChatRegister.remove(p); p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "GLOBAL" + ChatColor.GREEN + " channel"); - return true; } else { civilCore.teamChatRegister.add(p); p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "TEAM" + ChatColor.GREEN + " channel"); - return true; } + return true; } String message = String.join(" ", args); From ec97defd6ab8b884da95498f874f6d7e439e48d6 Mon Sep 17 00:00:00 2001 From: grng <36968271+grngxd@users.noreply.github.com> Date: Thu, 25 Jul 2024 00:48:39 +0100 Subject: [PATCH 06/10] a --- .idea/.gitignore | 3 +++ .idea/compiler.xml | 13 +++++++++++++ .idea/discord.xml | 7 +++++++ .idea/encodings.xml | 7 +++++++ .idea/jarRepositories.xml | 35 +++++++++++++++++++++++++++++++++++ .idea/misc.xml | 12 ++++++++++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ CivilCore.iml | 13 +++++++++++++ 9 files changed, 104 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/discord.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 CivilCore.iml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..22d1c4f --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..d8e9561 --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..680f95b --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..6546f14 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..787efec --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CivilCore.iml b/CivilCore.iml new file mode 100644 index 0000000..9cb719e --- /dev/null +++ b/CivilCore.iml @@ -0,0 +1,13 @@ + + + + + + + BUKKIT + + 1 + + + + \ No newline at end of file From 160677ff824171c7e18d087d82707bdc0cb68c7d Mon Sep 17 00:00:00 2001 From: grng <36968271+grngxd@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:32:25 +0100 Subject: [PATCH 07/10] restyled team chat (buggy do not use) --- db.ps1 | 2 ++ docker-compose.yml | 8 ++++++++ pom.xml | 2 +- src/main/java/rip/iwakura/civilcore/PlayerHandler.java | 6 +++--- 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 db.ps1 create mode 100644 docker-compose.yml diff --git a/db.ps1 b/db.ps1 new file mode 100644 index 0000000..01fddb1 --- /dev/null +++ b/db.ps1 @@ -0,0 +1,2 @@ +docker-compose up +docker ps \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5765784 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3' +services: + civil_test_db: + environment: + - POSTGRES_PASSWORD=TEST123 + image: postgres:16.3 + ports: + - 5432:5432 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1447579..ca26969 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ rip.iwakura CivilCore - 0.1a + 0.1b diff --git a/src/main/java/rip/iwakura/civilcore/PlayerHandler.java b/src/main/java/rip/iwakura/civilcore/PlayerHandler.java index f3e37bc..e2eebb2 100644 --- a/src/main/java/rip/iwakura/civilcore/PlayerHandler.java +++ b/src/main/java/rip/iwakura/civilcore/PlayerHandler.java @@ -30,11 +30,11 @@ public class PlayerHandler implements Listener { boolean inTeamChat = civilCore.teamChatRegister.contains(p); DbPlayer dbPlayer = civilCore.db.getPlayerByName(player_name); - String prefix = (inTeamChat ? ChatColor.DARK_BLUE + "TC " + ChatColor.RESET : "") + String prefix = (inTeamChat ? ChatColor.DARK_GREEN + "TEAM >" + ChatColor.RESET : "") + (dbPlayer.team.prefix == null ? "" : - ChatColor.translateAlternateColorCodes('&', "[" + dbPlayer.team.prefix + "]") + " "); - String message = String.format("%s%s: %s", prefix, player_name, e.getMessage()); + ChatColor.translateAlternateColorCodes('&', inTeamChat ? "" : "[" + dbPlayer.team.prefix + "]")); + String message = String.format("%s %s: %s", prefix, player_name, e.getMessage()); if (!inTeamChat) { Bukkit.broadcastMessage(message); From 6dec52a317d271922492fa8f79f90b08d07305ce Mon Sep 17 00:00:00 2001 From: grng <36968271+grngxd@users.noreply.github.com> Date: Thu, 25 Jul 2024 11:16:52 +0100 Subject: [PATCH 08/10] /tc doesnt work --- .../civilcore/commands/TeamChatCommand.java | 52 +++++++++++++++++-- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java index 5da2f3f..f1a5e66 100644 --- a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java +++ b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java @@ -10,7 +10,9 @@ import net.md_5.bungee.api.ChatColor; import org.jetbrains.annotations.NotNull; import rip.iwakura.civilcore.Utils; import rip.iwakura.civilcore.CivilCore; +import rip.iwakura.civilcore.types.DbPlayer; +import java.util.List; import java.util.Objects; public class TeamChatCommand implements CommandExecutor { @@ -20,6 +22,14 @@ public class TeamChatCommand implements CommandExecutor { this.civilCore = civilCore; } + private String getPrefix(String name, boolean inTeamChat) { + DbPlayer dbPlayer = civilCore.db.getPlayerByName(name); + return (inTeamChat ? ChatColor.DARK_GREEN + "TEAM >" + ChatColor.RESET : "") + + (dbPlayer.team.prefix == null ? + "" : + ChatColor.translateAlternateColorCodes('&', inTeamChat ? "" : "[" + dbPlayer.team.prefix + "]")); + } + @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { args = Objects.requireNonNull(Utils.parser(args)).toArray(new String[0]); @@ -37,18 +47,52 @@ public class TeamChatCommand implements CommandExecutor { } String message = String.join(" ", args); - if (civilCore.teamChatRegister.contains(p)) { + + String player_name = p.getName(); + boolean inTeamChat = civilCore.teamChatRegister.contains(p); + + DbPlayer dbPlayer = civilCore.db.getPlayerByName(player_name); + /*String prefix = (inTeamChat ? ChatColor.DARK_GREEN + "TEAM >" + ChatColor.RESET : "") + + (dbPlayer.team.prefix == null ? + "" : + ChatColor.translateAlternateColorCodes('&', inTeamChat ? "" : "[" + dbPlayer.team.prefix + "]"));*/ + + /*if (civilCore.teamChatRegister.contains(p)) { civilCore.teamChatRegister.remove(p); - Bukkit.broadcastMessage(ChatColor.DARK_GREEN + "TEAM > " + ChatColor.GREEN + p.getName() + ": " + message); + // Bukkit.broadcastMessage(ChatColor.DARK_GREEN + "TEAM > " + ChatColor.GREEN + p.getName() + ": " + message); + String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); + Bukkit.broadcastMessage(formatted); civilCore.teamChatRegister.add(p); } else { civilCore.teamChatRegister.add(p); - Bukkit.broadcastMessage(p.getName() + ": " + message); + String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); + Bukkit.broadcastMessage(formatted); + civilCore.teamChatRegister.remove(p); + }*/ + + String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); + + if (!inTeamChat) { + civilCore.teamChatRegister.remove(p); + Bukkit.broadcastMessage(formatted); + civilCore.teamChatRegister.add(p); + } else { + civilCore.teamChatRegister.add(p); + List players = civilCore.db.getPlayersInTeam(dbPlayer.team.name); + + if (players == null) return true; + + for (DbPlayer team_dbp : players) { + Player team_p = Bukkit.getPlayer(team_dbp.name); + + if (team_p == null) continue; + + team_p.sendMessage(message); + } civilCore.teamChatRegister.remove(p); } - return true; } } From 696e2b09aa30731ca927e7f4e0623d1134adb4c5 Mon Sep 17 00:00:00 2001 From: grng <36968271+grngxd@users.noreply.github.com> Date: Thu, 25 Jul 2024 11:21:28 +0100 Subject: [PATCH 09/10] /tc doesnt work --- .../java/rip/iwakura/civilcore/commands/TeamChatCommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java index f1a5e66..b5141b7 100644 --- a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java +++ b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java @@ -70,14 +70,14 @@ public class TeamChatCommand implements CommandExecutor { civilCore.teamChatRegister.remove(p); }*/ - String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); - if (!inTeamChat) { civilCore.teamChatRegister.remove(p); + String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); Bukkit.broadcastMessage(formatted); civilCore.teamChatRegister.add(p); } else { civilCore.teamChatRegister.add(p); + String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); List players = civilCore.db.getPlayersInTeam(dbPlayer.team.name); if (players == null) return true; From 01aeefaaa3d61e8362a30d7edd8e7557bb1cc270 Mon Sep 17 00:00:00 2001 From: grng <36968271+grngxd@users.noreply.github.com> Date: Thu, 25 Jul 2024 13:32:04 +0100 Subject: [PATCH 10/10] add /tc , fix scripts, increment version --- pom.xml | 2 +- build.ps1 => run.ps1 | 1 - .../civilcore/commands/TeamChatCommand.java | 33 +++++------------ .../iwakura/civilcore/discord/Discord.java | 37 ++++++++++++++++++- 4 files changed, 46 insertions(+), 27 deletions(-) rename build.ps1 => run.ps1 (80%) diff --git a/pom.xml b/pom.xml index ca26969..976bac2 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ rip.iwakura CivilCore - 0.1b + 0.1c diff --git a/build.ps1 b/run.ps1 similarity index 80% rename from build.ps1 rename to run.ps1 index 65f7076..3260453 100644 --- a/build.ps1 +++ b/run.ps1 @@ -1,4 +1,3 @@ -# Check if the test_server directory exists, if not, create it if (-not (Test-Path -Path test_server)) { New-Item -ItemType Directory -Path test_server } diff --git a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java index b5141b7..33b66e1 100644 --- a/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java +++ b/src/main/java/rip/iwakura/civilcore/commands/TeamChatCommand.java @@ -43,7 +43,7 @@ public class TeamChatCommand implements CommandExecutor { civilCore.teamChatRegister.add(p); p.sendMessage(ChatColor.GREEN + "You are now in the " + ChatColor.GOLD + "TEAM" + ChatColor.GREEN + " channel"); } - return true; + return true; } String message = String.join(" ", args); @@ -52,32 +52,18 @@ public class TeamChatCommand implements CommandExecutor { boolean inTeamChat = civilCore.teamChatRegister.contains(p); DbPlayer dbPlayer = civilCore.db.getPlayerByName(player_name); - /*String prefix = (inTeamChat ? ChatColor.DARK_GREEN + "TEAM >" + ChatColor.RESET : "") - + (dbPlayer.team.prefix == null ? - "" : - ChatColor.translateAlternateColorCodes('&', inTeamChat ? "" : "[" + dbPlayer.team.prefix + "]"));*/ - /*if (civilCore.teamChatRegister.contains(p)) { + if (inTeamChat) { + // Send message to global chat civilCore.teamChatRegister.remove(p); - // Bukkit.broadcastMessage(ChatColor.DARK_GREEN + "TEAM > " + ChatColor.GREEN + p.getName() + ": " + message); - String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); + String formatted = String.format("%s%s: %s", getPrefix(player_name, false) + " ", player_name, message); Bukkit.broadcastMessage(formatted); + civilCore.bot.sendMessage(p, message); civilCore.teamChatRegister.add(p); } else { + // Send message to team chat civilCore.teamChatRegister.add(p); - String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); - Bukkit.broadcastMessage(formatted); - civilCore.teamChatRegister.remove(p); - }*/ - - if (!inTeamChat) { - civilCore.teamChatRegister.remove(p); - String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); - Bukkit.broadcastMessage(formatted); - civilCore.teamChatRegister.add(p); - } else { - civilCore.teamChatRegister.add(p); - String formatted = String.format("%s%s: %s", getPrefix(player_name, inTeamChat) + " ", player_name, message); + String formatted = String.format("%s%s: %s", getPrefix(player_name, true) + " ", player_name, message); List players = civilCore.db.getPlayersInTeam(dbPlayer.team.name); if (players == null) return true; @@ -87,12 +73,11 @@ public class TeamChatCommand implements CommandExecutor { if (team_p == null) continue; - team_p.sendMessage(message); + team_p.sendMessage(formatted); } civilCore.teamChatRegister.remove(p); } - return true; } -} +} \ No newline at end of file diff --git a/src/main/java/rip/iwakura/civilcore/discord/Discord.java b/src/main/java/rip/iwakura/civilcore/discord/Discord.java index 49f1384..be440ee 100644 --- a/src/main/java/rip/iwakura/civilcore/discord/Discord.java +++ b/src/main/java/rip/iwakura/civilcore/discord/Discord.java @@ -3,6 +3,7 @@ package rip.iwakura.civilcore.discord; import java.util.EnumSet; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.checkerframework.common.reflection.qual.GetConstructor; @@ -17,6 +18,7 @@ import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.dv8tion.jda.api.requests.GatewayIntent; import rip.iwakura.civilcore.CivilCore; import net.dv8tion.jda.api.events.session.ReadyEvent; +import rip.iwakura.civilcore.types.DbPlayer; public class Discord extends ListenerAdapter { private String token; @@ -45,15 +47,48 @@ public class Discord extends ListenerAdapter { } public void sendMessage(AsyncPlayerChatEvent e) { + DbPlayer dbPlayer = civilCore.db.getPlayerByName(e.getPlayer().getName()); + String prefix = (dbPlayer.team.prefix == null ? + "" : + "[" + dbPlayer.team.prefix + "]"); + String player_name = e.getPlayer().getName(); WebhookMessageBuilder builder = new WebhookMessageBuilder() - .setUsername(player_name) + .setUsername(prefix + " " + player_name) .setAvatarUrl(String.format("https://mc-heads.net/avatar/%s", player_name)) .setContent(e.getMessage()); webhook.send(builder.build()); //channel.sendMessage(String.format("%s: %s", e.getPlayer().getName(), e.getMessage())).complete(); } + public void sendMessage(Player p, String message) { + DbPlayer dbPlayer = civilCore.db.getPlayerByName(p.getName()); + String prefix = (dbPlayer.team.prefix == null ? + "" : + "[" + dbPlayer.team.prefix + "]"); + + WebhookMessageBuilder builder = new WebhookMessageBuilder() + .setUsername(prefix + " " + p.getName()) + .setAvatarUrl(String.format("https://mc-heads.net/avatar/%s", p.getName())) + .setContent(message); + webhook.send(builder.build()); + //channel.sendMessage(String.format("%s: %s", p.getName(), message)).complete(); + } + + public void sendMessage(String message, String name) { + DbPlayer dbPlayer = civilCore.db.getPlayerByName(name); + String prefix = (dbPlayer.team.prefix == null ? + "" : + "[" + dbPlayer.team.prefix + "]"); + + WebhookMessageBuilder builder = new WebhookMessageBuilder() + .setUsername(prefix + " " + name) + .setAvatarUrl(String.format("https://mc-heads.net/avatar/%s", name)) + .setContent(message); + webhook.send(builder.build()); + //channel.sendMessage(String.format("%s: %s", name, message)).complete(); + } + @Override public void onReady(ReadyEvent e) { this.channel = bot.getTextChannelById(channelId);