Compare commits

...

2 Commits

Author SHA1 Message Date
hypercross bb0a3b0b8e fix: enchanted items 2025-12-03 23:07:25 +08:00
hypercross 210e149df2 fix: enchantment books 2025-12-03 23:03:07 +08:00
1 changed files with 13 additions and 12 deletions

View File

@ -172,10 +172,10 @@ function roll(list, random){
*/
function genEnchanted(ids, enchant_pool, enchant_rolls, random, damage ){
const id = roll(ids, random);
const item = Item.of(id);
let item = Item.of(id);
if(damage) {
const dmg = Math.floor(item.maxDamage * (0.2 + 0.1 * random.nextFloat()));
const dmg = Math.floor(item.maxDamage * (0.6 + 0.3 * random.nextFloat()));
item.setDamageValue(dmg);
}
@ -188,7 +188,7 @@ function genEnchanted(ids, enchant_pool, enchant_rolls, random, damage ){
}
for(const [enchant, level] of Object.entries(enchantments)){
item.enchant(enchant, level);
item = item.enchant(enchant, level);
}
return item;
@ -355,6 +355,16 @@ MoreJSEvents.villagerTrades((event) => {
offer.setVillagerExperience(5);
offer.setPriceMultiplier(0.05);
});
// a trade for each gem
let trade = null;
for(const gem of gems){
trade = VillagerUtils.createEnchantedItemTrade(
['8x emerald', gem],
'enchanted_book',
);
trade.enchantments(enchantments);
event.addTrade(prof, 3, trade);
}
// 2 for the rest
for(let i = 0; i < 2; i ++) {
// level 4
@ -365,15 +375,6 @@ MoreJSEvents.villagerTrades((event) => {
offer.setVillagerExperience(1);
offer.setPriceMultiplier(0.05);
});
// level 3
event.addCustomTrade(prof, 3, (offer, entity, random) => {
offer.setFirstInput('8x emerald');
offer.setSecondInput(roll(gems, random));
offer.setOutput(genEnchanted(['enchanted_book'], enchantments, rolls+1, random, false));
offer.setMaxUses(1);
offer.setVillagerExperience(1);
offer.setPriceMultiplier(0.2);
});
// level 2
if(staples.length > 0)
event.addCustomTrade(prof, 2, (offer, entity, random) => {