Erreur Java sur Eclipse

KazaWong

Aventurier
17 Mai 2021
4
0
1
22
Bonjour,

J'ai récemment repris le modding java en 1.7.10 mais je fais face a un problème que je n'arrive pas à résoudre.

En effet dès que je lance une nouvelle map le jeu charge et crash et me met cette erreur

Code:
AL lib: (EE) alc_cleanup: 1 device not closed
OpenJDK 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release

Je précise que je suis sur un ordinateur portable avec comme carte graphique Nvidia RTX.

PS : je n'ais pas trop su dans quelle catégorie mettre se post

Cordialement, KazaWong
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 135
162
463
247
21
Mìlhüsa
Bonjour,

Les deux lignes que tu as envoyées ne sont que des avertissements, ce n'est pas ça qui cause le crash ; il faudrait que tu envoies le rapport de crash, ou les logs de ton jeu.

Cordialement,
ShE3py
 

KazaWong

Aventurier
17 Mai 2021
4
0
1
22
Bonjour,

Les deux lignes que tu as envoyées ne sont que des avertissements, ce n'est pas ça qui cause le crash ; il faudrait que tu envoies le rapport de crash, ou les logs de ton jeu.

Cordialement,
ShE3py
Bonjour en regardant les logs j'ai ceci qui s'affiche :

Description: Exception in server tick loop

java.lang.IllegalArgumentException: bound must be positive
at java.util.Random.nextInt(Random.java:388)
at fr.istria.istriamod.worldgen.Generation.addOre(Generation.java:25)
at fr.istria.istriamod.worldgen.Generation.generateOverworld(Generation.java:32)
Cordialement
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 135
162
463
247
21
Mìlhüsa
Tu essayes de générer un nombre négatif avec Random::nextInt(int), or la limite doit être strictement supérieure à zéro.
Il faudrait que tu envoies le code source de ta classe « worldgen.Generation » si tu veux qu'on puisse pouvoir l'inspecter.
 

KazaWong

Aventurier
17 Mai 2021
4
0
1
22
Tu essayes de générer un nombre négatif avec Random::nextInt(int), or la limite doit être strictement supérieure à zéro.
Il faudrait que tu envoies le code source de ta classe « worldgen.Generation » si tu veux qu'on puisse pouvoir l'inspecter.
Voici le code :

Code:
    private void addOre(Block block, Block blockspawn, Random random, World world, int posX, int posZ, int minY, int maxY, int minFind, int maxFind, int spawnProbabilty) {
        for (int i = 0; i < spawnProbabilty; i++) {
            int chunkSize = 16;
            int Xpos = posX + random.nextInt(chunkSize);
            int Ypos = minY + random.nextInt(maxY - minY);
            int Zpos = posZ + random.nextInt(chunkSize);
            new WorldGenMinable(block, maxFind).generate(world, random, Xpos, Ypos, Zpos);
        }
    }
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 135
162
463
247
21
Mìlhüsa
Java:
int Ypos = minY + random.nextInt(maxY - minY);
Tu as probablement minY > maxY, d'où une différence négative ; vérifie que tu n'aies pas inversé les deux arguments dans ton appel de fonction.

Java:
private void addOre(Block block, Block blockspawn, Random random, World world, int posX, int posZ, int minY, int maxY, int minFind, int maxFind, int spawnChances) {
    // FIXME: unused: blockspawn, minFind
   
    // param checks
    if(minY > maxY)
        throw new IllegalArgumentException("minY > maxY");
   
    if(minFind > maxFind)
        throw new IllegalArgumentException("minFind > maxFind");
   
    if(spawnChances < 1)
        throw new IllegalArgumentException("spawnChances < 1");
   
    // pas besoin de créer ces objets à chaque itération
    WorldGenMinable generator = new WorldGenMinable(block, maxFind);
    final int chunkSize = 16;
   
    for(int i = 0; i < spawnChances; ++i) {
        int xPos = posX + random.nextInt(chunkSize);
        int yPos = minY + random.nextInt((maxY + 1) - minY); // maxY inclus (exclus sans le +1)
        int zPos = posZ + random.nextInt(chunkSize);
       
        generator.generate(world, random, xPos, yPos, zPos);
    }
}
 
Dernière édition:

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 135
162
463
247
21
Mìlhüsa
dernier soucis mes minerais ne se génère pas
Pour tester le mieux est de mettre des valeurs de génération abusées (pas besoins d'avoir des valeurs équilibrées, l'on veut juste savoir si les blocs apparaîssent sans avoir à chercher pendant 20 minutes), et tu peux aussi afficher dans la console les coordonnées des blocs :
Java:
if(generator.generate(world, random, xPos, yPos, zPos))
    System.out.println("(x = " + x + ", y = " + y + ", z = " + z + ')');

Après je n'ai aucune idée de comment utiliser Forge 1.7.10, d'autant plus que cette version est beaucoup beaucoup beaucoup trop vieille et que le support a déjà été abandonné depuis longtemps, donc en soit si tu veux commencer un mod il faut le faire en 1.16, et en soit l'API est beaucoup beaucoup beaucoup plus propre.