pala M-alchi-1: fiole + XP craft alchimiste data-driven

This commit is contained in:
Anaïs Saraiva
2026-10-19 06:32:10 +02:00
parent 53c7416aae
commit 1e29bfef67
11 changed files with 48 additions and 0 deletions
@@ -120,6 +120,9 @@ public final class PalaItems {
// Nutrition 4/0.3 ECART (wiki muet, comme pomme). Sans craft (ECART lucky).
public static final Item BANANA = register("banana", id -> new Item(new Item.Properties().setId(id).food(new FoodProperties(4, 0.3F, true), net.minecraft.world.item.component.Consumable.builder().onConsume(new net.minecraft.world.item.consume_effects.ApplyStatusEffectsConsumeEffect(new net.minecraft.world.effect.MobEffectInstance(net.minecraft.world.effect.MobEffects.SPEED, 300, 2), 1.0F)).build())));
public static final Item COUAC_SWORD = register("couac_sword", id -> new Item(new Item.Properties().setId(id).sword(PalaToolMaterials.PALADIUM_SWORD, 8.0F, -2.3F)));
// M-alchi-1 (wiki alchimiste) : fiole (stack 16, craft 5 verres shapeless ECART
// positions, XP craft 0.2@1). Extracteur : texture absente (TODO:M-alchi-extracteur).
public static final Item FLASK = register("flask", id -> new Item(new Item.Properties().setId(id).stacksTo(16)));
// M-gadget-8 (wiki ID 5023/5029) : cagoule (cosmetique, UNBREAKABLE) + masque de
// garde (stats fer). Sans craft (ECART lucky).
public static final Item BALACLAVA = register("balaclava", id -> new Item(new Item.Properties().setId(id).durability(1).humanoidArmor(PalaArmorMaterials.BALACLAVA, ArmorType.HELMET).component(DataComponents.UNBREAKABLE, Unit.INSTANCE)));
@@ -78,6 +78,7 @@ public final class PalaTabs {
output.accept(PalaItems.BANANA);
output.accept(PalaItems.BALACLAVA);
output.accept(PalaItems.GUARD_MASK);
output.accept(PalaItems.FLASK);
output.accept(PalaItems.CANDY);
output.accept(PalaItems.CANDY_BLUE);
output.accept(PalaItems.CANDY_GREEN);
@@ -139,6 +139,10 @@ public final class PalaConfig {
"pala:egg_plant_fruit", new double[]{3, 8},
"pala:okami_fruit", new double[]{4.5, 12},
"pala:kiwano", new double[]{6, 16}));
// M-alchi-1 (wiki Evolution alchimiste VERIFIE) : XP au craft = item -> [xp, niveau].
// Fiole 0.2@1. Extracteur/lightning/glueballs/portails : items/crafts en M-alchi-2+.
public Map<String, double[]> alchemistCraft = new HashMap<>(Map.of(
"pala:flask", new double[]{0.2, 1}));
// M4a : recettes machines data-driven (CDC §3.4). Cles = ids de registres.
// Defauts = legacy+wiki VERIFIES (M3). Rechargeables via /pala reload.
public Map<String, String> crusherResults = new HashMap<>(Map.of(
@@ -237,6 +241,7 @@ public final class PalaConfig {
java.util.Set<String> expected = java.util.Set.of("minerXp", "minerLevels",
"xpBase", "xpExponent", "levelThresholds", "netherMinerLevel", "stickCooldowns",
"rankNodes", "hunterKills", "farmerHarvest", "crusherXp",
"alchemistCraft",
"crusherResults", "crusherFuels", "crusherInfiniteFuels",
"furnaceSmelts", "furnaceFuels",
"serverName", "wikiUrl", "discordUrl", "shopUrl",
@@ -15,6 +15,7 @@ import fr.surviepote.pala.core.PalaJobs;
// M-mixin (wiki metiers, VERIFIE) : XP au craft, sans event fabric existant.
// Fermier : pain = 1 XP (niveau 1+), tarte citrouille = 4 XP (niveau 11+), par item pris.
// M-alchi-1 : alchimiste data-driven (config alchemistCraft : item -> [xp, niveau]).
// Injection en TAIL de checkTakeAchievements (appele a chaque prise du resultat).
@Mixin(ResultSlot.class)
public class PalaCraftXpMixin {
@@ -39,5 +40,9 @@ public class PalaCraftXpMixin {
PalaJobs.addXp(sp, "fermier", 4.0 * stack.getCount());
}
}
double[] row = fr.surviepote.pala.core.PalaConfig.get().alchemistCraft.get(id);
if (row != null && PalaJobs.levelOf(sp, "alchimiste") >= (int) row[1]) {
PalaJobs.addXp(sp, "alchimiste", row[0] * stack.getCount());
}
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "pala:item/flask"
}
}
@@ -4,6 +4,7 @@
"item.pala.amethyst_mixed_coal": "Amethyst Mixed Coal",
"item.pala.amethyst_stick": "Amethyst Stick",
"item.pala.compressed_amethyst": "Compressed Amethyst",
"item.pala.flask": "Fiole",
"item.pala.balaclava": "Cagoule",
"item.pala.guard_mask": "Masque de garde",
"item.pala.banana": "Banane",
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "pala:item/flask"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

@@ -0,0 +1,15 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
"minecraft:glass",
"minecraft:glass",
"minecraft:glass",
"minecraft:glass",
"minecraft:glass"
],
"result": {
"id": "pala:flask",
"count": 1
}
}