Bug fixes

This commit is contained in:
HappyPikachu 2015-01-30 22:11:11 -05:00
parent c78a1aae05
commit 7c333095fc
9 changed files with 59 additions and 23 deletions

View File

@ -69,6 +69,11 @@ public class Event {
float health = -1; float health = -1;
Location teleport; Location teleport;
public int hashCode() {
assert false : "hashCode not designed";
return 42; // any arbitrary constant will do
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {

View File

@ -272,7 +272,10 @@ public class Quest {
} }
for (String q : blockQuests) { for (String q : blockQuests) {
if (quester.completedQuests.contains(q) || quester.currentQuests.containsKey(q)) { //TODO make sure this works
Quest questObject = new Quest();
questObject.name = q;
if (quester.completedQuests.contains(q) || quester.currentQuests.containsKey(questObject)) {
return false; return false;
} }
} }

View File

@ -139,10 +139,10 @@ public class Quester {
private static final long serialVersionUID = 5475202358792520975L; private static final long serialVersionUID = 5475202358792520975L;
@SuppressWarnings("unused") /*@SuppressWarnings("unused")
public void hardClear() { public void hardClear() {
super.clear(); super.clear();
} }*/
@Override @Override
public Integer put(String key, Integer val) { public Integer put(String key, Integer val) {
@ -318,11 +318,17 @@ public class Quester {
} }
public Stage getCurrentStage(Quest quest) { public Stage getCurrentStage(Quest quest) {
return quest.getStage(currentQuests.get(quest)); if (currentQuests.containsKey(quest)) {
return quest.getStage(currentQuests.get(quest));
}
return null;
} }
public QuestData getQuestData(Quest quest) { public QuestData getQuestData(Quest quest) {
return questData.get(quest); if (questData.containsKey(quest)) {
return questData.get(quest);
}
return null;
} }
public void takeQuest(Quest q, boolean override) { public void takeQuest(Quest q, boolean override) {
@ -609,7 +615,7 @@ public class Quester {
for (EntityType e2 : getQuestData(quest).mobsKilled) { for (EntityType e2 : getQuestData(quest).mobsKilled) {
if (e == e2) { if (e == e2) {
if (getQuestData(quest).mobNumKilled.size() > getQuestData(quest).mobsKilled.indexOf(e2) & getCurrentStage(quest).mobNumToKill.size() > getCurrentStage(quest).mobsToKill.indexOf(e)) { if (getQuestData(quest).mobNumKilled.size() > getQuestData(quest).mobsKilled.indexOf(e2) && getCurrentStage(quest).mobNumToKill.size() > getCurrentStage(quest).mobsToKill.indexOf(e)) {
if (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2)) < getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))) { if (getQuestData(quest).mobNumKilled.get(getQuestData(quest).mobsKilled.indexOf(e2)) < getCurrentStage(quest).mobNumToKill.get(getCurrentStage(quest).mobsToKill.indexOf(e))) {
@ -710,7 +716,7 @@ public class Quester {
for (Integer n2 : getQuestData(quest).citizensKilled) { for (Integer n2 : getQuestData(quest).citizensKilled) {
if (n.equals(n2)) { if (n.equals(n2)) {
if (getQuestData(quest).citizenNumKilled.size() > getQuestData(quest).citizensKilled.indexOf(n2) & getCurrentStage(quest).citizenNumToKill.size() > getCurrentStage(quest).citizensToKill.indexOf(n)) { if (getQuestData(quest).citizenNumKilled.size() > getQuestData(quest).citizensKilled.indexOf(n2) && getCurrentStage(quest).citizenNumToKill.size() > getCurrentStage(quest).citizensToKill.indexOf(n)) {
if (getQuestData(quest).citizenNumKilled.get(getQuestData(quest).citizensKilled.indexOf(n2)) < getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n))) { if (getQuestData(quest).citizenNumKilled.get(getQuestData(quest).citizensKilled.indexOf(n2)) < getCurrentStage(quest).citizenNumToKill.get(getCurrentStage(quest).citizensToKill.indexOf(n))) {

View File

@ -2618,7 +2618,15 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
if (config.contains("quests." + questName + ".guiDisplay")) { if (config.contains("quests." + questName + ".guiDisplay")) {
String item = config.getString("quests." + questName + ".guiDisplay"); String item = config.getString("quests." + questName + ".guiDisplay");
quest.guiDisplay = ItemUtil.readItemStack(item); try {
ItemStack stack = ItemUtil.readItemStack(item);
if (stack != null) {
quest.guiDisplay = stack;
}
} catch (Exception e) {
instance.getLogger().warning(item + " in items: Gui Display in Quest " + quest.name + "is not properly formatted!");
}
} }
@ -3514,8 +3522,11 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener,
deliveryMessages.addAll(config.getStringList("quests." + questName + ".stages.ordered." + s2 + ".delivery-messages")); deliveryMessages.addAll(config.getStringList("quests." + questName + ".stages.ordered." + s2 + ".delivery-messages"));
for (String item : itemsToDeliver) { for (String item : itemsToDeliver) {
// TODO
getLogger().severe("hello");
getLogger().info("hello");
getLogger().severe("item: " + item); getLogger().severe("item: " + item);
ItemStack is = ItemUtil.readItemStack(item); ItemStack is = ItemUtil.readItemStack("" + item);
if (is != null) { if (is != null) {

View File

@ -46,7 +46,7 @@ public class Stage {
for (Integer i : this) { for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i)); Integer other = otherList.get(this.indexOf(i));
if (other != i) { if (!other.equals(i)) {
return false; return false;
} }
} }
@ -75,7 +75,7 @@ public class Stage {
for (Integer i : this) { for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i)); Integer other = otherList.get(this.indexOf(i));
if (other != i) { if (!other.equals(i)) {
return false; return false;
} }
} }
@ -102,7 +102,7 @@ public class Stage {
for (Integer i : this) { for (Integer i : this) {
Integer other = otherList.get(this.indexOf(i)); Integer other = otherList.get(this.indexOf(i));
if (other != i) { if (!other.equals(i)) {
return false; return false;
} }
} }
@ -141,6 +141,11 @@ public class Stage {
public String startMessage = null; public String startMessage = null;
public String objectiveOverride = null; public String objectiveOverride = null;
public int hashCode() {
assert false : "hashCode not designed";
return 42; // any arbitrary constant will do
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {

View File

@ -73,13 +73,11 @@ public class ItemUtil implements ColorUtil {
} else { } else {
return 0; return 0;
} }
} }
//Formats -> name-name:amount-amount:data-data:enchantment-enchantment level:displayname-displayname:lore-lore: //Formats -> name-name:amount-amount:data-data:enchantment-enchantment level:displayname-displayname:lore-lore:
//Returns null if invalid format //Returns null if invalid format
public static ItemStack readItemStack(String data) { public static ItemStack readItemStack(String data) {
plugin.getLogger().severe("data: " + data);
if (data == null) { if (data == null) {
return null; return null;
} }
@ -89,9 +87,13 @@ public class ItemUtil implements ColorUtil {
ItemMeta meta = null; ItemMeta meta = null;
LinkedList<String> lore = new LinkedList<String>(); LinkedList<String> lore = new LinkedList<String>();
for (String arg : args) { for (String arg : args) {
if (arg.startsWith("name-")) { if (arg.startsWith("name-")) {
stack = new ItemStack(Material.matchMaterial(arg.substring(3))); //Attempt to match item name. Returns null if invalid format
try {
stack = new ItemStack(Material.matchMaterial(arg.substring(5)));
} catch (NullPointerException npe) {
return null;
}
meta = stack.getItemMeta(); meta = stack.getItemMeta();
} else if (arg.startsWith("amount-")) { } else if (arg.startsWith("amount-")) {
stack.setAmount(Integer.parseInt(arg.substring(7))); stack.setAmount(Integer.parseInt(arg.substring(7)));
@ -106,7 +108,6 @@ public class ItemUtil implements ColorUtil {
} else if (arg.startsWith("lore-")) { } else if (arg.startsWith("lore-")) {
lore.add(arg.substring(5)); lore.add(arg.substring(5));
} else { } else {
plugin.getLogger().severe("Malformed itemstack data in quests.yml: " + arg);
return null; return null;
} }

View File

@ -41,7 +41,7 @@ public class MiscUtil {
} }
if (type.equals("d")) { if (type.equals("d")) {
timeMilliSeconds += t * 86400000; timeMilliSeconds += t * 86400000L;
} else if (type.equals("h")) { } else if (type.equals("h")) {
timeMilliSeconds += t * 3600000; timeMilliSeconds += t * 3600000;
} else if (type.equals("m")) { } else if (type.equals("m")) {

View File

@ -220,6 +220,11 @@ public class QuestMob {
return qm; return qm;
} }
public int hashCode() {
assert false : "hashCode not designed";
return 42; // any arbitrary constant will do
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if ((o instanceof QuestMob) == false) { if ((o instanceof QuestMob) == false) {
@ -237,11 +242,11 @@ public class QuestMob {
return false; return false;
} }
if (entityType != other.entityType) { if (!entityType.equals(other.entityType)) {
return false; return false;
} }
if (dropChances != other.dropChances) { if (!dropChances.equals(other.dropChances)) {
return false; return false;
} }
@ -255,11 +260,11 @@ public class QuestMob {
return false; return false;
} }
if (spawnAmounts != other.spawnAmounts) { if (!spawnAmounts.equals(other.spawnAmounts)) {
return false; return false;
} }
if (spawnLocation != other.spawnLocation) { if (!spawnLocation.equals(other.spawnLocation)) {
return false; return false;
} }

View File

@ -6,7 +6,7 @@ quests:
redo-delay: 1800000 redo-delay: 1800000
requirements: requirements:
items: items:
- name-wooden_pickaxe:amount-1 - name-wood_pickaxe:amount-1
remove-items: remove-items:
- false - false
fail-requirement-message: '<red>You must have a <purple>Wooden Pickaxe<red> first.' fail-requirement-message: '<red>You must have a <purple>Wooden Pickaxe<red> first.'