pala M1: worldgen amethyste/titane calibre wiki (size 8, trapezoid 6-10, deep ocean) + /pala orestats
This commit is contained in:
+16
-8
@@ -32,7 +32,7 @@ n'utilise ni l'un ni l'autre). Conclusion : OCR automatique des images wiki = NO
|
||||
Decision : les patterns de craft retiennent (1) le texte wiki "Ressources necessaires" quand present,
|
||||
(2) les slots exacts de elements/*.mod.json (90 recettes, donnees machine VERIFIEES, ex §3.1),
|
||||
(3) le reste est marque UNVERIFIED et devra etre releve en jeu via JEI (screenshots table de craft).
|
||||
TODO:OCR-fiable : re-essayer l'OCR uniquement sur images >= 50 Ko ou captures JEI en jeu. Raison :
|
||||
TODO:ocr-fiable : re-essayer l'OCR uniquement sur images >= 50 Ko ou captures JEI en jeu. Raison :
|
||||
en dessous de ce seuil, hallucination demontree sur 3/3 echantillons.
|
||||
|
||||
Reference existante (etat des lieux, PAS copiee) : mods/pala/ :
|
||||
@@ -58,8 +58,8 @@ Convention : [PORTE] = present dans mods/pala/src ou data/ (partiel = logique in
|
||||
|
||||
| Famille | Minerai | Lingot/gemme | Bloc | Worldgen wiki (VERIFIE) | Mapping |
|
||||
|---|---|---|---|---|---|
|
||||
| Amethyste | amethyst_ore [PORTE] | amethyst_ingot [PORTE] | amethyst_ore_block [PORTE] | filons 1-8, couches 6-10 + deep ocean des couche 25 | worldgen PORTE (overworld), couches UNVERIFIED |
|
||||
| Titane | titane_ore [PORTE] | titane_ingot [PORTE] | titane_ore_block [PORTE] | deep ocean + grottes, filons 1-8, couches 6-10 | PORTE (overworld+end). ECART : wiki ne cite pas l'End → verifier |
|
||||
| Amethyste | amethyst_ore [PORTE] | amethyst_ingot [PORTE] | amethyst_ore_block [PORTE] | filons 1-8, couches 6-10 + deep ocean des couche 25 | M1 : size 8, trapezoid 6-10, placed deep uniform 25-40 (4 biomes deep) |
|
||||
| Titane | titane_ore [PORTE] | titane_ingot [PORTE] | titane_ore_block [PORTE] | deep ocean + grottes, filons 1-8, couches 6-10 | M1 : idem amethyste. ECART : wiki ne cite pas l'End → verifier |
|
||||
| Paladium | paladium_ore [PORTE] | paladium_ingot [PORTE] | paladium_ore_block [PORTE] | page minerais (texte tronque JS, re-crawl partiel) | PORTE, couches UNVERIFIED |
|
||||
| Paladium vert | paladium_green_ore [PORTE] | paladium_green_ingot [PORTE] | paladium_green_ore_block [PORTE] | idem | PORTE, obtention (fonderie ?) UNVERIFIED |
|
||||
| Trixium | trixium_ore [PORTE] | trixium_gem [PORTE] | trixium_ore_block [PORTE] | idem | PORTE |
|
||||
@@ -69,8 +69,10 @@ Convention : [PORTE] = present dans mods/pala/src ou data/ (partiel = logique in
|
||||
|
||||
Drops/smelting : *_ore_smelting + block<->lingot 9x/1x/9x dans elements (ex AmethystBlockOreRecipe
|
||||
shapeless 1 bloc → 9 lingots VERIFIE). Patterns compacts standards : VERIFIE via elements.
|
||||
TODO:worldgen-couches : calibrer chaque placed_feature (count/size/hauteur) sur les donnees wiki
|
||||
(couches 6-10 + deep ocean). Raison : le portage injecte en overworld sans contrainte de hauteur.
|
||||
TODO:worldgen-couches : RESTE pour paladium/trixium/findium/green (tailles MCreator conservees :
|
||||
4/8/3/4, hauteurs 18/25/33/18 — non relues en detail wiki) + borne max deep 40 UNVERIFIED
|
||||
(wiki dit "a partir de la couche 25" sans max ; 25-40 choisi, TrapezoidHeight verifie au unzip).
|
||||
Lecon M1 VERIFIEE au boot : minecraft:triangle N'EXISTE PAS en 26.3 (crash datapacks) → trapezoid.
|
||||
|
||||
### 1.2 Outils et armes
|
||||
|
||||
@@ -450,8 +452,9 @@ avant M4 (TODO:crafts-machines).
|
||||
|
||||
- Features wiki couvertes (entree CDC) : ~210 (§1.14). Portage existant : ~120 (assets+registres).
|
||||
Logique specifiee restant a implementer : ~90. Couverture spec : 100 % des pages FR Java ingestionnees.
|
||||
- TODO explicites : 11 nommes (grep 2026-10-18 : ocr-fiable, worldgen-couches, broadsword,
|
||||
crafts-machines, chervil, commandes-exactes, ghost, luckperms, runclient, mcp-ocular, shebang)
|
||||
- TODO explicites : 12 nommes (grep : ocr-fiable, worldgen-couches, broadsword,
|
||||
crafts-machines, chervil, commandes-exactes, ghost, luckperms, runclient, mcp-ocular, shebang,
|
||||
java-home)
|
||||
+ 4 points UNVERIFIED (seuils XP 6-100, durees sticks, valeurs armures wiki vs MCreator,
|
||||
patterns machines images).
|
||||
- Methode : WAVES (crawl 137 articles → stub JS isoles → re-crawl navigateur → verifie) + ETERNAL CODE
|
||||
@@ -474,7 +477,7 @@ avant M4 (TODO:crafts-machines).
|
||||
(biomesoplenty/clumps/glitchcore/patpat, message standard "ignorer hors dev").
|
||||
Serveur arrete apres test (port 25565 libere), eula.txt restaure a false,
|
||||
server.properties/packetfixer.properties restaures (le boot ne change que leurs timestamps).
|
||||
- M0 LIVRE 2026-10-18 23:35 (commit a suivre) : package core (PalaConfig JSON rechargeable
|
||||
- M0 LIVRE 2026-10-18 23:35 (commit 86cc852, pousse) : package core (PalaConfig JSON rechargeable
|
||||
22 entrees minerXp wiki, PalaStorage joueurs JSON + flush 5 s, PalaPermissions rangs+noeuds,
|
||||
PalaJobs moteur XP/niveaux, PalaCore lifecycle), /pala reload|info|rank, /jobs,
|
||||
/nether gate mineur niv.3, hook XP dans PalaToolEvents. VERIFIE : ./gradlew compileJava+build
|
||||
@@ -485,6 +488,11 @@ avant M4 (TODO:crafts-machines).
|
||||
cd mods/pala && nix-shell <repo>/shell.nix --run "export JAVA_HOME=$(dirname $(dirname
|
||||
$(readlink -f $(which java)))); ./gradlew build". TODO:java-home : fixer shell.nix racine
|
||||
(export JAVA_HOME jdk25) pour ne plus bricoler. Raison : decouvert en testant (3 essais).
|
||||
- M1 LIVRE 2026-10-18 23:40 : worldgen amethyste/titane calibre wiki (size 8, trapezoid 6-10,
|
||||
placed deep 25-40 + injection 4 biomes deep ocean), /pala orestats (scan + histo Y).
|
||||
VERIFIE : build SUCCESSFUL, boot Done (0.345s), config persistee ("config existante"),
|
||||
0 ERROR/Exception/datapack au log. UNVERIFIED en jeu : /pala orestats (pas de joueur connecte
|
||||
pendant le test) + distribution reelle sur nouveaux chunks.
|
||||
- Client/mod : ./gradlew runClient dans mods/pala/ : NON LANCE (session : pas d'affichage ; screenshots
|
||||
ocular impossibles ici). TODO:runclient : 1 screenshot/feature dans mods/pala/docs/screens/ avant M10.
|
||||
Raison : environnement headless, a faire sur poste avec X.
|
||||
|
||||
@@ -57,6 +57,13 @@ public final class PalaCommands {
|
||||
.then(Commands.literal("info")
|
||||
.requires(source -> isAdmin(source))
|
||||
.executes(command -> info(command.getSource())))
|
||||
.then(Commands.literal("orestats")
|
||||
.requires(source -> isAdmin(source))
|
||||
.then(Commands.argument("rayon",
|
||||
com.mojang.brigadier.arguments.IntegerArgumentType.integer(8, 32))
|
||||
.executes(command -> orestats(command.getSource(),
|
||||
com.mojang.brigadier.arguments.IntegerArgumentType
|
||||
.getInteger(command, "rayon")))))
|
||||
.then(Commands.literal("rank")
|
||||
.requires(source -> isAdmin(source))
|
||||
.then(joueurArg)));
|
||||
@@ -87,6 +94,63 @@ public final class PalaCommands {
|
||||
return Command.SINGLE_SUCCESS;
|
||||
}
|
||||
|
||||
// M1 : prospecte les minerais pala dans un cube de rayon N autour du joueur.
|
||||
// Affiche comptes par minerai + histogramme Y (8 bandes de 16) pour amethyste/titane.
|
||||
// Test distribution worldgen (couches 6-10 + deep ocean). Rayon capé à 32 (65^3 lectures).
|
||||
private static int orestats(CommandSourceStack source, int rayon) {
|
||||
ServerPlayer player = source.getPlayer();
|
||||
if (player == null) {
|
||||
source.sendFailure(Component.literal("§cCommande joueur uniquement."));
|
||||
return 0;
|
||||
}
|
||||
ServerLevel level = player.level();
|
||||
BlockPos center = player.blockPosition();
|
||||
java.util.Map<String, Integer> counts = new java.util.HashMap<>();
|
||||
java.util.Map<String, int[]> histo = new java.util.HashMap<>();
|
||||
net.minecraft.world.level.block.Block[] ores = {PalaBlocks.AMETHYST_ORE, PalaBlocks.TITANE_ORE,
|
||||
PalaBlocks.PALADIUM_ORE, PalaBlocks.PALADIUM_GREEN_ORE, PalaBlocks.TRIXIUM_ORE,
|
||||
PalaBlocks.FINDIUM_ORE, PalaBlocks.KISAKAY_ORE};
|
||||
for (int dx = -rayon; dx <= rayon; dx++) {
|
||||
for (int dy = -rayon; dy <= rayon; dy++) {
|
||||
for (int dz = -rayon; dz <= rayon; dz++) {
|
||||
BlockPos pos = center.offset(dx, dy, dz);
|
||||
net.minecraft.world.level.block.state.BlockState state = level.getBlockState(pos);
|
||||
for (net.minecraft.world.level.block.Block ore : ores) {
|
||||
if (state.is(ore)) {
|
||||
String id = net.minecraft.core.registries.BuiltInRegistries.BLOCK
|
||||
.getKey(ore).toString();
|
||||
counts.merge(id, 1, Integer::sum);
|
||||
if (ore == PalaBlocks.AMETHYST_ORE || ore == PalaBlocks.TITANE_ORE) {
|
||||
int[] bars = histo.computeIfAbsent(id, k -> new int[8]);
|
||||
int band = Math.min(7, Math.max(0, (pos.getY() + 64) / 16));
|
||||
bars[band]++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
StringBuilder out = new StringBuilder("§6[Orestats r=" + rayon + "]");
|
||||
java.util.List<String> ids = new java.util.ArrayList<>(counts.keySet());
|
||||
java.util.Collections.sort(ids);
|
||||
for (String id : ids) {
|
||||
out.append("\n§e").append(id).append(" §7x§a").append(counts.get(id));
|
||||
int[] bars = histo.get(id);
|
||||
if (bars != null) {
|
||||
out.append(" §8Y[-64..63 par 16]=");
|
||||
for (int b = 0; b < bars.length; b++) {
|
||||
out.append(bars[b]).append(b < bars.length - 1 ? "/" : "");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ids.isEmpty()) {
|
||||
out.append("\n§7aucun minerai pala dans la zone.");
|
||||
}
|
||||
source.sendSuccess(() -> Component.literal(out.toString()), false);
|
||||
return Command.SINGLE_SUCCESS;
|
||||
}
|
||||
|
||||
private static int rank(CommandSourceStack source, ServerPlayer target, String rank) {
|
||||
if (!PalaConfig.get().rankNodes.containsKey(rank)) {
|
||||
source.sendFailure(Component.literal("§cRang inconnu : " + rank));
|
||||
|
||||
@@ -5,6 +5,7 @@ import net.fabricmc.fabric.api.biome.v1.BiomeSelectors;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.resources.Identifier;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.world.level.biome.Biomes;
|
||||
import net.minecraft.world.level.levelgen.GenerationStep;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
|
||||
@@ -50,5 +51,16 @@ public final class PalaWorldgen {
|
||||
BiomeSelectors.foundInOverworld().or(BiomeSelectors.foundInTheEnd()),
|
||||
GenerationStep.Decoration.UNDERGROUND_ORES, key("titane_ore"));
|
||||
addOverworld("trixium_ore");
|
||||
// M1 (wiki minerais, VERIFIE) : amethyste + titane des la couche 25 dans les
|
||||
// fonds marins des biomes deep ocean (les 4 variants). Placed *_deep dedies.
|
||||
addDeepOcean("amethyst_ore_deep");
|
||||
addDeepOcean("titane_ore_deep");
|
||||
}
|
||||
|
||||
private static void addDeepOcean(String path) {
|
||||
BiomeModifications.addFeature(
|
||||
BiomeSelectors.includeByKey(Biomes.DEEP_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN,
|
||||
Biomes.DEEP_COLD_OCEAN, Biomes.DEEP_FROZEN_OCEAN),
|
||||
GenerationStep.Decoration.UNDERGROUND_ORES, key(path));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"type": "minecraft:ore",
|
||||
"discard_chance_on_air_exposure": 0.0,
|
||||
"size": 5,
|
||||
"size": 8,
|
||||
"targets": [
|
||||
{
|
||||
"state": "pala:amethyst_ore",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"type": "minecraft:ore",
|
||||
"discard_chance_on_air_exposure": 0.0,
|
||||
"size": 4,
|
||||
"size": 8,
|
||||
"targets": [
|
||||
{
|
||||
"state": "pala:titane_ore",
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
{
|
||||
"type": "minecraft:height_range",
|
||||
"height": {
|
||||
"type": "minecraft:uniform",
|
||||
"type": "minecraft:trapezoid",
|
||||
"min_inclusive": {
|
||||
"absolute": 1
|
||||
"absolute": 6
|
||||
},
|
||||
"max_inclusive": {
|
||||
"absolute": 25
|
||||
"absolute": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"feature": "pala:amethyst_ore",
|
||||
"placement": [
|
||||
{
|
||||
"type": "minecraft:count",
|
||||
"count": 4
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:height_range",
|
||||
"height": {
|
||||
"type": "minecraft:uniform",
|
||||
"min_inclusive": {
|
||||
"absolute": 25
|
||||
},
|
||||
"max_inclusive": {
|
||||
"absolute": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -11,12 +11,12 @@
|
||||
{
|
||||
"type": "minecraft:height_range",
|
||||
"height": {
|
||||
"type": "minecraft:uniform",
|
||||
"type": "minecraft:trapezoid",
|
||||
"min_inclusive": {
|
||||
"absolute": 1
|
||||
"absolute": 6
|
||||
},
|
||||
"max_inclusive": {
|
||||
"absolute": 19
|
||||
"absolute": 10
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"feature": "pala:titane_ore",
|
||||
"placement": [
|
||||
{
|
||||
"type": "minecraft:count",
|
||||
"count": 4
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:height_range",
|
||||
"height": {
|
||||
"type": "minecraft:uniform",
|
||||
"min_inclusive": {
|
||||
"absolute": 25
|
||||
},
|
||||
"max_inclusive": {
|
||||
"absolute": 40
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Reference in New Issue
Block a user