- Баллы
- 88
- Ник в Minecraft
- Skar
Вроде этот - noppes.npcs.quests.QuestItemкакие хоть классы трогать нужно?
Код:
public class QuestItem extends QuestInterface {
private static final char[] HashMap = null;
public NpcMiscInventory items = new NpcMiscInventory(3);
public void readEntityFromNBT(NBTTagCompound compound) {
this.items.setFromNBT(compound.getCompoundTag("Items"));
}
public void writeEntityToNBT(NBTTagCompound compound) {
compound.setCompoundTag("Items", this.items.getToNBT());
}
public boolean isCompleted(EntityPlayer player) {
HashMap map = this.getProcessSet(player);
Iterator i$ = this.items.items.values().iterator();
while(i$.hasNext()) {
ItemStack reqItem = (ItemStack)i$.next();
boolean done = false;
Iterator i$1 = map.values().iterator();
while(true) {
if(i$1.hasNext()) {
ItemStack item = (ItemStack)i$1.next();
if(!NoppesUtilPlayer.compareItems(reqItem, item, false) || item.stackSize < reqItem.stackSize) {
continue;
}
done = true;
}
if(!done) {
return false;
}
break;
}
}
return true;
}
public HashMap getProcessSet(EntityPlayer player) {
HashMap map = new HashMap();
Iterator arr$ = this.items.items.keySet().iterator();
int len$;
ItemStack item;
while(arr$.hasNext()) {
len$ = ((Integer)arr$.next()).intValue();
ItemStack i$ = (ItemStack)this.items.items.get(Integer.valueOf(len$));
if(i$ != null) {
item = i$.copy();
item.stackSize = 0;
map.put(Integer.valueOf(len$), item);
}
}
ItemStack[] var9 = player.inventory.mainInventory;
len$ = var9.length;
for(int var10 = 0; var10 < len$; ++var10) {
item = var9[var10];
if(item != null) {
Iterator i$1 = map.values().iterator();
while(i$1.hasNext()) {
ItemStack questItem = (ItemStack)i$1.next();
if(NoppesUtilPlayer.compareItems(questItem, item, false)) {
questItem.stackSize += item.stackSize;
}
}
}
}
return map;
}
public void handleComplete(EntityPlayer player) {
Iterator i$ = this.items.items.values().iterator();
while(i$.hasNext()) {
ItemStack questitem = (ItemStack)i$.next();
int stacksize = questitem.stackSize;
for(int i = 0; i < player.inventory.mainInventory.length; ++i) {
ItemStack item = player.inventory.mainInventory[i];
if(item != null && NoppesUtilPlayer.compareItems(item, questitem, false)) {
int size = item.stackSize;
if(stacksize - size >= 0) {
player.inventory.setInventorySlotContents(i, (ItemStack)null);
item.splitStack(size);
} else {
item.splitStack(stacksize);
}
stacksize -= size;
if(stacksize <= 0) {
break;
}
}
}
}
}
public Vector getQuestLogStatus(EntityPlayer player) {
Vector vec = new Vector();
HashMap map = this.getProcessSet(player);
Iterator i$ = map.keySet().iterator();
while(i$.hasNext()) {
int slot = ((Integer)i$.next()).intValue();
ItemStack item = (ItemStack)map.get(Integer.valueOf(slot));
ItemStack quest = (ItemStack)this.items.items.get(Integer.valueOf(slot));
if(item != null) {
String process = item.stackSize + "";
if(item.stackSize > quest.stackSize) {
process = quest.stackSize + "";
}
process = process + "/" + quest.stackSize + "";
vec.add(item.getDisplayName() + ": " + process);
}
}
return vec;
}
}