From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/DigDurabilityEnchantment.cpp | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Minecraft.World/DigDurabilityEnchantment.cpp (limited to 'Minecraft.World/DigDurabilityEnchantment.cpp') diff --git a/Minecraft.World/DigDurabilityEnchantment.cpp b/Minecraft.World/DigDurabilityEnchantment.cpp new file mode 100644 index 00000000..f2ef1656 --- /dev/null +++ b/Minecraft.World/DigDurabilityEnchantment.cpp @@ -0,0 +1,36 @@ +#include "stdafx.h" +#include "net.minecraft.world.item.h" +#include "DigDurabilityEnchantment.h" + +DigDurabilityEnchantment::DigDurabilityEnchantment(int id, int frequency) : Enchantment(id, frequency, EnchantmentCategory::digger) +{ + setDescriptionId(IDS_ENCHANTMENT_DURABILITY); +} + +int DigDurabilityEnchantment::getMinCost(int level) +{ + return 5 + (level - 1) * 8; +} + +int DigDurabilityEnchantment::getMaxCost(int level) +{ + return Enchantment::getMinCost(level) + 50; +} + +int DigDurabilityEnchantment::getMaxLevel() +{ + return 3; +} + +bool DigDurabilityEnchantment::canEnchant(shared_ptr item) +{ + if (item->isDamageableItem()) return true; + return Enchantment::canEnchant(item); +} + +bool DigDurabilityEnchantment::shouldIgnoreDurabilityDrop(shared_ptr item, int level, Random *random) +{ + ArmorItem *armor = dynamic_cast(item->getItem()); + if (armor && random->nextFloat() < 0.6f) return false; + return random->nextInt(level + 1) > 0; +} \ No newline at end of file -- cgit v1.2.3