Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MineBombMenu extends Menu {
- private static final double[] multipliers = new double[]{1.41, 2.12, 3.39, 5.94, 11.88, 29.70};
- private final Button claimMoneyButton;
- private final Button bet1Button;
- private final Button bet2Button;
- private final Button bet3Button;
- private final Button bet4Button;
- private final Button bet5Button;
- private final Button bet6Button;
- private double amountBet;
- private int winnings;
- private Stage stage;
- private final List<Integer> bombSlots;
- public MineBombMenu() {
- this.amountBet = 0;
- this.winnings = -1;
- this.stage = Stage.BETTING;
- this.bombSlots = new ArrayList<>();
- while (this.bombSlots.size() < 3) {
- int newSlot = RandomUtil.nextItem(12, 13, 14, 21, 22, 23, 30, 31, 32);
- if (!this.bombSlots.contains(newSlot)) this.bombSlots.add(newSlot);
- }
- setTitle(Common.colorize("&f\uF808⿀"));
- setSize(9 * 4);
- this.claimMoneyButton = new Button() {
- @Override
- public void onClickedInMenu(Player player, Menu menu, ClickType click) {
- if (MineBombMenu.this.stage != Stage.PLAYING) return;
- if (MineBombMenu.this.winnings == -1) return;
- MineBombMenu.this.stage = Stage.ENDING;
- double multiplier = getMultiplierFromWinnings();
- double money = MineBombMenu.this.amountBet * multiplier;
- //BuzzGambling.economy.depositPlayer(player, money);
- Common.tellNoPrefix(player, "&a&l+ $" + money + " &7(Gambling)");
- Common.runLater(30, () -> new MineBombMenu().displayTo(player));
- }
- @Override
- public ItemStack getItem() {
- double multiplier = getMultiplierFromWinnings();
- return ItemCreator.of(CompMaterial.ENDER_CHEST,
- "&c&lClaim Money",
- "&4┃ &7Worth: &f$" + MineBombMenu.this.amountBet * multiplier,
- "&4┃ &7Multiplier: &f" + multiplier + "x",
- "",
- "&c&lNOTE &7There are &f3 bombs &7hidden",
- "&7in the mine field below! Bombs are chosen",
- "&7as soon as you purchase entry!"
- ).build().make();
- }
- };
- this.bet1Button = new BetButton(1_000);
- this.bet2Button = new BetButton(10_000);
- this.bet3Button = new BetButton(100_000);
- this.bet4Button = new BetButton(250_000);
- this.bet5Button = new BetButton(500_000);
- this.bet6Button = new BetButton(1_000_000);
- }
- private double getMultiplierFromWinnings() {
- if (this.winnings == -1) return 0;
- else return multipliers[this.winnings];
- }
- @RequiredArgsConstructor
- private class BetButton extends Button {
- private double amount;
- BetButton(double amount) {
- this.amount = amount;
- }
- @Override
- public void onClickedInMenu(Player player, Menu menu, ClickType click) {
- if (MineBombMenu.this.stage != Stage.BETTING) return;
- /* if (BuzzGambling.economy.getBalance(player) >= this.amount) {
- BuzzGambling.economy.withdrawPlayer(player, amount);*/
- MineBombMenu.this.amountBet = this.amount;
- MineBombMenu.this.stage = Stage.PLAYING;
- Common.tellNoPrefix(player, "&c&l- $" + MineBombMenu.this.amountBet + " &7(Gambling)");
- redraw();
- //} else animateTitle(Common.colorize("&c&lNot enough money!"));
- }
- @Override
- public ItemStack getItem() {
- if (MineBombMenu.this.stage == Stage.PLAYING)
- return ItemCreator.of(CompMaterial.BARRIER).name("&cEntered").lore("Click any coal to start!").build().make();
- else {
- ItemStack item = ItemCreator.of(CompMaterial.FLINT, "&e&l$" + this.amount, "&7Click to enter!").build().make();
- addModel(item, 121);
- return item;
- }
- }
- }
- List<MineFieldButton> getButtons() {
- return Arrays.asList(
- new MineFieldButton(12),
- new MineFieldButton(13),
- new MineFieldButton(14),
- new MineFieldButton(21),
- new MineFieldButton(22),
- new MineFieldButton(23),
- new MineFieldButton(30),
- new MineFieldButton(31),
- new MineFieldButton(32));
- }
- @Override
- public void onMenuClick(Player player, int slot, InventoryAction action, ClickType click, ItemStack cursor, ItemStack clicked, boolean cancelled) {
- List<MineFieldButton> clickedButtons = new ArrayList<>();
- for (MineFieldButton button : getButtons()) {
- if (slot == button.slot && !clickedButtons.contains(new MineFieldButton(slot))) {
- button.onClickedInMenu(player, this, click);
- clickedButtons.add(new MineFieldButton(slot));
- }
- }
- }
- @RequiredArgsConstructor
- private class MineFieldButton extends Button {
- private int slot;
- MineFieldButton(int slot) {
- this.slot = slot;
- }
- @Override
- public void onClickedInMenu(Player player, Menu menu, ClickType click) {
- if (MineBombMenu.this.stage != Stage.PLAYING) return;
- if (isMineField()) {
- MineBombMenu.this.stage = Stage.ENDING;
- setItem(this.slot, getMineField());
- Common.runLater(30, () -> new MineBombMenu().displayTo(player));
- } else {
- MineBombMenu.this.winnings++;
- setItem(this.slot, getMoney());
- setItem(4, MineBombMenu.this.claimMoneyButton.getItem());
- if (MineBombMenu.this.winnings == 5) {
- Common.broadcast("&4[&c&lBOMBS&4] &f" + player.getName() + "&7 has just won a &e" + getMultiplierFromWinnings() + "x Multiplier&7 while playing Mine Bombs!");
- MineBombMenu.this.stage = Stage.ENDING;
- double multiplier = getMultiplierFromWinnings();
- double money = MineBombMenu.this.amountBet * multiplier;
- //BuzzGambling.economy.depositPlayer(player, money);
- Common.tellNoPrefix(player, "&a&l+ $" + money + " &7(Gambling)");
- Common.runLater(30, () -> new MineBombMenu().displayTo(player));
- }
- }
- }
- @Override
- public ItemStack getItem() {
- return ItemCreator.of(CompMaterial.COAL, "&4&lMine &c&lField", "&7Click to reveal &nhidden field").build().make();
- }
- private ItemStack getMineField() {
- ItemStack item = ItemCreator.of(CompMaterial.FLINT, "&4&lMine &c&lHit", "&7You have lost all your money!").build().make();
- addModel(item, 120);
- return item;
- }
- private ItemStack getMoney() {
- ItemStack item = ItemCreator.of(CompMaterial.FLINT, "&a&l" + multipliers[MineBombMenu.this.winnings] + "x Multiplier", "&7You increased your multiplier!").build().make();
- addModel(item, 154);
- return item;
- }
- private boolean isMineField() {
- return MineBombMenu.this.bombSlots.contains(this.slot);
- }
- }
- @Override
- protected void onMenuClose(Player player, Inventory inventory) {
- if (this.stage == Stage.PLAYING && this.winnings == -1) {
- //BuzzGambling.economy.depositPlayer(player, this.amountBet);
- Common.tellNoPrefix(player, "&a&l+ $" + this.amountBet + " &7(Gambling)");
- }
- }
- private void addModel(ItemStack itemStack, int customModelNumber) {
- ItemMeta meta = itemStack.getItemMeta();
- meta.setCustomModelData(customModelNumber);
- itemStack.setItemMeta(meta);
- }
- @Override
- public ItemStack getItemAt(int slot) {
- if (slot == 4)
- return this.claimMoneyButton.getItem();
- else if (slot == 10)
- return this.bet1Button.getItem();
- else if (slot == 19)
- return this.bet2Button.getItem();
- else if (slot == 28)
- return this.bet3Button.getItem();
- else if (slot == 16)
- return this.bet4Button.getItem();
- else if (slot == 25)
- return this.bet5Button.getItem();
- else if (slot == 34)
- return this.bet6Button.getItem();
- for (MineFieldButton button : getButtons())
- if (slot == button.slot)
- return button.getItem();
- return null;
- }
- private enum Stage {
- BETTING,
- PLAYING,
- ENDING
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement