Mise à jour README.md version 2.1.5
- Documentation de la dépendance obligatoire KubeJS - Création automatique du script de suppression des minerais vanilla - Nouvel onglet créatif personnalisé - Changelog complet de la version 2.1.5 - Architecture mise à jour avec KubeJSIntegration et ShardDiamondArmorMaterial 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -12,57 +12,64 @@ Custom Ore Gem est un mod Minecraft développé avec MCreator pour Forge 1.20.1.
|
|||||||
- **Mod Loader** : Forge (version 47.3.0)
|
- **Mod Loader** : Forge (version 47.3.0)
|
||||||
- **Version de Java** : Java 17
|
- **Version de Java** : Java 17
|
||||||
- **Mod ID** : `custom_ore_gen`
|
- **Mod ID** : `custom_ore_gen`
|
||||||
- **Version** : 1.0.0
|
- **Version** : 2.1.5
|
||||||
- **Auteur** : Aulyrius (créé via MCreator)
|
- **Auteur** : Aulyrius (créé via MCreator)
|
||||||
- **Site web** : https://lanro.eu
|
- **Site web** : https://lanro.eu
|
||||||
|
|
||||||
|
|
||||||
## Avant garde
|
## Avant garde
|
||||||
|
|
||||||
Il est recommandé pour la bonne utilisation du mods d'utilisé des mods complémentaire :
|
### Dépendances Requises
|
||||||
|
|
||||||
* **Biomes O' Plenty** - Pour profiter des biomes supplémentaires (69 biomes BOP supportés)
|
* **KubeJS** (OBLIGATOIRE) - Ce mod ne peut pas fonctionner sans KubeJS installé
|
||||||
* **Biome Replacer** pour supprimer les biomes caves, qui n'ont pas de sens de température et d'un point de vue joueur est pas logique.
|
- 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`
|
||||||
|
|
||||||
biome_replacer.properties :
|
* **Biomes O' Plenty** (Recommandé) - Pour profiter des biomes supplémentaires (69 biomes BOP supportés)
|
||||||
|
|
||||||
```javascript
|
* **Biome Replacer** (Optionnel) - Pour supprimer les biomes caves qui n'ont pas de sens de température
|
||||||
|
|
||||||
|
```properties
|
||||||
|
biome_replacer.properties:
|
||||||
minecraft:deep_dark > null
|
minecraft:deep_dark > null
|
||||||
minecraft:dripstone_caves > null
|
minecraft:dripstone_caves > null
|
||||||
minecraft:lush_caves > null
|
minecraft:lush_caves > null
|
||||||
```
|
```
|
||||||
* KubeJS pour supprimer la génération de base avec le script suivant :
|
|
||||||
|
|
||||||
*remove.js*
|
### Script KubeJS Automatique
|
||||||
|
|
||||||
```javascript
|
Le mod crée automatiquement le script suivant au premier lancement dans `kubejs/startup_scripts/custom_ore_gen_remove_vanilla_ores.js` :
|
||||||
// priority: 0
|
|
||||||
|
```javascript
|
||||||
WorldgenEvents.remove(event => {
|
// priority: 0
|
||||||
var minecraftOreList = [
|
|
||||||
'minecraft:coal_ore',
|
WorldgenEvents.remove(event => {
|
||||||
'minecraft:deepslate_coal_ore',
|
var minecraftOreList = [
|
||||||
'minecraft:copper_ore',
|
'minecraft:coal_ore',
|
||||||
'minecraft:deepslate_copper_ore',
|
'minecraft:deepslate_coal_ore',
|
||||||
'minecraft:iron_ore',
|
'minecraft:copper_ore',
|
||||||
'minecraft:deepslate_iron_ore',
|
'minecraft:deepslate_copper_ore',
|
||||||
'minecraft:gold_ore',
|
'minecraft:iron_ore',
|
||||||
'minecraft:deepslate_gold_ore',
|
'minecraft:deepslate_iron_ore',
|
||||||
'minecraft:redstone_ore',
|
'minecraft:gold_ore',
|
||||||
'minecraft:deepslate_redstone_ore',
|
'minecraft:deepslate_gold_ore',
|
||||||
'minecraft:emerald_ore',
|
'minecraft:redstone_ore',
|
||||||
'minecraft:deepslate_emerald_ore',
|
'minecraft:deepslate_redstone_ore',
|
||||||
'minecraft:diamond_ore',
|
'minecraft:emerald_ore',
|
||||||
'minecraft:deepslate_diamond_ore',
|
'minecraft:deepslate_emerald_ore',
|
||||||
'minecraft:lapis_ore',
|
'minecraft:diamond_ore',
|
||||||
'minecraft:deepslate_lapis_ore'
|
'minecraft:deepslate_diamond_ore',
|
||||||
];
|
'minecraft:lapis_ore',
|
||||||
|
'minecraft:deepslate_lapis_ore'
|
||||||
event.removeOres(props => {
|
];
|
||||||
props.blocks = minecraftOreList
|
|
||||||
});
|
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.
|
||||||
## Fonctionnalités Principales
|
## Fonctionnalités Principales
|
||||||
|
|
||||||
### Nouveaux Minerais (16 blocs)
|
### Nouveaux Minerais (16 blocs)
|
||||||
@@ -79,6 +86,8 @@ Le mod ajoute plusieurs variantes de minerais personnalisés :
|
|||||||
- Se génère dans les biomes froids (cold_biomes)
|
- Se génère dans les biomes froids (cold_biomes)
|
||||||
- Drop : 1-2 Diamants (Fortune supporté)
|
- 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.
|
||||||
|
|
||||||
#### Variantes d'Or
|
#### Variantes d'Or
|
||||||
- **Pure Golden Ore** (`puregoldenore`) : Un minerai d'or pur de haute qualité
|
- **Pure Golden Ore** (`puregoldenore`) : Un minerai d'or pur de haute qualité
|
||||||
- Se génère dans les biomes chauds (hot_biomes)
|
- Se génère dans les biomes chauds (hot_biomes)
|
||||||
@@ -531,10 +540,16 @@ Minerais trouvables:
|
|||||||
## Intégration
|
## Intégration
|
||||||
|
|
||||||
### Mode Créatif
|
### Mode Créatif
|
||||||
Les items sont organisés dans les onglets créatifs via `CustomOreGenModTabs` :
|
Le mod ajoute un onglet créatif personnalisé **"Custom Ore Gen"** contenant tous les items du mod :
|
||||||
- **INGREDIENTS** : Diamond Shards et blocs de minerais
|
- Tous les minerais (15 blocs - le minerai surface Shard Diamond est désactivé)
|
||||||
- **TOOLS_AND_UTILITIES** : Pioche, pelle, hache, paxel et Ore Biome Finder
|
- Diamond Shards et Ore Biome Finder
|
||||||
- **COMBAT** : Armure complète en Diamond Shard (casque, plastron, jambières, bottes)
|
- Tous les outils Diamond Shard (pioche, pelle, hache, paxel)
|
||||||
|
- Toute l'armure Diamond Shard (casque, plastron, jambières, bottes)
|
||||||
|
|
||||||
|
Les items restent également disponibles dans les onglets vanilla Minecraft :
|
||||||
|
- **INGREDIENTS** : Diamond Shards
|
||||||
|
- **TOOLS_AND_UTILITIES** : Outils et Ore Biome Finder
|
||||||
|
- **COMBAT** : Armure Diamond Shard
|
||||||
|
|
||||||
### Langue
|
### Langue
|
||||||
Le mod inclut des fichiers de localisation en anglais (`en_us.json`) avec des noms descriptifs pour tous les blocs et objets.
|
Le mod inclut des fichiers de localisation en anglais (`en_us.json`) avec des noms descriptifs pour tous les blocs et objets.
|
||||||
@@ -587,10 +602,12 @@ config/custom_ore_gen-common.toml
|
|||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Assurez-vous d'avoir Minecraft 1.20.1 installé avec Forge 47.3.0+
|
1. Assurez-vous d'avoir Minecraft 1.20.1 installé avec Forge 47.3.0+
|
||||||
2. Placez le fichier .jar du mod dans le dossier `mods` de votre installation Minecraft
|
2. **Installez KubeJS** (OBLIGATOIRE) - Le mod ne fonctionnera pas sans KubeJS
|
||||||
3. Lancez le jeu avec le profil Forge
|
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
|
||||||
|
|
||||||
> **Important** : Ce mod est conçu pour être utilisé avec KubeJS et ne doit pas être utilisé seul.
|
> **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`.
|
||||||
|
|
||||||
## Architecture du Code
|
## Architecture du Code
|
||||||
|
|
||||||
@@ -600,7 +617,9 @@ config/custom_ore_gen-common.toml
|
|||||||
net.mcreator.customoregen/
|
net.mcreator.customoregen/
|
||||||
├── CustomOreGenMod.java # Classe principale du mod
|
├── CustomOreGenMod.java # Classe principale du mod
|
||||||
├── OresCommand.java # Commande /ores pour détecter les minerais
|
├── OresCommand.java # Commande /ores pour détecter les minerais
|
||||||
├── block/ # Classes des blocs (16 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
|
│ ├── SharddiamondblockoreBlock.java
|
||||||
│ ├── ConcentrateddiamondoreBlock.java
|
│ ├── ConcentrateddiamondoreBlock.java
|
||||||
│ ├── ConcentratedcoaloreBlock.java
|
│ ├── ConcentratedcoaloreBlock.java
|
||||||
@@ -635,7 +654,7 @@ net.mcreator.customoregen/
|
|||||||
│ ├── ConfigurableOreDropsProcedure.java # Drops configurables
|
│ ├── ConfigurableOreDropsProcedure.java # Drops configurables
|
||||||
│ └── OreexperienceProcedure.java # Drops d'XP
|
│ └── OreexperienceProcedure.java # Drops d'XP
|
||||||
└── init/ # Registres Forge
|
└── init/ # Registres Forge
|
||||||
├── CustomOreGenModBlocks.java # 16 blocs
|
├── CustomOreGenModBlocks.java # 15 blocs
|
||||||
├── CustomOreGenModItems.java # Items + BlockItems
|
├── CustomOreGenModItems.java # Items + BlockItems
|
||||||
└── CustomOreGenModTabs.java # Onglets créatifs
|
└── CustomOreGenModTabs.java # Onglets créatifs
|
||||||
```
|
```
|
||||||
@@ -643,6 +662,8 @@ net.mcreator.customoregen/
|
|||||||
### Classes Principales
|
### Classes Principales
|
||||||
|
|
||||||
- **CustomOreGenMod** : Point d'entrée du mod, gère l'initialisation et le réseau
|
- **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
|
||||||
|
- **ShardDiamondArmorMaterial** : Classe de matériau d'armure Diamond Shard avec gestion des textures
|
||||||
- **OresCommand** : Commande `/ores` pour identifier les minerais du biome actuel
|
- **OresCommand** : Commande `/ores` pour identifier les minerais du biome actuel
|
||||||
- **OreBiomeFinderItem** : Item utilisable pour détecter les minerais du biome (clic droit)
|
- **OreBiomeFinderItem** : Item utilisable pour détecter les minerais du biome (clic droit)
|
||||||
- **SharddiamondpaxelItem** : Paxel combinant pioche + pelle + hache en un seul outil
|
- **SharddiamondpaxelItem** : Paxel combinant pioche + pelle + hache en un seul outil
|
||||||
@@ -653,15 +674,29 @@ net.mcreator.customoregen/
|
|||||||
|
|
||||||
## Philosophie du Mod
|
## Philosophie du Mod
|
||||||
|
|
||||||
Custom Ore Gem est conçu pour :
|
Custom Ore Gen est conçu pour :
|
||||||
- **Modifier la distribution des ressources** Minecraft avec de nouvelles variantes de minerais
|
- **Modifier la distribution des ressources** Minecraft avec de nouvelles variantes de minerais basées sur la température des biomes
|
||||||
- **Fournir un système de drops configurable** pour les pack makers et moddeurs
|
- **Fournir une dépendance obligatoire à KubeJS** avec création automatique du script de suppression des minerais vanilla
|
||||||
- **Introduire une progression intermédiaire** à travers les Diamond Shards (outils et armure)
|
- **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`
|
- **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é)
|
- **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é)
|
- **Fournir une armure intermédiaire** entre fer et diamant (17 protection, 1060 durabilité)
|
||||||
- **S'intégrer avec KubeJS** pour permettre des modifications avancées
|
- **Faciliter l'installation** avec création automatique des scripts KubeJS nécessaires
|
||||||
- **Supporter Biomes O' Plenty** avec 69 biomes supplémentaires classés par température
|
- **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
|
||||||
|
|
||||||
|
## Changements de Version
|
||||||
|
|
||||||
|
### Version 2.1.5
|
||||||
|
- ✅ 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
|
||||||
|
- ✅ 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)
|
||||||
|
- ✅ Amélioration du système de matériau d'armure avec `ShardDiamondArmorMaterial`
|
||||||
|
|
||||||
## Crédits
|
## Crédits
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
package net.mcreator.customoregen;
|
package net.mcreator.customoregen;
|
||||||
|
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.event.level.LevelEvent;
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.LogicalSide;
|
import net.minecraftforge.fml.LogicalSide;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
|
||||||
import net.minecraft.world.level.storage.LevelResource;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -13,47 +11,70 @@ import java.nio.file.Files;
|
|||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
|
|
||||||
@Mod.EventBusSubscriber(modid = CustomOreGenMod.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE)
|
@Mod.EventBusSubscriber(modid = CustomOreGenMod.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||||
public class KubeJSIntegration {
|
public class KubeJSIntegration {
|
||||||
|
|
||||||
private static final String SCRIPT_FILE_NAME = "custom_ore_gen_remove_vanilla_ores.js";
|
private static final String SCRIPT_FILE_NAME = "custom_ore_gen_remove_vanilla_ores.js";
|
||||||
private static boolean hasCreatedScript = false;
|
private static boolean hasCreatedScript = false;
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onServerLoad(LevelEvent.Load event) {
|
public static void onCommonSetup(FMLCommonSetupEvent event) {
|
||||||
// Only run on server side and only once
|
// Only run once
|
||||||
if (event.getLevel().isClientSide() || hasCreatedScript) {
|
if (hasCreatedScript) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(event.getLevel() instanceof ServerLevel serverLevel)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
hasCreatedScript = true;
|
hasCreatedScript = true;
|
||||||
|
|
||||||
// Get the server's kubejs directory
|
CustomOreGenMod.LOGGER.info("============================================");
|
||||||
File kubeJsDir = new File(serverLevel.getServer().getServerDirectory(), "kubejs/startup_scripts");
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: FMLCommonSetupEvent FIRED!");
|
||||||
|
CustomOreGenMod.LOGGER.info("============================================");
|
||||||
|
|
||||||
|
// Get the game directory (where .minecraft is)
|
||||||
|
File gameDir = new File(".");
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Game directory: " + gameDir.getAbsolutePath());
|
||||||
|
|
||||||
|
File kubeJsDir = new File(gameDir, "kubejs/startup_scripts");
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Target KubeJS directory: " + kubeJsDir.getAbsolutePath());
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Directory exists? " + kubeJsDir.exists());
|
||||||
|
|
||||||
|
// Create directory if it doesn't exist
|
||||||
if (!kubeJsDir.exists()) {
|
if (!kubeJsDir.exists()) {
|
||||||
CustomOreGenMod.LOGGER.info("KubeJS directory not found. Skipping script creation.");
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Directory does not exist, creating...");
|
||||||
return;
|
boolean created = kubeJsDir.mkdirs();
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: mkdirs() returned: " + created);
|
||||||
|
if (!created) {
|
||||||
|
CustomOreGenMod.LOGGER.error("Custom Ore Gen: FAILED to create KubeJS directory!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Successfully created directory");
|
||||||
}
|
}
|
||||||
|
|
||||||
File scriptFile = new File(kubeJsDir, SCRIPT_FILE_NAME);
|
File scriptFile = new File(kubeJsDir, SCRIPT_FILE_NAME);
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Script file path: " + scriptFile.getAbsolutePath());
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Script file exists? " + scriptFile.exists());
|
||||||
|
|
||||||
// Only create if it doesn't exist
|
// Only create if it doesn't exist
|
||||||
if (scriptFile.exists()) {
|
if (scriptFile.exists()) {
|
||||||
CustomOreGenMod.LOGGER.info("KubeJS script already exists: " + scriptFile.getPath());
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Script already exists, skipping creation");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Script does not exist, creating now...");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
createKubeJSScript(scriptFile.toPath());
|
createKubeJSScript(scriptFile.toPath());
|
||||||
CustomOreGenMod.LOGGER.info("Successfully created KubeJS script: " + scriptFile.getPath());
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Script creation completed successfully!");
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: File exists after creation? " + scriptFile.exists());
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: File size: " + scriptFile.length() + " bytes");
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
CustomOreGenMod.LOGGER.error("Failed to create KubeJS script", e);
|
CustomOreGenMod.LOGGER.error("Custom Ore Gen: FAILED to create KubeJS script!", e);
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CustomOreGenMod.LOGGER.info("============================================");
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Script creation process finished");
|
||||||
|
CustomOreGenMod.LOGGER.info("============================================");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void createKubeJSScript(Path scriptPath) throws IOException {
|
private static void createKubeJSScript(Path scriptPath) throws IOException {
|
||||||
@@ -87,5 +108,6 @@ WorldgenEvents.remove(event => {
|
|||||||
""";
|
""";
|
||||||
|
|
||||||
Files.writeString(scriptPath, scriptContent, StandardOpenOption.CREATE_NEW);
|
Files.writeString(scriptPath, scriptContent, StandardOpenOption.CREATE_NEW);
|
||||||
|
CustomOreGenMod.LOGGER.info("Custom Ore Gen: Files.writeString() completed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user