Add a gui and a menu system and some more shit

This commit is contained in:
Trixkz
2021-11-21 21:36:37 -05:00
parent 3eed8f07ef
commit 0285358607
7 changed files with 439 additions and 1 deletions

View File

@ -0,0 +1,63 @@
package rip.tilly.bedwars.menusystem;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import rip.tilly.bedwars.utils.ItemBuilder;
import java.util.Arrays;
public abstract class Menu implements InventoryHolder {
protected PlayerMenuUtil playerMenuUtil;
protected Inventory inventory;
protected ItemStack FILLER_GLASS = new ItemBuilder(Material.STAINED_GLASS_PANE).durability(7).name("").build();
public Menu(PlayerMenuUtil playerMenuUtil) {
this.playerMenuUtil = playerMenuUtil;
}
public abstract String getMenuName();
public abstract int getSlots();
public abstract void handleMenu(InventoryClickEvent event);
public abstract void setMenuItems();
public void open() {
inventory = Bukkit.createInventory(this, getSlots(), getMenuName());
this.setMenuItems();
playerMenuUtil.getOwner().openInventory(inventory);
}
@Override
public Inventory getInventory() {
return inventory;
}
public void setFillerGlass(){
for (int i = 0; i < this.getSlots(); i++) {
if (this.inventory.getItem(i) == null){
this.inventory.setItem(i, this.FILLER_GLASS);
}
}
}
public ItemStack makeItem(Material material, String displayName, String... lore) {
ItemStack item = new ItemStack(material);
ItemMeta itemMeta = item.getItemMeta();
itemMeta.setDisplayName(displayName);
itemMeta.setLore(Arrays.asList(lore));
item.setItemMeta(itemMeta);
return item;
}
}

View File

@ -0,0 +1,44 @@
package rip.tilly.bedwars.menusystem;
import org.bukkit.ChatColor;
import org.bukkit.Material;
public abstract class PaginatedMenu extends Menu {
protected int page = 0;
protected int maxItemsPerPage = 28;
protected int index = 0;
public PaginatedMenu(PlayerMenuUtil playerMenuUtil) {
super(playerMenuUtil);
}
public void addMenuBorder() {
this.inventory.setItem(48, makeItem(Material.WOOD_BUTTON, ChatColor.GREEN + "Left"));
this.inventory.setItem(49, makeItem(Material.BARRIER, ChatColor.DARK_RED + "Close"));
this.inventory.setItem(50, makeItem(Material.STONE_BUTTON, ChatColor.GREEN + "Right"));
for (int i = 0; i < 10; i++) {
if (this.inventory.getItem(i) == null) {
this.inventory.setItem(i, this.FILLER_GLASS);
}
}
this.inventory.setItem(17, this.FILLER_GLASS);
this.inventory.setItem(18, this.FILLER_GLASS);
this.inventory.setItem(26, this.FILLER_GLASS);
this.inventory.setItem(27, this.FILLER_GLASS);
this.inventory.setItem(35, this.FILLER_GLASS);
this.inventory.setItem(36, this.FILLER_GLASS);
for (int i = 44; i < 54; i++) {
if (this.inventory.getItem(i) == null) {
this.inventory.setItem(i, this.FILLER_GLASS);
}
}
}
public int getMaxItemsPerPage() {
return maxItemsPerPage;
}
}

View File

@ -0,0 +1,20 @@
package rip.tilly.bedwars.menusystem;
import org.bukkit.entity.Player;
public class PlayerMenuUtil {
private Player owner;
public PlayerMenuUtil(Player owner) {
this.owner = owner;
}
public Player getOwner() {
return owner;
}
public void setOwner(Player owner) {
this.owner = owner;
}
}

View File

@ -0,0 +1,90 @@
package rip.tilly.bedwars.menusystem.menu;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import rip.tilly.bedwars.menusystem.Menu;
import rip.tilly.bedwars.menusystem.PlayerMenuUtil;
import rip.tilly.bedwars.utils.CC;
import rip.tilly.bedwars.utils.ItemBuilder;
import java.util.ArrayList;
import java.util.List;
public class PlayAGameMenu extends Menu {
public PlayAGameMenu(PlayerMenuUtil playerMenuUtil) {
super(playerMenuUtil);
}
@Override
public String getMenuName() {
return CC.translate("&eSelect a game to play...");
}
@Override
public int getSlots() {
return 27;
}
@Override
public void handleMenu(InventoryClickEvent event) {
Player player = (Player) event.getWhoClicked();
if (event.getView().getTitle().equalsIgnoreCase(CC.translate("&eSelect a game to play..."))) {
switch (event.getCurrentItem().getType()) {
case WOOD_SWORD:
break;
case STONE_SWORD:
break;
case IRON_SWORD:
break;
case DIAMOND_SWORD:
break;
}
player.closeInventory();
}
}
@Override
public void setMenuItems() {
List<String> bedWars1v1Lore = new ArrayList<String>();
bedWars1v1Lore.add(CC.translate(""));
bedWars1v1Lore.add(CC.translate("&9You have to start somewhere,"));
bedWars1v1Lore.add(CC.translate("&9so why not start here?"));
ItemStack bedWars1v1ItemStack = new ItemBuilder(Material.WOOD_SWORD).name(CC.translate("&dBedWars 1v1")).lore(bedWars1v1Lore).build();
List<String> bedWars2v2Lore = new ArrayList<String>();
bedWars2v2Lore.add(CC.translate(""));
bedWars2v2Lore.add(CC.translate("&9Adapt, overcome, and conquer,"));
bedWars2v2Lore.add(CC.translate("&9you are advancing rapidly"));
ItemStack bedWars2v2ItemStack = new ItemBuilder(Material.STONE_SWORD).name(CC.translate("&dBedWars 2v2")).lore(bedWars2v2Lore).build();
List<String> bedWars3v3Lore = new ArrayList<String>();
bedWars3v3Lore.add(CC.translate(""));
bedWars3v3Lore.add(CC.translate("&9How crazy is this,"));
bedWars3v3Lore.add(CC.translate("&9it seems like it was just yesterday"));
bedWars3v3Lore.add(CC.translate("&9since you started"));
ItemStack bedWars3v3ItemStack = new ItemBuilder(Material.IRON_SWORD).name(CC.translate("&dBedWars 3v3")).lore(bedWars3v3Lore).build();
List<String> bedWars4v4Lore = new ArrayList<String>();
bedWars4v4Lore.add(CC.translate(""));
bedWars4v4Lore.add(CC.translate("&9You are now a master,"));
bedWars4v4Lore.add(CC.translate("&9you can go up against"));
bedWars4v4Lore.add(CC.translate("&9the undefeated PvP bot &7(Coming soon)"));
ItemStack bedWars4v4ItemStack = new ItemBuilder(Material.DIAMOND_SWORD).name(CC.translate("&dBedWars 4v4")).lore(bedWars4v4Lore).build();
this.inventory.setItem(10, bedWars1v1ItemStack);
this.inventory.setItem(12, bedWars2v2ItemStack);
this.inventory.setItem(14, bedWars3v3ItemStack);
this.inventory.setItem(16, bedWars4v4ItemStack);
this.setFillerGlass();
}
}