Skip to content

Commit

Permalink
Changed the way GameItems/LobbyItems are handled.
Browse files Browse the repository at this point in the history
Cleaned up code.
  • Loading branch information
PdeBot committed Dec 11, 2019
1 parent 2511676 commit bef7e4f
Show file tree
Hide file tree
Showing 6 changed files with 256 additions and 305 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,7 @@ private void setPlayerPlaying(Player player, UhcPlayer uhcPlayer){
gm.getScoreboardManager().updatePlayerTab(uhcPlayer);

// Give lobby items back
UhcItems.giveLobbyItemTo(player);
UhcItems.giveKitSelectionTo(player);
UhcItems.giveCraftBookTo(player);
if (gm.getConfiguration().getUseTeamColors()){
UhcItems.giveLobbyColorItemTo(player);
}
UhcItems.giveScenariosItemTo(player);
UhcItems.giveBungeeItemTo(player);
UhcItems.giveLobbyItemsTo(player);
}

}
127 changes: 127 additions & 0 deletions src/main/java/com/gmail/val59000mc/customitems/GameItem.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
package com.gmail.val59000mc.customitems;

import com.gmail.val59000mc.configuration.MainConfiguration;
import com.gmail.val59000mc.game.GameManager;
import com.gmail.val59000mc.languages.Lang;
import com.gmail.val59000mc.utils.UniversalMaterial;
import org.apache.commons.lang.Validate;
import org.bukkit.ChatColor;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.Arrays;

public enum GameItem{
// Lobby Items
TEAM_SELECTION(UniversalMaterial.IRON_SWORD),
KIT_SELECTION(UniversalMaterial.IRON_PICKAXE),
TEAM_COLOR_SELECTION(UniversalMaterial.LAPIS_LAZULI),
SCENARIO_VIEWER(UniversalMaterial.PAPER),
BUNGEE_ITEM(UniversalMaterial.BARRIER),

// Game Items
CUSTOM_CRAFT_BOOK(UniversalMaterial.ENCHANTED_BOOK),
COMPASS_ITEM(UniversalMaterial.COMPASS),

UNKNOWN(UniversalMaterial.AIR);

private static final String LORE_PREFIX = ChatColor.DARK_GRAY + "UHC Item";
public static final GameItem[] LOBBY_ITEMS = new GameItem[]{
TEAM_SELECTION,
KIT_SELECTION,
CUSTOM_CRAFT_BOOK,
TEAM_COLOR_SELECTION,
SCENARIO_VIEWER,
BUNGEE_ITEM
};

private UniversalMaterial type;

GameItem(UniversalMaterial type){
this.type = type;
}

public ItemStack getItem(){
ItemStack item = type.getStack();
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(getItemName());
meta.setLore(Arrays.asList(LORE_PREFIX));
item.setItemMeta(meta);
return item;
}

public boolean equals(ItemStack item){
Validate.notNull(item);
if (item.getType() != type.getType()){
return false;
}
ItemMeta meta = item.getItemMeta();
Validate.notNull(meta);
return meta.getDisplayName().equals(getItemName());
}

public boolean meetsUsageRequirements(){
GameManager gm = GameManager.getGameManager();
MainConfiguration cfg = gm.getConfiguration();
switch (this){
case TEAM_SELECTION:
return cfg.getMaxPlayersPerTeam() > 1 || !cfg.getTeamAlwaysReady();
case KIT_SELECTION:
return KitsManager.isAtLeastOneKit();
case CUSTOM_CRAFT_BOOK:
return CraftsManager.isAtLeastOneCraft();
case TEAM_COLOR_SELECTION:
return cfg.getUseTeamColors();
case SCENARIO_VIEWER:
return true;
case BUNGEE_ITEM:
return cfg.getEnableBungeeSupport() && cfg.getEnableBungeeLobbyItem();
case COMPASS_ITEM:
return cfg.getEnablePlayingCompass();
case UNKNOWN:
return false;
}
return true;
}

private String getItemName(){
switch (this){
case TEAM_SELECTION:
return Lang.ITEMS_SWORD;
case KIT_SELECTION:
return Lang.ITEMS_KIT_SELECTION;
case CUSTOM_CRAFT_BOOK:
return Lang.ITEMS_CRAFT_BOOK;
case TEAM_COLOR_SELECTION:
return Lang.TEAM_COLOR_ITEM;
case SCENARIO_VIEWER:
return Lang.SCENARIO_GLOBAL_ITEM_HOTBAR;
case BUNGEE_ITEM:
return Lang.ITEMS_BUNGEE;
case COMPASS_ITEM:
return Lang.ITEMS_COMPASS_PLAYING;
}
return "Unknown item!";
}

public static boolean isLobbyItem(ItemStack item){
if (!item.hasItemMeta()){
return false;
}
ItemMeta meta = item.getItemMeta();
if (!meta.hasLore()){
return false;
}
return meta.getLore().contains(LORE_PREFIX);
}

public static GameItem getLobbyItem(ItemStack item){
for (GameItem lobbyItem : GameItem.values()){
if (lobbyItem.equals(item)){
return lobbyItem;
}
}
return UNKNOWN;
}

}
156 changes: 15 additions & 141 deletions src/main/java/com/gmail/val59000mc/customitems/UhcItems.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package com.gmail.val59000mc.customitems;

import com.gmail.val59000mc.configuration.MainConfiguration;
import com.gmail.val59000mc.exceptions.UhcPlayerDoesntExistException;
import com.gmail.val59000mc.game.GameManager;
import com.gmail.val59000mc.languages.Lang;
import com.gmail.val59000mc.players.PlayerState;
import com.gmail.val59000mc.players.TeamManager;
import com.gmail.val59000mc.players.UhcPlayer;
import com.gmail.val59000mc.players.UhcTeam;
Expand All @@ -24,84 +22,24 @@

import java.util.*;

public class UhcItems {

public static void giveLobbyItemTo(Player player){
MainConfiguration cfg = GameManager.getGameManager().getConfiguration();
if (cfg.getMaxPlayersPerTeam() > 1 || !cfg.getTeamAlwaysReady()) {
ItemStack item = new ItemStack(Material.IRON_SWORD);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(Lang.ITEMS_SWORD);
meta.setLore(Arrays.asList("Lobby"));
item.setItemMeta(meta);
player.getInventory().addItem(item);
}
}
public class UhcItems{

public static void giveBungeeItemTo(Player player){
GameManager gm = GameManager.getGameManager();
if (gm.getConfiguration().getEnableBungeeSupport() && gm.getConfiguration().getEnableBungeeLobbyItem()){
ItemStack barrier = new ItemStack(Material.BARRIER);
ItemMeta barrierItemMeta = barrier.getItemMeta();
barrierItemMeta.setDisplayName(Lang.ITEMS_BUNGEE);
barrier.setItemMeta(barrierItemMeta);
player.getInventory().setItem(8, barrier);
public static void giveGameItemTo(Player player, GameItem gameItem){
if (!gameItem.meetsUsageRequirements()){
return;
}
}

public static void giveLobbyColorItemTo(Player player){
ItemStack item = UniversalMaterial.LAPIS_LAZULI.getStack();
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(Lang.TEAM_COLOR_ITEM);
meta.setLore(Arrays.asList("Lobby"));
item.setItemMeta(meta);
player.getInventory().addItem(item);
}

public static void giveScenariosItemTo(Player player){
ItemStack paper = new ItemStack(Material.PAPER);
ItemMeta meta = paper.getItemMeta();
meta.setDisplayName(Lang.SCENARIO_GLOBAL_ITEM_HOTBAR);
paper.setItemMeta(meta);
player.getInventory().addItem(paper);
}

public static boolean isLobbyItem(ItemStack item){
return (
item != null
&& item.getType().equals(Material.IRON_SWORD)
&& item.getItemMeta().getLore().contains("Lobby")
);
}

public static boolean isLobbyColorItem(ItemStack item){
return (
item != null
&& UniversalMaterial.LAPIS_LAZULI.getType().equals(item.getType())
&& item.hasItemMeta()
&& item.getItemMeta().hasLore()
&& item.getItemMeta().getLore().contains("Lobby")
);
}

public static boolean isScenariosHotbarItem(ItemStack item){
return (
item != null &&
item.getType().equals(Material.PAPER) &&
item.hasItemMeta() &&
item.getItemMeta().hasDisplayName() &&
item.getItemMeta().getDisplayName().equals(Lang.SCENARIO_GLOBAL_ITEM_HOTBAR)
);
if (gameItem == GameItem.BUNGEE_ITEM){
player.getInventory().setItem(8, gameItem.getItem());
}else {
player.getInventory().addItem(gameItem.getItem());
}
}

public static boolean isLobbyBarrierItem(ItemStack item){
return (
item != null &&
item.getType().equals(Material.BARRIER) &&
item.hasItemMeta() &&
item.getItemMeta().hasDisplayName() &&
item.getItemMeta().getDisplayName().equals(Lang.ITEMS_BUNGEE)
);
public static void giveLobbyItemsTo(Player player){
for (GameItem lobbyItem : GameItem.LOBBY_ITEMS){
giveGameItemTo(player, lobbyItem);
}
}

public static void openTeamInventory(Player player){
Expand Down Expand Up @@ -219,7 +157,7 @@ private static ItemStack getWoolItem(ChatColor chatColor, String name, Universal
return wool;
}

public static ItemStack createTeamSkullItem(UhcTeam team){
private static ItemStack createTeamSkullItem(UhcTeam team){
UhcPlayer leader = team.getLeader();
String leaderName = leader.getName();
ItemStack item = VersionUtils.getVersionUtils().createPlayerSkull(leaderName, leader.getUuid());
Expand Down Expand Up @@ -263,8 +201,6 @@ public static boolean isLobbyLeaveTeamItem(ItemStack item){
&& item.getItemMeta().getDisplayName().equals(ChatColor.RED+Lang.ITEMS_BARRIER)
);
}



public static boolean isLobbyReadyTeamItem(ItemStack item) {
return (
Expand All @@ -275,7 +211,6 @@ public static boolean isLobbyReadyTeamItem(ItemStack item) {
|| item.getItemMeta().getDisplayName().equals(ChatColor.GREEN+Lang.TEAM_READY))
);
}


public static boolean isRegenHeadItem(ItemStack item) {
return (
Expand All @@ -300,72 +235,13 @@ public static ItemStack createRegenHead(Player player) {
ItemMeta im = item.getItemMeta();

// Setting up lore with team members
List<String> lore = new ArrayList<String>();
lore.add(ChatColor.GREEN+Lang.ITEMS_REGEN_HEAD);
im.setLore(lore);
im.setLore(Collections.singletonList(ChatColor.GREEN + Lang.ITEMS_REGEN_HEAD));
im.setDisplayName(name);
item.setItemMeta(im);

return item;
}

public static void giveCompassPlayingTo(Player player) {
ItemStack compass = new ItemStack(Material.COMPASS, 1);
ItemMeta im = compass.getItemMeta();
im.setDisplayName(ChatColor.GREEN+Lang.ITEMS_COMPASS_PLAYING);
compass.setItemMeta(im);
player.getInventory().addItem(compass);
}



public static boolean isCompassPlayingItem(ItemStack item) {
return (
item != null
&& item.getType() == Material.COMPASS
&& item.getItemMeta().getDisplayName().equals(ChatColor.GREEN+Lang.ITEMS_COMPASS_PLAYING)
);
}

public static boolean isKitSelectionItem(ItemStack item){
return (
item != null
&& item.getType() == Material.IRON_PICKAXE
&& item.getItemMeta().getDisplayName().equals(ChatColor.GREEN+Lang.ITEMS_KIT_SELECTION)
);
}

public static void giveKitSelectionTo(Player player) {
if(KitsManager.isAtLeastOneKit()){
ItemStack pickaxe = new ItemStack(Material.IRON_PICKAXE, 1);
ItemMeta im = pickaxe.getItemMeta();
im.setDisplayName(ChatColor.GREEN+Lang.ITEMS_KIT_SELECTION);
pickaxe.setItemMeta(im);
player.getInventory().addItem(pickaxe);
}
}

public static void giveCraftBookTo(Player player) {
if(CraftsManager.isAtLeastOneCraft()){
ItemStack book = new ItemStack(Material.ENCHANTED_BOOK, 1);
ItemMeta im = book.getItemMeta();
im.setDisplayName(ChatColor.LIGHT_PURPLE+Lang.ITEMS_CRAFT_BOOK);
book.setItemMeta(im);
player.getInventory().addItem(book);
}
}

public static boolean isCraftBookItem(ItemStack item){
return (
item != null
&& item.getType().equals(Material.ENCHANTED_BOOK)
&& item.hasItemMeta()
&& item.getItemMeta().hasDisplayName()
&& item.getItemMeta().getDisplayName().equals(ChatColor.LIGHT_PURPLE+Lang.ITEMS_CRAFT_BOOK)
);
}


public static void spawnExtraXp(Location location, int quantity) {
ExperienceOrb orb = (ExperienceOrb) location.getWorld().spawnEntity(location, EntityType.EXPERIENCE_ORB);
orb.setExperience(quantity);
Expand All @@ -386,15 +262,13 @@ public static ItemStack createGoldenHeadPlayerSkull(String name, UUID uuid){
}

public static ItemStack createGoldenHead(){

ItemStack itemStack = new ItemStack(Material.GOLDEN_APPLE);
ItemMeta itemMeta = itemStack.getItemMeta();

itemMeta.setDisplayName(Lang.ITEMS_GOLDEN_HEAD_APPLE_NAME);
itemMeta.setLore(Collections.singletonList(Lang.ITEMS_GOLDEN_HEAD_APPLE_HELP));

itemStack.setItemMeta(itemMeta);

return itemStack;
}

Expand Down
Loading

0 comments on commit bef7e4f

Please sign in to comment.