feat: add team chat func + handle water bucket in court
This commit is contained in:
parent
55fc458c02
commit
fc27e415f4
6 changed files with 99 additions and 3 deletions
|
@ -2,18 +2,22 @@ package rip.iwakura.civilcore;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.WorldCreator;
|
import org.bukkit.WorldCreator;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
|
import rip.iwakura.civilcore.commands.TeamChatCommand;
|
||||||
import rip.iwakura.civilcore.commands.TeamCommand;
|
import rip.iwakura.civilcore.commands.TeamCommand;
|
||||||
import rip.iwakura.civilcore.discord.Discord;
|
import rip.iwakura.civilcore.discord.Discord;
|
||||||
|
|
||||||
public class CivilCore extends JavaPlugin {
|
public class CivilCore extends JavaPlugin {
|
||||||
public Database db = new Database();
|
public Database db = new Database();
|
||||||
public Discord bot;
|
public Discord bot;
|
||||||
|
public ArrayList<Player> teamChatRegister = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
@ -41,5 +45,6 @@ public class CivilCore extends JavaPlugin {
|
||||||
getServer().getPluginManager().registerEvents(new Court(), this);
|
getServer().getPluginManager().registerEvents(new Court(), this);
|
||||||
this.getCommand("team").setExecutor(new TeamCommand(this));
|
this.getCommand("team").setExecutor(new TeamCommand(this));
|
||||||
this.getCommand("court").setExecutor(new Court());
|
this.getCommand("court").setExecutor(new Court());
|
||||||
|
this.getCommand("tc").setExecutor(new TeamChatCommand(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,12 +15,20 @@ import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.block.BlockSpreadEvent;
|
import org.bukkit.event.block.BlockSpreadEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
|
import org.bukkit.event.player.PlayerBucketEmptyEvent;
|
||||||
|
|
||||||
public class Court implements Listener,CommandExecutor{
|
public class Court implements Listener,CommandExecutor{
|
||||||
private World court_world = Bukkit.getWorld("court");
|
private World court_world = Bukkit.getWorld("court");
|
||||||
|
|
||||||
private Location court_location = new Location(court_world, 4.5, 70.0, 0.5, -90f, 1.0f);
|
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
|
@EventHandler
|
||||||
public void PlayerHurt(EntityDamageEvent e) {
|
public void PlayerHurt(EntityDamageEvent e) {
|
||||||
if (!(e.getEntity() instanceof Player)) return;
|
if (!(e.getEntity() instanceof Player)) return;
|
||||||
|
|
|
@ -82,6 +82,17 @@ public class Database {
|
||||||
rs.close();
|
rs.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<DbPlayer> getPlayersInTeam(String team_name) {
|
||||||
|
List<DbPlayer> 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 {
|
public void refreshPlayers() throws SQLException {
|
||||||
players.clear();
|
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 " +
|
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 " +
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package rip.iwakura.civilcore;
|
package rip.iwakura.civilcore;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
@ -26,14 +27,34 @@ public class PlayerHandler implements Listener {
|
||||||
|
|
||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
String player_name = p.getName();
|
String player_name = p.getName();
|
||||||
|
boolean inTeamChat = civilCore.teamChatRegister.contains(p);
|
||||||
|
|
||||||
DbPlayer dbPlayer = civilCore.db.getPlayerByName(player_name);
|
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<DbPlayer> 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
|
@EventHandler
|
||||||
public void PlayerJoinEvent(PlayerJoinEvent e) {
|
public void PlayerJoinEvent(PlayerJoinEvent e) {
|
||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,3 +12,6 @@ commands:
|
||||||
court:
|
court:
|
||||||
description: Court Manager
|
description: Court Manager
|
||||||
usage: /<command> <enter|leave>
|
usage: /<command> <enter|leave>
|
||||||
|
tc:
|
||||||
|
description: Team Chat
|
||||||
|
usage: /<command>
|
||||||
|
|
Loading…
Reference in a new issue