This commit is contained in:
Luca
2021-11-23 16:06:54 +01:00
parent 91f20ff303
commit d2e3c65882
6 changed files with 224 additions and 44 deletions

View File

@ -1,6 +1,7 @@
package rip.tilly.bedwars.menus.shop;
import lombok.AllArgsConstructor;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
@ -18,54 +19,69 @@ import java.util.List;
public class ShopButton extends Button {
private final String name;
private final List<String> lore;
private final Material material;
private final int data;
private final int amount;
private final Material costType;
private final String costTypeName;
private final ChatColor costTypeColor;
private final int cost;
private final boolean color;
private final int costItems;
@Override
public ItemStack getButtonItem(Player player) {
List<String> loreList = new ArrayList<>();
loreList.add(" ");
loreList.addAll(lore);
loreList.add("&9Cost: " + costTypeColor + cost + " " + costTypeName);
loreList.add("&9Amount: &e" + amount + "x");
// int costItems = 0;
// for (ItemStack contents : player.getInventory().getContents()) {
// if (contents != null) {
// if (contents.getType() == costType) {
// costItems += contents.getAmount();
// }
// }
// }
int costItems = 0;
for (ItemStack contents : player.getInventory().getContents()) {
if (contents != null) {
if (contents.getType() == costType) {
costItems += contents.getAmount();
}
}
}
loreList.add(" ");
loreList.add(costItems >= cost ? "&aClick to purchase!" : "&cYou don't have enough " + costTypeName + "!");
PlayerData playerData = BedWars.getInstance().getPlayerDataManager().getPlayerData(player.getUniqueId());
if (color) {
return new ItemBuilder(material).name(name).lore(loreList).amount(amount).durability(playerData.getPlayerTeam().getColorData()).hideFlags().build();
return new ItemBuilder(material)
.name((costItems >= cost ? "&a" : "&c") + name)
.lore(loreList)
.amount(amount)
.durability(playerData.getPlayerTeam().getColorData())
.hideFlags()
.build();
} else {
return new ItemBuilder(material).name(name).lore(loreList).amount(amount).durability(data).hideFlags().build();
return new ItemBuilder(material)
.name((costItems >= cost ? "&a" : "&c") + name)
.lore(loreList)
.amount(amount)
.durability(data)
.hideFlags()
.build();
}
}
@Override
public void clicked(Player player, int slot, ClickType clickType, int hotbarButton) {
if (clickType.isShiftClick()) {
return;
}
// int costItems = 0;
// for (ItemStack contents : player.getInventory().getContents()) {
// if (contents != null) {
// if (contents.getType() == costType) {
// costItems += contents.getAmount();
// }
// }
// }
int costItems = 0;
for (ItemStack contents : player.getInventory().getContents()) {
if (contents != null) {
if (contents.getType() == costType) {
costItems += contents.getAmount();
}
}
}
PlayerData playerData = BedWars.getInstance().getPlayerDataManager().getPlayerData(player.getUniqueId());
if (costItems >= cost) {
@ -81,9 +97,17 @@ public class ShopButton extends Button {
}
}
if (color) {
player.getInventory().addItem(new ItemBuilder(material).amount(amount).durability(playerData.getPlayerTeam().getColorData()).hideFlags().build());
player.getInventory().addItem(new ItemBuilder(material)
.amount(amount)
.durability(playerData.getPlayerTeam().getColorData())
.hideFlags()
.build());
} else {
player.getInventory().addItem(new ItemBuilder(material).amount(amount).durability(data).hideFlags().build());
player.getInventory().addItem(new ItemBuilder(material)
.amount(amount)
.durability(data)
.hideFlags()
.build());
}
playNeutral(player);
} else {

View File

@ -1,21 +1,82 @@
package rip.tilly.bedwars.menus.shop;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.bukkit.Material;
import java.util.Arrays;
import java.util.List;
@Getter
@RequiredArgsConstructor
public enum ShopType {
QUICK("Quick Buy", Material.NETHER_STAR, 0),
BLOCKS("Blocks", Material.STAINED_CLAY, 0),
ARMOR("Armor", Material.LEATHER_CHESTPLATE, 0),
TOOLS("Tools", Material.STONE_PICKAXE, 0),
WEAPONS("Weapons", Material.GOLD_SWORD, 0),
RANGED("Ranged", Material.BOW, 0),
POTIONS("Potions", Material.POTION, 0),
UTILITY("Utility", Material.EGG, 0);
QUICK("Quick Buy", Arrays.asList(
" ",
"&9Handy to buy things quickly!",
" "
), Material.NETHER_STAR, 0, 0),
BLOCKS("Blocks", Arrays.asList(
" ",
"&9Buy yourself some blocks to",
"&9defend your bed and get to",
"&9your enemies!",
" "
), Material.STAINED_CLAY, 0, 2),
ARMOR("Armor", Arrays.asList(
" ",
"&9Protect yourself with armor",
"&9that stays after death!",
" "
), Material.LEATHER_CHESTPLATE, 0, 3),
TOOLS("Tools", Arrays.asList(
" ",
"&9Break the blocks of your enemies",
"&9quicker and faster with tools!",
" "
), Material.STONE_PICKAXE, 0, 4),
WEAPONS("Weapons", Arrays.asList(
" ",
"&9Make killing enemies easier",
"&9and quicker with stronger",
"&9weapons!",
" "
), Material.GOLD_SWORD, 0, 5),
RANGED("Ranged", Arrays.asList(
" ",
"&9Don't like close quarter",
"&9combat? Then the ranged",
"&9weapons are for you!",
" "
), Material.BOW, 0, 6),
POTIONS("Potions", Arrays.asList(
" ",
"&9Sneak up on your enemies",
"&9with special brewed potions!",
" "
), Material.POTION, 0, 7),
UTILITY("Utility", Arrays.asList(
" ",
"&9Need extra utilities to destroy",
"&9your enemies? Then the utilities",
"&9are for you!",
" "
), Material.EGG, 0, 8);
private final String name;
private final List<String> lore;
private final Material material;
private final int data;
private final int slot;
public static ShopType getByName(String name) {
return Arrays.stream(values()).filter(type -> type.name.equalsIgnoreCase(name)).findFirst().orElse(null);
}
}

View File

@ -1,10 +1,56 @@
//package rip.tilly.bedwars.menus.shop;
//
//import lombok.AllArgsConstructor;
//import rip.tilly.bedwars.utils.menu.Button;
//
//@AllArgsConstructor
//public class ShopTypeButton extends Button {
//
// private final ShopType shopType;
//}
package rip.tilly.bedwars.menus.shop;
import lombok.AllArgsConstructor;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
import rip.tilly.bedwars.menus.shop.blocks.BlocksMenu;
import rip.tilly.bedwars.utils.ItemBuilder;
import rip.tilly.bedwars.utils.menu.Button;
import java.util.ArrayList;
import java.util.List;
@AllArgsConstructor
public class ShopTypeButton extends Button {
private final ShopType shopType;
@Override
public ItemStack getButtonItem(Player player) {
List<String> loreList = new ArrayList<>(shopType.getLore());
loreList.add("&eClick to open the " + shopType.getName() + " section!");
return new ItemBuilder(shopType.getMaterial())
.durability(shopType.getData())
.name(shopType.getName())
.lore(loreList)
.hideFlags()
.build();
}
@Override
public void clicked(Player player, int slot, ClickType clickType, int hotbarButton) {
playNeutral(player);
switch (shopType) {
case QUICK:
break;
case BLOCKS:
new BlocksMenu().openMenu(player);
break;
case ARMOR:
break;
case TOOLS:
break;
case WEAPONS:
break;
case RANGED:
break;
case POTIONS:
break;
case UTILITY:
break;
}
}
}

View File

@ -1,7 +1,13 @@
package rip.tilly.bedwars.menus.shop.blocks;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import rip.tilly.bedwars.menus.shop.ShopButton;
import rip.tilly.bedwars.menus.shop.ShopType;
import rip.tilly.bedwars.menus.shop.ShopTypeButton;
import rip.tilly.bedwars.utils.CC;
import rip.tilly.bedwars.utils.ItemBuilder;
import rip.tilly.bedwars.utils.menu.Button;
import rip.tilly.bedwars.utils.menu.Menu;
@ -17,13 +23,34 @@ public class BlocksMenu extends Menu {
@Override
public String getTitle(Player player) {
return CC.translate("&eBlocks");
return CC.translate("&eClick a block to purchase...");
}
@Override
public Map<Integer, Button> getButtons(Player player) {
Map<Integer, Button> buttons = new HashMap<>();
for (ShopType types : ShopType.values()) {
buttons.put(types.getSlot(), new ShopTypeButton(types));
}
buttons.put(ShopType.BLOCKS.getSlot() + 9, Button.placeholder(Material.STAINED_GLASS_PANE, (byte) 5, " "));
buttons.put(19, new ShopButton("Wool", Material.WOOL, 0, 16, Material.IRON_INGOT, "Iron", ChatColor.WHITE, 4, true));
buttons.put(20, new ShopButton("Stained Clay", Material.STAINED_CLAY, 0, 16, Material.IRON_INGOT, "Iron", ChatColor.WHITE,12, true));
buttons.put(21, new ShopButton("Blast-Proof Glass", Material.GLASS, 0, 4, Material.IRON_INGOT, "Iron", ChatColor.WHITE,12, true));
buttons.put(22, new ShopButton("End Stone", Material.ENDER_STONE, 0, 12, Material.IRON_INGOT, "Iron", ChatColor.WHITE,24, false));
buttons.put(23, new ShopButton("Ladder", Material.LADDER, 0, 8, Material.IRON_INGOT, "Iron", ChatColor.WHITE,4, false));
buttons.put(24, new ShopButton("Wood", Material.WOOD, 0, 12, Material.GOLD_INGOT, "Gold", ChatColor.GOLD,4, false));
buttons.put(25, new ShopButton("Obsidian", Material.OBSIDIAN, 0, 4, Material.EMERALD, "Emerald", ChatColor.GREEN,4, false));
fillEmptySlots(buttons, new ItemBuilder(Material.STAINED_GLASS_PANE).durability(7).name(" ").build());
return buttons;
}
@Override
public int getSize() {
return 6 * 9;
}
}