Package crazypants.enderio.conduit.item.filter

Source Code of crazypants.enderio.conduit.item.filter.ModItemFilter

package crazypants.enderio.conduit.item.filter;

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

import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.GameRegistry.UniqueIdentifier;

import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.nbt.NBTTagString;
import crazypants.enderio.conduit.item.NetworkedInventory;

public class ModItemFilter implements IItemFilter {

  private final String[] mods = new String[3];

  public String setMod(int index, ItemStack itemStack) {
    if(index < 0 || index >= mods.length) {
      return null;
    }

    if(itemStack == null || itemStack.getItem() == null) {
      setMod(index, (String) null);
      return null;
    }
    UniqueIdentifier ui = GameRegistry.findUniqueIdentifierFor(itemStack.getItem());
    if(ui == null) {
      setMod(index, (String) null);
      return null;
    }
    String targetMod = ui.modId;
    if(targetMod == null) {
      setMod(index, (String) null);
      return null;
    }
    setMod(index, targetMod);
    return targetMod;
  }

  public void setMod(int index, String mod) {
    if(index < 0 || index >= mods.length) {
      return;
    }
    mods[index] = mod;
  }

  public String getModAt(int index) {
    if(index < 0 || index >= mods.length) {
      return null;
    }
    return mods[index];
  }

  @Override
  public boolean doesItemPassFilter(NetworkedInventory inv, ItemStack item) {
    if(item == null || item.getItem() == null) {
      return false;
    }
    UniqueIdentifier ui = GameRegistry.findUniqueIdentifierFor(item.getItem());
    if(ui == null) {
      return false;
    }
    String targetMod = ui.modId;
    if(targetMod == null) {
      return false;
    }
    for (String mod : mods) {
      if(targetMod.equals(mod)) {
        return true;
      }
    }
    return false;
  }

  @Override
  public boolean doesFilterCaptureStack(NetworkedInventory inv, ItemStack item) {
    return false;
  }

  @Override
  public boolean isSticky() {
    return false;
  }

  @Override
  public boolean isValid() {
    return true;
  }

  @Override
  public List<Slot> getSlots() {
    return Collections.emptyList();
  }

  @Override
  public int getSlotCount() {
    return 0;
  }

  @Override
  public void readFromNBT(NBTTagCompound nbtRoot) {
    for (int i = 0; i < mods.length; i++) {
      String mod = nbtRoot.getString("mod" + i);
      if(mod == null || mod.isEmpty() || "-".equals(mod)) {
        mods[i] = null;
      } else {
        mods[i] = mod;
      }
    }
  }

  @Override
  public void writeToNBT(NBTTagCompound nbtRoot) {
    for (int i = 0; i < mods.length; i++) {
      String mod = mods[i];
      if(mod == null || mod.trim().isEmpty()) {
        nbtRoot.setString("mod" + i, "-");
      } else {
        nbtRoot.setString("mod" + i, mod);
      }
    }
  }

}
TOP

Related Classes of crazypants.enderio.conduit.item.filter.ModItemFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.