test+fix: deep generation tests + bug cleanup (licence, docs, deps)
Two cohesive passes that harden the latitude worldgen and clean up
long-standing inconsistencies.
== Bug fixes & doc alignment ==
- licence: set MIT in gradle.properties and neoforge.mods.toml
(was "Not specified" - blocks distribution)
- OreAuditHandler: fix javadoc that referenced a non-existent system
property; the trigger is the .oreaudit marker file. Add an explicit
warning about the System.exit(0) and point to LatitudeGameTest as the
non-destructive alternative
- KubeJS: remove the dead kubejs_version, the commented dependency and
all README claims about an "automatic KubeJS script"/KubeJSIntegration
class that no longer exists. Vanilla ore removal is now native via the
neoforge:remove_features biome modifier
- README: refresh the technical header (1.21.1 / NeoForge 21.1.219 /
Java 21 / v3.2, was 1.20.1/Forge/Java17/v2.1.5) and the shard-diamond
surface note (both variants are generated, gated by shardDiamondOre)
- CLAUDE.md / CONFIG_INTEGRATION_GUIDE.md: mark the feature toggles and
tool stats as wired (they read ModConfigs at runtime); correct the
"hardcoded tools" claim
== Generation tests (56 unit + 6 GameTest, all green) ==
- Extract the pure geometry of LatitudeBiomeSource into LatitudeMath
(temperature, 3-zone underground model, spawn safe zone, dual-octave
selector index). LatitudeBiomeSource now delegates to it, so one
source of truth drives both runtime and tests - no behaviour drift
- LatitudeMathTest (21): temperature clamp/monotonicity, zone boundaries
without gaps, Deep Dark / cave threshold predicates, spawn-safe square
symmetry, selector index bounds + near-uniform distribution
- BiomeBandTest (18): fromTemperature boundary cases, surface/ocean
pool non-empty, cave biomes never in a surface pool
- ModConfigsTest (+2 guards): every ConfigHelper toggle string maps to
a real FeatureToggleConfig field, so a typo cannot silently produce a
dead toggle (default: return true)
- LatitudeGameTest (+4 server tests): determinism (1485 pts, 0 mismatch),
no cave biome at surface (160k samples, 0 leak), surface continuity
(7% transitions - large biomes), climate gradient (north=cold 100%,
south=hot 100%, equator cold 0%)
== Build ==
- build.gradle: addModdingDependenciesTo(sourceSets.test) so pure unit
tests can reference Minecraft types without a full game server
- neoforge.mods.toml: optional BOP/create/mekanism dependencies removed;
declared with mandatory=false + versionRange="[0,)" they broke mod
loading when the mods were absent ("requires X 0 or above"). Optional
integration is already handled via data tags (required:false) and
data-only recipes that no-op if the mod is missing
- gradlew: restore executable bit
Verification: ./gradlew test build -> BUILD SUCCESSFUL, 56/56 unit tests
./gradlew runGameTestServer -> 6/6 GameTests passed in 840ms
This commit is contained in:
@@ -2,30 +2,27 @@
|
||||
|
||||
## Description
|
||||
|
||||
Custom Ore Gem est un mod Minecraft développé avec MCreator pour Forge 1.20.1. Ce mod modifie la distribution des ressources dans Minecraft en ajoutant de nouvelles variantes de minerais avec des drops configurables et des outils personnalisés.
|
||||
|
||||
> **Note importante** : Ce mod est conçu pour être utilisé avec KubeJS et ne doit pas être utilisé seul.
|
||||
Custom Ore Gem est un mod Minecraft développé avec MCreator pour NeoForge 1.21.1. Ce mod modifie la distribution des ressources dans Minecraft en redistribuant les minerais et les biomes selon des bandes climatiques par latitude (axe Z), avec des drops configurables et des outils personnalisés.
|
||||
|
||||
## Informations Techniques
|
||||
|
||||
- **Version de Minecraft** : 1.20.1
|
||||
- **Mod Loader** : Forge (version 47.3.0)
|
||||
- **Version de Java** : Java 17
|
||||
- **Version de Minecraft** : 1.21.1
|
||||
- **Mod Loader** : NeoForge (version 21.1.219)
|
||||
- **Version de Java** : Java 21
|
||||
- **Mod ID** : `custom_ore_gen`
|
||||
- **Version** : 2.1.5
|
||||
- **Version** : 3.2
|
||||
- **Auteur** : Aulyrius (créé via MCreator)
|
||||
- **Site web** : https://lanro.eu
|
||||
- **Licence** : MIT
|
||||
|
||||
|
||||
## Avant garde
|
||||
|
||||
### Dépendances Requises
|
||||
|
||||
* **KubeJS** (OBLIGATOIRE) - Ce mod ne peut pas fonctionner sans KubeJS installé
|
||||
- Le mod refusera de se lancer si KubeJS n'est pas présent
|
||||
- Le mod crée automatiquement le script de suppression des minerais vanilla au premier lancement dans `kubejs/startup_scripts/custom_ore_gen_remove_vanilla_ores.js`
|
||||
* **Biomes O' Plenty** (Recommandé) - Pour profiter des biomes supplémentaires (supportés via les tags `latitude_*_surface` avec entrées `"required": false`, donc mod optionnel)
|
||||
|
||||
* **Biomes O' Plenty** (Recommandé) - Pour profiter des biomes supplémentaires (69 biomes BOP supportés)
|
||||
> **Note** : La suppression des minerais vanilla est désormais **native** (elle ne nécessite plus KubeJS) : elle est réalisée par le biome modifier `neoforge:remove_features` `data/custom_ore_gen/neoforge/biome_modifier/remove_vanilla_ores.json`, appliqué à `#minecraft:is_overworld`.
|
||||
|
||||
* **Biome Replacer** (Optionnel) - Pour supprimer les biomes caves qui n'ont pas de sens de température
|
||||
|
||||
@@ -36,40 +33,7 @@ Custom Ore Gem est un mod Minecraft développé avec MCreator pour Forge 1.20.1.
|
||||
minecraft:lush_caves > null
|
||||
```
|
||||
|
||||
### Script KubeJS Automatique
|
||||
|
||||
Le mod crée automatiquement le script suivant au premier lancement dans `kubejs/startup_scripts/custom_ore_gen_remove_vanilla_ores.js` :
|
||||
|
||||
```javascript
|
||||
// priority: 0
|
||||
|
||||
WorldgenEvents.remove(event => {
|
||||
var minecraftOreList = [
|
||||
'minecraft:coal_ore',
|
||||
'minecraft:deepslate_coal_ore',
|
||||
'minecraft:copper_ore',
|
||||
'minecraft:deepslate_copper_ore',
|
||||
'minecraft:iron_ore',
|
||||
'minecraft:deepslate_iron_ore',
|
||||
'minecraft:gold_ore',
|
||||
'minecraft:deepslate_gold_ore',
|
||||
'minecraft:redstone_ore',
|
||||
'minecraft:deepslate_redstone_ore',
|
||||
'minecraft:emerald_ore',
|
||||
'minecraft:deepslate_emerald_ore',
|
||||
'minecraft:diamond_ore',
|
||||
'minecraft:deepslate_diamond_ore',
|
||||
'minecraft:lapis_ore',
|
||||
'minecraft:deepslate_lapis_ore'
|
||||
];
|
||||
|
||||
event.removeOres(props => {
|
||||
props.blocks = minecraftOreList
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
> **Note** : Le script n'est recréé que s'il n'existe pas déjà. Vous pouvez le modifier manuellement sans risque.
|
||||
> La création automatique d'un script KubeJS a été supprimée. La suppression des minerais vanilla est maintenant native (voir section Dépendances ci-dessus). Aucune dépendance KubeJS n'est plus requise.
|
||||
## Fonctionnalités Principales
|
||||
|
||||
### Nouveaux Minerais (16 blocs)
|
||||
@@ -86,7 +50,7 @@ Le mod ajoute plusieurs variantes de minerais personnalisés :
|
||||
- Se génère dans les biomes froids (cold_biomes)
|
||||
- Drop : 1-2 Diamants (Fortune supporté)
|
||||
|
||||
> **Note** : La version surface du minerai Shard Diamond a été désactivée dans la version 2.1.5. Seule la version deepslate est disponible.
|
||||
> **Note** : Le minerai Shard Diamond possède deux variantes — surface (`sharddiamondblockore`, Y 0–15) et deepslate (`deepslatesharddiamondore`, Y -64 à -40). Les deux sont générées dans tous les biomes et contrôlées par le toggle `shardDiamondOre`.
|
||||
|
||||
#### Variantes d'Or
|
||||
- **Pure Golden Ore** (`puregoldenore`) : Un minerai d'or pur de haute qualité
|
||||
@@ -601,13 +565,12 @@ config/custom_ore_gen-common.toml
|
||||
|
||||
## Installation
|
||||
|
||||
1. Assurez-vous d'avoir Minecraft 1.20.1 installé avec Forge 47.3.0+
|
||||
2. **Installez KubeJS** (OBLIGATOIRE) - Le mod ne fonctionnera pas sans KubeJS
|
||||
3. Placez le fichier `.jar` du mod dans le dossier `mods` de votre installation Minecraft
|
||||
4. Lancez le jeu avec le profil Forge
|
||||
5. Le mod créera automatiquement le script KubeJS nécessaire au premier lancement
|
||||
1. Assurez-vous d'avoir Minecraft 1.21.1 installé avec NeoForge 21.1.219+
|
||||
2. Placez le fichier `.jar` du mod dans le dossier `mods` de votre installation Minecraft
|
||||
3. Lancez le jeu avec le profil NeoForge
|
||||
4. Le mod crée sa configuration `config/custom_ore_gen-common.toml` au premier lancement
|
||||
|
||||
> **Important** : Ce mod nécessite KubeJS pour fonctionner. Le script de suppression des minerais vanilla sera créé automatiquement dans `kubejs/startup_scripts/custom_ore_gen_remove_vanilla_ores.js`.
|
||||
> Le mod est autonome : aucune dépendance KubeJS n'est requise. La suppression native des minerais vanilla est appliquée via biome modifier au chargement du monde.
|
||||
|
||||
## Architecture du Code
|
||||
|
||||
@@ -617,7 +580,6 @@ config/custom_ore_gen-common.toml
|
||||
net.mcreator.customoregen/
|
||||
├── CustomOreGenMod.java # Classe principale du mod
|
||||
├── OresCommand.java # Commande /ores pour détecter les minerais
|
||||
├── KubeJSIntegration.java # Création automatique du script KubeJS
|
||||
├── ShardDiamondArmorMaterial.java # Classe de matériau d'armure Diamond Shard
|
||||
├── block/ # Classes des blocs (15 minerais)
|
||||
│ ├── SharddiamondblockoreBlock.java
|
||||
@@ -661,8 +623,9 @@ net.mcreator.customoregen/
|
||||
|
||||
### Classes Principales
|
||||
|
||||
- **CustomOreGenMod** : Point d'entrée du mod, gère l'initialisation et le réseau
|
||||
- **KubeJSIntegration** : Crée automatiquement le script KubeJS de suppression des minerais vanilla au premier lancement du jeu
|
||||
- **CustomOreGenMod** : Point d'entrée du mod, enregistre les DeferredRegister (blocs, items, armour, loot modifiers, worldgen codecs) et la config commune
|
||||
- **LatitudeBiomeSource** : `BiomeSource` personnalisé distribuant les biomes par latitude (axe Z) avec un modèle souterrain à 3 zones
|
||||
- **ConfigGatedFeaturesModifier** : `BiomeModifier` qui n'injecte les features d'ores que si leur toggle de config est activé
|
||||
- **ShardDiamondArmorMaterial** : Classe de matériau d'armure Diamond Shard avec gestion des textures
|
||||
- **OresCommand** : Commande `/ores` pour identifier les minerais du biome actuel
|
||||
- **OreBiomeFinderItem** : Item utilisable pour détecter les minerais du biome (clic droit)
|
||||
@@ -676,12 +639,12 @@ net.mcreator.customoregen/
|
||||
|
||||
Custom Ore Gen est conçu pour :
|
||||
- **Modifier la distribution des ressources** Minecraft avec de nouvelles variantes de minerais basées sur la température des biomes
|
||||
- **Fournir une dépendance obligatoire à KubeJS** avec création automatique du script de suppression des minerais vanilla
|
||||
- **Redéfinir la distribution mondiale des biomes** en bandes climatiques par latitude (axe Z) avec biomes très grands pour encourager l'exploration
|
||||
- **Introduire une progression intermédiaire** à travers les Diamond Shards (outils et armure entre fer et diamant)
|
||||
- **Offrir des outils d'exploration** avec l'Ore Biome Finder et la commande `/ores`
|
||||
- **Proposer un outil tout-en-un** avec le Paxel en Diamond Shard (1000 durabilité)
|
||||
- **Fournir une armure intermédiaire** entre fer et diamant (17 protection, 1060 durabilité)
|
||||
- **Faciliter l'installation** avec création automatique des scripts KubeJS nécessaires
|
||||
- **Faciliter l'installation** (mod autonome, suppression native des minerais vanilla via biome modifier)
|
||||
- **Supporter Biomes O' Plenty** avec 69 biomes supplémentaires classés par température
|
||||
- **Fournir un onglet créatif dédié** regroupant tous les items du mod
|
||||
|
||||
@@ -691,11 +654,10 @@ Custom Ore Gen est conçu pour :
|
||||
- ✅ Ajout de l'armure complète Diamond Shard (casque, plastron, jambières, bottes)
|
||||
- ✅ Ajout du Paxel Diamond Shard (outil tout-en-un : pioche + pelle + hache)
|
||||
- ✅ Création d'un onglet créatif personnalisé "Custom Ore Gen"
|
||||
- ✅ KubeJS est maintenant une dépendance obligatoire (le mod refuse de se lancer sans KubeJS)
|
||||
- ✅ Création automatique du script KubeJS de suppression des minerais vanilla au premier lancement
|
||||
- ⚠️ (Anciennement 2.1.5) KubeJS n'est plus une dépendance : la suppression des minerais vanilla est désormais native (biome modifier NeoForge), à partir de la migration NeoForge 1.21.1
|
||||
- ✅ Nouvelle texture Diamond Shard (32x32 pixels)
|
||||
- ✅ Correction des textures d'armure (plus de texture violette)
|
||||
- ✅ Désactivation du minerai Shard Diamond en surface (seulement la version deepslate reste disponible)
|
||||
- ℹ️ Le minerai Shard Diamond existe en deux variantes (surface Y 0–15 et deepslate Y -64 à -40), toutes deux générées partout et contrôlées par le toggle `shardDiamondOre`
|
||||
- ✅ Amélioration du système de matériau d'armure avec `ShardDiamondArmorMaterial`
|
||||
|
||||
## Crédits
|
||||
@@ -703,7 +665,7 @@ Custom Ore Gen est conçu pour :
|
||||
- **Auteur** : Aulyrius
|
||||
- **Outil de développement** : MCreator (https://mcreator.net/about)
|
||||
- **Site web** : https://lanro.eu
|
||||
- **Framework** : Minecraft Forge 1.20.1 (version 47.3.0)
|
||||
- **Framework** : NeoForge 1.21.1 (version 21.1.219)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user