Skip to content

ClanAPI

MathiasMC edited this page Dec 28, 2020 · 7 revisions

Getting the instance

You can get the api by using

import me.MathiasMC.PvPClans.api.ClanAPI;
ClanAPI clanAPI = ClanAPI.getInstance();

Methods

clanAPI.getClanPlayer(UUID);
Returns: ClanPlayer of the player

clanAPI.getClan(clanID);
clanAPI.getClan(UUID);
Returns: Clan of the clan ID/UUID

clanAPI.getClans()
Returns: List of all clans Map<Long, Clan>

clanAPI.getPlayerHead(UUID);
Returns: ItemStack of a player head

clanAPI.createClan(ClanPlayer, name);
Returns: false if already have a clan.

clanAPI.deleteClan(Clan);

Getting a clan

/*
 * You can get a clan by using:
 * Returns null if has no clan
 */

By ID:
Clan clan = clanAPI.getClan(clanID);

By UUID:
Clan clan = clanAPI.getClan(UUID);

By ClanPlayer:
ClanPlayer clanPlayer = clanAPI.getClanPlayer(UUID);

Clan clan = clanPlayer.getClan();

Perks

/*
 *
 * You dont need to create a class only if you want it to show up in the gui system and command, store values with config file
 * You can check and change values with:
 * clan.addPerk(identifier, 1, 1, true);
 * clan.hasPerk(identifier)
 * clan.isPerkActive(identifier)
 * int[] value = clan.getPerk(identifier);
 * 
 * Add your own perk
 * Make a new class and register on enable
 * onRequest has always 2 placeholders as standard {value}, {enabled}
 * Placeholder: {test}
 *
 * The class also have other methods like getConfig, getFile, saveConfig
 * setupConfig
 * where you can store values or options for the perk
 */

import me.MathiasMC.PvPClans.api.Perk;
import me.MathiasMC.PvPClans.data.ClanPlayer;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;

import java.util.Arrays;
import java.util.List;

public class TestPerk extends Perk {

    @Override
    public String getIdentifier() {
        return "perk-name";
    }

    @Override
    public ItemStack getItemStack() {
        return new ItemStack(Material.IRON_SWORD);
    }

    @Override
    public String getName() {
        return "Name of item";
    }

    @Override
    public List<String> getLore() {
        return Arrays.asList(" ", "Lore", " ", "&8> &7Enabled {enabled}", " ");
    }

    @Override
    public void setupConfig() {
        /*
         * getConfig().set("path", "value");
         * saveConfig();
         * Not required only called once, when file is created perks/identifier.yml
         */
    }

    @Override
    public String onRequest(ClanPlayer clanPlayer, String placeholder) {
        if (placeholder.equals("test")) {
            return "Value";
        }
        /*
         * Example for explosive arrow
         */
        if (placeholder.equals("damage_min")) {
            return String.valueOf(getConfig().getDouble(clanPlayer.getClan().getPerk(getIdentifier())[1] + ".damage.min", 1));
        }
        if (placeholder.equals("damage_max")) {
            return String.valueOf(getConfig().getDouble(clanPlayer.getClan().getPerk(getIdentifier())[1] + ".damage.max", 1));
        }
        return null;
    }
}

Register perk

TestPerk testPerk = new TestPerk();

testPerk.register();

If clan has perk

/*
 * Check if clan has perk
 * A perk has always 3 values
 * /pvpclans perk add <player> <perk> value[0] value[1]
 * And value[3] is 1 or 0 if active but you can check with isPerkActive
 */

@EventHandler
public void onEvent(PlayerJoinEvent e) {

  Player player = e.getPlayer();

  UUID uuid = player.getUniqueId();

  Clan clan = clanAPI.getClan(uuid);

  if (clan == null) return;

  String identifier = "identifier";

  if (!clan.hasPerk(identifier)) return;

  if (!clan.isPerkActive(identifier)) {
    player.sendMessage("Your perk " + identifier + " is not active");
    return;
  }

  int[] value = clan.getPerk(identifier);

  player.sendMessage("You have perk " + identifier + " with values " + value[0] + ", " + value[1]);
}

Perk messages

/*
 * If you want to add messages for the default /pvpclans perk add <player> <perk> <number> <number>
 * Like perk was upgraded you can this to the perk class
 */
@Override
public List < String > getLeader() {
  return Collections.singletonList("pvpclans message {player} &7[&6&lLeader Info&7] &f&l» &7Perk ( &cExplosive Arrow &7) is now upgraded.");
}

@Override
public List < String > getModerator() {
  return Collections.singletonList("pvpclans message {player} &7[&6&lModerator Info&7] &f&l» &7Perk ( &cExplosive Arrow &7) is now upgraded.");
}

@Override
public List < String > getMember() {
  return Collections.singletonList("pvpclans message {player} &7[&6&lMember Info&7] &f&l» &7Perk ( &cExplosive Arrow &7) is now upgraded.");
}

@Override
public List < String > getLeaderRemove() {
  return Collections.singletonList("pvpclans message {player} &7[&6&lLeader Info&7] &f&l» &7You have lost perk ( &cExplosive Arrow &7)");
}

@Override
public List < String > getModeratorRemove() {
  return Collections.singletonList("pvpclans message {player} &7[&6&lModerator Info&7] &f&l» &7You have lost perk ( &cExplosive Arrow &7)");
}

@Override
public List < String > getMemberRemove() {
  return Collections.singletonList("pvpclans message {player} &7[&6&lMember Info&7] &f&l» &7You have lost perk ( &cExplosive Arrow &7)");
}

Change values

/*
 * Change perk values
 *
 * true or false if enabled when adding values to the perk
 *
 */
clan.addPerk(identifier, 1, 1, true);

Clone this wiki locally