Instantly share code, notes, and snippets.
Created
November 9, 2020 18:17
-
Star
(0)
0
You must be signed in to star a gist -
Fork
(0)
0
You must be signed in to fork a gist
-
Save mtbarr/87e3ea06b1fba8f5d22107d2ed25a798 to your computer and use it in GitHub Desktop.
Se liga que beleza
This file contains 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 com.massivecraft.factions.engine; | |
import com.massivecraft.factions.Rel; | |
import com.massivecraft.factions.customclaim.CustomClaim; | |
import com.massivecraft.factions.engine.GuiHolder.Menu; | |
import com.massivecraft.factions.entity.*; | |
import com.massivecraft.factions.event.EventFactionsMembershipChange; | |
import com.massivecraft.factions.integration.vault.Eco; | |
import com.massivecraft.factions.util.ItemBuilder; | |
import com.massivecraft.massivecore.Engine; | |
import com.massivecraft.massivecore.ps.PS; | |
import com.massivecraft.massivecore.store.EntityInternalMap; | |
import com.massivecraft.massivecore.util.TimeDiffUtil; | |
import com.massivecraft.massivecore.util.TimeUnit; | |
import io.github.ninjaservices.item.HeadTexture; | |
import org.bukkit.Bukkit; | |
import org.bukkit.Chunk; | |
import org.bukkit.Color; | |
import org.bukkit.Material; | |
import org.bukkit.block.BlockState; | |
import org.bukkit.entity.Player; | |
import org.bukkit.event.Event.Result; | |
import org.bukkit.event.EventHandler; | |
import org.bukkit.event.EventPriority; | |
import org.bukkit.event.inventory.InventoryClickEvent; | |
import org.bukkit.inventory.Inventory; | |
import org.bukkit.inventory.InventoryHolder; | |
import org.bukkit.inventory.ItemFlag; | |
import org.bukkit.inventory.ItemStack; | |
import java.text.SimpleDateFormat; | |
import java.util.Date; | |
import java.util.LinkedHashMap; | |
import java.util.List; | |
import java.util.Map.Entry; | |
import java.util.Set; | |
import java.util.concurrent.atomic.AtomicInteger; | |
public class EngineMenuGui extends Engine { | |
// -------------------------------------------- // | |
// INSTANCE & CONSTRUCT | |
// -------------------------------------------- // | |
static final SimpleDateFormat SDF = new SimpleDateFormat("dd/MM/yyyy '§s' hh:mm"); | |
static final ItemStack SETSPAWN, NEGAR, AJUDA, CONVITES, PERMISSOES, RELACOES, CONFIRMAR, | |
DESFAZER, SAIR, A_TITULOS, D_TITULOS, CRIAR, | |
A_DELIMITACOES, D_DELIMITACOES, BAU, S_CONVITES, VOLTAR, | |
TOP, E_CONVITES, BASE1, BASE2, BASE3, BASE4, GERADORES, | |
D_RELACAO, S_ALIANCAS, S_RELACOES, S_PERM1, S_PERM2; | |
private static final EngineMenuGui i = new EngineMenuGui(); | |
static { | |
SETSPAWN = new ItemBuilder(Material.MONSTER_EGG).setDurability(54).setName("§ePontos de Spawn") | |
.setLore("§7Clique aqui para escolher", "§7o local de nascença dos", "§7seus §fGeradores de Monstros§7.").hide().toItemStack(); | |
TOP = new ItemBuilder(HeadTexture.getTempHead("http://textures.minecraft.net/texture/593f67f9f730d42fda8de69565ea55892c5f85d9cae6dd6fcba5d26f1e7238d1%22")).hide().setName("§eRanking das Facções").setLore("§7Clique para ver os rankings com as", "§7Facções mais poderosas do servidor.").toItemStack(); | |
AJUDA = new ItemBuilder(HeadTexture.getTempHead("http://textures.minecraft.net/texture/14c4141c1edf3f7e41236bd658c5bc7b5aa7abf7e2a852b647258818acd70d8%22")).hide().setName("§eAjuda").setLore("§7Todas as ações disponíveis neste menu", "§7também podem ser realizadas por", "§7comando. Utilize o comando '§f/f ajuda§7'", "§7para ver todos os comandos disponíveis.").toItemStack(); | |
CONVITES = new ItemBuilder(Material.PAPER).hide().setName("§eGerenciar Convites").setLore("§7Clique para gerenciar os", "§7convites da sua facção.").toItemStack(); | |
PERMISSOES = new ItemBuilder(Material.BOOK_AND_QUILL).hide().setName("§9Gerenciar permissões").setLore("§7Clique para gerenciar as", "§7permissões da sua facção.").toItemStack(); | |
RELACOES = new ItemBuilder(Material.LEATHER_CHESTPLATE).hide().setName("§aRelações").setLore("§7Clique para gerenciar todas", "§7as relações da sua facção.").setLeatherArmorColor(Color.LIME).hide().toItemStack(); | |
CRIAR = new ItemBuilder(Material.BANNER, 1, 15).hide().setName("§aCriar facção").setLore("§7Clique para criar a sua", "§7facção ou se preferir use", "§7o comando '§f/f criar <tag> <nome>§7'").hide().toItemStack(); | |
DESFAZER = new ItemBuilder(Material.DARK_OAK_DOOR_ITEM).hide().setName("§cDesfazer facção").setLore("§7Clique para desfazer a sua facção.").toItemStack(); | |
SAIR = new ItemBuilder(Material.DARK_OAK_DOOR_ITEM).hide().setName("§cSair da facção").setLore("§7Clique para abandonar a sua facção.").toItemStack(); | |
A_TITULOS = new ItemBuilder(Material.PAINTING).hide().setName("§eTitulos dos Territórios").setLore("§7Clique para alternar.", "", "§fStatus: §aAtivado").hide().toItemStack(); | |
D_TITULOS = new ItemBuilder(Material.PAINTING).hide().setName("§eTitulos dos Territórios").setLore("§7Clique para alternar.", "", "§fStatus: §cDesativado").hide().toItemStack(); | |
A_DELIMITACOES = new ItemBuilder(Material.BARRIER).hide().setName("§aDelimitações das Terras").setLore("§7Clique para alternar.", "", "§fStatus: §aAtivado").toItemStack(); | |
D_DELIMITACOES = new ItemBuilder(Material.BARRIER).hide().setName("§aDelimitações das Terras").setLore("§7Clique para alternar.", "", "§fStatus: §cDesativado").toItemStack(); | |
GERADORES = new ItemBuilder(Material.MOB_SPAWNER).hide().setName("§aGeradores").setLore("§7Clique para gerenciar os", "§7geradores da sua facção.").toItemStack(); | |
BAU = new ItemBuilder(Material.CHEST).hide().setName("§aBaú da facção").setLore("§7Clique para abir o baú", "§7virtual da sua facção.").toItemStack(); | |
S_CONVITES = new ItemBuilder(Material.PAPER).hide().setName("§eConvites de Facções").setLore("§cvocê não possui convites pendentes.").setAmount(0).toItemStack(); | |
CONFIRMAR = new ItemBuilder(Material.WOOL, 1, (byte) 5).hide().setName("§aConfirmar Ação").setLore("§7Clique para confirmar.").toItemStack(); | |
NEGAR = new ItemBuilder(Material.WOOL, 1, (byte) 14).hide().setName("§cCancelar Ação").setLore("§7Clique para cancelar.").toItemStack(); | |
E_CONVITES = new ItemBuilder(HeadTexture.getTempHead("http://textures.minecraft.net/texture/bfaf7aab1e177ad38e51bfc19ab662149c31953a569a40caa81f7a4932069%22")).hide().setName("§aEnviar convite").setLore("§7Clique para enviar um convite de facção", "§7para um player ou se preferir use", "§7o comando '§f/f convite enviar <nome>§7'").toItemStack(); | |
BASE1 = new ItemBuilder(Material.BEDROCK) | |
.hide() | |
.setName("§aBase da facção") | |
.setLore( | |
"§7Sua facção possui uma base!", | |
"", | |
"§fBotão esquerdo: §7Ir para base.", | |
"§fBotão direito: §7Definir base.", | |
"§fShift + Botão direito: §7Remover base." | |
) | |
.toItemStack(); | |
BASE2 = new ItemBuilder(Material.BEDROCK) | |
.hide() | |
.setName("§aBase da facção") | |
.setLore("§7Sua facção possui uma base!", | |
"", | |
"§fBotão esquerdo: §7Ir para base." | |
) | |
.toItemStack(); | |
BASE3 = new ItemBuilder(Material.BEDROCK) | |
.hide() | |
.setName("§aBase da facção") | |
.setLore("§7Sua facção ainda não definiu uma base.", | |
"", | |
"§fBotão direito: §7Definir base." | |
) | |
.toItemStack(); | |
BASE4 = new ItemBuilder(Material.BEDROCK) | |
.hide() | |
.setName("§aBase da facção") | |
.setLore("§7Sua facção ainda não definiu uma base.") | |
.toItemStack(); | |
VOLTAR = new ItemBuilder(Material.ARROW) | |
.hide() | |
.setName("§cVoltar") | |
.toItemStack(); | |
D_RELACAO = new ItemBuilder(HeadTexture.getTempHead("http://textures.minecraft.net/texture/bfaf7aab1e177ad38e51bfc19ab662149c31953a569a40caa81f7a4932069%22")) | |
.hide() | |
.setName("§aDefinir relação") | |
.setLore("§7Clique para definir uma relação com", | |
"§7alguma facção ou se preferir use", | |
"§7o comando '§f/f relação <facção>§7'" | |
) | |
.toItemStack(); | |
S_ALIANCAS = new ItemBuilder(Material.LEATHER_CHESTPLATE) | |
.hide() | |
.setName("§aAlianças pendentes") | |
.setLore( | |
"§cSua facção não possui relações pendentes." | |
) | |
.setLeatherArmorColor(Color.LIME) | |
.hide() | |
.setAmount(0) | |
.toItemStack(); | |
S_RELACOES = new ItemBuilder(Material.BOOK).hide().setName("§eVer relações").setLore("§cSua facção não possui relações definidas.").setAmount(0).toItemStack(); | |
S_PERM1 = new ItemBuilder(Material.BARRIER).hide().setName("§aDefinir relação").setLore("§cVocê não tem permissão para isso.").toItemStack(); | |
S_PERM2 = new ItemBuilder(Material.BARRIER).hide().setName("§aAlianças pendentes").setLore("§cVocê não tem permissão para isso.").toItemStack(); | |
} | |
public static EngineMenuGui get() { | |
return i; | |
} | |
public void abrirMenuPlayerComFaccao(MPlayer mplayer) { | |
// Variaveis | |
final Rel cargo = mplayer.getRole(); | |
final Faction factionclaim = BoardColl.get().getFactionAt(PS.valueOf(mplayer.getPlayer().getLocation())); | |
final Faction faction = mplayer.getFaction(); | |
final String factionNome = faction.getName(); | |
final String factionTag = faction.getTag(); | |
int membrosnafac = faction.getMembersCount(); | |
int membroslimite = faction.getMembersLimit(); | |
int terrastotal = faction.getLandCount(); | |
int mortes = mplayer.getDeaths(); | |
int kills = mplayer.getKills(); | |
int playerpodermaximo = mplayer.getPowerMaxRounded(); | |
int factionpoder = faction.getPowerRounded(); | |
int playerpoder = mplayer.getPowerRounded(); | |
final String kdr = mplayer.getKdrRounded(); | |
final GuiHolder holder = new GuiHolder(Menu.COM_FACCAO); | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, 54, "[" + factionTag + "§r] " + factionNome); | |
// Setando os itens normais | |
inv.setItem(10, new ItemBuilder(Material.SKULL_ITEM, 1, 3).setSkullOwner(mplayer.getPlayer().getName()).setName("§7" + mplayer.getPlayer().getName()).setLore("§fPoder: §7" + playerpoder + "/" + playerpodermaximo, "§fCargo: §7" + cargo.getPrefix() + cargo.getName(), "§fAbates: §7" + kills, "§fMortes: §7" + mortes, "§fKDR: §7" + kdr).toItemStack()); | |
inv.setItem(15, TOP); | |
inv.setItem(16, AJUDA); | |
inv.setItem(30, CONVITES); | |
inv.setItem(31, PERMISSOES); | |
inv.setItem(32, RELACOES); | |
inv.setItem(39, new ItemBuilder(Material.SKULL_ITEM, membrosnafac, 3).setName("§aMembros").setLore("§7A sua facção possui §a" + membrosnafac + (membrosnafac == 1 ? "§7 membro." : "§7 membros."), "§7Clique para obter mais Informações.").toItemStack()); | |
inv.setItem(41, SETSPAWN); | |
inv.setItem(34, faction.getBanner().lore( | |
"&fTerras: &7" + terrastotal, | |
"&fPoder: &7" + factionpoder, | |
"&fMembros: &7" + membroslimite + "/" + membroslimite | |
).make() | |
); | |
if (MConf.get().colocarIconeDoFGeradoresNoMenuGUI) { | |
inv.setItem(40, GERADORES); | |
} | |
if (MConf.get().colocarIconeDoFBauNoMenuGUI) { | |
inv.setItem(42, BAU); | |
} | |
if (mplayer.getRole() == Rel.LEADER) { | |
inv.setItem(43, DESFAZER); | |
} else { | |
inv.setItem(43, SAIR); | |
} | |
if (mplayer.isSeeingChunk()) { | |
inv.setItem(28, A_DELIMITACOES); | |
} else { | |
inv.setItem(28, D_DELIMITACOES); | |
} | |
if (mplayer.isMapAutoUpdating()) { | |
inv.setItem(38, new ItemBuilder(Material.MAP) | |
.setName("§aMapa dos Territórios") | |
.setLore( | |
"§7você esta pisando em um território", | |
"§7protegido pela facção §e[" + factionclaim.getTag() + "§e] " + factionclaim.getName() + "§7.", | |
"", | |
"§fBotão esquerdo: §7Desliga o mapa automático.", | |
"§fBotão direito: §7Mostra o mapa completo.", | |
"", | |
"§fMapa automático: §aLigado" | |
) | |
.addItemFlag(ItemFlag.HIDE_POTION_EFFECTS) | |
.toItemStack()); | |
} else { | |
inv.setItem(38, new ItemBuilder(Material.EMPTY_MAP).setName("§aMapa dos Territórios").setLore("§7você esta pisando em um território", "§7protegido pela facção §e[" + factionclaim.getTag() + "§e] " + factionclaim.getName() + "§7.", "", "§fBotão esquerdo: §7Liga o mapa automático.", "§fBotão direito: §7Mostra o mapa completo.", "", "§fMapa automático: §cDesligado").toItemStack()); | |
} | |
if (faction.hasHome() && (cargo == Rel.LEADER || cargo == Rel.OFFICER)) { | |
inv.setItem(29, BASE1); | |
} else if (faction.hasHome() && (!(cargo == Rel.LEADER || cargo == Rel.OFFICER))) { | |
inv.setItem(29, BASE2); | |
} else if (!faction.hasHome() && (cargo == Rel.LEADER || cargo == Rel.OFFICER)) { | |
inv.setItem(29, BASE3); | |
} else if (!faction.hasHome() && (!(cargo == Rel.LEADER || cargo == Rel.OFFICER))) { | |
inv.setItem(29, BASE4); | |
} | |
// Abrindo o inventario | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuPlayerSemFaccao(MPlayer mplayer) { | |
// Variaveis | |
final Faction factionclaim = BoardColl.get().getFactionAt(PS.valueOf(mplayer.getPlayer().getLocation())); | |
int mortes = mplayer.getDeaths(); | |
int kills = mplayer.getKills(); | |
int playerpodermaximo = mplayer.getPowerMaxRounded(); | |
int playerpoder = mplayer.getPowerRounded(); | |
int invitations = mplayer.getInvitations().size(); | |
final String kdr2f = mplayer.getKdrRounded(); | |
final GuiHolder holder = new GuiHolder(Menu.SEM_FACCAO); | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, 45, "Sem facção"); | |
// Setando os itens normais | |
inv.setItem(10, new ItemBuilder(Material.SKULL_ITEM, 1, 3) | |
.setSkullOwner(mplayer.getPlayer().getName()) | |
.setName("§7" + mplayer.getPlayer().getName()) | |
.setLore( | |
"§fPoder: §7" + playerpoder + "/" + playerpodermaximo, | |
"§fCargo: §7§oNenhum", "§fAbates: §7" + kills, | |
"§fMortes: §7" + mortes | |
, "§fKDR: §7" + kdr2f | |
) | |
.toItemStack()); | |
inv.setItem(15, TOP); | |
inv.setItem(16, AJUDA); | |
inv.setItem(29, CRIAR); | |
if (invitations > 0) { | |
inv.setItem(30, new ItemBuilder(Material.PAPER) | |
.setName("§eConvites de Facções") | |
.setLore( | |
"§7você possui §e" + invitations + (invitations == 1 ? "§7 convite pendente." : "§7 convites pendentes."), | |
"§7Clique para gerenciar " + (invitations == 1 ? "o convite pendente." : "os convites pendentes.") | |
) | |
.setAmount(invitations) | |
.toItemStack()); | |
} else { | |
inv.setItem(30, S_CONVITES); | |
} | |
if (mplayer.isMapAutoUpdating()) { | |
inv.setItem(31, new ItemBuilder(Material.MAP).setName("§aMapa dos Territórios").setLore("§7você esta pisando em um território", "§7protegido pela facção §e[" + factionclaim.getTag() + "§e] " + factionclaim.getName() + "§7.", "", "§fBotão esquerdo: §7Desliga o mapa automático.", "§fBotão direito: §7Mostra o mapa completo.", "", "§fMapa automático: §aLigado").addItemFlag(ItemFlag.HIDE_POTION_EFFECTS).toItemStack()); | |
} else { | |
inv.setItem(31, new ItemBuilder(Material.EMPTY_MAP).setName("§aMapa dos Territórios").setLore("§7você esta pisando em um território", "§7protegido pela facção §e[" + factionclaim.getTag() + "§e] " + factionclaim.getName() + "§7.", "", "§fBotão esquerdo: §7Liga o mapa automático.", "§fBotão direito: §7Mostra o mapa completo.", "", "§fMapa automático: §cDesligado").toItemStack()); | |
} | |
if (mplayer.isSeeingChunk()) { | |
inv.setItem(33, A_DELIMITACOES); | |
} else { | |
inv.setItem(33, D_DELIMITACOES); | |
} | |
// Abrindo o inventario | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuMembrosDaFaccao(MPlayer mplayer, Faction faction) { | |
// Variaveis | |
int limitemembros = faction.getMembersLimit(); | |
List<MPlayer> mps = faction.getMPlayers(); | |
Player p = mplayer.getPlayer(); | |
GuiHolder holder = new GuiHolder(Menu.MEMBROS); | |
// Definindo o tamanho do menu com base no limite de membros por facção | |
int tamanhodomenu = 54; | |
int slot = 11; | |
if (limitemembros <= 5) { | |
tamanhodomenu = 27; | |
} else if (limitemembros <= 10) { | |
tamanhodomenu = 36; | |
} else if (limitemembros < 20) { | |
tamanhodomenu = 45; | |
} | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, tamanhodomenu, "Membros da [" + faction.getTag() + "§r]"); | |
if (limitemembros > 25) slot = 2; | |
ItemStack vago = new ItemBuilder(Material.SKULL_ITEM, 1, 3).setName("§8Vago").toItemStack(); | |
for (int i = 0; i < limitemembros && i < 30; i++) { | |
inv.setItem(slot, vago); | |
slot += slot == 6 || slot == 15 || slot == 24 || slot == 33 || slot == 42 ? +5 : +1; | |
} | |
if (limitemembros > 25) slot = 2; | |
else slot = 11; | |
for (int i = 0; i < mps.size() && slot < 30; i++) { | |
MPlayer mp = mps.get(i); | |
Rel cargo = mp.getRole(); | |
String nome = mp.getName(); | |
boolean isOnline = mp.isOnline(); | |
int poderMax = mp.getPowerMaxRounded(); | |
int poderAtual = mp.getPowerRounded(); | |
int kills = mp.getKills(); | |
int deaths = mp.getDeaths(); | |
String kdr2f = mp.getKdrRounded(); | |
String ultimoLogin = SDF.format(new Date(mp.getLastActivityMillis())); | |
inv.setItem(slot, new ItemBuilder(HeadTexture.getPlayerHead(nome)) | |
.setName("§7" + nome) | |
.setLore("§fPoder: §7" + poderAtual + "/" + poderMax, "§fCargo: §7" + cargo.getPrefix() + cargo.getName(), | |
"§fAbates: §7" + kills, "§fMortes: §7" + deaths, "§fKDR: §7" + kdr2f, | |
"§fStats: " + (isOnline ? "§aOnline" : "§cOffline"), | |
"§fÚltimo login: §7" + ultimoLogin | |
) | |
.toItemStack()); | |
slot += slot == 6 || slot == 15 || slot == 24 ? +5 : +1; | |
} | |
p.openInventory(inv); | |
} | |
public void abrirMenuDesfazerFaccao(MPlayer mp) { | |
// Variaveis | |
Player p = mp.getPlayer(); | |
Faction faction = mp.getFaction(); | |
String factionNome = faction.getName(); | |
String factionTag = faction.getTag(); | |
GuiHolder holder = new GuiHolder(Menu.DESFAZER_FACCAO); | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, 36, "Desfazer facção"); | |
// Setando os itens | |
inv.setItem(13, new ItemBuilder(Material.PAPER) | |
.setName("§fInformações") | |
.setLore("§7você esta prestes a desfazer", "§7totalmente a facção §e[" + factionTag + "§e] " + factionNome + "§7.") | |
.toItemStack()); | |
inv.setItem(20, CONFIRMAR); | |
inv.setItem(24, NEGAR); | |
// Abrindo o inventario | |
p.openInventory(inv); | |
} | |
public void abrirMenuAbandonarFaccao(MPlayer mp) { | |
// Variaveis | |
Player p = mp.getPlayer(); | |
Faction faction = mp.getFaction(); | |
String factionNome = faction.getName(); | |
String factionTag = faction.getTag(); | |
GuiHolder holder = new GuiHolder(Menu.ABANDONAR_FACCAO); | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, 36, "Abandonar facção"); | |
// Setando os itens | |
inv.setItem(13, new ItemBuilder(Material.PAPER) | |
.setName("§fInformações") | |
.setLore( | |
"§7você esta prestes a abandonar", | |
"§7a facção §e[" + factionTag + "§e] " + factionNome + "§7." | |
) | |
.toItemStack()); | |
inv.setItem(20, CONFIRMAR); | |
inv.setItem(24, NEGAR); | |
// Abrindo o inventario | |
p.openInventory(inv); | |
} | |
public void abrirMenuAbandonarTerras(MPlayer mplayer) { | |
// Variaveis | |
Faction faction = mplayer.getFaction(); | |
int terras = faction.getLandCount(); | |
GuiHolder holder = new GuiHolder(Menu.ABANDONAR_TERRAS); | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, 36, "Abandonar todas as terras"); | |
// Setando os itens | |
inv.setItem(13, new ItemBuilder(Material.PAPER).setName("§fInformações").setLore("§7você esta prestes a abandonar §2" + terras + " §7terras.").toItemStack()); | |
inv.setItem(20, CONFIRMAR); | |
inv.setItem(24, NEGAR); | |
// Abrindo o inventario | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuKickarPlayer(Player p, MPlayer mp) { | |
// Variaveis | |
GuiHolder holder = new GuiHolder(Menu.KICKAR_PLAYER); | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, 36, "Expulsar player"); | |
// Setando os itens | |
inv.setItem(13, new ItemBuilder(Material.PAPER).setName("§fInformações").setLore("§7você esta prestes a expulsar", "§2" + mp.getName() + "§7 da sua facção.").toItemStack()); | |
inv.setItem(20, CONFIRMAR); | |
inv.setItem(24, NEGAR); | |
// Abrindo o inventario | |
p.openInventory(inv); | |
} | |
public void abrirMenuConvites(MPlayer mplayer) { | |
// Variaveis | |
Faction faction = mplayer.getFaction(); | |
int nconvites = faction.getInvitations().size(); | |
GuiHolder holder = new GuiHolder(Menu.CONVITES); | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, 27, "Gerenciar convites"); | |
//Setando os itens | |
inv.setItem(11, E_CONVITES); | |
if (nconvites == 0) { | |
inv.setItem(15, new ItemBuilder(Material.PAPER).setName("§eGerenciar convites pendentes").setLore("§cSua facção não possui convites pendentes.").setAmount(nconvites).toItemStack()); | |
} else { | |
inv.setItem(15, new ItemBuilder(Material.PAPER).setName("§eGerenciar convites pendentes").setLore("§7Sua facção possui §e" + nconvites + (nconvites == 1 ? " §7convite pendente." : " §7convites pendentes."), "§7Clique para gerenciar" + (nconvites == 1 ? " §7o convite pendente." : " §7os convites pendentes.")).setAmount(nconvites).toItemStack()); | |
} | |
// Abrindo o inventario | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuConvitesEnviados(Faction faction, MPlayer mp) { | |
// Variaveis | |
Player p = mp.getPlayer(); | |
long now = System.currentTimeMillis(); | |
EntityInternalMap<Invitation> invitations = faction.getInvitations(); | |
int convites = invitations.size(); | |
int tamanho = 54; | |
int flecha = 49; | |
int slot = 10; | |
GuiHolder holder = new GuiHolder(Menu.CONVITES_ENVIADOS); | |
// Defindindo o tamanho do inv | |
if (convites <= 7) { | |
tamanho = 36; | |
flecha = 31; | |
} else if (convites <= 14) { | |
tamanho = 45; | |
flecha = 40; | |
} | |
//Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, tamanho, "Convites pendentes (" + invitations.size() + ")"); | |
int n = 1; | |
for (Entry<String, Invitation> invitation : invitations.entrySet()) { | |
// Pegando jogador convidado; | |
MPlayer invited = MPlayer.get(invitation.getKey()); | |
// Pegando jogador que convidou; | |
MPlayer inviter = MPlayer.get(invitation.getValue().getInviterId()); | |
// Pegando o nome do jogador convidado | |
String invitedName = invited != null ? invited.getName() : "§8§oDesconhecido"; | |
// Pegando o nome do jogador que convidou | |
String inviterName = inviter != null ? inviter.getRole().getPrefix() + inviter.getName() : "§8§oDesconhecido"; | |
// Pegando o tempo desde o envio do convite | |
String inviteTime = "§7§o0 minutos"; | |
if (invitation.getValue().getCreationMillis() != null) { | |
long millis = now - invitation.getValue().getCreationMillis(); | |
LinkedHashMap<TimeUnit, Long> ageUnitcounts = TimeDiffUtil.limit(TimeDiffUtil.unitcounts(millis, TimeUnit.getAllButMillis()), 2); | |
inviteTime = TimeDiffUtil.formatedMinimal(ageUnitcounts); | |
} | |
// Criando o item no menu gui | |
inv.setItem(slot, new ItemBuilder(Material.PAPER).setName("§eConvite #" + n).setLore("§7Player convidado: §f" + invitedName, "§7Quem convidou: §f" + inviterName, "§7Convite enviado há " + inviteTime + "§7 atrás.", "", "§fBotão direito: §7Deletar convite", "§fShift + Botão direito: §7Informações do player").toItemStack()); | |
slot += slot == 16 || slot == 25 || slot == 34 ? +3 : +1; | |
n++; | |
} | |
inv.setItem(flecha, VOLTAR); | |
// Abrindo o inventario | |
p.openInventory(inv); | |
} | |
public void abrirMenuConvitesRecebidos(MPlayer mp) { | |
// Variaveis | |
Player p = mp.getPlayer(); | |
long now = System.currentTimeMillis(); | |
Set<String> invitations = mp.getInvitations(); | |
int convites = invitations.size(); | |
int tamanho = 54; | |
int flecha = 49; | |
int slot = 10; | |
GuiHolder holder = new GuiHolder(Menu.CONVITES_RECEBIDOS); | |
// Defindindo o tamanho do inv | |
if (convites <= 7) { | |
tamanho = 36; | |
flecha = 31; | |
} else if (convites <= 14) { | |
tamanho = 45; | |
flecha = 40; | |
} | |
//Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, tamanho, "Convites pendentes (" + invitations.size() + ")"); | |
int n = 1; | |
for (String factionId : invitations) { | |
// Pegando a facção que enviou o convite | |
Faction faction = Faction.get(factionId); | |
// Pegando o nome da facção que convidou | |
String factionName = faction != null ? faction.getName() : "§cFacção Deletada"; | |
String factionTag = faction != null ? faction.getTag() : "---"; | |
Invitation invitation = faction != null ? faction.getInvitations().get(mp.getId()) : null; | |
// Pegando o tempo desde o envio do convite e pegando o player que convite | |
String inviteTime = "§7§o0 minutos"; | |
String inviterName = "§8§oDesconhecido"; | |
if (invitation != null && invitation.getCreationMillis() != null) { | |
long millis = now - invitation.getCreationMillis(); | |
LinkedHashMap<TimeUnit, Long> ageUnitcounts = TimeDiffUtil.limit(TimeDiffUtil.unitcounts(millis, TimeUnit.getAllButMillis()), 2); | |
inviteTime = TimeDiffUtil.formatedMinimal(ageUnitcounts); | |
MPlayer inviter = MPlayer.get(invitation.getInviterId()); | |
inviterName = inviter != null ? inviter.getRole().getPrefix() + inviter.getName() : "§8§oDesconhecido"; | |
} | |
// Criando o item no menu gui | |
inv.setItem(slot, new ItemBuilder(Material.PAPER).setName("§eConvite #" + n).setLore("§7Convite da facção: §f[" + factionTag + "§f] " + factionName, "§7Convite enviado por: §f" + inviterName, "§7Convite recebido há " + inviteTime + "§7 atrás.", "", "§fBotão Esquerdo: §7Aceitar convite", "§fBotão direito: §7Recusar convite", "§fShift + Botão direito: §7Informações da facção").toItemStack()); | |
slot += slot == 16 || slot == 25 || slot == 34 ? +3 : +1; | |
n++; | |
} | |
inv.setItem(flecha, VOLTAR); | |
// Abrindo o inventario | |
p.openInventory(inv); | |
} | |
public void abrirMenuGerenciarRelacoes(MPlayer mplayer) { | |
// Variaveis | |
Faction faction = mplayer.getFaction(); | |
int npendentes = faction.getSemiAllys().size(); | |
int nrelations = faction.getEnemies().size() + faction.getAllys().size() + npendentes; | |
GuiHolder holder = new GuiHolder(Menu.GERENCIAR_RELACOES); | |
Inventory inv = Bukkit.createInventory(holder, 27, "Gerenciar relações"); | |
// Setando os itens | |
inv.setItem(11, D_RELACAO); | |
if (npendentes < 1) { | |
inv.setItem(13, S_ALIANCAS); | |
} else { | |
inv.setItem(13, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§aalianças pendentes").setLore("§7Clique para ver todos os convites", "§7de aliança pendentes recebidos ou", "§7enviados pela sua facção.").setLeatherArmorColor(Color.LIME).setAmount(npendentes).toItemStack()); | |
} | |
if (nrelations < 1) { | |
inv.setItem(15, S_RELACOES); | |
} else { | |
inv.setItem(15, new ItemBuilder(Material.BOOK).setName("§eVer relações").setLore("§7Clique para ver a lista", "§7de relações da sua facção.").setAmount(nrelations > 64 ? 1 : nrelations).toItemStack()); | |
} | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuVerRelacoes(MPlayer mplayer) { | |
// Variaveis | |
Faction faction = mplayer.getFaction(); | |
int nrelations = faction.getEnemies().size() + faction.getAllys().size() + faction.getSemiAllys().size(); | |
GuiHolder holder = new GuiHolder(Menu.VER_RELACOES); | |
Inventory inv = Bukkit.createInventory(holder, 27, "Gerenciar relações"); | |
// Setando os itens | |
inv.setItem(11, S_PERM1); | |
inv.setItem(13, S_PERM2); | |
if (nrelations < 1) { | |
inv.setItem(15, S_RELACOES); | |
} else { | |
inv.setItem(15, new ItemBuilder(Material.BOOK).setName("§eVer relações").setLore("§7Clique para ver a lista", "§7de relações da sua facção.").setAmount(nrelations > 64 ? 1 : nrelations).toItemStack()); | |
} | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuDefinirRelacao(MPlayer mplayer, Faction otherFaction) { | |
// Variaveis | |
String factionTag = otherFaction.getTag(); | |
String factionName = otherFaction.getName(); | |
Player p = mplayer.getPlayer(); | |
Faction faction = mplayer.getFaction(); | |
GuiHolder holder = new GuiHolder(Menu.DEFINIR_RELACAO); | |
Inventory inv = Bukkit.createInventory(holder, 27, "Relação com [" + factionTag + "§r]"); | |
// Setando os itens | |
if (faction.getRelationTo(otherFaction) == Rel.ALLY) { | |
inv.setItem(11, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§bSua a facção já é aliada da [" + factionTag + "§b] " + factionName).setLeatherArmorColor(Color.AQUA).toItemStack()); | |
} else if (faction.getRelationWish(otherFaction) == Rel.ALLY || otherFaction.getRelationWish(faction) == Rel.ALLY) { | |
inv.setItem(11, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§bDefinir aliança com a [" + factionTag + "§b] " + factionName).setLore("§eSua facção já possui um convite", "§ede aliança pendente com a §7[" + factionTag + "§7]§e!", "", "§fClique para ver a lista de", "§fconvites de aliança pendentes.").setLeatherArmorColor(Color.AQUA).toItemStack()); | |
} else { | |
inv.setItem(11, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§bDefinir aliança com a [" + factionTag + "§b] " + factionName).setLore("§fClique para definir relação de aliança.").setLeatherArmorColor(Color.AQUA).toItemStack()); | |
} | |
if (faction.getRelationWish(otherFaction) == Rel.NEUTRAL) { | |
inv.setItem(13, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§fSua a facção já é neutra da [" + factionTag + "§f] " + factionName).setLeatherArmorColor(Color.WHITE).toItemStack()); | |
} else { | |
inv.setItem(13, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§fDefinir neutralidade com a [" + factionTag + "§f] " + factionName).setLore("§fClique para definir relação de neutralidade.").setLeatherArmorColor(Color.WHITE).toItemStack()); | |
} | |
if (faction.getRelationWish(otherFaction) == Rel.ENEMY) { | |
inv.setItem(15, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§cSua a facção já é rival da [" + factionTag + "§c] " + factionName).setLeatherArmorColor(Color.RED).toItemStack()); | |
} else { | |
inv.setItem(15, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§cDefinir rivalidade com a [" + factionTag + "§c] " + factionName).setLore("§fClique para definir relação de aliança.").setLeatherArmorColor(Color.RED).toItemStack()); | |
} | |
// Abrindo o inventario | |
p.openInventory(inv); | |
} | |
public void abrirMenuRelacoesPendentes(MPlayer mplayer) { | |
// Variaveis | |
Faction faction = mplayer.getFaction(); | |
int enviados = faction.getPendingRelationsReceived().size(); | |
int recebidos = faction.getPendingRelationsSent().size(); | |
int npendentes = enviados + recebidos; | |
GuiHolder holder = new GuiHolder(Menu.RELACOES_PENDENTES); | |
Inventory inv = Bukkit.createInventory(holder, 36, "alianças pendentes (" + npendentes + ")"); | |
// Setando os itens | |
inv.setItem(31, new ItemBuilder(Material.ARROW).setName("§cVoltar").toItemStack()); | |
if (recebidos > 0) { | |
inv.setItem(11, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§bConvites de aliança recebidos pendentes").setLore("§7Sua facção possui §b" + recebidos + (recebidos == 1 ? " §7convite recebido pendente." : " §7convites recebidos pendentes.")).setLeatherArmorColor(Color.AQUA).setAmount(recebidos).toItemStack()); | |
} else { | |
inv.setItem(11, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§bConvites de aliança recebidos pendentes").setLore("§cSua facção não possui nenhum", "§cconvite recebido pendente.").setLeatherArmorColor(Color.AQUA).setAmount(0).toItemStack()); | |
} | |
if (enviados > 0) { | |
inv.setItem(15, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§aConvites de aliança enviados pendentes").setLore("§7Sua facção possui já " + enviados + (enviados == 1 ? " §7convite enviado pendente." : " §7convites enviados pendentes.")).setLeatherArmorColor(Color.LIME).setAmount(enviados).toItemStack()); | |
} else { | |
inv.setItem(15, new ItemBuilder(Material.LEATHER_CHESTPLATE).setName("§aConvites de aliança enviados pendentes").setLore("§cSua facção não possui nenhum", "§cconvite enviado pendente.").setLeatherArmorColor(Color.LIME).setAmount(0).toItemStack()); | |
} | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuRelacoesPendentesEnviados(MPlayer mplayer) { | |
// Variaveis | |
Faction faction = mplayer.getFaction(); | |
Set<Faction> facs = faction.getPendingRelationsReceived(); | |
int enviados = facs.size(); | |
int tamanho = 54; | |
int flecha = 49; | |
int slot = 10; | |
GuiHolder holder = new GuiHolder(Menu.RELACOES_PENDENTES_ENVIADAS); | |
// Tamanho do menu GUI | |
if (enviados <= 7) { | |
tamanho = 36; | |
flecha = 31; | |
} else if (enviados <= 14) { | |
tamanho = 45; | |
flecha = 40; | |
} | |
Inventory inv = Bukkit.createInventory(holder, tamanho, "Convites enviados pendentes"); | |
// Setando os itens | |
for (Faction f : facs) { | |
String factionNome = f.getName(); | |
String factionTag = f.getTag(); | |
inv.setItem(slot, new ItemBuilder(Material.PAPER).setName("§eConvite para facção §f[" + factionTag + "§f] " + factionNome).setLore("§fBotão Direito: §7Deletar convite", "§fShift + Botão direito: §7Informações da facção").toItemStack()); | |
slot += slot == 16 || slot == 25 || slot == 34 ? +3 : +1; | |
} | |
inv.setItem(flecha, VOLTAR); | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuRelacoesPendentesRecebidos(MPlayer mplayer) { | |
// Variaveis | |
Faction faction = mplayer.getFaction(); | |
Set<Faction> facs = faction.getPendingRelationsSent(); | |
int recebidos = facs.size(); | |
int tamanho = 54; | |
int flecha = 49; | |
int slot = 10; | |
GuiHolder holder = new GuiHolder(Menu.RELACOES_PENDENTES_RECEBIDAS); | |
//Tamano do menu GUI | |
if (recebidos <= 7) { | |
tamanho = 36; | |
flecha = 31; | |
} else if (recebidos <= 14) { | |
tamanho = 45; | |
flecha = 40; | |
} | |
Inventory inv = Bukkit.createInventory(holder, tamanho, "Convites recebidos pendentes"); | |
// Setando os itens | |
for (Faction f : facs) { | |
String factionNome = f.getName(); | |
String factionTag = f.getTag(); | |
inv.setItem(slot, new ItemBuilder(Material.PAPER).setName("§eConvite da facção §f[" + factionTag + "§f] " + factionNome).setLore("§fBotão Esquerdo: §7Aceitar convite", "§fBotão Direito: §7Deletar convite", "§fShift + Botão direito: §7Informações da facção").toItemStack()); | |
slot += slot == 16 || slot == 25 || slot == 34 ? +3 : +1; | |
} | |
inv.setItem(flecha, VOLTAR); | |
mplayer.getPlayer().openInventory(inv); | |
} | |
public void abrirMenuProtegerTerreno(Player p) { | |
// Variaveis | |
GuiHolder holder = new GuiHolder(Menu.PROTEGER_TERRENO); | |
// Criando o inventario | |
Inventory inv = Bukkit.createInventory(holder, 36, "Proteger terreno"); | |
// Setando os itens | |
inv.setItem(13, new ItemBuilder(Material.PAPER).setName("§fInformações").setLore("§7Você esta prestes a gastar §2" + MConf.get().dinheiroCobradoParaProteger + " §7coins.", "§7para proteger este terreno por 30 minutos.").toItemStack()); | |
inv.setItem(20, CONFIRMAR); | |
inv.setItem(24, NEGAR); | |
// Abrindo o inventario | |
p.openInventory(inv); | |
} | |
public void abrirMenuRelacoesListar(MPlayer mplayer, int pag) { | |
// Variaveis | |
Faction faction = mplayer.getFaction(); | |
GuiHolder holder = new GuiHolder(Menu.RELACOES_LISTAR); | |
Set<Faction> semiAllys = faction.getSemiAllys(); | |
Set<Faction> allys = faction.getAllys(); | |
Set<Faction> enemies = faction.getEnemies(); | |
int jump = (pag - 1) * 28; | |
int slot = 10; | |
int i = 0; | |
// Tamanho do menu gui | |
int tamanho = (int) (Math.ceil((semiAllys.size() + allys.size() + enemies.size() - jump) / 7D) + 2) * 9; | |
if (tamanho > 54) | |
tamanho = 54; | |
Inventory inv = Bukkit.createInventory(holder, tamanho, "Relaçoes da facção"); | |
if (pag == 1) { | |
i = 1; | |
for (Faction f : semiAllys) { | |
inv.setItem(slot, f.getBanner().name("§3Aliado PENDENTE #" + i++ + " " + f.getTag() + " §3- " + f.getName()).make()); | |
slot += slot == 16 || slot == 25 || slot == 34 ? +3 : +1; | |
} | |
i = 1; | |
String allyColor = MConf.get().colorAlly.toString(); | |
for (Faction f : allys) { | |
if (slot == 44) { | |
inv.setItem(26, new ItemBuilder(Material.ARROW).setName("§aPágina " + (pag + 1)).setLore("§7Clique para avançar", "§7de Página.").hide().toItemStack()); | |
break; | |
} | |
inv.setItem(slot, f.getBanner().name(allyColor + "Aliado #" + i++ + " " + f.getTag() + allyColor + " - " + f.getName()).make()); | |
slot += slot == 16 || slot == 25 || slot == 34 ? +3 : +1; | |
} | |
i = 1; | |
String enemyColor = MConf.get().colorEnemy.toString(); | |
for (Faction f : enemies) { | |
if (slot == 44) { | |
inv.setItem(26, new ItemBuilder(Material.ARROW).setName("§aPágina " + (pag + 1)).setLore("§7Clique para avançar", "§7de Página.").hide().toItemStack()); | |
break; | |
} | |
inv.setItem(slot, f.getBanner().name(enemyColor + "Inimigo #" + i++ + " " + f.getTag() + enemyColor + " - " + f.getName()).make()); | |
slot += slot == 16 || slot == 25 || slot == 34 ? +3 : +1; | |
} | |
} else { | |
String enemyColor = MConf.get().colorEnemy.toString(); | |
i += semiAllys.size() + allys.size(); | |
int normal = 1 + jump - i; | |
for (Faction f : enemies) { | |
if (++i <= jump) continue; | |
if (slot == 44) { | |
inv.setItem(26, new ItemBuilder(Material.ARROW).setName("§aPágina " + (pag + 1)).setLore("§7Clique para avançar", "§7de Página.").hide().toItemStack()); | |
break; | |
} | |
inv.setItem(slot, f.getBanner().name(enemyColor + "Inimigo #" + normal++ + " " + f.getTag() + enemyColor + " - " + f.getName()).make()); | |
slot += slot == 16 || slot == 25 || slot == 34 ? +3 : +1; | |
} | |
inv.setItem(tamanho == 27 ? 9 : 18, new ItemBuilder(Material.ARROW).setName("§aPágina " + (pag - 1)).setLore("§7Clique para voltar", "§7de Página.").hide().toItemStack()); | |
} | |
mplayer.getPlayer().openInventory(inv); | |
} | |
// -------------------------------------------- // | |
// CLICK LISTENER | |
// -------------------------------------------- // | |
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) | |
public void aoClickar(InventoryClickEvent e) { | |
Inventory inv = e.getInventory(); | |
InventoryHolder holder = inv.getHolder(); | |
if (!(holder instanceof GuiHolder)) | |
return; | |
e.setCancelled(true); | |
e.setResult(Result.DENY); | |
if (e.getCurrentItem() == null) | |
return; | |
Menu menu = ((GuiHolder) holder).getType(); | |
Player p = (Player) e.getWhoClicked(); | |
MPlayer mp = MPlayer.get(p); | |
int slot = e.getRawSlot(); | |
if (inv.getSize() < slot) return; | |
if (menu == Menu.SEM_FACCAO) { | |
switch (slot) { | |
case 15: | |
p.chat("/f top"); | |
break; | |
case 16: | |
p.chat("/f ajuda"); | |
p.closeInventory(); | |
break; | |
case 29: | |
p.sendMessage("§cUtilize: /f criar <tag> <nome>"); | |
p.closeInventory(); | |
break; | |
case 30: { | |
ItemStack item = e.getCurrentItem(); | |
if (item.getAmount() > 0) { | |
abrirMenuConvitesRecebidos(mp); | |
return; | |
} | |
break; | |
} | |
case 31: | |
if (e.getClick().isRightClick()) { | |
p.chat("/f mapa"); | |
} else if (e.getClick().isLeftClick()) { | |
mp.setMapAutoUpdating(!mp.isMapAutoUpdating()); | |
abrirMenuPlayerSemFaccao(mp); | |
} | |
break; | |
case 32: | |
p.chat("/f tt"); | |
abrirMenuPlayerSemFaccao(mp); | |
break; | |
case 33: | |
p.chat("/f sc"); | |
abrirMenuPlayerSemFaccao(mp); | |
break; | |
} | |
} else if (menu == Menu.COM_FACCAO) { | |
Faction f = mp.getFaction(); | |
switch (slot) { | |
case 15: | |
p.chat("/f top"); | |
break; | |
case 16: | |
p.chat("/f ajuda"); | |
p.closeInventory(); | |
break; | |
case 28: | |
p.chat("/f sc"); | |
p.closeInventory(); | |
break; | |
case 29: | |
if (!f.hasHome()) { | |
if (mp.getRole() == Rel.LEADER || mp.getRole() == Rel.OFFICER || mp.isOverriding()) { | |
if (e.getClick().isRightClick()) { | |
p.chat("/f sethome"); | |
abrirMenuPlayerComFaccao(mp); | |
} | |
} | |
} else { | |
if (e.getClick().isShiftClick()) { | |
if (mp.getRole() == Rel.LEADER || mp.getRole() == Rel.OFFICER || mp.isOverriding()) { | |
p.chat("/f delhome"); | |
abrirMenuPlayerComFaccao(mp); | |
return; | |
} | |
} | |
if (e.getClick().isRightClick()) { | |
if (mp.getRole() == Rel.LEADER || mp.getRole() == Rel.OFFICER || mp.isOverriding()) { | |
p.chat("/f sethome"); | |
return; | |
} | |
} | |
if (e.getClick().isLeftClick()) { | |
p.chat("/f home"); | |
p.closeInventory(); | |
} | |
} | |
break; | |
case 30: | |
if (mp.getRole() == Rel.LEADER || mp.getRole() == Rel.OFFICER || mp.isOverriding()) { | |
abrirMenuConvites(mp); | |
} else { | |
p.sendMessage("§cVocê precisar ser capitão ou superior para poder gerenciar os convites da facção."); | |
} | |
break; | |
case 31: | |
EngineMenuPermissoes.get().abrirMenuPermissoes(mp, f); | |
break; | |
case 37: | |
p.chat("/f tt"); | |
abrirMenuPlayerComFaccao(mp); | |
break; | |
case 38: | |
if (e.getClick().isRightClick()) { | |
p.chat("/f mapa"); | |
} else if (e.getClick().isLeftClick()) { | |
mp.setMapAutoUpdating(!mp.isMapAutoUpdating()); | |
abrirMenuPlayerComFaccao(mp); | |
} | |
break; | |
case 39: | |
abrirMenuMembrosDaFaccao(mp, f); | |
break; | |
case 41: | |
p.chat("/f setspawn"); | |
break; | |
case 32: | |
if (mp.getRole() == Rel.LEADER || mp.getRole() == Rel.OFFICER || mp.isOverriding()) { | |
abrirMenuGerenciarRelacoes(mp); | |
} else { | |
abrirMenuVerRelacoes(mp); | |
} | |
break; | |
case 40: | |
if (MConf.get().colocarIconeDoFGeradoresNoMenuGUI) { | |
p.chat("/f geradores"); | |
} | |
break; | |
case 42: | |
if (MConf.get().colocarIconeDoFBauNoMenuGUI) { | |
p.chat("/f bau"); | |
} | |
break; | |
case 43: | |
if (mp.getRole() == Rel.LEADER || mp.isOverriding()) { | |
abrirMenuDesfazerFaccao(mp); | |
} else { | |
abrirMenuAbandonarFaccao(mp); | |
} | |
break; | |
} | |
} else if (menu == Menu.DESFAZER_FACCAO) { | |
if (slot == 20) { | |
p.chat("/f desfazer confirmar"); | |
p.closeInventory(); | |
} else if (slot == 24) { | |
p.sendMessage("§cAção cancelada com sucesso."); | |
p.closeInventory(); | |
} | |
} else if (menu == Menu.ABANDONAR_FACCAO) { | |
if (slot == 20) { | |
p.chat("/f sair confirmar"); | |
p.closeInventory(); | |
} else if (slot == 24) { | |
p.sendMessage("§cAção cancelada com sucesso."); | |
p.closeInventory(); | |
} | |
} else if (menu == Menu.ABANDONAR_TERRAS) { | |
if (slot == 20) { | |
AtomicInteger count = new AtomicInteger(0); | |
BoardColl.get().getChunks(mp.getFaction()).forEach(ps -> { | |
Chunk chunk = ps.asBukkitChunk(true); | |
if (chunk == null) { | |
return; | |
} | |
for (BlockState tileEntity : chunk.getTileEntities()) { | |
if (tileEntity.getType() != Material.MOB_SPAWNER) { | |
continue; | |
} | |
count.incrementAndGet(); | |
} | |
}); | |
if (count.get() > 0) { | |
p.sendMessage("§cA facção possui spawners em alguma de suas terras, por isto, não podemos abandonar todas."); | |
return; | |
} | |
p.chat("/f unclaim all confirmar"); | |
p.closeInventory(); | |
} else if (slot == 24) { | |
p.sendMessage("§cAção cancelada com sucesso."); | |
p.closeInventory(); | |
} | |
} else if (menu == Menu.KICKAR_PLAYER) { | |
if (slot == 20) { | |
String name = inv.getItem(13).getItemMeta().getLore().get(1).replace("§7 da sua facção.", "").replace("§2", "").trim(); | |
p.chat("/f kickar " + name + " confirmar"); | |
p.closeInventory(); | |
} else if (slot == 24) { | |
p.sendMessage("§cAção cancelada com sucesso."); | |
p.closeInventory(); | |
} | |
} else if (menu == Menu.PROTEGER_TERRENO) { | |
if (slot == 20) { | |
Faction f = mp.getFaction(); | |
if (!Eco.isEnabled()) { | |
p.sendMessage("§cNenhum sistema de economia pode ser encontrado."); | |
p.closeInventory(); | |
return; | |
} | |
double price = MConf.get().dinheiroCobradoParaProteger; | |
if (!Eco.has(p, price)) { | |
p.sendMessage("§cVocê não possui dinheiro suficiente para proteger este terreno."); | |
p.closeInventory(); | |
return; | |
} | |
Chunk location = p.getLocation().getChunk(); | |
PS ps = PS.valueOf(location); | |
Faction at = BoardColl.get().getFactionAt(ps); | |
if (!at.isNone()) { | |
p.sendMessage("§cVocê só pode proteger terrenos que estejam livres."); | |
p.closeInventory(); | |
return; | |
} | |
if (!MConf.get().worldsClaimingEnabled.contains(ps.getWorld())) { | |
p.sendMessage("§cA compra de territórios esta desabilitada neste mundo."); | |
return; | |
} | |
int limit = MConf.get().limiteDeProtecoesTemporaria; | |
if (limit > 0 && EngineCustomClaim.get().getTemporaryChunksSize(f.getId()) >= 2) { | |
p.sendMessage("§cLimite máximo de terrenos temporários atingido (" + limit + ")! Abandone terrenos temporário antigos para poder proteger novos terrenos."); | |
p.closeInventory(); | |
return; | |
} | |
p.closeInventory(); | |
CustomClaim customClaim = EngineCustomClaim.get().addClaim(f, location.getX(), location.getZ(), true); | |
if (customClaim == null) { | |
return; | |
} | |
Eco.Withdraw(p, price); | |
BoardColl.get().setFactionAt(ps, f); | |
p.sendMessage("§aTerreno protegido com sucesso."); | |
} else if (slot == 24) { | |
p.sendMessage("§cAção cancelada com sucesso."); | |
p.closeInventory(); | |
} | |
} else if (menu == Menu.CONVITES) { | |
Faction f = mp.getFaction(); | |
if (slot == 11) { | |
p.sendMessage("§cUtilize o comando, esta função foi desativada."); | |
p.closeInventory(); | |
} else if (slot == 15) { | |
if (f.getInvitations().size() > 0) { | |
abrirMenuConvitesEnviados(mp.getFaction(), mp); | |
} | |
} | |
} else if (menu == Menu.CONVITES_ENVIADOS) { | |
ItemStack item = e.getCurrentItem(); | |
if (item.getType() == Material.ARROW) { | |
abrirMenuConvites(mp); | |
} else if (item.getType() == Material.PAPER) { | |
String nome = item.getItemMeta().getLore().get(0).replace("§7Player convidado: §f", "").replace(" ", ""); | |
if (e.getClick().isShiftClick()) { | |
p.chat("/f perfil " + nome); | |
p.closeInventory(); | |
} else if (e.getClick().isRightClick()) { | |
p.chat("/f convite del " + nome); | |
abrirMenuConvitesEnviados(mp.getFaction(), mp); | |
} | |
} | |
} else if (menu == Menu.CONVITES_RECEBIDOS) { | |
ItemStack item = e.getCurrentItem(); | |
if (item.getType() == Material.ARROW) { | |
abrirMenuPlayerSemFaccao(mp); | |
} else if (item.getType() == Material.PAPER) { | |
String tag = item.getItemMeta() | |
.getLore() | |
.get(0) | |
.replace("§7Convite da facção: §f[", "") | |
.split("§f]")[0] | |
.replace("§f]", "") | |
.replace(" ", "") | |
.toUpperCase(); | |
if (e.getClick().isShiftClick()) { | |
p.chat("/f info " + tag); | |
p.closeInventory(); | |
} else if (e.getClick().isLeftClick()) { | |
Faction faction = FactionColl.get().getByTag(tag); | |
faction.uninvite(mp); | |
faction.changed(); | |
mp.removeInvitation(faction); | |
if (mp.hasFaction()) { | |
mp.msg("§cVocê já possui facção."); | |
return; | |
} | |
// Verificando se a facção atingiu o limite de membros definido na config | |
if (MConf.get().factionMemberLimit > 0 && faction.getMembersCount() >= faction.getMembersLimit()) { | |
mp.msg("§cA facção §f[%s§f] %s§c já atingiu o limite maximo de membros por facção (%d), portanto você não pode entrar.", faction.getTag(), faction.getName(), faction.getMembersLimit()); | |
return; | |
} | |
// Evento | |
EventFactionsMembershipChange membershipChangeEvent = new EventFactionsMembershipChange(p, mp, faction, EventFactionsMembershipChange.MembershipChangeReason.JOIN); | |
membershipChangeEvent.run(); | |
if (membershipChangeEvent.isCancelled()) return; | |
// Informando o player e a facção | |
faction.msg("§f%s§e entrou na facção§e.", mp.getName()); | |
mp.msg("§aVocê entrou na facção §f[%s§f] %s§a.", faction.getTag(), faction.getName()); | |
// Aplicando o evento | |
mp.resetFactionData(); | |
mp.setFaction(faction); | |
mp.setRole(Rel.RECRUIT); | |
mp.changed(); | |
p.closeInventory(); | |
} else { | |
Faction target = FactionColl.get().getByTag(tag); | |
if (target == null) { | |
p.sendMessage("§cUm erro interno foi detectado, por favor contato um administrou ou aguarde a reinicialização do servidor."); | |
return; | |
} | |
p.sendMessage("§aConvite da facção §f[" + tag + "§f]§a deletado com sucesso."); | |
target.msg("§f" + mp.getName() + "§e recuso o convite para entrar na facção."); | |
target.uninvite(mp); | |
abrirMenuConvitesRecebidos(mp); | |
} | |
} | |
} else if (menu == Menu.GERENCIAR_RELACOES) { | |
switch (slot) { | |
case 11: | |
p.sendMessage("§cUtilize o comando, esta função foi desativada."); | |
p.closeInventory(); | |
break; | |
case 13: | |
if (e.getCurrentItem().getAmount() > 0) { | |
abrirMenuRelacoesPendentes(mp); | |
} | |
break; | |
case 15: | |
if (e.getCurrentItem().getAmount() > 0) { | |
abrirMenuRelacoesListar(mp, 1); | |
} | |
break; | |
} | |
} else if (menu == Menu.VER_RELACOES) { | |
if (slot == 15) { | |
ItemStack item = e.getCurrentItem(); | |
if (item.getAmount() > 0) { | |
abrirMenuRelacoesListar(mp, 1); | |
} | |
} | |
} else if (menu == Menu.DEFINIR_RELACAO) { | |
ItemStack item = e.getCurrentItem(); | |
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return; | |
String faction = e.getInventory().getName().replace("Relação com [", "") | |
.replace("§r]", "").replace(" ", "").toUpperCase(); | |
switch (slot) { | |
case 11: | |
if (item.getItemMeta().getLore().size() < 2) { | |
p.chat("/f relacao " + faction + " ally"); | |
p.closeInventory(); | |
} else { | |
abrirMenuRelacoesPendentes(mp); | |
} | |
break; | |
case 13: | |
p.chat("/f relacao " + faction + " neutral"); | |
p.closeInventory(); | |
break; | |
case 15: | |
p.chat("/f relacao " + faction + " enemy"); | |
p.closeInventory(); | |
break; | |
} | |
} else if (menu == Menu.RELACOES_PENDENTES) { | |
ItemStack item = e.getCurrentItem(); | |
switch (slot) { | |
case 11: | |
if (item.getAmount() > 0) { | |
abrirMenuRelacoesPendentesRecebidos(mp); | |
} | |
break; | |
case 15: | |
if (item.getAmount() > 0) { | |
abrirMenuRelacoesPendentesEnviados(mp); | |
} | |
break; | |
case 31: | |
abrirMenuGerenciarRelacoes(mp); | |
break; | |
} | |
} else if (menu == Menu.RELACOES_PENDENTES_ENVIADAS) { | |
Faction f = mp.getFaction(); | |
ItemStack item = e.getCurrentItem(); | |
if (item.getType() == Material.ARROW) { | |
abrirMenuRelacoesPendentes(mp); | |
} else if (item.getType() == Material.PAPER) { | |
String tag = item.getItemMeta().getDisplayName().replace("§eConvite para facção §f[", "").split("§f]")[0].replace("§f]", "").replace(" ", "").toUpperCase(); | |
if (e.getClick().isShiftClick()) { | |
p.chat("/f info " + tag.replace(" ", "")); | |
p.closeInventory(); | |
} else if (e.getClick().isRightClick()) { | |
Faction target = FactionColl.get().getByTag(tag); | |
String factionNome = target.getName(); | |
String factionTag = target.getTag(); | |
f.setRelationWish(target, Rel.NEUTRAL); | |
p.sendMessage("§eConvite de aliança para a facção §f[" + factionTag + "§f] " + factionNome + "§e deletado com sucesso."); | |
abrirMenuRelacoesPendentesEnviados(mp); | |
} | |
} | |
} else if (menu == Menu.RELACOES_PENDENTES_RECEBIDAS) { | |
Faction f = mp.getFaction(); | |
String factionNome = f.getName(); | |
String factionTag = f.getTag(); | |
ItemStack item = e.getCurrentItem(); | |
if (item.getType() == Material.ARROW) { | |
abrirMenuRelacoesPendentes(mp); | |
} else if (item.getType() == Material.PAPER) { | |
String tag = item.getItemMeta().getDisplayName().replace("§eConvite da facção §f[", "").split("§f]")[0].replace("§f]", "").replace(" ", "").toUpperCase(); | |
if (e.getClick().isShiftClick()) { | |
p.chat("/f info " + tag.replace(" ", "")); | |
p.closeInventory(); | |
} else if (e.getClick().isLeftClick()) { | |
p.chat("/f relacao " + tag.replace(" ", "") + " ally"); | |
abrirMenuRelacoesPendentesRecebidos(mp); | |
} else if (e.getClick().isRightClick()) { | |
Faction target = FactionColl.get().getByTag(tag); | |
target.setRelationWish(f, Rel.NEUTRAL); | |
target.msg("§eA facção §f[" + factionTag + "§f] " + factionNome + "§e recusou seu pedido de aliança."); | |
f.removePendingRelation(target); | |
f.msg("§ePedido de aliança da facção §f[" + target.getTag() + "§f] " + target.getName() + "§e recusado com sucesso."); | |
abrirMenuRelacoesPendentesRecebidos(mp); | |
} | |
} | |
} else if (menu == Menu.RELACOES_LISTAR) { | |
ItemStack item = e.getCurrentItem(); | |
if (item.getType() == Material.ARROW) { | |
int pag = Integer.parseInt(item.getItemMeta().getDisplayName().replace("§aPágina ", "").trim()); | |
abrirMenuRelacoesListar(mp, pag); | |
} | |
} | |
} | |
} | |
GOSTEI MUITO PRIMO PARECE CODIGO DE UMA AMIGA MINHA PRIMO!
caralho, que porra é essa, desisti de scrollar, tive que ir pela barrinha do lado
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
sasuke = 👴👴👴👴🐒🐒🐒🐒🐒