Created
August 17, 2016 20:27
-
-
Save alexisvisco/e46ae58a29826a844d1b4a639fa37752 to your computer and use it in GitHub Desktop.
ITeam
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package fr.kwizzy.deathdash.util.team; | |
import org.bukkit.ChatColor; | |
import org.bukkit.entity.Player; | |
import java.util.Set; | |
import java.util.UUID; | |
/** | |
* Par Alexis le 14/08/2016. | |
*/ | |
public interface ITeam | |
{ | |
boolean containPlayer(Player player); | |
Set<UUID> getMembers(); | |
void addMember(Player player); | |
void removeMember(Player player); | |
boolean isFriendlyFire(); | |
void setFriendlyFire(boolean friendlyFire); | |
ChatColor getPrefix(); | |
void setPrefix(ChatColor prefix); | |
String getName(); | |
int size(); | |
public String getColoredName(); | |
Player getPlayer(UUID uuid); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package fr.kwizzy.deathdash.util.team; | |
import java.util.HashSet; | |
import java.util.Set; | |
import java.util.UUID; | |
import com.nametagedit.plugin.NametagEdit; | |
import org.bukkit.Bukkit; | |
import org.bukkit.ChatColor; | |
import org.bukkit.entity.Player; | |
/** | |
* Par Alexis le 14/08/2016. | |
*/ | |
class Team implements ITeam{ | |
private String name; | |
private boolean friendlyFire; | |
private ChatColor prefix; | |
private Set<UUID> players = new HashSet<>(); | |
public Team(String name) { | |
this.name = name; | |
} | |
public boolean containPlayer(Player player) { | |
return players.contains(player.getUniqueId()); | |
} | |
public Set<UUID> getMembers() { | |
return players; | |
} | |
public void addMember(Player player) { | |
players.add(player.getUniqueId()); | |
applyPrefix(player); | |
} | |
public void removeMember(Player player) { | |
if (players.contains(player.getUniqueId())) { | |
players.remove(player.getUniqueId()); | |
removePrefix(player); | |
} | |
} | |
@Override @Deprecated | |
public Player getPlayer(UUID uuid) | |
{ | |
return Bukkit.getPlayer(uuid); | |
} | |
@Override | |
public int size() | |
{ | |
return players.size(); | |
} | |
public boolean isFriendlyFire() | |
{ | |
return friendlyFire; | |
} | |
public void setFriendlyFire(boolean friendlyFire) | |
{ | |
this.friendlyFire = friendlyFire; | |
} | |
public ChatColor getPrefix() | |
{ | |
return prefix; | |
} | |
public void setPrefix(ChatColor prefix) | |
{ | |
this.prefix = prefix; | |
for (UUID uuid : getMembers()) { | |
Player p = Bukkit.getPlayer(uuid); | |
applyPrefix(p); | |
} | |
} | |
public String getName() | |
{ | |
return name; | |
} | |
public String getColoredName(){ | |
return prefix + name; | |
} | |
private void applyPrefix(Player p){ | |
NametagEdit.getApi().setPrefix(p, prefix.toString()); | |
} | |
private void removePrefix(Player p){ | |
NametagEdit.getApi().setPrefix(p, ""); | |
} | |
public void destroy(){ | |
for (UUID uuid : getMembers()) { | |
removeMember(Bukkit.getPlayer(uuid)); | |
} | |
name = ""; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package fr.kwizzy.deathdash.util.team; | |
import org.bukkit.entity.Player; | |
import org.bukkit.event.EventHandler; | |
import org.bukkit.event.Listener; | |
import org.bukkit.event.entity.EntityDamageByEntityEvent; | |
/** | |
* Par Alexis le 14/08/2016. | |
*/ | |
public class TeamEvent implements Listener | |
{ | |
@EventHandler | |
public void damage(EntityDamageByEntityEvent e){ | |
if(e.getDamager() instanceof Player && e.getEntity() instanceof Player){ | |
Player vic = (Player) e.getEntity(); | |
Player att = (Player) e.getDamager(); | |
if(TeamFactory.getInstance().hasTeam(vic) && TeamFactory.getInstance().hasTeam(att)){ | |
if(TeamFactory.getInstance().sameTeams(vic, att) && !TeamFactory.getInstance().getPlayerTeam(vic).isFriendlyFire()){ | |
e.setCancelled(true); | |
att.sendMessage("§aTu ne peux pas attaquer un coéquipier."); | |
} | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package fr.kwizzy.deathdash.util.team; | |
import org.apache.commons.lang.Validate; | |
import org.bukkit.entity.Player; | |
import java.util.HashSet; | |
import java.util.Set; | |
/** | |
* Par Alexis le 14/08/2016. | |
*/ | |
public class TeamFactory | |
{ | |
private static TeamFactory instance = new TeamFactory(); | |
public static TeamFactory getInstance() | |
{ | |
return instance; | |
} | |
private Set<Team> teams = new HashSet<>(); | |
public Team registerTeam(String name){ | |
Validate.isTrue(getTeam(name) == null, "Team already exist !"); | |
Team team = new Team(name); | |
teams.add(team); | |
return team; | |
} | |
public void deleteTeam(String name){ | |
Team t = getTeam(name); | |
Validate.isTrue(t != null, "Team doesn't exist"); | |
if(t!= null) { | |
teams.remove(t); | |
t.destroy(); | |
} | |
} | |
public Team getTeam(String name){ | |
for (Team team : teams) { | |
if(name.equalsIgnoreCase(team.getName())) | |
return team; | |
} | |
return null; | |
} | |
public Set<Team> getTeams() | |
{ | |
return teams; | |
} | |
public boolean hasTeam(Player p){ | |
for (Team team : teams) { | |
if(team.containPlayer(p)) | |
return true; | |
} | |
return false; | |
} | |
public Team getPlayerTeam(Player p){ | |
Validate.isTrue(hasTeam(p), "Player doesn't have a team"); | |
for (Team team : teams) { | |
if(team.containPlayer(p)) | |
return team; | |
} | |
return null; | |
} | |
public boolean sameTeams(Player p1, Player p2){ | |
if(hasTeam(p1) && hasTeam(p2)){ | |
if(getPlayerTeam(p1).equals(getPlayerTeam(p2))) | |
return true; | |
} | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment