package joshie.harvest.core;
import joshie.harvest.api.HFApi;
import joshie.harvest.buildings.HFBuildings;
import joshie.harvest.cooking.HFCooking;
import joshie.harvest.cooking.item.ItemMeal.Meal;
import joshie.harvest.core.lib.CreativeSort;
import joshie.harvest.core.lib.HFModInfo;
import joshie.harvest.core.util.annotations.HFLoader;
import joshie.harvest.core.util.interfaces.ICreativeSorted;
import joshie.harvest.crops.HFCrops;
import joshie.harvest.fishing.HFFishing;
import joshie.harvest.fishing.item.ItemFish.Fish;
import joshie.harvest.mining.HFMining;
import joshie.harvest.tools.HFTools;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import static joshie.harvest.mining.item.ItemMaterial.Material.ADAMANTITE;
@HFLoader(priority = 0)
public class HFTab extends CreativeTabs {
public static final HFTab TOWN = new HFTab("town");
public static final HFTab MINING = new HFTab("mining");
public static final HFTab FARMING = new HFTab("farming");
public static final HFTab COOKING = new HFTab("cooking");
public static final HFTab GATHERING = new HFTab("gathering");
public static final HFTab FISHING = new HFTab("fishing");
private ItemStack icon = new ItemStack(Items.GOLDEN_HOE);
public HFTab(String label) {
super(label);
setBackgroundImageName("hf.png");
setNoTitle();
}
@Override
@SideOnly(Side.CLIENT)
public String getTranslatedTabLabel() {
return HFModInfo.MODID + ".tab." + this.getTabLabel();
}
@Override
public ItemStack getIconItemStack() {
return icon;
}
@Override
public Item getTabIconItem() {
return icon.getItem();
}
@Override
public boolean hasSearchBar() {
return true;
}
@Override
public int getSearchbarWidth() {
return 69;
}
@Override
@SideOnly(Side.CLIENT)
public void displayAllRelevantItems(List<ItemStack> list) {
super.displayAllRelevantItems(list);
Collections.sort(list, new Alphabetical());
}
private static class Alphabetical implements Comparator<Object> {
@Override
public int compare(Object o1, Object o2) {
ItemStack stack1 = ((ItemStack) o1);
ItemStack stack2 = ((ItemStack) o2);
Item item1 = stack1.getItem();
Item item2 = stack2.getItem();
int value1 = 500;
int value2 = 500;
if (item1 instanceof ICreativeSorted) {
value1 = ((ICreativeSorted) item1).getSortValue(stack1);
} else if (HFApi.crops.getCropFromStack(stack1) != null) {
value1 = CreativeSort.CROPS;
}
if (item2 instanceof ICreativeSorted) {
value2 = ((ICreativeSorted) item2).getSortValue(stack2);
} else if (HFApi.crops.getCropFromStack(stack2) != null) {
value2 = CreativeSort.CROPS;
}
return value1 == value2 ? stack1.getDisplayName().compareTo(stack2.getDisplayName()) : value1 > value2 ? 1 : -1;
}
}
public void setStack(ItemStack stack) {
this.icon = stack;
}
public static void remap() {
HFTab.TOWN.setStack(new ItemStack(HFBuildings.STRUCTURES, 1, 0));
HFTab.MINING.setStack(HFMining.MATERIALS.getStackFromEnum(ADAMANTITE));
HFTab.FARMING.setStack(HFCrops.STRAWBERRY.getCropStack(1));
HFTab.COOKING.setStack(HFCooking.MEAL.getStackFromEnum(Meal.SALAD));
HFTab.GATHERING.setStack(new ItemStack(HFTools.AXE, 1, 0));
HFTab.FISHING.setStack(HFFishing.FISH.getStackFromEnum(Fish.PUPFISH));
}
}