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

ru.cwcode.tkach.refreshmenu.inventory.view.MultiShapeArtExtendedView Maven / Gradle / Ivy

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

import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import ru.cwcode.tkach.refreshmenu.inventory.ingredient.ArtIngredient;
import ru.cwcode.tkach.refreshmenu.inventory.ingredient.Ingredient;
import ru.cwcode.tkach.refreshmenu.inventory.shape.InventoryShape;

import java.util.ArrayList;
import java.util.List;

public class MultiShapeArtExtendedView extends ArtExtendedView {
  List shapes = new ArrayList<>();
  int shapePointer = 0;
  
  {
    getBehavior().bind('{', ClickType.LEFT, event -> prevShape((Player) event.getWhoClicked()));
    getBehavior().bind('}', ClickType.LEFT, event -> nextShape((Player) event.getWhoClicked()));
  }
  public void nextShape(Player player) {
    if (shapePointer + 1 < shapes.size()) {
      shapePointer++;
      
      shape = shapes.get(shapePointer);
      
      updatePlaceholders();
      drawInventory(player);
      updateInventoryTitle(player);
    }
  }
  
  public void prevShape(Player player) {
    if (shapePointer > 0) {
      shapePointer--;
      
      shape = shapes.get(shapePointer);
      
      updatePlaceholders();
      drawInventory(player);
      updateInventoryTitle(player);
    }
  }
  
  @Override
  protected void updatePlaceholders() {
    super.updatePlaceholders();
    
    placeholders.add("shape", shapePointer + 1);
    placeholders.add("shapes", shapes.size());
    placeholders.add("nextShape", Math.min(shapes.size(), shapePointer + 2));
    placeholders.add("prevShape", Math.max(1, shapePointer));
  }
  
  public List getShapes() {
    return shapes;
  }
  
  public int getShapePointer() {
    return shapePointer;
  }
  
  public void setShapes(List shapes) {
    this.shapes = shapes;
    this.shape = shapes.get(0);
    
    updatePlaceholders();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy