add first patch

This commit is contained in:
2026-07-31 10:34:32 +09:00
parent 03aac2e45e
commit b1cbc6c78d
6390 changed files with 547430 additions and 0 deletions
+222
View File
@@ -0,0 +1,222 @@
const registerMilkingCategory = (event, equipment, title) => {
event.custom("society:milking", (category) => {
const {
jeiHelpers: { guiHelper },
} = category;
category
.title(title)
.background(guiHelper.createDrawable("society:textures/gui/milking.png", 1, 1, 148, 40))
.icon(guiHelper.createDrawableItemStack(Item.of(equipment)))
.isRecipeHandled((recipe) => {
return !!(recipe?.data?.animal !== undefined);
})
.setDrawHandler((recipe, recipeSlotsView, guiGraphics) => {
guiGraphics.drawWordWrap(
Client.font,
Text.translatable(
"jei.society.husbandry.cooldown",
Text.translatable(
`jei.society.working_block_entity.day${recipe.getRecipeData().cooldown > 1 ? "s" : ""}`,
`${recipe.getRecipeData().cooldown}`
)
),
2,
26,
177,
0
);
})
.handleLookup((builder, recipe) => {
const { animal, milk } = recipe.data;
const outputs = [
{
item: milk.sm,
count: 1,
},
{
item: milk.lg,
count: 1,
},
];
const slotSize = 21;
builder
.addSlot("CATALYST", 48, 2)
.addItemStack(equipment)
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
builder
.addSlot("INPUT", 2, 2)
.addItemStack(`${animal}_spawn_egg`)
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
outputs.forEach((reward, index) => {
builder
.addSlot("OUTPUT", 104 + index * slotSize, 2)
.addItemStack(Item.of(`${reward.count}x ${reward.item}`))
.addTooltipCallback((slotView, tooltip) => {
if (index == 0) {
tooltip.add(1, Text.translatable("jei.society.husbandry.affection.range", `1-5`).lightPurple());
} else {
tooltip.add(1, Text.translatable("jei.society.husbandry.affection.over", `6`).lightPurple());
}
})
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
});
});
});
};
const registerForagingCategory = (event, title) => {
event.custom("society:foraging", (category) => {
const {
jeiHelpers: { guiHelper },
} = category;
category
.title(title)
.background(guiHelper.createDrawable("society:textures/gui/foraging.png", 1, 1, 174, 40))
.icon(guiHelper.createDrawableItemStack(Item.of("society:truffle")))
.isRecipeHandled((recipe) => {
return !!(recipe?.data?.animal !== undefined);
})
.setDrawHandler((recipe, recipeSlotsView, guiGraphics, mouseX, mouseY) => {
global["textDrawHandler"](
category.jeiHelpers,
recipe,
recipeSlotsView,
guiGraphics,
mouseX,
mouseY
);
})
.handleLookup((builder, recipe) => {
const { animal, forages } = recipe.data;
const slotSize = 21;
builder
.addSlot("INPUT", 2, 2)
.addItemStack(`${animal}_spawn_egg`)
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
global["textDrawHandler"] = (jeiHelpers, recipe, recipeSlotsView, guiGraphics) => {
guiGraphics.drawWordWrap(
Client.font,
Text.translatable("jei.society.working_block_entity.item"),
2,
28,
177,
0
);
};
forages.forEach((forage, index) => {
if (forage.itemPool) {
forage.itemPool.forEach((poolItem, poolIndex) => {
// Keep itemPool forages at end of pool to ensure calculation correct
builder
.addSlot("OUTPUT", 50 + (index + poolIndex) * slotSize, 2)
.addItemStack(Item.of(`${forage.countMult}x ${poolItem}`))
.addTooltipCallback((slotView, tooltip) => {
tooltip.add(1, Text.translatable("jei.society.husbandry.affection.over", `${forage.minHearts}`).lightPurple());
tooltip.add(2, Text.translatable("jei.society.husbandry.pool").gold());
tooltip.add(
3,
Text.translatable("jei.society.husbandry.pool.roll", `${Math.round(forage.chance * 100)}`).gold()
);
tooltip.add(
4,
Text.translatable(
"jei.society.husbandry.pool.select", `${Math.round((1 / forage.itemPool.length) * 100)}`
).gold()
);
if (forage.hasQuality) {
tooltip.add(5, Text.translatable("jei.society.husbandry.affection.quality").green());
}
})
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
});
} else {
builder
.addSlot("OUTPUT", 50 + index * slotSize, 2)
.addItemStack(Item.of(`${forage.countMult}x ${forage.item}`))
.addTooltipCallback((slotView, tooltip) => {
tooltip.add(1, Text.translatable("jei.society.husbandry.affection.over", `${forage.minHearts}`).lightPurple());
tooltip.add(2, Text.translatable("jei.society.husbandry.chance", `${Math.round(forage.chance * 100)}`).gold());
if (forage.hasQuality) {
tooltip.add(3, Text.translatable("jei.society.husbandry.affection.quality").green());
}
})
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
}
});
});
});
};
const registerGiftCategory = (event, title) => {
event.custom("society:pet_gifts", (category) => {
const {
jeiHelpers: { guiHelper },
} = category;
category
.title(title)
.background(guiHelper.createDrawable("society:textures/gui/gifting.png", 1, 1, 174, 40))
.icon(guiHelper.createDrawableItemStack(Item.of("supplementaries:present_magenta")))
.isRecipeHandled((recipe) => {
return !!(recipe?.data?.animal !== undefined);
})
.setDrawHandler((recipe, recipeSlotsView, guiGraphics, mouseX, mouseY) => {
global["textDrawHandler"](
category.jeiHelpers,
recipe,
recipeSlotsView,
guiGraphics,
mouseX,
mouseY
);
})
.handleLookup((builder, recipe) => {
const { animal, gifts } = recipe.data;
const slotSize = 21;
builder
.addSlot("INPUT", 2, 2)
.addItemStack(`${animal}_spawn_egg`)
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
global["textDrawHandler"] = (jeiHelpers, recipe, recipeSlotsView, guiGraphics) => {
guiGraphics.drawWordWrap(
Client.font,
Text.translatable("jei.society.working_block_entity.item"),
2,
28,
177,
0
);
};
gifts.forEach((item, index) => {
builder
.addSlot("OUTPUT", 50 + index * slotSize, 2)
.addItemStack(Item.of(`1x ${item}`))
.addTooltipCallback((slotView, tooltip) => {
tooltip.add(1, Text.translatable("jei.society.husbandry.affection.at", `10`).lightPurple());
tooltip.add(
2,
Text.translatable("jei.society.husbandry.pool.select", `${Math.round((1 / gifts.length) * 100)}`).gold()
);
})
.setBackground(guiHelper.getSlotDrawable(), -1, -1);
});
});
});
};
JEIAddedEvents.registerCategories((e) => {
registerMilkingCategory(e, "society:milk_pail", Text.translatable("jei.society.category.milking"));
registerForagingCategory(e, Text.translatable("jei.society.category.foraging"));
registerGiftCategory(e, Text.translatable("jei.society.category.pet_gifts"));
});
JEIAddedEvents.registerRecipes((e) => {
global.husbandryMilkingDefinitions.forEach((element) => {
e.custom("society:milking").add(element);
});
global.husbandryForagingDefinitions.forEach((element) => {
e.custom("society:foraging").add(element);
});
global.petGifts.forEach((element) => {
e.custom("society:pet_gifts").add(element);
});
});