pala M-recompenses: lots de palier wiki (formule + extras) + furnace complete
This commit is contained in:
@@ -576,6 +576,11 @@ avant M4 (TODO:crafts-machines).
|
||||
verifiees au javap. VERIFIE : build SUCCESSFUL, boot Done, 0 erreur mixin. UNVERIFIED en
|
||||
jeu (prise en main : seul un craft/fourneau avec joueur le prouvera). TODO:craft-xp et
|
||||
TODO:smelt-xp CLOS.
|
||||
- M-recompenses LIVRE 2026-10-19 ~03:35 : lots de palier wiki (pages Recompenses relues en
|
||||
live) : formule 5N pala + 5N trixium + 500N $ (niv.2-19), 105/105/10500 (niv.20) + extras
|
||||
existants (findium, amethyste, graines, pepite endium). ECART : lots speciaux inexistants
|
||||
(voidstone, excavatrices...) => TODO:recompenses-items. + furnaceSmelts completee (6 minerais).
|
||||
VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu (level-up joueur).
|
||||
- Client/mod : boucle visuelle OPERATIONNELLE 2026-10-19 (Xvfb :99 + runClient SDL x11 +
|
||||
captures Java Robot + pilotage xdotool + vision_analyze) : menu, Select World, monde New World
|
||||
(creatif, cheats), /give, pose de bloc, inventaire, F3+T. Screens : scratch vis*.png.
|
||||
|
||||
@@ -106,7 +106,11 @@ public final class PalaConfig {
|
||||
java.util.List.of("pala:creative_mixed_coal"));
|
||||
public Map<String, String> furnaceSmelts = new HashMap<>(Map.of(
|
||||
"pala:paladium_ore", "pala:paladium_ingot",
|
||||
"pala:paladium_green_ore", "pala:paladium_green_ingot"));
|
||||
"pala:paladium_green_ore", "pala:paladium_green_ingot",
|
||||
"pala:amethyst_ore", "pala:amethyst_ingot",
|
||||
"pala:titane_ore", "pala:titane_ingot",
|
||||
"pala:trixium_ore", "pala:trixium_gem",
|
||||
"pala:findium_ore", "pala:findium_gem"));
|
||||
public java.util.List<String> furnaceFuels = new java.util.ArrayList<>(java.util.List.of(
|
||||
"minecraft:coal", "minecraft:charcoal"));
|
||||
|
||||
|
||||
@@ -11,7 +11,8 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
// Metiers : XP et niveaux (M0 = moteur minimal, tables completes en M5).
|
||||
// Wiki VERIFIE : 4 metiers (mineur, fermier, chasseur, alchimiste), ~100 niveaux,
|
||||
// table XP mineur par bloc (PalaConfig.minerXp). Courbe et recompenses : UNVERIFIED (M5).
|
||||
// table XP mineur par bloc (PalaConfig.minerXp). Recompenses de palier : PalaRewards
|
||||
// (M-recompenses, formule wiki 5N/5N/500N + extras).
|
||||
public final class PalaJobs {
|
||||
|
||||
public static final List<String> JOBS = List.of("mineur", "fermier", "chasseur", "alchimiste");
|
||||
@@ -42,7 +43,7 @@ public final class PalaJobs {
|
||||
data.level++;
|
||||
player.sendSystemMessage(Component.literal(
|
||||
"§6[Metier] §e" + job + " §7niveau §a" + data.level + " §7atteint !"));
|
||||
// TODO:recompenses-m5 : lots par palier (voidstone niv.2, /nether niv.3...). Raison : M5.
|
||||
PalaRewards.grant(player, job, data.level);
|
||||
}
|
||||
PalaStorage.get().markDirty();
|
||||
return data.level;
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
package fr.surviepote.pala.core;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
||||
import fr.surviepote.pala.PalaItems;
|
||||
|
||||
// M-recompenses (wiki pages Recompenses des 4 metiers, relues en live 2026-10-19) :
|
||||
// niveaux 2-19 : 5N paladium + 5N trixium + 500N $ ; niveau 20 : 105/105/10 500.
|
||||
// Niveaux 21+ : rien (tables wiki jusqu'a 20). Niveau 1 : rien (tables des 2).
|
||||
// Extras (items EXISTANTS uniquement) : mineur/fermier 3 = 2 findium ; mineur 5,
|
||||
// fermier 5, chasseur 8 = 16 amethyste ; fermier 7 = 64 graines eggplant (= fikutsi,
|
||||
// wiki "eggplant seed") ; fermier 9 = 1 amethyste compressee ; fermier 13 = 64 graines
|
||||
// okami (wiki "chervil seed", hypothese chervil==okami) ; fermier 17 = 64 graines kiwano ;
|
||||
// niveau 20 (4 metiers) = 1 pepite endium.
|
||||
// ECART : lots speciaux (voidstone, excavatrices, cobblebreaker, tanks, cages...) et
|
||||
// crafts debloques = items inexistants => TODO:recompenses-items (M-machines/M8).
|
||||
// Chasseur 10 (2 empty bow modifier) : texture sans item => non donne (meme TODO).
|
||||
public final class PalaRewards {
|
||||
|
||||
private PalaRewards() {
|
||||
}
|
||||
|
||||
/** Attribue le lot de passage au niveau (appele depuis PalaJobs.addXp). */
|
||||
public static void grant(ServerPlayer player, String job, int level) {
|
||||
if (level < 2 || level > 20) {
|
||||
return;
|
||||
}
|
||||
PalaStorage storage = PalaStorage.get();
|
||||
double money = level == 20 ? 10500.0 : 500.0 * level;
|
||||
int gems = level == 20 ? 105 : 5 * level;
|
||||
storage.data(player.getUUID()).money += money;
|
||||
give(player, PalaItems.PALADIUM_INGOT, gems);
|
||||
give(player, PalaItems.TRIXIUM_GEM, gems);
|
||||
// Extras wiki (items existants).
|
||||
if ((job.equals("mineur") || job.equals("fermier")) && level == 3) {
|
||||
give(player, PalaItems.FINDIUM_GEM, 2);
|
||||
}
|
||||
if ((job.equals("mineur") && level == 5) || (job.equals("fermier") && level == 5)
|
||||
|| (job.equals("chasseur") && level == 8)) {
|
||||
give(player, PalaItems.AMETHYST_INGOT, 16);
|
||||
}
|
||||
if (job.equals("fermier") && level == 7) {
|
||||
give(player, PalaItems.FIKUTSI_SEEDS, 64);
|
||||
}
|
||||
if (job.equals("fermier") && level == 9) {
|
||||
give(player, PalaItems.COMPRESSED_AMETHYST, 1);
|
||||
}
|
||||
if (job.equals("fermier") && level == 13) {
|
||||
give(player, PalaItems.OKAMI_SEEDS, 64);
|
||||
}
|
||||
if (job.equals("fermier") && level == 17) {
|
||||
give(player, PalaItems.KIWANO_SEEDS, 64);
|
||||
}
|
||||
if (level == 20) {
|
||||
give(player, PalaItems.ENDIUM_NUGGET, 1);
|
||||
}
|
||||
storage.markDirty();
|
||||
player.sendSystemMessage(Component.literal("§6[Recompense] §7Niveau " + level + " " + job
|
||||
+ " : §e" + gems + " paladium, " + gems + " trixium, "
|
||||
+ String.format("%.0f", money) + " $ §7(+ extras éventuels)."));
|
||||
}
|
||||
|
||||
private static void give(ServerPlayer player, Item item, int count) {
|
||||
int rest = count;
|
||||
while (rest > 0) {
|
||||
int part = Math.min(rest, item.getDefaultMaxStackSize());
|
||||
ItemStack stack = new ItemStack(item, part);
|
||||
if (!player.getInventory().add(stack)) {
|
||||
ServerLevel level = player.level();
|
||||
BlockPos pos = player.blockPosition();
|
||||
ItemEntity entity = new ItemEntity(level, pos.getX() + 0.5, pos.getY() + 0.5,
|
||||
pos.getZ() + 0.5, stack);
|
||||
entity.setPickUpDelay(10);
|
||||
level.addFreshEntity(entity);
|
||||
}
|
||||
rest -= part;
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Reference in New Issue
Block a user