You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

238 lines
11 KiB

1 year ago
package org.poopki.duckdns.user_db.TechTree;
import dev.lone.itemsadder.api.CustomStack;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.poopki.duckdns.user_db.Array.AccountArray;
import org.poopki.duckdns.user_db.Array.FarmArray;
import org.poopki.duckdns.user_db.Array.NationArray;
import org.poopki.duckdns.user_db.Array.SquadArray;
import org.poopki.duckdns.user_db.UserInfoArray;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class TechGUIEvent implements Listener,CommandExecutor {
AccountArray m_AccountArray;
UserInfoArray m_UserInfoArray;
FarmArray m_FarmArray;
NationArray m_NationArray;
SquadArray m_SquadArray;
UUID ZERO_UUID = new UUID(0,0);
ArrayList<String> PrevTech = new ArrayList<String>();
public TechGUIEvent(UserInfoArray m_UIA, FarmArray FA, NationArray NA, SquadArray SA, AccountArray AA){
m_UserInfoArray = m_UIA;
m_AccountArray = AA;
m_FarmArray = FA;
m_NationArray = NA;
m_SquadArray = SA;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(sender instanceof Player){
if(ZERO_UUID.equals(m_UserInfoArray.getUserGroupUUID(((Player) sender).getUniqueId(), "Nation"))){
Player player = (Player) sender;
player.sendMessage("국가에 소속된 유저만 사용이 가능");
}
else{
Player player = (Player) sender;
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray,player.getUniqueId(), null);
inv.open(player);
}
}
return false;
}
@EventHandler
public boolean inven_Tech(InventoryClickEvent e){
Player player = (Player) e.getWhoClicked();;
String name = e.getView().getTitle();
if(name.equals(":offset_-8::ancient_era:")){
if(CheckClickItem(e.getCurrentItem(),"techtree:agriculture_0")){
e.setCancelled(true);
if(CheckPoint(player,0, "Nation")){
SelectTech(player, "Nation", "agriculture", 0);
player.sendMessage("국가 테크를 선택하였습니다.");
}
else{
player.sendMessage("테크 포인트가 부족합니다.");
}
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray, player.getUniqueId(), e);
inv.open(player);
return true;
}
if(CheckClickItem(e.getCurrentItem(),"techtree:pottery_0")){
e.setCancelled(true);
PrevTech.add("agriculture");
if(CheckPoint(player,0, "Nation")){
if(CheckTechTree(player,"Nation",PrevTech)){
SelectTech(player, "Nation", "pottery", 0);
player.sendMessage("국가 테크를 선택하였습니다.");
}
else{
player.sendMessage("이전 테크를 선택하지 않았습니다.");
}
}
else{
player.sendMessage("테크 포인트가 부족합니다.");
}
PrevTech.clear();
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray, player.getUniqueId(), e);
inv.open(player);
return true;
}
if(CheckClickItem(e.getCurrentItem(),"techtree:mining_0")){
e.setCancelled(true);
PrevTech.add("agriculture");
if(CheckPoint(player,0, "Nation")){
if(CheckTechTree(player,"Nation",PrevTech)){
SelectTech(player, "Nation", "mining", 0);
player.sendMessage("국가 테크를 선택하였습니다.");
}
else{
player.sendMessage("이전 테크를 선택하지 않았습니다.");
}
}
else{
player.sendMessage("테크 포인트가 부족합니다.");
}
PrevTech.clear();
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray, player.getUniqueId(), e);
inv.open(player);
return true;
}
if(CheckClickItem(e.getCurrentItem(),"techtree:archery_0")){
e.setCancelled(true);
PrevTech.add("agriculture");
if(CheckPoint(player,0, "Nation")){
if(CheckTechTree(player,"Nation",PrevTech)){
SelectTech(player, "Nation", "archery", 0);
player.sendMessage("국가 테크를 선택하였습니다.");
}
else{
player.sendMessage("이전 테크를 선택하지 않았습니다.");
}
}
else{
player.sendMessage("테크 포인트가 부족합니다.");
}
PrevTech.clear();
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray, player.getUniqueId(), e);
inv.open(player);
return true;
}
if(CheckClickItem(e.getCurrentItem(),"techtree:animal_husbandry_0")){
e.setCancelled(true);
PrevTech.add("pottery");
PrevTech.add("agriculture");
if(CheckPoint(player,0, "Nation")){
if(CheckTechTree(player,"Nation",PrevTech)){
SelectTech(player, "Nation", "animal_husbandry", 0);
player.sendMessage("국가 테크를 선택하였습니다.");
}
else{
player.sendMessage("이전 테크를 선택하지 않았습니다.");
}
}
else{
player.sendMessage("테크 포인트가 부족합니다.");
}
PrevTech.clear();
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray, player.getUniqueId(), e);
inv.open(player);
return true;
}
if(CheckClickItem(e.getCurrentItem(),"techtree:writing_0")){
e.setCancelled(true);
PrevTech.add("pottery");
PrevTech.add("agriculture");
if(CheckPoint(player,0, "Nation")){
if(CheckTechTree(player,"Nation",PrevTech)){
SelectTech(player, "Nation", "writing", 0);
player.sendMessage("국가 테크를 선택하였습니다.");
}
else{
player.sendMessage("이전 테크를 선택하지 않았습니다.");
}
}
else{
player.sendMessage("테크 포인트가 부족합니다.");
}
PrevTech.clear();
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray, player.getUniqueId(), e);
inv.open(player);
return true;
}
if(CheckClickItem(e.getCurrentItem(),"techtree:masonry_0")){
e.setCancelled(true);
PrevTech.add("archery");
PrevTech.add("agriculture");
if(CheckPoint(player,0, "Nation")){
if(CheckTechTree(player,"Nation",PrevTech)){
SelectTech(player, "Nation", "masonry", 0);
player.sendMessage("국가 테크를 선택하였습니다.");
}
else{
player.sendMessage("이전 테크를 선택하지 않았습니다.");
}
}
else{
player.sendMessage("테크 포인트가 부족합니다.");
}
PrevTech.clear();
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray, player.getUniqueId(), e);
inv.open(player);
return true;
}
if(CheckClickItem(e.getCurrentItem(),"techtree:bronze_0")){
e.setCancelled(true);
PrevTech.add("mining");
PrevTech.add("agriculture");
if(CheckPoint(player,0, "Nation")){
if(CheckTechTree(player,"Nation",PrevTech)){
SelectTech(player, "Nation", "bronze", 0);
player.sendMessage("국가 테크를 선택하였습니다.");
}
else{
player.sendMessage("이전 테크를 선택하지 않았습니다.");
}
}
else{
player.sendMessage("테크 포인트가 부족합니다.");
}
PrevTech.clear();
TechGUI inv = new TechGUI(m_AccountArray,m_UserInfoArray,m_FarmArray,m_NationArray, m_SquadArray, player.getUniqueId(), e);
inv.open(player);
return true;
}
}
return false;
}
public boolean CheckClickItem(ItemStack ClickedItem, String Name){
return ClickedItem.getItemMeta().getDisplayName().equals(CustomStack.getInstance(Name).getItemStack().getItemMeta().getDisplayName());
}
public boolean CheckPoint(Player p, Integer page, String Type){
return !m_NationArray.m_NationArray.get(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),Type)).m_ResearchArray.get(page).research_point.equals(0);
}
public boolean CheckTechTree(Player p, String Type, ArrayList<String> PrevTech){
for(String key: PrevTech){
if(m_NationArray.m_NationArray.get(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),Type)).GetTechTree(key)==0){
return false;
}
}
return true;
}
public void SelectTech(Player p, String Type, String TechName, Integer page){
m_NationArray.m_NationArray.get(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),Type)).SetTechTree(TechName, 1);
m_NationArray.m_NationArray.get(m_UserInfoArray.getUserGroupUUID(p.getUniqueId(),Type)).m_ResearchArray.get(page).research_point--;
}
}