My Minecraft Plugin 08-06-2015, 04:08 PM
#1
I created a plugin for my server that would allow them to create clans so they can talk to each other in secret without others knowing. Also users can display other clans information which displays the clan members and leader. It's a basic plugin so if you got any suggestions for my that would be cool.
Old minecraft server site: http://sector17gaming.enjin.com
I'll upload it so members of SL can download the plugin. It's not uploaded anywhere else.
Download
Commands:
/clan create [name]
/clan invite [name]
/clan kick [name]
/clan base
/clan setbase
/clan base
/clan leave
/clan info [name]
/clan disband
#[clan chat message] the clan chat hashtag can be changed in the source code.
Old minecraft server site: http://sector17gaming.enjin.com
Code:
package me.bily.sectorclan;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import ru.tehkode.permissions.PermissionUser;
import ru.tehkode.permissions.bukkit.PermissionsEx;
public class SectorClan extends JavaPlugin implements Listener {
String prefix = "§6[SectorClans] §b";
Map<Player, Player> invites = new HashMap<Player, Player>();
Map<Player, Boolean> teleports = new HashMap<Player, Boolean>();
private int taskId;
public void onEnable()
{
System.out.println("§6[SectorClans]§b Enabled!");
getServer().getPluginManager().registerEvents(this, this);
}
public void onDisable()
{
System.out.println("§6[SectorClans]§b Disabled!");
}
@SuppressWarnings("deprecation")
public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel, String[] args)
{
if ((cmd.getName().equalsIgnoreCase("clan")) &&
((sender instanceof Player))) {
final Player p = (Player)sender;
if (args.length == 0) {
p.sendMessage("§6----=§b[Sector Clans]§6=----");
p.sendMessage("§b/clan create §cCreate a clan.");
p.sendMessage("§b/clan invite §cInvite player.");
p.sendMessage("§b/clan kick §cClan kick.");
p.sendMessage("§b/clan base §cTeleport to base.");
p.sendMessage("§b/clan setbase §cClan Set Base.");
p.sendMessage("§b/clan base §cClan Base.");
p.sendMessage("§b/clan leave §cClan Leave.");
p.sendMessage("§b/clan info §cClan Info.");
p.sendMessage("§b/clan setmotd §cSet's Clan MOTD.");
p.sendMessage("§b/clan disband §cClan Disband.");
p.sendMessage("§a--Version: 2.0--");
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("create")) {
p.sendMessage(this.prefix + "Proper Use: §6/clan create <Name>");
}
if (args[0].equalsIgnoreCase("invite")) {
p.sendMessage(this.prefix + "Proper Use: §6/clan invite <Name>");
}
if (args[0].equalsIgnoreCase("info")) {
if (claned(p)) {
List<String> members = getPlayers(getClan(p));
p.sendMessage(" §9§l=---- " + getClanTag(p) + "----= ") ;
p.sendMessage(" ");
p.sendMessage(" §a§lLeader: " + getConfig().getString("Clans." + SectorClan.this.getClan(p) + ".Owner"));
p.sendMessage(" ");
p.sendMessage(" §a§lMOTD:§a " + (getConfig().getString("Clans." + SectorClan.this.getClan(p) + ".MOTD")));
p.sendMessage(" ");
for (int i = 0; i < members.size(); i++) {
Player t = Bukkit.getPlayer(members.get(i));
if (t != null)
p.sendMessage("§a- " + t.getName() + " §b(Online)") ;
else {
p.sendMessage("§c- " + members.get(i) + " §b(Offline)");
}
}
p.sendMessage(" ");
} else {
p.sendMessage(this.prefix + "You are not in a clan.");
}
}
if (args[0].equalsIgnoreCase("kick")) {
p.sendMessage(this.prefix + "Proper Use: §6/clan kick <Name>");
}
if (args[0].equalsIgnoreCase("disband")) {
if (claned(p)) {
if (isOwner(p))
deleteClan(getClan(p));
else
p.sendMessage(this.prefix + "You are not the owner of this Clan.");
}
else {
p.sendMessage(this.prefix + "You are not in a clan.");
}
}
if (args[0].equalsIgnoreCase("leave")) {
if (claned(p)) {
if (!isOwner(p)) {
for (int i = 0; i < getPlayers(getClan(p)).size(); i++) {
Player t = Bukkit.getPlayer((String)getPlayers(getClan(p)).get(i));
if (t != null) {
t.sendMessage(this.prefix + "§6" + p.getName() + " §bHas left the Clan.");
}
}
removePlayer(getClan(p), p);
} else {
p.sendMessage(this.prefix + "Proper Use §6/clan disband.");
}
}
else p.sendMessage(this.prefix + "You are not in a clan.");
}
if (args[0].equalsIgnoreCase("deny")) {
if (!claned(p)) {
if (this.invites.containsKey(p)) {
p.sendMessage(this.prefix + "You have rejected the invitation.");
if (this.invites.get(p) != null) {
this.invites.get(p).sendMessage(this.prefix + "§6" + p.getName() + " §bhas rejected the invitation.");
}
this.invites.remove(p);
} else {
p.sendMessage(this.prefix + "You have not been invited.");
}
}
else p.sendMessage(this.prefix + "You are in a clan.");
}
if (args[0].equalsIgnoreCase("base")) {
if (claned(p)) {
if (getConfig().getString("Clans." + getClan(p) + ".Base.World") != null) {
if (!this.teleports.containsKey(p)) {
this.teleports.put(p, Boolean.valueOf(true));
final Plugin plugin = this;
p.sendMessage(this.prefix + "Teleporting ... Do not move.");
this.taskId = getServer().getScheduler().runTaskLater(this, new Runnable() {
public void run() {
if (SectorClan.this.teleports.containsKey(p)) {
double x = plugin.getConfig().getDouble("Clans." + SectorClan.this.getClan(p) + ".Base.X");
double y = plugin.getConfig().getDouble("Clans." + SectorClan.this.getClan(p) + ".Base.Y");
double z = plugin.getConfig().getDouble("Clans." + SectorClan.this.getClan(p) + ".Base.Z");
float yaw = plugin.getConfig().getInt("Clans." + SectorClan.this.getClan(p) + ".Base.Yaw");
float pitch = plugin.getConfig().getInt("Clans." + SectorClan.this.getClan(p) + ".Base.Pitch");
World world = Bukkit.getWorld(plugin.getConfig().getString("Clans." + SectorClan.this.getClan(p) + ".Base.World"));
Location loc = new Location(world, x, y, z, yaw, pitch);
p.teleport(loc);
p.sendMessage(SectorClan.this.prefix + "Teleported.");
SectorClan.this.teleports.remove(p);
plugin.getServer().getScheduler().cancelTask(SectorClan.this.taskId);
}
}
}
, 60L).getTaskId();
} else {
p.sendMessage(this.prefix + "You have already Teleported.");
}
}
else p.sendMessage(this.prefix + "Your clan does not have a base.");
}
else {
p.sendMessage(this.prefix + "You are not in a clan.");
}
}
if (args[0].equalsIgnoreCase("setbase")) {
if (claned(p)) {
if (isOwner(p)) {
Location l = p.getLocation();
getConfig().set("Clans." + getClan(p) + ".Base.X", Double.valueOf(l.getX()));
getConfig().set("Clans." + getClan(p) + ".Base.Y", Double.valueOf(l.getY()));
getConfig().set("Clans." + getClan(p) + ".Base.Z", Double.valueOf(l.getZ()));
getConfig().set("Clans." + getClan(p) + ".Base.Yaw", Float.valueOf(l.getYaw()));
getConfig().set("Clans." + getClan(p) + ".Base.Pitch", Float.valueOf(l.getPitch()));
getConfig().set("Clans." + getClan(p) + ".Base.World", l.getWorld().getName());
saveConfig();
p.sendMessage(this.prefix + "You have set your clan base.");
} else {
p.sendMessage(this.prefix + "You are not the owner of this Clan.");
}
}
else p.sendMessage(this.prefix + "You are not in a clan.");
}
if (args[0].equalsIgnoreCase("accept")) {
if (!claned(p)) {
if (this.invites.containsKey(p)) {
String clan = getClan(this.invites.get(p));
if (getPlayers(clan).size() < 10) {
addPlayer(clan, p);
this.invites.remove(p);
for (int i = 0; i < getPlayers(clan).size(); i++) {
Player t = Bukkit.getPlayer((String)getPlayers(clan).get(i));
if (t != null)
t.sendMessage(this.prefix + "§6" + p.getName() + " §bHas joined the clan.");
}
}
else {
p.sendMessage(this.prefix + "This clan is Full.");
}
} else {
p.sendMessage(this.prefix + "You have been invited.");
}
}
else p.sendMessage(this.prefix + "You are already in a clan.");
}
}
if (args.length == 2) {
if (args[0].equalsIgnoreCase("create")) {
if (!claned(p)) {
String tag = args[1];
if (tag.length() <= 8) {
if (!clanExists(tag)) {
if (isValid(tag)) {
createClan(tag, p);
p.sendMessage(this.prefix + "You have founded §6'" + tag + "' §bClan.");
} else {
p.sendMessage(this.prefix + "The clan name is invalid.");
}
}
else p.sendMessage(this.prefix + "This clan already exists.");
}
else
p.sendMessage(this.prefix + "The clan name is too long.");
}
else {
p.sendMessage(this.prefix + "You are already in a clan.");
}
}
if (args[0].equalsIgnoreCase("info")) {
String clan = args[1];
if (getConfig().getString("Clans." + clan + ".Owner") != null) {
List<String> members = getPlayers(clan);
p.sendMessage(" §9§l=---- " + (getConfig().getString("Clans." + clan + ".Name")) + "----= ") ;
p.sendMessage(" ");
p.sendMessage(" §a§lLeader: " + (getConfig().getString("Clans." + clan + ".Owner")));
p.sendMessage(" ");
p.sendMessage(" §a§lMOTD:§a " + (getConfig().getString("Clans." + clan + ".MOTD")));
p.sendMessage(" ");
for (int i = 0; i < members.size(); i++) {
Player t = Bukkit.getPlayer(members.get(i));
if (t != null)
p.sendMessage("§a- " + t.getName() + " §b(Online)") ;
else {
p.sendMessage("§c- " + members.get(i) + " §b(Offline)");
}
}
p.sendMessage(" ");
} else {
p.sendMessage(this.prefix + "Clan not found.");
}
}
if (args[0].equalsIgnoreCase("kick")) {
if (claned(p)) {
if (isOwner(p)) {
List<String> members = getPlayers(getClan(p));
Player t = Bukkit.getPlayer(args[1]);
if (members.contains(t.getName())) {
removePlayer(getClan(p), t);
for (int i = 0; i < getPlayers(getClan(p)).size(); i++) {
Player tt = Bukkit.getPlayer((String)getPlayers(getClan(p)).get(i));
if (tt != null) {
tt.sendMessage(this.prefix + "§6" + t.getName() + " §bwas kicked out of the clan.");
}
t.sendMessage(this.prefix + "You have been kicked from the clan.");
}
} else {
p.sendMessage(this.prefix + "You have been kicked from the clan.");
}
} else {
p.sendMessage(this.prefix + "You are not the owner of this Clan.");
}
}
else p.sendMessage(this.prefix + "You are not in a clan.");
}
if (args[0].equalsIgnoreCase("invite")) {
String name = args[1];
if (claned(p)) {
if (isOwner(p)) {
Player t = Bukkit.getPlayer(name);
if (t != null) {
if (!claned(t)) {
if (!this.invites.containsKey(t)) {
if (t != p) {
invitePlayer(t, p);
p.sendMessage(this.prefix + "You have §6" + t.getName() + " §binvited to your clan.");
t.sendMessage(" ");
t.sendMessage("§bDo you want to join §6" + getClanTag(p) + " §bClan.");
t.sendMessage("§bTo answer, write §6/clan accept.");
t.sendMessage("§bTo answer, write §6/clan deny.");
t.sendMessage(" ");
} else {
p.sendMessage(this.prefix + "You can not you invite yourself.");
}
}
else p.sendMessage(this.prefix + "This player has been invited by someone.");
}
else
p.sendMessage(this.prefix + "This player is already in a clan.");
}
else
p.sendMessage(this.prefix + "This player is not online.");
}
else {
p.sendMessage(this.prefix + "You are not the owner of this Clan.");
}
}
else p.sendMessage(this.prefix + "You are not in a clan.");
}
}
}
return false;
}
@SuppressWarnings("deprecation")
public void deleteClan(String clan) {
List<String> members = getConfig().getStringList("Clans." + clan + ".Members");
for (int i = 0; i < members.size(); i++) {
Player t = Bukkit.getPlayer(members.get(i));
if (t != null) {
t.sendMessage(this.prefix + "The clan was Disbanded.");
}
}
for (int i = 0; i < members.size(); i++) {
getConfig().set("Player." + members.get(i) + ".Clan", null);
}
getConfig().set("Clans." + clan, null);
saveConfig();
}
public void invitePlayer(Player invited, Player inviter) {
this.invites.put(invited, inviter);
}
@EventHandler
public void onMove(PlayerMoveEvent event)
{
if ((this.teleports.containsKey(event.getPlayer())) &&
(event.getFrom().distance(event.getTo()) > 0.1D)) {
this.teleports.remove(event.getPlayer());
event.getPlayer().sendMessage(this.prefix + "Canceled teleportation.");
getServer().getScheduler().cancelTask(this.taskId);
}
}
public boolean isOwner(Player p)
{
String owner = getConfig().getString("Clans." + getClan(p) + ".Owner");
if (p.getName().equalsIgnoreCase(owner)) {
return true;
}
return false;
}
public boolean isValid(String code)
{
return code.matches("[aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789_-]*");
}
public boolean clanExists(String clan) {
if (getConfig().getString("Clans." + clan + ".Owner") == null) {
return false;
}
return true;
}
public void addPlayer(String clan, Player p)
{
List<String> members = getConfig().getStringList("Clans." + clan + ".Members");
members.add(p.getName());
getConfig().set("Clans." + clan + ".Members", members);
getConfig().set("Player." + p.getName() + ".Clan", clan);
saveConfig();
}
public void setMOTD(String motd, Player p)
{
List<String> members = getConfig().getStringList("Clans." + getClan(p) + ".MOTD");
members.remove(p.getName());
getConfig().set("Clans." + getClan(p) + ".MOTD", motd);
p.sendMessage(this.prefix + "Clans MOTD has been set.");
saveConfig();
}
public void removePlayer(String clan, Player p)
{
List<String> members = getConfig().getStringList("Clans." + clan + ".Members");
members.remove(p.getName());
getConfig().set("Clans." + clan + ".Members", members);
getConfig().set("Player." + p.getName() + ".Clan", null);
saveConfig();
}
public List<String> getPlayers(String clan)
{
List<String> list = getConfig().getStringList("Clans." + clan + ".Members");
return list;
}
public String getClanTag(Player p) {
String tag = getConfig().getString("Clans." + getClan(p) + ".Name");
return tag;
}
public String getClan(Player p) {
String clan = getConfig().getString("Player." + p.getName() + ".Clan");
return clan;
}
public boolean claned(Player p) {
if (getConfig().getString("Player." + p.getName() + ".Clan") == null) {
return false;
}
return true;
}
@EventHandler
public void onQuit(PlayerQuitEvent event)
{
if (this.invites.containsKey(event.getPlayer()))
this.invites.remove(event.getPlayer());
}
@SuppressWarnings("deprecation")
@EventHandler
public void onChat(AsyncPlayerChatEvent event)
{
PermissionUser user = PermissionsEx.getUser(event.getPlayer());
String pr = user.getPrefix();
pr = ChatColor.translateAlternateColorCodes('&', pr);
String su = user.getSuffix();
su = ChatColor.translateAlternateColorCodes('&', su);
if (claned(event.getPlayer()))
event.setFormat("<§9[" + getClanTag(event.getPlayer()) + "§9] §f" + event.getPlayer().getDisplayName() + "> §f" + event.getMessage());
else {
event.setFormat("<§f" + event.getPlayer().getDisplayName() + "> §f" + event.getMessage());
}
if (event.getMessage().startsWith("#"))
if (claned(event.getPlayer())) {
for (int i = 0; i < getPlayers(getClan(event.getPlayer())).size(); i++) {
Player t = Bukkit.getPlayer((String)getPlayers(getClan(event.getPlayer())).get(i));
if (t != null) {
t.sendMessage("<§b[ClanChat] " + event.getPlayer().getDisplayName() + "> §b" + event.getMessage().substring(1, event.getMessage().length()));
}
}
event.setCancelled(true);
} else {
event.getPlayer().sendMessage(this.prefix + "You are not in a clan.");
}
}
public void createClan(String clanName, Player p)
{
getConfig().set("Clans." + clanName + ".Name", clanName);
getConfig().set("Clans." + clanName + ".Owner", p.getName());
getConfig().set("Player." + p.getName() + ".Clan", clanName);
List<String> m = getConfig().getStringList("Clans." + clanName + ".Members");
m.add(p.getName());
getConfig().set("Clans." + clanName + ".Members", m);
saveConfig();
}
}I'll upload it so members of SL can download the plugin. It's not uploaded anywhere else.
Download
Commands:
/clan create [name]
/clan invite [name]
/clan kick [name]
/clan base
/clan setbase
/clan base
/clan leave
/clan info [name]
/clan disband
#[clan chat message] the clan chat hashtag can be changed in the source code.




![[+]](https://sinister.li/images/modern/collapse_collapsed.png)

![[Image: 200_s.gif]](https://media1.giphy.com/media/UgQ3BSsv5Xuc8/200_s.gif)