diff --git a/PALAMOD_CDC.md b/PALAMOD_CDC.md index b751219..d839e5a 100644 --- a/PALAMOD_CDC.md +++ b/PALAMOD_CDC.md @@ -638,6 +638,10 @@ avant M4 (TODO:crafts-machines). plancher 0, hook AFTER_DEATH existant) + /f top (tri elo) + elo dans /f info/help. ECART : formule exacte Paladium non publiee (UNVERIFIED). VERIFIE : build SUCCESSFUL, boot Done, 0 erreur. UNVERIFIED en jeu (2 joueurs). +- M-gadget-1 LIVRE 2026-10-19 ~05:20 : analyseur de chunk (ID 4975, durabilite 5 wiki, + texture legacy, scan 16x16 top 10 + total, sans craft ECART). Lecon : patch + chevauchant la fin d'une methode mange sa signature — verifier la queue du fichier. + 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 + 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 diff --git a/mods/pala/src/main/java/fr/surviepote/pala/PalaItems.java b/mods/pala/src/main/java/fr/surviepote/pala/PalaItems.java index 34308ca..5468aff 100644 --- a/mods/pala/src/main/java/fr/surviepote/pala/PalaItems.java +++ b/mods/pala/src/main/java/fr/surviepote/pala/PalaItems.java @@ -61,6 +61,9 @@ public final class PalaItems { public static final Item TITANE_STICK = register("titane_stick", id -> new Item(new Item.Properties().setId(id))); public static final Item TRIXIUM_GEM = register("trixium_gem", id -> new Item(new Item.Properties().setId(id))); public static final Item XP_BERRIES = register("xp_berries", id -> new Item(new Item.Properties().setId(id))); + // M-gadget-1 (wiki items lucky) : analyseur de chunk, durabilite 5, sans craft + // (obtention lucky/admin, ECART documente). + public static final Item CHUNK_ANALYSER = register("chunk_analyser", id -> new Item(new Item.Properties().setId(id).stacksTo(1).durability(5))); // M-candy (wiki metiers, VERIFIE partiel) : bonbons 50 000 XP. Vert = fermier, // jaune = mineur, rainbow = tous (pages Evolution) ; bleu/rose = mapping non publie // (items seuls, TODO:mapping-bonbons) ; candy/job_candy = nature inconnue (items seuls). diff --git a/mods/pala/src/main/java/fr/surviepote/pala/PalaTabs.java b/mods/pala/src/main/java/fr/surviepote/pala/PalaTabs.java index d491696..f063e0a 100644 --- a/mods/pala/src/main/java/fr/surviepote/pala/PalaTabs.java +++ b/mods/pala/src/main/java/fr/surviepote/pala/PalaTabs.java @@ -69,6 +69,7 @@ public final class PalaTabs { output.accept(PalaItems.TITANE_STICK); output.accept(PalaItems.TRIXIUM_GEM); output.accept(PalaItems.XP_BERRIES); + output.accept(PalaItems.CHUNK_ANALYSER); output.accept(PalaItems.CANDY); output.accept(PalaItems.CANDY_BLUE); output.accept(PalaItems.CANDY_GREEN); diff --git a/mods/pala/src/main/java/fr/surviepote/pala/events/PalaItemUseEvents.java b/mods/pala/src/main/java/fr/surviepote/pala/events/PalaItemUseEvents.java index 2f9dde8..00b9d48 100644 --- a/mods/pala/src/main/java/fr/surviepote/pala/events/PalaItemUseEvents.java +++ b/mods/pala/src/main/java/fr/surviepote/pala/events/PalaItemUseEvents.java @@ -232,9 +232,55 @@ public final class PalaItemUseEvents { return InteractionResult.SUCCESS; } + // --- Analyseur de chunk (M-gadget-1, wiki items lucky) : clic droit avec + // l'objet -> top 10 des blocs du chunk vise + total. Durabilite 5 (wiki). + if (item == PalaItems.CHUNK_ANALYSER) { + analyseChunk(sp, sl, pos); + stack.hurtAndBreak(1, sp, hand); + return InteractionResult.SUCCESS; + } + return InteractionResult.PASS; } + // M-gadget-1 : scan du chunk (16x16 sur toute la hauteur), top 10 + total. + static void analyseChunk(ServerPlayer player, ServerLevel level, BlockPos pos) { + java.util.Map counts = new java.util.HashMap<>(); + int total = 0; + int baseX = pos.getX() >> 4 << 4; + int baseZ = pos.getZ() >> 4 << 4; + net.minecraft.core.BlockPos.MutableBlockPos cursor = + new net.minecraft.core.BlockPos.MutableBlockPos(); + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + for (int y = level.getMinY(); y < level.getMaxY(); y++) { + BlockState state = level.getBlockState(cursor.set(baseX + x, y, baseZ + z)); + if (state.isAir()) { + continue; + } + total++; + String id = net.minecraft.core.registries.BuiltInRegistries.BLOCK + .getKey(state.getBlock()).toString(); + counts.merge(id, 1, Integer::sum); + } + } + } + java.util.List> top = + new java.util.ArrayList<>(counts.entrySet()); + top.sort((a, b) -> Integer.compare(b.getValue(), a.getValue())); + StringBuilder out = new StringBuilder("§6[Analyseur] §7chunk " + + (baseX >> 4) + "," + (baseZ >> 4) + " : " + total + " blocs"); + int shown = 0; + for (java.util.Map.Entry entry : top) { + if (shown >= 10) { + break; + } + out.append("\n§7- ").append(entry.getKey()).append(" x").append(entry.getValue()); + shown++; + } + player.sendSystemMessage(net.minecraft.network.chat.Component.literal(out.toString())); + } + static void drop(ServerLevel level, BlockPos pos, Item item, int count) { ItemEntity entity = new ItemEntity(level, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, new ItemStack(item, count)); diff --git a/mods/pala/src/main/resources/assets/pala/items/chunk_analyser.json b/mods/pala/src/main/resources/assets/pala/items/chunk_analyser.json new file mode 100644 index 0000000..67815c8 --- /dev/null +++ b/mods/pala/src/main/resources/assets/pala/items/chunk_analyser.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "pala:item/chunk_analyser" + } +} \ No newline at end of file diff --git a/mods/pala/src/main/resources/assets/pala/lang/en_us.json b/mods/pala/src/main/resources/assets/pala/lang/en_us.json index 1957e6a..8f18bb1 100644 --- a/mods/pala/src/main/resources/assets/pala/lang/en_us.json +++ b/mods/pala/src/main/resources/assets/pala/lang/en_us.json @@ -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.chunk_analyser": "Chunk Analyser", "item.pala.compressed_paladium": "Compressed Paladium", "item.pala.compressed_titane": "Compressed Titane", "item.pala.creative_mixed_coal": "Creative Mixed Coal", diff --git a/mods/pala/src/main/resources/assets/pala/models/item/chunk_analyser.json b/mods/pala/src/main/resources/assets/pala/models/item/chunk_analyser.json new file mode 100644 index 0000000..8f52aa6 --- /dev/null +++ b/mods/pala/src/main/resources/assets/pala/models/item/chunk_analyser.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "pala:item/chunk_analyser" + } +} \ No newline at end of file diff --git a/mods/pala/src/main/resources/assets/pala/textures/item/chunk_analyser.png b/mods/pala/src/main/resources/assets/pala/textures/item/chunk_analyser.png new file mode 100644 index 0000000..b010c5c Binary files /dev/null and b/mods/pala/src/main/resources/assets/pala/textures/item/chunk_analyser.png differ diff --git a/server/mods/pala-0.2.1.jar b/server/mods/pala-0.2.1.jar index 3092e2b..9414193 100644 Binary files a/server/mods/pala-0.2.1.jar and b/server/mods/pala-0.2.1.jar differ