Compare commits

..

No commits in common. "dfd0f54ef417aa4c2e45c9c94c328029832b4aa1" and "29fe7de4dda06102cf3110e424740aac272512f4" have entirely different histories.

1 changed files with 13 additions and 18 deletions

View File

@ -42,9 +42,9 @@ const enchantment_list = {
shepherd: ['knockback', 'aqua_affinity'], shepherd: ['knockback', 'aqua_affinity'],
toolsmith: ['silk_touch', 'fortune'], toolsmith: ['silk_touch', 'fortune'],
weaponsmith: ['sharpness', 'fire_aspect'], weaponsmith: ['sharpness', 'fire_aspect'],
delightchef: ['flame', 'fire_aspect'], 'chefsdelight:delightchef': ['flame', 'fire_aspect'],
delightcook: ['flame', 'fire_aspect'], 'chefsdelight:delightcook': ['flame', 'fire_aspect'],
carpenter: ['knockback', 'fortune'], 'sawmill:carpenter': ['knockback', 'fortune'],
}; };
// level 2 villagers sell consumables for 2 emerald // level 2 villagers sell consumables for 2 emerald
@ -84,11 +84,11 @@ const consumables = {
// sword, axe // sword, axe
weaponsmith: ['iron_sword', 'iron_axe', 'golden_sword', 'golden_axe'], weaponsmith: ['iron_sword', 'iron_axe', 'golden_sword', 'golden_axe'],
// rice, spaghetti, dough, crust // rice, spaghetti, dough, crust
delightchef: ['8x farmersdelight:rice', '10x farmersdelight:raw_pasta', '10x farmersdelight:crust', '16x sugar'], 'chefsdelight:delightchef': ['8x farmersdelight:rice', '10x farmersdelight:raw_pasta', '10x farmersdelight:crust', '16x sugar'],
// cut raw meat // cut raw meat
delightcook: ['16x bowl', '16x glass_bottle', '1x bucket', '8x farmersdelight:minced_beef', '8x farmersdelight:bacon'], 'chefsdelight:delightcook': ['16x bowl', '16x glass_bottle', '1x bucket', '8x farmersdelight:minced_beef', '8x farmersdelight:bacon'],
// planks // planks
carpenter: ['32x oak_planks', '32x spruce_planks', '32x birch_planks', '32x jungle_planks', '32x pine_planks', '32x bamboo_planks', 'sawmill:carpenter': ['32x oak_planks', '32x spruce_planks', '32x birch_planks', '32x jungle_planks', '32x pine_planks', '32x bamboo_planks',
'32x cherry_planks'], '32x cherry_planks'],
}; };
@ -136,7 +136,6 @@ const food_list = [
* @returns {string} * @returns {string}
*/ */
function roll(list, random){ function roll(list, random){
if (list == null) throw new Error("list not valid...");
return list[Math.floor(random.nextFloat() * list.length)]; return list[Math.floor(random.nextFloat() * list.length)];
} }
@ -184,14 +183,8 @@ MoreJSEvents.villagerTrades((event) => {
event.removeVanillaTrades(); event.removeVanillaTrades();
event.removeModdedTrades(); event.removeModdedTrades();
const professions = VillagerUtils.getProfessions(); const professions = VillagerUtils.getProfessions();
professions.forEach(prof => { for(const prof of professions){
const profName = prof.name(); const profName = prof.name();
if(profName === 'nitwit') return;
const rolls = enchant_consumables[profName] || 0;
const enchantments = enchantment_list[profName];
const staples = consumables[profName];
if(!enchantments) throw new Error("No enchantments for " + profName);
if(!staples) throw new Error("No staples for " + profName);
// 1 level 5 trade // 1 level 5 trade
event.addCustomTrade(prof, 5, (offer, entity, random) => { event.addCustomTrade(prof, 5, (offer, entity, random) => {
offer.setFirstInput(roll(feast_list, random)); offer.setFirstInput(roll(feast_list, random));
@ -212,18 +205,20 @@ MoreJSEvents.villagerTrades((event) => {
}); });
// level 3 // level 3
event.addCustomTrade(prof, 3, (offer, entity, random) => { event.addCustomTrade(prof, 3, (offer, entity, random) => {
const rolls = 1 + (enchant_consumables[profName] || 0);
offer.setFirstInput(roll(gems, random)); offer.setFirstInput(roll(gems, random));
offer.setSecondInput('8x emerald'); offer.setSecondInput('8x emerald');
offer.setOutput(genEnchanted(['enchanted_book'], enchantments, rolls+1, random, false)); offer.setOutput(genEnchanted(['enchanted_book'], enchantment_list[profName], rolls, random, false));
offer.setMaxUses(1); offer.setMaxUses(1);
offer.setVillagerExperience(1); offer.setVillagerExperience(1);
offer.setPriceMultiplier(1); offer.setPriceMultiplier(1);
}); });
// level 2 // level 2
event.addCustomTrade(prof, 2, (offer, entity, random) => { event.addCustomTrade(prof, 2, (offer, entity, random) => {
const rolls = enchant_consumables[profName] || 0;
offer.setFirstInput('2x emerald'); offer.setFirstInput('2x emerald');
if(rolls > 0) offer.setOutput(genEnchanted(staples, enchantments, rolls, random, true)); if(rolls > 0) offer.setOutput(genEnchanted(consumables[profName], enchantment_list[profName], rolls, random, true));
else offer.setOutput(roll(staples, random)); else offer.setOutput(roll(consumables[profName], random));
offer.setMaxUses(1); offer.setMaxUses(1);
offer.setVillagerExperience(1); offer.setVillagerExperience(1);
offer.setPriceMultiplier(1); offer.setPriceMultiplier(1);
@ -237,5 +232,5 @@ MoreJSEvents.villagerTrades((event) => {
offer.setPriceMultiplier(1); offer.setPriceMultiplier(1);
}); });
} }
}); }
}); });