content: package mods.eln.generic;
  
  import mods.eln.gui.ISlotWithComment;
  import mods.eln.gui.SlotWithSkin;
  import net.minecraft.inventory.IInventory;
  import net.minecraft.item.ItemStack;
  
  import java.util.List;
  
  public class GenericItemUsingDamageSlot extends SlotWithSkin implements ISlotWithComment {
  
      //public GenericItemUsingDamage item;
  
      String[] comment;
  
      Class[] descriptorClassList;
      int stackLimit;
  
      public GenericItemUsingDamageSlot(IInventory inventory, int slot, int x, int y,
                                        int stackLimit, Class[] descriptorClassList, SlotSkin skin, String[] comment) {
          super(inventory, slot, x, y, skin);
          this.stackLimit = stackLimit;
          this.descriptorClassList = descriptorClassList;
          this.comment = comment;
      }
  
      public GenericItemUsingDamageSlot(IInventory inventory, int slot, int x, int y,
                                        int stackLimit, Class descriptorClassList, SlotSkin skin, String[] comment) {
          super(inventory, slot, x, y, skin);
          this.stackLimit = stackLimit;
          this.descriptorClassList = new Class[]{descriptorClassList};
          this.comment = comment;
      }
  
      /**
       * Check if the stack is a valid item for this slot. Always true beside for the armor slots.
       */
      public boolean isItemValid(ItemStack itemStack) {
          //	if(itemStack.getItem() != item) return false;
          if ((itemStack.getItem() instanceof GenericItemUsingDamage) == false) return false;
          GenericItemUsingDamageDescriptor descriptor = ((GenericItemUsingDamage) itemStack.getItem()).getDescriptor(itemStack);
          if (descriptor == null) return false;
  
          for (Class classFilter : descriptorClassList) {
              Class c = descriptor.getClass();
              while (c != null) {
                  if (c == classFilter) return true;
                  c = c.getSuperclass();
              }
          }
          return false;
      }
  
      @Override
      public int getSlotStackLimit() {
          //return super.getSlotStackLimit();
          return stackLimit;
      }
  
      @Override
      public void getComment(List<String> list) {
          for (String str : comment)
              list.add(str);
      }
  }
  