Hey guys im just finishing up my custom quest but i ran into a little problem again. Basically i need to be able to let people take the quest and the guy generates a random item that the person needs to get from a list. problem i have is that unless i restart the server that item is always the same, which im almost positive is caused because the int is generated not when the person needs to find the item but when server starts...idk how to explain but here are the .javas im using for this

luckQuest.java
Code:
package server.model.players.quests;

import server.model.items.Item;
import server.Server;
import server.model.players.Client;
import server.util.Misc;

public class luckQuest {


	public static int[][] rewardItems = {
		
		{995, 386, -1},
		{995, 386, 4151, 535, 537, 1378, 4588, 9244, -1},
		{2435, 995, 2581, 9244, 3025, 4152, 4213, 4753, 4745, 4709, 4716, 4724, 4732, 4740, 11235, 11212, -1}
	};
	public static int[][] itemToGet = {
		{1512, 1518, 1522, 437, 441, 454, 378, -1},
		{2360, 2354, 67, -1}, 
		{116, 230, 995, 527, 844, -1}
	};
	public static int level1 = itemToGet[0][Misc.random(7)];
	public static int level2 = itemToGet[1][Misc.random(3)];
	public static int level3 = itemToGet[2][Misc.random(5)];
	public static int value5 = 0;
	
	
	 public static int amountNeeded(Client c) {
			if (c.luckQuest == 1) {
				switch(level1){
				case 1512:
				case 1518:
				case 1522:
				case 437:
				case 441:
				case 454:
				case 378:
					value5 = 40;
				break;
				}
			} else if (c.luckQuest == 2) {
				switch(level2) {
				case 2360:
					value5 = 20;
				break;
				case 2354:
					value5 = 30;
				break;
				case 67:
					value5 = 50;
				break;
				}
			} else if (c.luckQuest == 3) {
				switch(level3){
				case 116:
					value5 = 20;
				break;
				case 230:
					value5 = 60;
				break;
				case 995:
					value5 = 100000;
				break;
				case 527:
					value5 = 50;
				break;
				case 844:
					value5 = 30;
				break;
				}
			}
			return value5;
	}
	 public static void rewardPlayer(Client c) {
		int reward1 = rewardItems[0][Misc.random(2)];
		int reward2 = rewardItems[1][Misc.random(8)];
		int reward3 = rewardItems[2][Misc.random(16)];
		if (c.luckQuest == 1) {
			if (reward1 == 995) {
				c.getItems().addItem(995, Misc.random(500000));
			} else if (reward1 == 386) {
				c.getItems().addItem(386, Misc.random(500));
			}
		//reward2 {995, 386, 4151, 535, 537, 1378, 4588, 9244},
		} else if (c.luckQuest == 2) {
			switch(reward2) {
				case 995:
				c.getItems().addItem(995, Misc.random(1000000));
				break;
				case 386:
				c.getItems().addItem(386, Misc.random(1000));
				break;
				case 4151:
				c.getItems().addItem(4151, 1);
				break;
				case 535:
				c.getItems().addItem(535, Misc.random(200));
				break;
				case 537:
				c.getItems().addItem(537, Misc.random(100));
				break;
				case 1378:
				c.getItems().addItem(1378, Misc.random(5));
				break;
				case 4588:
				c.getItems().addItem(4588, Misc.random(10));
				break;
				case 9244:
				c.getItems().addItem(9244, Misc.random(1000));
				break;
				
			}
		//reward3 {2435, 995, 2581, 9244, 3025, 4152, 4213, 4753, 4745, 4709, 4716, 4724, 4732, 4740, 11235, 11212}
		} else if (c.luckQuest == 3) {
			switch(reward3) {
				case 995:
				c.getItems().addItem(995, Misc.random(3000000));
				break;
				case 2435:
				c.getItems().addItem(2435, Misc.random(500));
				break;
				case 2581:
				c.getItems().addItem(2581, 1);
				break;
				case 9244:
				c.getItems().addItem(9244, Misc.random(1000));
				break;
				case 3025:
				c.getItems().addItem(3025, Misc.random(1000));
				break;
				case 4152:
				c.getItems().addItem(4152, Misc.random(2));
				break;
				case 4213:
				c.getItems().addItem(4213, Misc.random(2));
				break;
				case 4753:
				c.getItems().addItem(4753, Misc.random(1));
				break;
				case 4745:
				c.getItems().addItem(4745, Misc.random(1));
				break;
				case 4709:
				c.getItems().addItem(4709, Misc.random(1));
				break;
				case 4716:
				c.getItems().addItem(4716, 1);
				break;
				case 4724:
				c.getItems().addItem(4724, Misc.random(1));
				break;
				case 4732:
				c.getItems().addItem(4732, Misc.random(1));
				break;
				case 4740:
				c.getItems().addItem(4740, Misc.random(1000));
				break;
				case 11235:
				c.getItems().addItem(11235, Misc.random(1));
				break;
				case 11212:
				c.getItems().addItem(11212, Misc.random(100));
				break;
			}
		}
		
	}
	public static void showQuest(Client c) {
			if (c.luckQuest == 0) {
				c.getPA().sendFrame126("To start this quest I must first speak with", 8147);
				c.getPA().sendFrame126("The farmer in the gamblers lounge.", 8148);
			} else if (c.luckQuest == 1) {
				c.getPA().sendFrame126("@GRE@To start this quest I must first speak with", 8147);
				c.getPA().sendFrame126("@GRE@The farmer in the gamblers lounge.", 8148);
				c.getPA().sendFrame126("I need to find " + amountNeeded(c) + " of " + Item.getItemName(level1) + "?", 8149);
			} else if (c.luckQuest == 2) {
				c.getPA().sendFrame126("@GRE@To start this quest I must first speak with", 8147);
				c.getPA().sendFrame126("@GRE@The farmer in the gamblers lounge.", 8148);
				c.getPA().sendFrame126("I need to find " + amountNeeded(c) + " of " + Item.getItemName(level2) + "?", 8149);
			} else if (c.luckQuest == 3) {
				c.getPA().sendFrame126("@GRE@To start this quest I must first speak with", 8147);
				c.getPA().sendFrame126("@GRE@The farmer in the gamblers lounge.", 8148);
				c.getPA().sendFrame126("I need to find " + amountNeeded(c) + " of " + Item.getItemName(level3) + "?", 8149);
			}
			c.getPA().showInterface(8134);
		}
		
		
}
and i guess actionhandler
Code:
case 36:
				if (c.luckQuest == 0) { // so it displays first chat at beginning
					c.getDH().sendDialogues(100, npcType);
				} else if (c.luckQuest == 1) { // so it displays first chat at beginning
					if (!c.getItems().playerHasItem(luckQuest.level1, luckQuest.amountNeeded(c))){
						c.getDH().sendDialogues(102, npcType);
					} else {
						c.getItems().deleteItem(luckQuest.level1, luckQuest.amountNeeded(c));
						c.getDH().sendDialogues(103, npcType);
					}
				} else if (c.luckQuest == 2) { // so it displays first chat at beginning
					if (!c.getItems().playerHasItem(luckQuest.level2, luckQuest.amountNeeded(c))){
						c.getDH().sendDialogues(104, npcType);
					} else {
						c.getItems().deleteItem(luckQuest.level2, luckQuest.amountNeeded(c));
						c.getDH().sendDialogues(105, npcType);
					}
				} else if (c.luckQuest == 3) { // so it displays first chat at beginning
					if (!c.getItems().playerHasItem(luckQuest.level3, luckQuest.amountNeeded(c))){
						c.getDH().sendDialogues(106, npcType);
					} else {
						c.getItems().deleteItem(luckQuest.level3, luckQuest.amountNeeded(c));
						c.getDH().sendDialogues(107, npcType);
						luckQuest.rewardPlayer(c);
						c.luckQuest = 0;
					}
				}
			break;
and clicking buttons (under case 9157
Code:
 else if (c.dialogueAction == 101) {
					c.luckQuest += 1;
					c.getDH().sendDialogues(102, 36);
					c.getPA().questTab();
					return;
					
				} else if (c.dialogueAction == 103) {
					c.luckQuest += 1;
					c.getDH().sendDialogues(104, 36);
					c.getPA().questTab();
					return;
				} else if (c.dialogueAction == 105) {
					c.luckQuest += 1;
					c.getDH().sendDialogues(106, 36);
					c.getPA().questTab();
					return;
so basically i need a way to make it find an item whenever the player take the quest, and then again if they choose to continue etc. all help appreciated thanks xD