Add icons to display quality

This commit is contained in:
MelnCat 2022-07-31 21:38:04 -07:00
parent 87fd5deb80
commit 5c56554db9
No known key found for this signature in database
GPG Key ID: B7EA2A8E2675488C
1 changed files with 65 additions and 15 deletions

View File

@ -112,8 +112,10 @@ public class BrewLore {
*/ */
public void updateIngredientLore(boolean qualityColor) { public void updateIngredientLore(boolean qualityColor) {
if (qualityColor && brew.hasRecipe() && !brew.isStripped()) { if (qualityColor && brew.hasRecipe() && !brew.isStripped()) {
String prefix = getQualityColor(brew.getIngredients().getIngredientQuality(brew.getCurrentRecipe())); int quality = brew.getIngredients().getIngredientQuality(brew.getCurrentRecipe());
addOrReplaceLore(Type.INGR, prefix, P.p.languageReader.get("Brew_Ingredients")); String prefix = getQualityColor(quality);
char icon = getQualityIcon(quality);
addOrReplaceLore(Type.INGR, prefix, P.p.languageReader.get("Brew_Ingredients"), " " + icon);
} else { } else {
removeLore(Type.INGR, P.p.languageReader.get("Brew_Ingredients")); removeLore(Type.INGR, P.p.languageReader.get("Brew_Ingredients"));
} }
@ -132,7 +134,7 @@ public class BrewLore {
if (ingredients.getCookedTime() > 1) { if (ingredients.getCookedTime() > 1) {
prefix = prefix + P.p.languageReader.get("Brew_MinutePluralPostfix"); prefix = prefix + P.p.languageReader.get("Brew_MinutePluralPostfix");
} }
addOrReplaceLore(Type.COOK, prefix, " " + P.p.languageReader.get("Brew_fermented")); addOrReplaceLore(Type.COOK, prefix, " " + P.p.languageReader.get("Brew_fermented"), " " + getQualityIcon(quality));
} else { } else {
removeLore(Type.COOK, P.p.languageReader.get("Brew_fermented")); removeLore(Type.COOK, P.p.languageReader.get("Brew_fermented"));
} }
@ -147,8 +149,9 @@ public class BrewLore {
if (brew.getDistillRuns() <= 0) return; if (brew.getDistillRuns() <= 0) return;
String prefix; String prefix;
byte distillRuns = brew.getDistillRuns(); byte distillRuns = brew.getDistillRuns();
int quality = brew.getIngredients().getDistillQuality(brew.getCurrentRecipe(), distillRuns);
if (qualityColor && !brew.isUnlabeled() && brew.hasRecipe()) { if (qualityColor && !brew.isUnlabeled() && brew.hasRecipe()) {
prefix = getQualityColor(brew.getIngredients().getDistillQuality(brew.getCurrentRecipe(), distillRuns)); prefix = getQualityColor(quality);
} else { } else {
prefix = "§7"; prefix = "§7";
} }
@ -158,9 +161,9 @@ public class BrewLore {
} }
} }
if (brew.isUnlabeled() && brew.hasRecipe() && distillRuns < brew.getCurrentRecipe().getDistillRuns()) { if (brew.isUnlabeled() && brew.hasRecipe() && distillRuns < brew.getCurrentRecipe().getDistillRuns()) {
addOrReplaceLore(Type.DISTILL, prefix, P.p.languageReader.get("Brew_LessDistilled")); addOrReplaceLore(Type.DISTILL, prefix, P.p.languageReader.get("Brew_LessDistilled"), " " + getQualityIcon(quality));
} else { } else {
addOrReplaceLore(Type.DISTILL, prefix, P.p.languageReader.get("Brew_Distilled")); addOrReplaceLore(Type.DISTILL, prefix, P.p.languageReader.get("Brew_Distilled"), " " + getQualityIcon(quality));
} }
} }
@ -173,8 +176,9 @@ public class BrewLore {
if (brew.isStripped()) return; if (brew.isStripped()) return;
String prefix; String prefix;
float age = brew.getAgeTime(); float age = brew.getAgeTime();
int quality = brew.getIngredients().getAgeQuality(brew.getCurrentRecipe(), age);
if (qualityColor && !brew.isUnlabeled() && brew.hasRecipe()) { if (qualityColor && !brew.isUnlabeled() && brew.hasRecipe()) {
prefix = getQualityColor(brew.getIngredients().getAgeQuality(brew.getCurrentRecipe(), age)); prefix = getQualityColor(quality);
} else { } else {
prefix = "§7"; prefix = "§7";
} }
@ -187,7 +191,7 @@ public class BrewLore {
prefix = prefix + P.p.languageReader.get("Brew_HundredsOfYears") + " "; prefix = prefix + P.p.languageReader.get("Brew_HundredsOfYears") + " ";
} }
} }
addOrReplaceLore(Type.AGE, prefix, P.p.languageReader.get("Brew_BarrelRiped")); addOrReplaceLore(Type.AGE, prefix, P.p.languageReader.get("Brew_BarrelRiped"), " " + getQualityIcon(quality));
} }
/** /**
@ -198,7 +202,7 @@ public class BrewLore {
public void updateWoodLore(boolean qualityColor) { public void updateWoodLore(boolean qualityColor) {
if (qualityColor && brew.hasRecipe() && !brew.isUnlabeled()) { if (qualityColor && brew.hasRecipe() && !brew.isUnlabeled()) {
int quality = brew.getIngredients().getWoodQuality(brew.getCurrentRecipe(), brew.getWood()); int quality = brew.getIngredients().getWoodQuality(brew.getCurrentRecipe(), brew.getWood());
addOrReplaceLore(Type.WOOD, getQualityColor(quality), P.p.languageReader.get("Brew_Woodtype")); addOrReplaceLore(Type.WOOD, getQualityColor(quality), P.p.languageReader.get("Brew_Woodtype"), " " + getQualityIcon(quality));
} else { } else {
removeLore(Type.WOOD, P.p.languageReader.get("Brew_Woodtype")); removeLore(Type.WOOD, P.p.languageReader.get("Brew_Woodtype"));
} }
@ -326,11 +330,24 @@ public class BrewLore {
* @param type The Type of BrewLore to replace * @param type The Type of BrewLore to replace
* @param prefix The Prefix to add to the line of lore * @param prefix The Prefix to add to the line of lore
* @param line The Line of Lore to add or replace * @param line The Line of Lore to add or replace
*/ */
public int addOrReplaceLore(Type type, String prefix, String line) { public int addOrReplaceLore(Type type, String prefix, String line) {
return addOrReplaceLore(type, prefix, line, "");
}
/**
* Adds or replaces a line of Lore.
* <p>Searches for type and if not found for Substring lore and replaces it
*
* @param type The Type of BrewLore to replace
* @param prefix The Prefix to add to the line of lore
* @param line The Line of Lore to add or replace
* @param suffix The Suffix to add to the line of lore
*/
public int addOrReplaceLore(Type type, String prefix, String line, String suffix) {
int index = type.findInLore(lore); int index = type.findInLore(lore);
if (index > -1) { if (index > -1) {
lore.set(index, type.id + prefix + line); lore.set(index, type.id + prefix + line + suffix);
return index; return index;
} }
@ -339,7 +356,7 @@ public class BrewLore {
if (index > -1) { if (index > -1) {
lore.remove(index); lore.remove(index);
} }
return addLore(type, prefix, line); return addLore(type, prefix, line, suffix);
} }
/** /**
@ -348,17 +365,28 @@ public class BrewLore {
* @param type The Type of BrewLore to add * @param type The Type of BrewLore to add
* @param prefix The Prefix to add to the line of lore * @param prefix The Prefix to add to the line of lore
* @param line The Line of Lore to add or add * @param line The Line of Lore to add or add
*/ */
public int addLore(Type type, String prefix, String line) { public int addLore(Type type, String prefix, String line) {
return addLore(type, prefix, line, "");
}
/**
* Adds a line of Lore in the correct ordering
*
* @param type The Type of BrewLore to add
* @param prefix The Prefix to add to the line of lore
* @param line The Line of Lore to add or add
* @param suffix The Suffix to add to the line of lore
*/
public int addLore(Type type, String prefix, String line, String suffix) {
lineAddedOrRem = true; lineAddedOrRem = true;
for (int i = 0; i < lore.size(); i++) { for (int i = 0; i < lore.size(); i++) {
Type existing = Type.get(lore.get(i)); Type existing = Type.get(lore.get(i));
if (existing != null && existing.isAfter(type)) { if (existing != null && existing.isAfter(type)) {
lore.add(i, type.id + prefix + line); lore.add(i, type.id + prefix + line + suffix);
return i; return i;
} }
} }
lore.add(type.id + prefix + line); lore.add(type.id + prefix + line + suffix);
return lore.size() - 1; return lore.size() - 1;
} }
@ -510,6 +538,28 @@ public class BrewLore {
return P.p.color(color); return P.p.color(color);
} }
/**
* Gets the icon representing a quality for use in lore
*
* @param quality The quality used for the icon
* @return The icon for the given quality
*/
public static char getQualityIcon(int quality) {
char icon;
if (quality > 8) {
icon = '\u2605';
} else if (quality > 6) {
icon = '\u2BEA';
} else if (quality > 4) {
icon = '\u2606';
} else if (quality > 2) {
icon = '\u2718';
} else {
icon = '\u2620';
}
return icon;
}
/** /**
* Type of Lore Line * Type of Lore Line
*/ */