Advertisement
broken-arrow

Untitled

Dec 26th, 2021
877
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.23 KB | None | 0 0
  1.     private abstract class MenuEditChances extends Menu implements MenuQuantitable {
  2.  
  3.         @Getter
  4.         protected final EditMode mode;
  5.  
  6.         @Setter
  7.         @Getter
  8.         private MenuQuantity quantity = MenuQuantity.ONE;
  9.  
  10.         private final Button modeButton;
  11.         private final Button quantityButton;
  12.  
  13.         private MenuEditChances(final EditMode mode, final int size) {
  14.             this(MenuBossIndividual.this, mode, size);
  15.         }
  16.  
  17.         private MenuEditChances(final Menu parent, final EditMode mode, final int size) {
  18.             super(parent);
  19.  
  20.             this.mode = mode;
  21.             setSize(size);
  22.  
  23.             modeButton = new Button() {
  24.  
  25.                 @Override
  26.                 public final void onClickedInMenu(final Player pl, final Menu menu, final ClickType click) {
  27.                     pl.closeInventory();
  28.  
  29.                     getNextMenu().displayTo(pl);
  30.                 }
  31.  
  32.                 @Override
  33.                 public ItemStack getItem() {
  34.                     return ItemCreator
  35.                             .of(mode == EditMode.ITEMS ? CompMaterial.CHEST : CompMaterial.GOLD_NUGGET,
  36.                                     "Editing " + ItemUtil.bountify(mode),
  37.                                     "",
  38.                                     "&7Click to edit " + ItemUtil.bountify(mode.next()))
  39.                             .build().make();
  40.                 }
  41.             };
  42.  
  43.             quantityButton = mode == EditMode.DROP_CHANCES ? getEditQuantityButton(this) : Button.makeEmpty();
  44.         }
  45.  
  46.         @Override
  47.         public ItemStack getItemAt(final int slot) {
  48.             if (slot == getSize() - 5)
  49.                 return modeButton.getItem();
  50.  
  51.             if (slot == getSize() - 7 && !quantityButton.equals(Button.makeEmpty()))
  52.                 return quantityButton.getItem();
  53.  
  54.             if (slot > getSize() - 10)
  55.                 return getFillerItem();
  56.  
  57.             return null;
  58.         }
  59.  
  60.         protected final ItemStack paintChanceItem(final BossDrop drop) {
  61.             return drop != null && drop.getItem() != null ? mode == EditMode.DROP_CHANCES ? ItemCreator
  62.                     .of(drop.getItem())
  63.                     .lores(Arrays.asList(
  64.                             "",
  65.                             "&7Drop chance: &6" + Math.round(100 * Double.valueOf(drop.getDropChance())) + "%",
  66.                             "",
  67.                             "   &8(Mouse click)",
  68.                             "  &7&l< &4-{q}%    &2+{q}% &7&l>".replace("{q}", quantity.getAmount() + "")))
  69.                     .hideTags(true)
  70.                     .build().make()
  71.                     : drop.getItem() : null;
  72.         }
  73.  
  74.         @Override
  75.         protected final String[] getInfo() {
  76.             return mode == EditMode.ITEMS ? new String[] {
  77.                     "Here you edit the items",
  78.                     "for this Boss.",
  79.                     "",
  80.                     "Simply &2drag and drop &7items",
  81.                     "from your inventory here."
  82.             }
  83.                     : new String[] {
  84.                             "Here you edit how likely it",
  85.                             "is that each item will drop,",
  86.                             "when the Boss dies.",
  87.                             "",
  88.                             "&2Right or left click &7on items",
  89.                             "to adjust the drop chances."
  90.                     };
  91.         }
  92.  
  93.         @Override
  94.         public boolean isActionAllowed(final MenuClickLocation location, final int slot, final ItemStack clicked, final ItemStack cursor) {
  95.             if (mode == EditMode.DROP_CHANCES)
  96.                 return false;
  97.  
  98.             return slot < getSize() - 9 || location == MenuClickLocation.PLAYER_INVENTORY;
  99.         }
  100.  
  101.         private Menu getNextMenu() {
  102.             try {
  103.                 final Constructor<? extends MenuEditChances> c = getClass().getDeclaredConstructor(MenuBossIndividual.class, Menu.class, EditMode.class);
  104.                 c.setAccessible(true);
  105.  
  106.                 return c.newInstance(MenuBossIndividual.this, getParent(), mode.next());
  107.             } catch (final ReflectiveOperationException ex) {
  108.                 Common.throwError(ex, "Error generating next menu " + this);
  109.             }
  110.  
  111.             return null;
  112.         }
  113.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement