Skip to content

Commit 7eefab7

Browse files
committed
金床使用時のコスト計算を修正
・エンチャント本にも金床使用数が加算されるように修正
1 parent eeb992e commit 7eefab7

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.tonbei.scribe</groupId>
88
<artifactId>Scribe</artifactId>
9-
<version>2.0.0</version>
9+
<version>2.1.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>Scribe</name>

src/main/java/com/tonbei/scribe/Scribe.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public class Scribe extends JavaPlugin implements Listener {
3030

3131
private static final int MAX_ENCHANT_LEVEL = 10;
3232
private static final int MAX_ANVIL_USE_COUNT = 4;
33+
private static final int MAX_ANVIL_PENALTY = (int) Math.pow(2, MAX_ANVIL_USE_COUNT) - 1;
3334

3435
private static final Map<Enchantment, Integer> ENCHANTMENT_COST;
3536

@@ -164,25 +165,30 @@ public void onItemPlaced(PrepareAnvilEvent e) {
164165

165166
if (cost <= 0) return;
166167

167-
if (!isEnchantedBook) {
168-
if (first.getItemMeta() instanceof Repairable) {
169-
repairCost = ((Repairable) first.getItemMeta()).getRepairCost();
170-
cost += repairCost;
171-
repairCost = (int) Math.round(Math.pow(2, Math.min((int) Math.round((Math.log(repairCost + 1) / Math.log(2))) + 1, MAX_ANVIL_USE_COUNT))) - 1;
172-
}
168+
if (first.getItemMeta() instanceof Repairable) {
169+
repairCost = ((Repairable) first.getItemMeta()).getRepairCost();
170+
cost += repairCost;
171+
repairCost = Math.min(2 * repairCost + 1, MAX_ANVIL_PENALTY);
172+
}
173+
174+
if (second.getItemMeta() instanceof Repairable) {
175+
int secondRepairCost = ((Repairable) second.getItemMeta()).getRepairCost();
176+
cost += secondRepairCost;
177+
repairCost = Math.min(MAX_ANVIL_PENALTY, Math.max(repairCost, 2 * secondRepairCost + 1));
173178
}
174179

175180
ItemStack resultItem = first.clone();
181+
if (resultItem.getItemMeta() instanceof Repairable) {
182+
ItemMeta repairableMeta = resultItem.getItemMeta();
183+
((Repairable) repairableMeta).setRepairCost(repairCost);
184+
resultItem.setItemMeta(repairableMeta);
185+
}
186+
176187
if (isEnchantedBook) {
177188
EnchantmentStorageMeta bookMeta = (EnchantmentStorageMeta) resultItem.getItemMeta();
178189
enchantments.forEach((enchantment, level) -> bookMeta.addStoredEnchant(enchantment, level, true));
179190
resultItem.setItemMeta(bookMeta);
180191
} else {
181-
if (resultItem.getItemMeta() instanceof Repairable) {
182-
ItemMeta repairableMeta = resultItem.getItemMeta();
183-
((Repairable) repairableMeta).setRepairCost(repairCost);
184-
resultItem.setItemMeta(repairableMeta);
185-
}
186192
resultItem.addUnsafeEnchantments(enchantments);
187193
}
188194

0 commit comments

Comments
 (0)