add first patch
This commit is contained in:
@@ -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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user