Implement calculated value for blocks. (#260)

It is ~ value, as calculation formula cannot be applied per block. At least I think so.

Part of #192
This commit is contained in:
BONNe 2022-06-16 17:38:09 +03:00 committed by GitHub
parent 4948689fe8
commit 1914fc11e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 3 deletions

View File

@ -180,8 +180,16 @@ public class DetailsPanel
{ {
sorter = (o1, o2) -> sorter = (o1, o2) ->
{ {
int o1Value = this.addon.getBlockConfig().getBlockValues().getOrDefault(o1.getKey(), 0); int blockLimit = this.addon.getBlockConfig().getBlockLimits().getOrDefault(o1.getKey(), 0);
int o2Value = this.addon.getBlockConfig().getBlockValues().getOrDefault(o2.getKey(), 0); int o1Count = blockLimit > 0 ? Math.min(o1.getValue(), blockLimit) : o1.getValue();
blockLimit = this.addon.getBlockConfig().getBlockLimits().getOrDefault(o2.getKey(), 0);
int o2Count = blockLimit > 0 ? Math.min(o2.getValue(), blockLimit) : o2.getValue();
long o1Value = (long) o1Count *
this.addon.getBlockConfig().getBlockValues().getOrDefault(o1.getKey(), 0);
long o2Value = (long) o2Count *
this.addon.getBlockConfig().getBlockValues().getOrDefault(o2.getKey(), 0);
if (o1Value == o2Value) if (o1Value == o2Value)
{ {
@ -192,7 +200,7 @@ public class DetailsPanel
} }
else else
{ {
return Integer.compare(o2Value, o1Value); return Long.compare(o2Value, o1Value);
} }
}; };
} }
@ -659,12 +667,17 @@ public class DetailsPanel
String count = this.user.getTranslationOrNothing(reference + "count", String count = this.user.getTranslationOrNothing(reference + "count",
"[number]", String.valueOf(materialCount.getValue())); "[number]", String.valueOf(materialCount.getValue()));
long calculatedValue = (long) Math.min(blockLimit > 0 ? blockLimit : Integer.MAX_VALUE, materialCount.getValue()) * blockValue;
String valueText = calculatedValue > 0 ? this.user.getTranslationOrNothing(reference + "calculated",
"[number]", String.valueOf(calculatedValue)) : "";
if (template.description() != null) if (template.description() != null)
{ {
builder.description(this.user.getTranslation(this.world, template.description(), builder.description(this.user.getTranslation(this.world, template.description(),
"[description]", description, "[description]", description,
"[id]", blockId, "[id]", blockId,
"[value]", value, "[value]", value,
"[calculated]", valueText,
"[limit]", limit, "[limit]", limit,
"[count]", count). "[count]", count).
replaceAll("(?m)^[ \\t]*\\r?\\n", ""). replaceAll("(?m)^[ \\t]*\\r?\\n", "").

View File

@ -96,12 +96,14 @@ level:
[description] [description]
[count] [count]
[value] [value]
[calculated]
[limit] [limit]
[id] [id]
id: "&7 Block id: &e [id]" id: "&7 Block id: &e [id]"
value: "&7 Block value: &e [number]" value: "&7 Block value: &e [number]"
limit: "&7 Block limit: &e [number]" limit: "&7 Block limit: &e [number]"
count: "&7 Number of blocks: &e [number]" count: "&7 Number of blocks: &e [number]"
calculated: "&7 Calculated value: &e [number]"
all_blocks: all_blocks:
name: "&f&l All Blocks" name: "&f&l All Blocks"
description: |- description: |-