package matteroverdrive.data.quest.logic; import matteroverdrive.api.quest.QuestStack; import matteroverdrive.data.quest.QuestItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * Created by Simeon on 12/24/2015. */ public abstract class QuestLogicRandomItem extends AbstractQuestLogic { QuestItem[] items; boolean randomItem; protected void init(QuestItem[] questItems) { this.items = questItems; this.randomItem = true; } protected void initItemType(Random random, QuestStack questStack) { if (randomItem) { List<Integer> avalibleBlocks = new ArrayList<>(); for (int i = 0;i < items.length;i++) { ItemStack itemStack = items[i].getItemStack(); if (itemStack != null) { avalibleBlocks.add(i); } } if (avalibleBlocks.size() > 0) { setItemType(questStack,avalibleBlocks.get(random.nextInt(avalibleBlocks.size()))); } }else { for (int i = 0;i < items.length;i++) { ItemStack itemStack = items[i].getItemStack(); if (itemStack != null) { setItemType(questStack,i); return; } } } } @Override public boolean canAccept(QuestStack questStack, EntityPlayer entityPlayer) { for (QuestItem item : items) { if (!item.canItemExist()) { return false; } } return true; } public ItemStack getItem(QuestStack questStack) { return items[getItemType(questStack)].getItemStack(); } public int getItemType(QuestStack questStack) { if (hasTag(questStack)) { return getTag(questStack).getByte("ItemType"); } return 0; } public void setItemType(QuestStack questStack,int itemType) { initTag(questStack); getTag(questStack).setByte("ItemType",(byte) itemType); } public QuestLogicRandomItem setRandomItem(boolean randomItem) { this.randomItem = randomItem; return this; } }