Advertisement
broken-arrow

Untitled

Dec 30th, 2021
905
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.37 KB | None | 0 0
  1. public class MineBombMenu extends Menu {
  2.  
  3.     private static final double[] multipliers = new double[]{1.41, 2.12, 3.39, 5.94, 11.88, 29.70};
  4.  
  5.     private final Button claimMoneyButton;
  6.     private final Button bet1Button;
  7.     private final Button bet2Button;
  8.     private final Button bet3Button;
  9.     private final Button bet4Button;
  10.     private final Button bet5Button;
  11.     private final Button bet6Button;
  12.  
  13.     private double amountBet;
  14.     private int winnings;
  15.     private Stage stage;
  16.  
  17.     private final List<Integer> bombSlots;
  18.  
  19.  
  20.     public MineBombMenu() {
  21.         this.amountBet = 0;
  22.         this.winnings = -1;
  23.         this.stage = Stage.BETTING;
  24.         this.bombSlots = new ArrayList<>();
  25.  
  26.         while (this.bombSlots.size() < 3) {
  27.             int newSlot = RandomUtil.nextItem(12, 13, 14, 21, 22, 23, 30, 31, 32);
  28.             if (!this.bombSlots.contains(newSlot)) this.bombSlots.add(newSlot);
  29.         }
  30.         setTitle(Common.colorize("&f\uF808⿀"));
  31.         setSize(9 * 4);
  32.         this.claimMoneyButton = new Button() {
  33.             @Override
  34.             public void onClickedInMenu(Player player, Menu menu, ClickType click) {
  35.                 if (MineBombMenu.this.stage != Stage.PLAYING) return;
  36.                 if (MineBombMenu.this.winnings == -1) return;
  37.                 MineBombMenu.this.stage = Stage.ENDING;
  38.                 double multiplier = getMultiplierFromWinnings();
  39.                 double money = MineBombMenu.this.amountBet * multiplier;
  40.                 //BuzzGambling.economy.depositPlayer(player, money);
  41.                 Common.tellNoPrefix(player, "&a&l+ $" + money + " &7(Gambling)");
  42.                 Common.runLater(30, () -> new MineBombMenu().displayTo(player));
  43.             }
  44.  
  45.             @Override
  46.             public ItemStack getItem() {
  47.  
  48.                 double multiplier = getMultiplierFromWinnings();
  49.                 return ItemCreator.of(CompMaterial.ENDER_CHEST,
  50.                         "&c&lClaim Money",
  51.                         "&4┃ &7Worth: &f$" + MineBombMenu.this.amountBet * multiplier,
  52.                         "&4┃ &7Multiplier: &f" + multiplier + "x",
  53.                         "",
  54.                         "&c&lNOTE &7There are &f3 bombs &7hidden",
  55.                         "&7in the mine field below! Bombs are chosen",
  56.                         "&7as soon as you purchase entry!"
  57.  
  58.                 ).build().make();
  59.             }
  60.  
  61.         };
  62.  
  63.         this.bet1Button = new BetButton(1_000);
  64.         this.bet2Button = new BetButton(10_000);
  65.         this.bet3Button = new BetButton(100_000);
  66.         this.bet4Button = new BetButton(250_000);
  67.         this.bet5Button = new BetButton(500_000);
  68.         this.bet6Button = new BetButton(1_000_000);
  69.  
  70.     }
  71.  
  72.     private double getMultiplierFromWinnings() {
  73.         if (this.winnings == -1) return 0;
  74.         else return multipliers[this.winnings];
  75.     }
  76.  
  77.  
  78.     @RequiredArgsConstructor
  79.     private class BetButton extends Button {
  80.  
  81.         private double amount;
  82.  
  83.         BetButton(double amount) {
  84.             this.amount = amount;
  85.         }
  86.  
  87.         @Override
  88.         public void onClickedInMenu(Player player, Menu menu, ClickType click) {
  89.             if (MineBombMenu.this.stage != Stage.BETTING) return;
  90.         /*  if (BuzzGambling.economy.getBalance(player) >= this.amount) {
  91.                 BuzzGambling.economy.withdrawPlayer(player, amount);*/
  92.             MineBombMenu.this.amountBet = this.amount;
  93.             MineBombMenu.this.stage = Stage.PLAYING;
  94.             Common.tellNoPrefix(player, "&c&l- $" + MineBombMenu.this.amountBet + " &7(Gambling)");
  95.             redraw();
  96.             //} else animateTitle(Common.colorize("&c&lNot enough money!"));
  97.  
  98.         }
  99.  
  100.         @Override
  101.         public ItemStack getItem() {
  102.             if (MineBombMenu.this.stage == Stage.PLAYING)
  103.                 return ItemCreator.of(CompMaterial.BARRIER).name("&cEntered").lore("Click any coal to start!").build().make();
  104.             else {
  105.                 ItemStack item = ItemCreator.of(CompMaterial.FLINT, "&e&l$" + this.amount, "&7Click to enter!").build().make();
  106.                 addModel(item, 121);
  107.                 return item;
  108.             }
  109.  
  110.         }
  111.     }
  112.  
  113.     List<MineFieldButton> getButtons() {
  114.         return Arrays.asList(
  115.                 new MineFieldButton(12),
  116.                 new MineFieldButton(13),
  117.                 new MineFieldButton(14),
  118.                 new MineFieldButton(21),
  119.                 new MineFieldButton(22),
  120.                 new MineFieldButton(23),
  121.                 new MineFieldButton(30),
  122.                 new MineFieldButton(31),
  123.                 new MineFieldButton(32));
  124.     }
  125.  
  126.     @Override
  127.     public void onMenuClick(Player player, int slot, InventoryAction action, ClickType click, ItemStack cursor, ItemStack clicked, boolean cancelled) {
  128.         List<MineFieldButton> clickedButtons = new ArrayList<>();
  129.  
  130.         for (MineFieldButton button : getButtons()) {
  131.             if (slot == button.slot && !clickedButtons.contains(new MineFieldButton(slot))) {
  132.                 button.onClickedInMenu(player, this, click);
  133.                 clickedButtons.add(new MineFieldButton(slot));
  134.             }
  135.         }
  136.     }
  137.  
  138.     @RequiredArgsConstructor
  139.     private class MineFieldButton extends Button {
  140.  
  141.         private int slot;
  142.  
  143.         MineFieldButton(int slot) {
  144.             this.slot = slot;
  145.         }
  146.  
  147.         @Override
  148.         public void onClickedInMenu(Player player, Menu menu, ClickType click) {
  149.  
  150.             if (MineBombMenu.this.stage != Stage.PLAYING) return;
  151.             if (isMineField()) {
  152.                 MineBombMenu.this.stage = Stage.ENDING;
  153.                 setItem(this.slot, getMineField());
  154.                 Common.runLater(30, () -> new MineBombMenu().displayTo(player));
  155.             } else {
  156.                 MineBombMenu.this.winnings++;
  157.                 setItem(this.slot, getMoney());
  158.                 setItem(4, MineBombMenu.this.claimMoneyButton.getItem());
  159.                 if (MineBombMenu.this.winnings == 5) {
  160.                     Common.broadcast("&4[&c&lBOMBS&4] &f" + player.getName() + "&7 has just won a &e" + getMultiplierFromWinnings() + "x Multiplier&7 while playing Mine Bombs!");
  161.                     MineBombMenu.this.stage = Stage.ENDING;
  162.                     double multiplier = getMultiplierFromWinnings();
  163.                     double money = MineBombMenu.this.amountBet * multiplier;
  164.                     //BuzzGambling.economy.depositPlayer(player, money);
  165.                     Common.tellNoPrefix(player, "&a&l+ $" + money + " &7(Gambling)");
  166.                     Common.runLater(30, () -> new MineBombMenu().displayTo(player));
  167.                 }
  168.             }
  169.  
  170.         }
  171.  
  172.         @Override
  173.         public ItemStack getItem() {
  174.             return ItemCreator.of(CompMaterial.COAL, "&4&lMine &c&lField", "&7Click to reveal &nhidden field").build().make();
  175.         }
  176.  
  177.         private ItemStack getMineField() {
  178.             ItemStack item = ItemCreator.of(CompMaterial.FLINT, "&4&lMine &c&lHit", "&7You have lost all your money!").build().make();
  179.             addModel(item, 120);
  180.             return item;
  181.         }
  182.  
  183.         private ItemStack getMoney() {
  184.             ItemStack item = ItemCreator.of(CompMaterial.FLINT, "&a&l" + multipliers[MineBombMenu.this.winnings] + "x Multiplier", "&7You increased your multiplier!").build().make();
  185.             addModel(item, 154);
  186.             return item;
  187.         }
  188.  
  189.         private boolean isMineField() {
  190.             return MineBombMenu.this.bombSlots.contains(this.slot);
  191.         }
  192.  
  193.     }
  194.  
  195.     @Override
  196.     protected void onMenuClose(Player player, Inventory inventory) {
  197.         if (this.stage == Stage.PLAYING && this.winnings == -1) {
  198.             //BuzzGambling.economy.depositPlayer(player, this.amountBet);
  199.             Common.tellNoPrefix(player, "&a&l+ $" + this.amountBet + " &7(Gambling)");
  200.         }
  201.     }
  202.  
  203.  
  204.     private void addModel(ItemStack itemStack, int customModelNumber) {
  205.         ItemMeta meta = itemStack.getItemMeta();
  206.         meta.setCustomModelData(customModelNumber);
  207.         itemStack.setItemMeta(meta);
  208.     }
  209.  
  210.     @Override
  211.     public ItemStack getItemAt(int slot) {
  212.         if (slot == 4)
  213.             return this.claimMoneyButton.getItem();
  214.         else if (slot == 10)
  215.             return this.bet1Button.getItem();
  216.         else if (slot == 19)
  217.             return this.bet2Button.getItem();
  218.         else if (slot == 28)
  219.             return this.bet3Button.getItem();
  220.         else if (slot == 16)
  221.             return this.bet4Button.getItem();
  222.         else if (slot == 25)
  223.             return this.bet5Button.getItem();
  224.         else if (slot == 34)
  225.             return this.bet6Button.getItem();
  226.         for (MineFieldButton button : getButtons())
  227.             if (slot == button.slot)
  228.                 return button.getItem();
  229.         return null;
  230.     }
  231.  
  232.  
  233.     private enum Stage {
  234.         BETTING,
  235.         PLAYING,
  236.         ENDING
  237.     }
  238. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement