11package fr .fluffevent .fluffyteams .controllers ;
22
33import java .util .List ;
4+ import java .util .UUID ;
45
56import org .bukkit .Bukkit ;
67import org .bukkit .ChatColor ;
@@ -24,6 +25,41 @@ public TeamController() {
2425 db = DatabaseManager .getDatabase ();
2526 }
2627
28+ public Team getTeam (String name ) {
29+ List <Team > teams = db .where ("name = ?" , name ).results (Team .class );
30+ if (teams .isEmpty ()) {
31+ return null ;
32+ }
33+ return teams .get (0 );
34+ }
35+
36+ public Member getMember (String teamName , Player player ) {
37+ Team team = getTeam (teamName );
38+ if (team == null ) {
39+ throw new IllegalArgumentException ("Team " + teamName + " not found" );
40+ }
41+
42+ List <Member > members = db .where ("team_id = ? AND player_uuid = ?" , team .id , player .getUniqueId ())
43+ .results (Member .class );
44+ if (members .isEmpty ()) {
45+ return null ;
46+ }
47+ return members .get (0 );
48+ }
49+
50+ public Spawn getSpawn (String teamName ) {
51+ Team team = getTeam (teamName );
52+ if (team == null ) {
53+ throw new IllegalArgumentException ("Team " + teamName + " not found" );
54+ }
55+
56+ List <Spawn > spawns = db .where ("team_id = ?" , team .id ).results (Spawn .class );
57+ if (spawns .isEmpty ()) {
58+ return null ;
59+ }
60+ return spawns .get (0 );
61+ }
62+
2763 public void create (String name , String displayName ) {
2864 Team team = new Team ();
2965 team .name = name ;
@@ -32,26 +68,38 @@ public void create(String name, String displayName) {
3268 db .insert (team );
3369 }
3470
35- public void delete (String name ) {
36- Team team = db .where ("name = ?" , name ).results (Team .class ).get (0 );
71+ public void delete (String teamName ) {
72+ Team team = getTeam (teamName );
73+ if (team == null ) {
74+ throw new IllegalArgumentException ("Team " + teamName + " not found" );
75+ }
3776 db .delete (team );
3877 }
3978
4079 public void addMember (String teamName , Player player ) {
41- Team team = db .where ("name = ?" , teamName ).results (Team .class ).get (0 );
80+ Team team = getTeam (teamName );
81+ if (team == null ) {
82+ throw new IllegalArgumentException ("Team " + teamName + " not found" );
83+ }
4284
4385 Member member = new Member ();
4486 member .teamId = team .id ;
45- member .playerUuid = player .getUniqueId ();
87+ member .playerUuid = player .getUniqueId (). toString () ;
4688
4789 db .insert (member );
4890 }
4991
5092 public void removeMember (String teamName , Player player ) {
51- Team team = db .where ("name = ?" , teamName ).results (Team .class ).get (0 );
93+ Team team = getTeam (teamName );
94+ if (team == null ) {
95+ throw new IllegalArgumentException ("Team " + teamName + " not found" );
96+ }
5297
53- Member member = db .where ("team_id = ? AND player_uuid = ?" , team .id , player .getUniqueId ()).results (Member .class )
54- .get (0 );
98+ Member member = getMember (teamName , player );
99+
100+ if (member == null ) {
101+ throw new IllegalArgumentException ("Player " + player .getName () + " not found in team " + teamName );
102+ }
55103
56104 db .delete (member );
57105 }
@@ -61,50 +109,59 @@ public List<Team> list() {
61109 }
62110
63111 public List <OfflinePlayer > listMembers (String teamName ) {
64- Team team = db . where ( "name = ?" , teamName ). results ( Team . class ). get ( 0 );
112+ Team team = getTeam ( teamName );
65113 List <Member > members = db .where ("team_id = ?" , team .id ).results (Member .class );
66114
67- return members .stream ().map (m -> Bukkit .getOfflinePlayer (m .playerUuid )).toList ();
115+ return members .stream ().map (m -> Bukkit .getOfflinePlayer (UUID . fromString ( m .playerUuid ) )).toList ();
68116 }
69117
70118 public void spawn (String teamName ) {
71119 if (teamName .equals ("*" )) {
72120 this .list ().forEach (t -> spawn (t .name ));
73- } else {
74- Team team = db .where ("name = ?" , teamName ).results (Team .class ).get (0 );
75- Spawn spawn = db .where ("team_id = ?" , team .id ).results (Spawn .class ).get (0 );
76-
77- if (spawn == null ) {
78- throw new IllegalArgumentException ("No spawn set for team " + teamName );
79- }
121+ return ;
122+ }
80123
81- World world = Bukkit .getWorld (spawn .world );
82- Location location = new Location (world , spawn .x , spawn .y , spawn .z , spawn .yaw , spawn .pitch );
124+ Spawn spawn = getSpawn (teamName );
83125
84- listMembers (teamName ).forEach (p -> {
85- if (p .isOnline ()) {
86- p .getPlayer ().teleport (location );
87- }
88- });
126+ if (spawn == null ) {
127+ throw new IllegalArgumentException ("No spawn set for team " + teamName );
89128 }
129+
130+ World world = Bukkit .getWorld (spawn .world );
131+ Location location = new Location (world , spawn .x , spawn .y , spawn .z , spawn .yaw , spawn .pitch );
132+
133+ listMembers (teamName ).forEach (p -> {
134+ if (p .isOnline ()) {
135+ p .getPlayer ().teleport (location );
136+ }
137+ });
90138 }
91139
92140 public void setSpawn (String teamName , Location location ) {
93- Team team = db .where ("name = ?" , teamName ).results (Team .class ).get (0 );
141+ if (teamName .equals ("*" )) {
142+ this .list ().forEach (t -> setSpawn (t .name , location ));
143+ return ;
144+ }
145+
146+ Team team = getTeam (teamName );
147+
148+ if (team == null ) {
149+ throw new IllegalArgumentException ("Team " + teamName + " not found" );
150+ }
94151
95- Spawn spawn = db . where ( "team_id = ?" , team . id ). results ( Spawn . class ). get ( 0 );
152+ Spawn spawn = getSpawn ( teamName );
96153
97154 if (spawn == null ) {
98155 spawn = new Spawn ();
99156 spawn .teamId = team .id ;
100157 }
101158
102159 spawn .world = location .getWorld ().getName ();
103- spawn .x = ( long ) location .getX ();
104- spawn .y = ( long ) location .getY ();
105- spawn .z = ( long ) location .getZ ();
106- spawn .yaw = ( long ) location .getYaw ();
107- spawn .pitch = ( long ) location .getPitch ();
160+ spawn .x = location .getX ();
161+ spawn .y = location .getY ();
162+ spawn .z = location .getZ ();
163+ spawn .yaw = location .getYaw ();
164+ spawn .pitch = location .getPitch ();
108165
109166 if (spawn .id == 0 ) {
110167 db .insert (spawn );
0 commit comments