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.
237 lines
11 KiB
237 lines
11 KiB
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--; |
|
} |
|
}
|
|
|