pala M-alchi-1: fiole + XP craft alchimiste data-driven
This commit is contained in:
@@ -683,6 +683,12 @@ avant M4 (TODO:crafts-machines).
|
|||||||
- M-market-2 LIVRE 2026-10-19 ~06:20 : expiration annonces (createdAt, marketExpiryDays
|
- M-market-2 LIVRE 2026-10-19 ~06:20 : expiration annonces (createdAt, marketExpiryDays
|
||||||
=7 persistee VERIFIEE, purge au flush, rendu si vendeur connecte). TODO:market-expiry
|
=7 persistee VERIFIEE, purge au flush, rendu si vendeur connecte). TODO:market-expiry
|
||||||
CLOS. VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu (purge 7j).
|
CLOS. VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu (purge 7j).
|
||||||
|
- M-alchi-1 LIVRE 2026-10-19 ~06:30 : fiole (craft 5 verres, XP craft 0.2@1) + mixin
|
||||||
|
craft data-driven (alchemistCraft). Incident : 1er boot refuse (ingredients objets
|
||||||
|
{"item"} parses vide en 26.3 -> strings simples comme socketpattern). Lecon : boot
|
||||||
|
Datapack = validation JSON, toujours rebooter apres recette. ECART : positions craft
|
||||||
|
UNVERIFIED, extracteur sans texture (TODO:M-alchi-extracteur), arbes a seve absents
|
||||||
|
(TODO:M-trees). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu.
|
||||||
- M-palaforge LIVRE 2026-10-19 ~03:55 : bloc + BE partagee (3e mode) + gate mineur 14 +
|
- M-palaforge LIVRE 2026-10-19 ~03:55 : bloc + BE partagee (3e mode) + gate mineur 14 +
|
||||||
table fonte wiki §3.2 (31 items, ratio floor usure) + fuels bois (+buche/planches/baton,
|
table fonte wiki §3.2 (31 items, ratio floor usure) + fuels bois (+buche/planches/baton,
|
||||||
lave exclue : seau non rendu) + craft (1 findium + 4 furnaces + 4 briques, positions
|
lave exclue : seau non rendu) + craft (1 findium + 4 furnaces + 4 briques, positions
|
||||||
|
|||||||
@@ -120,6 +120,9 @@ public final class PalaItems {
|
|||||||
// Nutrition 4/0.3 ECART (wiki muet, comme pomme). Sans craft (ECART lucky).
|
// 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 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)));
|
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
|
// M-gadget-8 (wiki ID 5023/5029) : cagoule (cosmetique, UNBREAKABLE) + masque de
|
||||||
// garde (stats fer). Sans craft (ECART lucky).
|
// 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)));
|
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.BANANA);
|
||||||
output.accept(PalaItems.BALACLAVA);
|
output.accept(PalaItems.BALACLAVA);
|
||||||
output.accept(PalaItems.GUARD_MASK);
|
output.accept(PalaItems.GUARD_MASK);
|
||||||
|
output.accept(PalaItems.FLASK);
|
||||||
output.accept(PalaItems.CANDY);
|
output.accept(PalaItems.CANDY);
|
||||||
output.accept(PalaItems.CANDY_BLUE);
|
output.accept(PalaItems.CANDY_BLUE);
|
||||||
output.accept(PalaItems.CANDY_GREEN);
|
output.accept(PalaItems.CANDY_GREEN);
|
||||||
|
|||||||
@@ -139,6 +139,10 @@ public final class PalaConfig {
|
|||||||
"pala:egg_plant_fruit", new double[]{3, 8},
|
"pala:egg_plant_fruit", new double[]{3, 8},
|
||||||
"pala:okami_fruit", new double[]{4.5, 12},
|
"pala:okami_fruit", new double[]{4.5, 12},
|
||||||
"pala:kiwano", new double[]{6, 16}));
|
"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.
|
// M4a : recettes machines data-driven (CDC §3.4). Cles = ids de registres.
|
||||||
// Defauts = legacy+wiki VERIFIES (M3). Rechargeables via /pala reload.
|
// Defauts = legacy+wiki VERIFIES (M3). Rechargeables via /pala reload.
|
||||||
public Map<String, String> crusherResults = new HashMap<>(Map.of(
|
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",
|
java.util.Set<String> expected = java.util.Set.of("minerXp", "minerLevels",
|
||||||
"xpBase", "xpExponent", "levelThresholds", "netherMinerLevel", "stickCooldowns",
|
"xpBase", "xpExponent", "levelThresholds", "netherMinerLevel", "stickCooldowns",
|
||||||
"rankNodes", "hunterKills", "farmerHarvest", "crusherXp",
|
"rankNodes", "hunterKills", "farmerHarvest", "crusherXp",
|
||||||
|
"alchemistCraft",
|
||||||
"crusherResults", "crusherFuels", "crusherInfiniteFuels",
|
"crusherResults", "crusherFuels", "crusherInfiniteFuels",
|
||||||
"furnaceSmelts", "furnaceFuels",
|
"furnaceSmelts", "furnaceFuels",
|
||||||
"serverName", "wikiUrl", "discordUrl", "shopUrl",
|
"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.
|
// 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.
|
// 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).
|
// Injection en TAIL de checkTakeAchievements (appele a chaque prise du resultat).
|
||||||
@Mixin(ResultSlot.class)
|
@Mixin(ResultSlot.class)
|
||||||
public class PalaCraftXpMixin {
|
public class PalaCraftXpMixin {
|
||||||
@@ -39,5 +40,9 @@ public class PalaCraftXpMixin {
|
|||||||
PalaJobs.addXp(sp, "fermier", 4.0 * stack.getCount());
|
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_mixed_coal": "Amethyst Mixed Coal",
|
||||||
"item.pala.amethyst_stick": "Amethyst Stick",
|
"item.pala.amethyst_stick": "Amethyst Stick",
|
||||||
"item.pala.compressed_amethyst": "Compressed Amethyst",
|
"item.pala.compressed_amethyst": "Compressed Amethyst",
|
||||||
|
"item.pala.flask": "Fiole",
|
||||||
"item.pala.balaclava": "Cagoule",
|
"item.pala.balaclava": "Cagoule",
|
||||||
"item.pala.guard_mask": "Masque de garde",
|
"item.pala.guard_mask": "Masque de garde",
|
||||||
"item.pala.banana": "Banane",
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Reference in New Issue
Block a user