All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.cwcode.tkach.refreshmenu.inventory.view.drawer.ArtExtendedViewDrawer Maven / Gradle / Ivy

package ru.cwcode.tkach.refreshmenu.inventory.view.drawer;

import org.bukkit.inventory.ItemStack;
import ru.cwcode.tkach.refreshmenu.MenuContext;
import ru.cwcode.tkach.refreshmenu.inventory.ingredient.ArtIngredient;
import ru.cwcode.tkach.refreshmenu.inventory.ingredient.Ingredient;
import ru.cwcode.tkach.refreshmenu.inventory.view.ArtExtendedView;

import java.util.HashMap;
import java.util.Set;

public class ArtExtendedViewDrawer extends ExtendedViewDrawer {
  ArtExtendedView view;
  HashMap artDraws = new HashMap<>();
  
  @Override
  public synchronized void draw(MenuContext context) {
    if (!(context.view() instanceof ArtExtendedView artExtendedView))
      throw new IllegalArgumentException("ArtExtendedViewDrawer can only be used with ");
    
    view = artExtendedView;
    
    super.draw(context);
  }
  
  @Override
  public synchronized void drawChars(MenuContext context, Set characters) {
    if (!(context.view() instanceof ArtExtendedView artExtendedView))
      throw new IllegalArgumentException("ArtExtendedViewDrawer can only be used with ");
    
    view = artExtendedView;
    
    super.drawChars(context, characters);
  }
  
  @Override
  protected ItemStack findItem(MenuContext context, int slot, char shapeChar) {
    ItemStack item = super.findItem(context, slot, shapeChar);
    
    if (item != null && !item.getType().isAir()) return item;
    
    ArtIngredient art = view.getArts().get(shapeChar);
    if(art == null) return null;
    
    int draws = artDraws.getOrDefault(shapeChar, 0);
    if (art.getMaxDraws() > -1 && draws > art.getMaxDraws()) return null;
    
    artDraws.put(shapeChar, draws + 1);
    return view.getArts().get(shapeChar).getItem(context);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy