26
26
package in .twizmwaz .cardinal .playercontainer ;
27
27
28
28
import in .twizmwaz .cardinal .event .player .PlayerContainerChangeStateEvent ;
29
- import in .twizmwaz .cardinal .module .team .Team ;
29
+ import in .twizmwaz .cardinal .module .team .SinglePlayerContainer ;
30
30
import lombok .AccessLevel ;
31
31
import lombok .NoArgsConstructor ;
32
32
import org .bukkit .Bukkit ;
@@ -46,30 +46,30 @@ public static void handleStateChangeEvent(Player player, PlayerContainerData old
46
46
PlayerContainerChangeStateEvent event = new PlayerContainerChangeStateEvent (player , oldData , newData );
47
47
Bukkit .getPluginManager ().callEvent (event );
48
48
if (!event .isCancelled ()) {
49
- if (isNonNullAndHasPlayer (oldData .getMatchThread (), player )) {
50
- oldData .getMatchThread ().removePlayer (player );
51
- }
52
- if (isNonNullAndHasPlayer (oldData .getMatch (), player )) {
53
- oldData .getMatch ().removePlayer (player );
54
- }
55
- if (isNonNullAndHasPlayer (oldData .getPlaying (), player ) && oldData .getPlaying () instanceof Team ) {
56
- oldData .getPlaying ().removePlayer (player );
49
+ switchPlayer (oldData .getMatchThread (), newData .getMatchThread (), player );
50
+ switchPlayer (oldData .getMatch (), newData .getMatch (), player );
51
+ if (oldData .getMatch () == newData .getMatch ()) {
52
+ switchPlayer (oldData .getPlaying (), newData .getPlaying (), player );
53
+ } else {
54
+ // If match is not the same, removing the player from the match already kicked the player from the team.
55
+ addPlayer (newData .getPlaying (), player );
57
56
}
57
+ }
58
+ }
58
59
59
- if (newData .getMatchThread () != null ) {
60
- newData .getMatchThread ().addPlayer (player );
61
- }
62
- if (newData .getMatch () != null ) {
63
- newData .getMatch ().addPlayer (player );
64
- }
65
- if (newData .getPlaying () != null && newData .getPlaying () instanceof Team ) {
66
- newData .getPlaying ().addPlayer (player );
60
+ private static void switchPlayer (PlayerContainer oldContainer , PlayerContainer newContainer , Player player ) {
61
+ if (oldContainer != newContainer ) {
62
+ if (oldContainer != null && oldContainer .hasPlayer (player )) {
63
+ oldContainer .removePlayer (player );
67
64
}
65
+ addPlayer (newContainer , player );
68
66
}
69
67
}
70
68
71
- private static boolean isNonNullAndHasPlayer (PlayerContainer container , Player player ) {
72
- return container != null && container .hasPlayer (player );
69
+ private static void addPlayer (PlayerContainer newContainer , Player player ) {
70
+ if (newContainer != null && !(newContainer instanceof SinglePlayerContainer )) {
71
+ newContainer .addPlayer (player );
72
+ }
73
73
}
74
74
75
75
}
0 commit comments