arena menu
This commit is contained in:
@ -0,0 +1,38 @@
|
||||
package rip.tilly.bedwars.menus.arena;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.bukkit.entity.Player;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.game.arena.Arena;
|
||||
import rip.tilly.bedwars.game.arena.CopiedArena;
|
||||
import rip.tilly.bedwars.menus.arena.buttons.ArenaCopyButton;
|
||||
import rip.tilly.bedwars.utils.CC;
|
||||
import rip.tilly.bedwars.utils.menu.Button;
|
||||
import rip.tilly.bedwars.utils.menu.Menu;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class ArenaCopyMenu extends Menu {
|
||||
|
||||
private final Arena arena;
|
||||
|
||||
@Override
|
||||
public String getTitle(Player player) {
|
||||
return CC.translate("&eArena Copies");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, Button> getButtons(Player player) {
|
||||
Map<Integer, Button> buttons = new HashMap<>();
|
||||
|
||||
int i = 0;
|
||||
for (CopiedArena arenaCopy : BedWars.getInstance().getArenaManager().getArena(arena.getName()).getCopiedArenas()) {
|
||||
buttons.put(buttons.size(), new ArenaCopyButton(i, arena, arenaCopy));
|
||||
i++;
|
||||
}
|
||||
|
||||
return buttons;
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package rip.tilly.bedwars.menus.arena;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.entity.Player;
|
||||
import rip.tilly.bedwars.game.arena.Arena;
|
||||
import rip.tilly.bedwars.menus.arena.buttons.ArenaGenerateButton;
|
||||
import rip.tilly.bedwars.utils.CC;
|
||||
import rip.tilly.bedwars.utils.menu.Button;
|
||||
import rip.tilly.bedwars.utils.menu.Menu;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class ArenaGenerationMenu extends Menu {
|
||||
|
||||
private final Arena arena;
|
||||
|
||||
@Getter private final int[] clonableAmounts = {1, 2, 3, 4, 5, 10, 15};
|
||||
|
||||
@Override
|
||||
public String getTitle(Player player) {
|
||||
return CC.translate("&eArena Copies Generation");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, Button> getButtons(Player player) {
|
||||
Map<Integer, Button> buttons = new HashMap<>();
|
||||
|
||||
for (int curr : clonableAmounts) {
|
||||
buttons.put(1 + buttons.size(), new ArenaGenerateButton(arena, curr));
|
||||
}
|
||||
|
||||
return buttons;
|
||||
}
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package rip.tilly.bedwars.menus.arena;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.menus.arena.buttons.ArenaButton;
|
||||
import rip.tilly.bedwars.utils.ItemBuilder;
|
||||
import rip.tilly.bedwars.utils.menu.Button;
|
||||
import rip.tilly.bedwars.utils.menu.pagination.PageButton;
|
||||
import rip.tilly.bedwars.utils.menu.pagination.PaginatedMenu;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class ArenaManagerMenu extends PaginatedMenu {
|
||||
|
||||
private final BedWars plugin = BedWars.getInstance();
|
||||
|
||||
@Override
|
||||
public String getPrePaginatedTitle(Player player) {
|
||||
return "Arena Management";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, Button> getAllPagesButtons(Player player) {
|
||||
Map<Integer, Button> buttons = new HashMap<>();
|
||||
this.plugin.getArenaManager().getArenas().forEach((s, arena) -> buttons.put(buttons.size(), new ArenaButton(arena)));
|
||||
|
||||
return buttons;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, Button> getGlobalButtons(Player player) {
|
||||
Map<Integer, Button> buttons = new HashMap<>();
|
||||
|
||||
buttons.put(0, new PageButton(-1, this));
|
||||
buttons.put(8, new PageButton(1, this));
|
||||
|
||||
bottomTopButtons(false, buttons, new ItemBuilder(Material.STAINED_GLASS_PANE).name(" ").durability(7).build());
|
||||
|
||||
return buttons;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return 9 * 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxItemsPerPage(Player player) {
|
||||
return 9 * 3;
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package rip.tilly.bedwars.menus.arena.buttons;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.game.arena.Arena;
|
||||
import rip.tilly.bedwars.menus.arena.ArenaCopyMenu;
|
||||
import rip.tilly.bedwars.menus.arena.ArenaGenerationMenu;
|
||||
import rip.tilly.bedwars.utils.CC;
|
||||
import rip.tilly.bedwars.utils.ItemBuilder;
|
||||
import rip.tilly.bedwars.utils.menu.Button;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class ArenaButton extends Button {
|
||||
|
||||
private final Arena arena;
|
||||
|
||||
@Override
|
||||
public ItemStack getButtonItem(Player player) {
|
||||
return new ItemBuilder(Material.valueOf(arena.getIcon()))
|
||||
.durability(arena.getIconData())
|
||||
.name("&b" + arena.getName())
|
||||
.lore(CC.translate(
|
||||
Arrays.asList(
|
||||
" ",
|
||||
"&bArena Information&7:",
|
||||
" &9&l▸ &fState: " + (arena.isEnabled() ? "&aEnabled" : "&cDisabled"),
|
||||
" &9&l▸ &fType: &b" + (arena.getAvailableArenas().size() == 0 ? "Shared" : "Standalone"),
|
||||
" &9&l▸ &fCopies: &b" + (arena.getCopiedArenas().size() == 0 ? "Not Required!" : arena.getCopiedArenas().size()),
|
||||
" &9&l▸ &fAvailable: &b" + (arena.getAvailableArenas().size() == 0 ? +1 : arena.getAvailableArenas().size()),
|
||||
" ",
|
||||
(arena.getCopiedArenas().size() == 0 ? "&4&l&mMIDDLE-CLICK &4&mto see arena copies" : "&6&lMIDDLE-CLICK &6to see arena copies"),
|
||||
"&a&lLEFT-CLICK &ato teleport to arena",
|
||||
"&b&lRIGHT CLICK &bto generate standalone arenas")
|
||||
)
|
||||
)
|
||||
.hideFlags()
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clicked(Player player, int slot, ClickType clickType, int hotbarButton) {
|
||||
playSuccess(player);
|
||||
switch (clickType) {
|
||||
case LEFT:
|
||||
player.teleport(arena.getA().toBukkitLocation());
|
||||
break;
|
||||
case RIGHT:
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(BedWars.getInstance(), () -> new ArenaGenerationMenu(arena).openMenu(player), 1L);
|
||||
break;
|
||||
case MIDDLE:
|
||||
if (arena.getCopiedArenas().size() >= 1) {
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(BedWars.getInstance(), () -> new ArenaCopyMenu(arena).openMenu(player), 1L);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
player.closeInventory();
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
package rip.tilly.bedwars.menus.arena.buttons;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import rip.tilly.bedwars.BedWars;
|
||||
import rip.tilly.bedwars.game.arena.Arena;
|
||||
import rip.tilly.bedwars.game.arena.CopiedArena;
|
||||
import rip.tilly.bedwars.runnables.ArenaCopyRemovalRunnable;
|
||||
import rip.tilly.bedwars.utils.CC;
|
||||
import rip.tilly.bedwars.utils.ItemBuilder;
|
||||
import rip.tilly.bedwars.utils.menu.Button;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class ArenaCopyButton extends Button {
|
||||
|
||||
private final BedWars plugin = BedWars.getInstance();
|
||||
|
||||
private final int number;
|
||||
private final Arena arena;
|
||||
private final CopiedArena arenaCopy;
|
||||
|
||||
@Override
|
||||
public ItemStack getButtonItem(Player player) {
|
||||
return new ItemBuilder(Material.PAPER)
|
||||
.name("&8" + number)
|
||||
.lore(CC.translate(
|
||||
Arrays.asList(
|
||||
"&bCopy Information&7:",
|
||||
" &9&l▸ &fParent Arena: &b" + arena.getName() + " &7(&f#" + number + "&7)",
|
||||
" &9&l▸ &f1st Spawn: &b" + Math.round(arenaCopy.getA().getX()) + "&7, &b" + Math.round(arenaCopy.getA().getY()) + "&7, &b" + Math.round(arenaCopy.getA().getZ()),
|
||||
" &9&l▸ &f2nd Spawn: &b" + Math.round(arenaCopy.getB().getX()) + "&7, &b" + Math.round(arenaCopy.getB().getY()) + "&7, &b" + Math.round(arenaCopy.getB().getZ()),
|
||||
" &9&l▸ &fMin Location: &b" + Math.round(arenaCopy.getMin().getX()) + "&7, &b" + Math.round(arenaCopy.getMin().getY()) + "&7, &b" + Math.round(arenaCopy.getMin().getZ()),
|
||||
" &9&l▸ &fMax Location: &b" + Math.round(arenaCopy.getMax().getX()) + "&7, &b" + Math.round(arenaCopy.getMax().getY()) + "&7, &b" + Math.round(arenaCopy.getMax().getZ()),
|
||||
" ",
|
||||
"&a&lLEFT-CLICK &ato teleport to this copy!",
|
||||
"&c&lRIGHT-CLICK &cto delete this copy!"
|
||||
))
|
||||
)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clicked(Player player, int slot, ClickType clickType, int hotbarButton) {
|
||||
switch (clickType) {
|
||||
case LEFT:
|
||||
player.teleport(arenaCopy.getA().toBukkitLocation());
|
||||
break;
|
||||
case RIGHT:
|
||||
new ArenaCopyRemovalRunnable(number, arena, arenaCopy).runTask(this.plugin);
|
||||
break;
|
||||
}
|
||||
|
||||
player.closeInventory();
|
||||
}
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package rip.tilly.bedwars.menus.arena.buttons;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import rip.tilly.bedwars.game.arena.Arena;
|
||||
import rip.tilly.bedwars.utils.CC;
|
||||
import rip.tilly.bedwars.utils.ItemBuilder;
|
||||
import rip.tilly.bedwars.utils.menu.Button;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class ArenaGenerateButton extends Button {
|
||||
|
||||
private final Arena arena;
|
||||
private final int currentCopyAmount;
|
||||
|
||||
@Override
|
||||
public ItemStack getButtonItem(Player player) {
|
||||
return new ItemBuilder(Material.PAPER)
|
||||
.name("&aCreate " + currentCopyAmount + " Arena Copies")
|
||||
.lore(CC.translate(
|
||||
Arrays.asList(
|
||||
" ",
|
||||
"&7Clicking here will generate &b&l" + currentCopyAmount,
|
||||
"&7arenas for the map &b" + arena.getName() + "&7!",
|
||||
" ",
|
||||
"&a&lLEFT-CLICK &ato generate arenas")
|
||||
))
|
||||
.amount(currentCopyAmount)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clicked(Player player, int slot, ClickType clickType, int hotbarButton) {
|
||||
player.performCommand("arena generate " + arena.getName() + " " + currentCopyAmount);
|
||||
|
||||
player.sendMessage(CC.chatBar);
|
||||
player.sendMessage(CC.translate("&b&lGENERATING ARENAS&b..."));
|
||||
player.sendMessage(CC.translate(" "));
|
||||
player.sendMessage(CC.translate("&fFrost is currently generating copies for:"));
|
||||
player.sendMessage(CC.translate(" &9&l▸ &fArena: &b" + arena.getName()));
|
||||
player.sendMessage(CC.translate(" &9&l▸ &fCopies: &b" + currentCopyAmount));
|
||||
player.sendMessage(CC.translate(" "));
|
||||
player.sendMessage(CC.translate("&7&oYou can check the progress in console."));
|
||||
player.sendMessage(CC.chatBar);
|
||||
|
||||
player.closeInventory();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user