package joshie.harvest.core.tile;
import joshie.harvest.api.npc.gift.GiftCategory;
import joshie.harvest.core.base.tile.TileStand;
import joshie.harvest.core.helpers.EntityHelper;
import joshie.harvest.npcs.NPCHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.UUID;
import static tehnut.buttons.config.ConfigHandler.categories;
public class TileFestivalPot extends TileStand {
private final Map<UUID, ItemStack> data = new HashMap<>();
public boolean setContents(@Nullable EntityPlayer player, ItemStack stack) {
if (player == null || data.containsKey(EntityHelper.getPlayerUUID(player))) return false;
ItemStack insert = stack.splitStack(1);
data.put(EntityHelper.getPlayerUUID(player), insert);
saveAndRefresh();
return true;
}
public ItemStack getContents(EntityPlayer player) {
return data.get(EntityHelper.getPlayerUUID(player));
}
@Override
public ItemStack removeContents() {
return null; //Can't remove what you put in
}
private int getScoreFromStack(ItemStack stack) {
GiftCategory primary = NPCHelper.INSTANCE.getGifts().getRegistry().getValueOf(stack);
if (primary != null) {
switch (primary) {
case BUILDING:
case MONSTER:
case JUNK:
return 1;
case GEM:
case MINERAL:
return 2;
case KNOWLEDGE:
case MAGIC:
case WOOL:
return 3;
case FLOWER:
case PLANT:
return 4;
case FISH:
return 5;
case MEAT:
case EGG:
case MILK:
return 6;
case COOKING:
return 7;
case VEGETABLE:
return 8;
case FRUIT:
return 9;
case HERB:
return 10;
}
}
return 0;
}
public int getScore() {
double score = 0;
for (ItemStack stack: data.values()) {
score += getScoreFromStack(stack);
}
return (int) (score / data.size());
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
NBTTagList list = nbt.getTagList("Data", 10);
for (int i = 0; i < list.tagCount(); i++) {
NBTTagCompound tag = list.getCompoundTagAt(i);
UUID uuid = UUID.fromString(tag.getString("UUID"));
ItemStack stack = ItemStack.loadItemStackFromNBT(tag.getCompoundTag("Data"));
data.put(uuid, stack);
}
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
NBTTagList list = new NBTTagList();
for (Entry<UUID, ItemStack> entry: data.entrySet()) {
NBTTagCompound tag = new NBTTagCompound();
tag.setString("UUID", entry.getKey().toString());
tag.setTag("Data", entry.getValue().writeToNBT(new NBTTagCompound()));
list.appendTag(tag);
}
nbt.setTag("Data", list);
return nbt;
}
}