Ajouter une nouvelle dimension
-
Le portailBlock :
Ce bloc vous permettra d’accéder dans votre dimension. Vous pouvez aussi ajouter des fonctions d’autres blocs pour permettre d’avoir un bloc plus complexe; pour le coup dans le tutoriel nous allons seulement créer un bloc simple.
Comme d’habitude créez votre classe et ajoutez :extends BlockEnsuite, importez la classe Block.
Vous devriez avoir une erreur. Passer la souris dessus et faites “add constructor”.
Vous devriez avoir quelque chose comme ça :protected TutoPortail(Material p_i45394_1_) { super(p_i45394_1_); }Nous allons renommer le paramètre (prenez en l’habitude) en material ce qui donne :
protected TutoPortail(Material material) { super(material); }Ensuite, nous allons ajouter :
super(material.portal);//Le material de notre bloc this.setTickRandomly(true);//si le bloc et update de façons random this.setStepSound(Block.soundTypeGlass);//le son jouet une fois casser this.setLightLevel(0.75F);//le niveau de lumière this.setCreativeTab(CreativeTabs.tabBlock);//la creative tabsEnsuite, nous allons ajouter :
@Override public void setBlockBoundsBasedOnState(IBlockAccess blockaccess, int x, int y, int z) { float f; float f1; if(!blockaccess.getBlock(x - 1, y, z).equals(this) && !blockaccess.getBlock(x + 1, y, z).equals(this)) { f = 0.125F; f1 = 0.5F; this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F, 0.5F + f1); } else { f = 0.5F; f1 = 0.125F; this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f1, 0.5F + f, 1.0F, 0.5F + f1); } }Avec ceci nous aurons une forme et une hitBox comme le bloc de portail de base.
Ajoutez cette fonction :@Override public void setBlockBoundsForItemRender() { float f1 = 0.125F; this.setBlockBounds(0, 0.0F, 0.5F - f1, 1F, 1.0F, 0.5F + f1); }Ce sera le rendu en tant qu’item.
Ajoutez après cela :@Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { return null; }Cela permet d’enlever la boite de collision (permet d’entrer dans le bloc).
Après cette fonction nous allons ajouter :@Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { int y2 = y; while(world.getBlock(x, y2, z).equals(this)) { y2–; } if(!world.getBlock(x, y2, z).equals(Blocks.stone)) { world.setBlockToAir(x, y, z); } int y3 = y2 + 1; boolean portalIsGood = false; if(world.getBlock(x, y3, z + 1).equals(this)) { portalIsGood = (world.getBlock(x, y2, z).equals(Blocks.stone) && world.getBlock(x, y2, z + 1).equals(Blocks.stone) && world.getBlock(x, y2 + 1, z + 2).equals(Blocks.stone) && world.getBlock(x, y2 + 2, z + 2).equals(Blocks.stone) && world.getBlock(x, y2 + 3, z + 2).equals(Blocks.stone) && world.getBlock(x, y2 + 1, z - 1).equals(Blocks.stone) && world.getBlock(x, y2 + 2, z - 1).equals(Blocks.stone) && world.getBlock(x, y2 + 3, z - 1).equals(Blocks.stone) && world.getBlock(x, y2 + 4, z - 1).equals(Blocks.stone) && world.getBlock(x, y2 + 4, z).equals(Blocks.stone)); } else if(world.getBlock(x, y3, z - 1).equals(this)) { portalIsGood = (world.getBlock(x, y2, z).equals(Blocks.stone) && world.getBlock(x, y2, z - 1).equals(Blocks.stone) && world.getBlock(x, y2 + 1, z - 2).equals(Blocks.stone) && world.getBlock(x, y2 + 2, z - 2).equals(Blocks.stone) && world.getBlock(x, y2 + 3, z - 2).equals(Blocks.stone) && world.getBlock(x, y2 + 1, z + 1).equals(Blocks.stone) && world.getBlock(x, y2 + 2, z + 1).equals(Blocks.stone) && world.getBlock(x, y2 + 3, z + 1).equals(Blocks.stone) && world.getBlock(x, y2 + 4, z + 1).equals(Blocks.stone) && world.getBlock(x, y2 + 4, z).equals(Blocks.stone)); } else if(world.getBlock(x + 1, y3, z).equals(this)) { portalIsGood = (world.getBlock(x, y2, z).equals(Blocks.stone) && world.getBlock(x + 1, y2, z).equals(Blocks.stone) && world.getBlock(x + 2, y2 + 1, z).equals(Blocks.stone) && world.getBlock(x + 2, y2 + 2, z).equals(Blocks.stone) && world.getBlock(x + 2, y2 + 3, z).equals(Blocks.stone) && world.getBlock(x - 1, y2 + 1, z).equals(Blocks.stone) && world.getBlock(x - 1, y2 + 2, z).equals(Blocks.stone) && world.getBlock(x - 1, y2 + 3, z).equals(Blocks.stone) && world.getBlock(x + 1, y2 + 4, z).equals(Blocks.stone) && world.getBlock(x, y2 + 4, z).equals(Blocks.stone)); } else if(world.getBlock(x - 1, y3, z).equals(this)) { portalIsGood = (world.getBlock(x, y2, z).equals(Blocks.stone) && world.getBlock(x - 1, y2, z).equals(Blocks.stone) && world.getBlock(x - 2, y2 + 1, z).equals(Blocks.stone) && world.getBlock(x - 2, y2 + 2, z).equals(Blocks.stone) && world.getBlock(x - 2, y2 + 3, z).equals(Blocks.stone) && world.getBlock(x + 1, y2 + 1, z).equals(Blocks.stone) && world.getBlock(x + 1, y2 + 2, z).equals(Blocks.stone) && world.getBlock(x + 1, y2 + 3, z).equals(Blocks.stone) && world.getBlock(x + 1, y2 + 4, z).equals(Blocks.stone) && world.getBlock(x, y2 + 4, z).equals(Blocks.stone)); } }Permet de définir quand le portail sera bien construit (pour pas avoir tous les blocs qui se suppriment), changez le “Blocks.stone” par le bloc de la structure de votre portail. Ensuite, la fonction permet qu’en cassant un bloc tous les blocs autour se détruisent.
Ajoutez ensuite :@Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } @Override public int quantityDropped(Random random) { return 0; }- Si le bloc est opaque
- S’il a un rendu normal
- La drop lâché quand on le casse
Après nous allons ajouter une des fonctions les plus importantes :
@Override public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { }Maintenant nous allons compléter la fonction, donc ajoutez cette première condition :
if((entity.ridingEntity == null) && (entity.riddenByEntity == null)) { }La condition sera vérifiée si :
- L’entité n’est pas sur une autre.
- Une autre entité n’est pas sur elle.
Ensuite, nous allons ajouter deux autres conditions :
if(entity.dimension != TutoDimension.tutoDimID) { } else { }La condition est vérifiée si le joueur est dans une autre dimension que la nôtre. Sinon nous appelons le “else”.
La condition doit être complétée avec :if(entity instanceof EntityPlayerMP) { EntityPlayerMP player = (EntityPlayerMP)entity; if(player.timeUntilPortal > 0) { player.timeUntilPortal = 10; } else { player.timeUntilPortal = 10; player.mcServer.getConfigurationManager().transferPlayerToDimension(player, TutoDimension.tutoDimID, new TutoTeleporter(player.mcServer.worldServerForDimension(TutoDimension.tutoDimID))); } }- On récupère l’instance de la classe EntityPlayerMP
- Si le temps dans le portail est supérieur à 0, on le met à 10
- Ensuite, on met le timeUnitilPortal à 10
- On met le transfert de dimension (avec l’ID de notre dimension)
- On ajoute notre TutoTeleporter à notre sauce et on met notre ID de dimension
Nous complétons le else :
if(entity instanceof EntityPlayerMP) { EntityPlayerMP player = (EntityPlayerMP)entity; if(player.timeUntilPortal > 0) { player.timeUntilPortal = 10; } else { player.timeUntilPortal = 10; player.mcServer.getConfigurationManager().transferPlayerToDimension(player, 0, new TutoTeleporter(player.mcServer.worldServerForDimension(0))); } }- Nous avons la même chose sauf que si le joueur est dans notre dimension alors nous l’envoyons dans l’overworld (si vous voulez envoyer le joueur dans une autre dimension, changez le WorldProvider et changez le 0).
Nous allons ajouter la fonction qui permet d’avoir de la transparence :
@SideOnly(Side.CLIENT) @Override public int getRenderBlockPass() { return 1; }Si vous le mettez à 1 il aura de la transparence, sinon à 0 il sera opaque.
Ensuite :@SideOnly(Side.CLIENT) @Override public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { return null; }Ce qui permet que le joueur, en le cassant, ne puisse pas l’avoir dans son inventaire.
Nous allons ajouter la dernière fonction :@Override public void breakBlock(World world, int x, int y, int z, Block block, int metadata) { super.breakBlock(world, x, y, z, block, metadata); if(world.getBlock(x, y + 1, z).equals(this)) { world.setBlockToAir(x, y + 1, z); } if(world.getBlock(x, y - 1, z).equals(this)) { world.setBlockToAir(x, y - 1, z); } if(world.getBlock(x + 1, y, z).equals(this)) { world.setBlockToAir(x + 1, y, z); } if(world.getBlock(x - 1, y, z).equals(this)) { world.setBlockToAir(x - 1, y, z); } if(world.getBlock(x, y, z + 1).equals(this)) { world.setBlockToAir(x, y, z + 1); } if(world.getBlock(x, y, z - 1).equals(this)) { world.setBlockToAir(x, y, z - 1); } }Qui permet de set des blocs d’air une fois cassé. Cette classe est finie.
L’activateur :
L’activateur est une item plutôt important, car en effet il va vous permettre de activer votre portail (structure), donc sans ce dernier votre mod sera un peu moyen.
Pour la classe vous aurez besoin de ajouter l’extension “Item”.
Ensuite vous devez ajouter le constructeur et la vous pouvez faire l’activateur que vous voulez, mais vous devrez ajouter ceci :public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float par8, float par9, float par10) { }Qui permet de savoir quand le joueur fait un clique droit avec notre item.
Complétez avec cette condition :if(world.getBlock(x, y, z).equals(Blocks.stone)) { } return false;Ce qui permet de demander si le joueur fait un clic droit sur un bloc de stone (bien entendu vous pouvez changer par votre bloc), il faut savoir que nous pouvons tous faire en moins de ligne, mais elles sont très longues donc je le fais avec beaucoup de conditions, ce qui permet de mieux comprendre.
Ajoutez ensuite :if(world.getBlock(x + 1, y, z).equals(Blocks.stone)) { } if(world.getBlock(x - 1, y, z).equals(Blocks.stone)) { } if(world.getBlock(x, y, z + 1).equals(Blocks.stone)) { } if(world.getBlock(x, y, z - 1).equals(Blocks.stone)) { }Ce sont de simples conditions qui permettent de faire apparaître notre portail dans toutes les directions.
Nous allons compléter la première condition avec ceci :if(world.getBlock(x, y + 4, z).equals(Blocks.stone)) { if(world.getBlock(x + 1, y + 4, z).equals(Blocks.stone)) { if(world.getBlock(x - 1, y + 1, z).equals(Blocks.stone)) { if(world.getBlock(x - 1, y + 2, z).equals(Blocks.stone)) { if(world.getBlock(x - 1, y + 3, z).equals(Blocks.stone)) { if(world.getBlock(x + 2, y + 1, z).equals(Blocks.stone)) { if(world.getBlock(x + 2, y + 2, z).equals(Blocks.stone)) { if(world.getBlock(x + 2, y + 3, z).equals(Blocks.stone)) { } } } } } } } }Nous avons la structure et nous allons finir avec :
for(int l = 0; l < 2; l++) { for(int h = 0; h < 3; h++) { world.setBlock(x + l, y + 1 + h, z, TutoDimension.tutoPortail); } }Les deux “for” permettent qu’on obtienne la structure et à la fin on met les blocs avec les int des boucles en plus (sur le vecteur** y** il faut toujours mettre + 1), les boucles seront à chaque fois les mêmes, il y a juste le setBlock qui change.
Dans la deuxième condition ajoutez cela (je vous donne tout, vous devriez avoir compris avec le premier)if(world.getBlock(x, y + 4, z).equals(Blocks.stone)) { if(world.getBlock(x - 1, y + 4, z).equals(Blocks.stone)) { if(world.getBlock(x - 2, y + 1, z).equals(Blocks.stone)) { if(world.getBlock(x - 2, y + 2, z).equals(Blocks.stone)) { if(world.getBlock(x - 2, y + 3, z).equals(Blocks.stone)) { if(world.getBlock(x + 1, y + 1, z).equals(Blocks.stone)) { if(world.getBlock(x + 1, y + 2, z).equals(Blocks.stone)) { if(world.getBlock(x + 1, y + 3, z).equals(Blocks.stone)) { for(int l = 0; l < 2; l++) { for(int h = 0; h < 3; h++) { world.setBlock(x - l, y + 1 + h, z, TutoDimension.tutoPortail); } } } } } } } } } }Dans la troisième ajoutez :
if(world.getBlock(x, y + 4, z).equals(Blocks.stone)) { if(world.getBlock(x, y + 4, z + 1).equals(Blocks.stone)) { if(world.getBlock(x, y + 1, z - 1).equals(Blocks.stone)) { if(world.getBlock(x, y + 2, z - 1).equals(Blocks.stone)) { if(world.getBlock(x, y + 3, z - 1).equals(Blocks.stone)) { if(world.getBlock(x, y + 1, z + 2).equals(Blocks.stone)) { if(world.getBlock(x, y + 2, z + 2).equals(Blocks.stone)) { if(world.getBlock(x, y + 3, z + 2).equals(Blocks.stone)) { for(int l = 0; l < 2; l++) { for(int h = 0; h < 3; h++) { world.setBlock(x, y + 1 + h, z + l, TutoDimension.tutoPortail); } } } } } } } } } }Dans la dernière ajoutez :
if(world.getBlock(x, y + 4, z).equals(Blocks.stone)) { if(world.getBlock(x, y + 4, z - 1).equals(Blocks.stone)) { if(world.getBlock(x, y + 1, z + 1).equals(Blocks.stone)) { if(world.getBlock(x, y + 2, z + 1).equals(Blocks.stone)) { if(world.getBlock(x, y + 3, z + 1).equals(Blocks.stone)) { if(world.getBlock(x, y + 1, z - 2).equals(Blocks.stone)) { if(world.getBlock(x, y + 2, z - 2).equals(Blocks.stone)) { if(world.getBlock(x, y + 3, z - 2).equals(Blocks.stone)) { for(int l = 0; l < 2; l++) { for(int h = 0; h < 3; h++) { world.setBlock(x, y + 1 + h, z - l, TutoDimension.tutoPortail); } } } } } } } } } }Donc voilà nous en avons fini avec cette classe.
La classe principale
Au dessus du preInit ajoutez :
public static Block tutoPortail; public static Item tutoActivateur;Puis dans le preInit ajoutez :
tutoPortail = new TutoPortail(Material.portal).setBlockName("portail").setBlockTextureName(MODID + ":portail"); tutoActivateur = new TutoActivateur().setUnlocalizedName("activateur").setTextureName(MODID + ":activateur"); GameRegistry.registerBlock(tutoPortail, "tuto_portail"); GameRegistry.registerItem(tutoActivateur, "tuto_activateur");Jusque là je ne suis pas obligé de vous expliquer grand chose…
Puis dans le postInit ajoutez ceci :DimensionManager.registerProviderType(TutoDimension.tutoDimID, TutoWorldProvider.class, false); DimensionManager.registerDimension(TutoDimension.tutoDimID, TutoDimension.tutoDimID);Dans le premier nous enregistrons l’ID et le WorldProvider, puis dans la seconde nous ajoutons les ID. Le false demande si nous gardons la dimension chargée. Voilà il vous reste plus qu’à lire le bonus.
Bonus
Dans ce bonus nous allons mettre en pratique les choses vues.
- Modifier une dimension (Dans notre cas l’end)
- Créer une dimension île volante
- Faire que le bloc portail soit animé et que la forme de sa structure soit modifiée.
Modifier une dimension :
Pour modifier une dimension, allez dans votre classe principale, dans la fonction postInit faites comme cela :
try { Field f = DimensionManager.class.getDeclaredField("providers"); f.setAccessible(true); Hashtable providers = (Hashtable)f.get(null); //dimension id et le world provider providers.put(Integer.valueOf(1), TutoEndWorldProvider.class); f.set(null, providers); } catch(NoSuchFieldException | IllegalArgumentException | IllegalAccessException e) { throw new RuntimeException("Could not change provider dimension!", e); }Il est possible qu’une exception se produise quandnous mettons dans un bloc “try”, **notez que il peut vous demander de passer en JRE7 ! Si jamais vous ne voulez pas, alors il faut décomposer le catch. **Et voilà vous avez changé “l’end”, changez bien par votre classe et “l’end” est modifié.
Si vous voulez changer la texture du ciel de “l’end” (je vous recommande de gardez “l’end” en une dimension sombre), il vous suffit d’aller dans votre dossier assets, créer un dossier qui aura cette arborescence : "minecraft/textures/environment/end_sky.png", ouvrez le .png et supprimez toutes les textures pour avoir une transparence du ciel et changer le ciel. La méthode donnée est valable pour toutes les dimensions, c’est-à-dire celle du Minecraft original, et même les dimension custom d’autres mods.Créer une dimension île volante :
Créer un skyland c’est trop dur il faut au moins 20 mille lignes de code et tout et différent d’une dimension basiqueCréer un skyland et très simple, si vous partez perdant jamais vous ne gagnerez, là c’est la même chose. Un skyland et quasiment comme une dimension de base.
Souvent dans les bonus vous avez constaté que nous changions ou ajoutions des petites choses, mais dans notre bonus nous allons faire toutes les classes qu’il nous faut.La classe principale :
Dans la classe principale, vous pouvez enregistrer votre world provider comme nous le montrons juste au-dessus (si vous voulez remplacer une dimension). Vous pouvez aussi enregistrer normalement comme ça :
DimensionManager.registerProviderType(TutoDimension.tutoDimIslandID, SkyWorldProvider.class, false); DimensionManager.registerDimension(TutoDimension.tutoDimIslandID, TutoDimension.tutoDimIslandID);Normalement vous connaissez l’enregistrement comme cela. En premier nous mettons l’ID de la dimension et en second le worldProvider, le boolean dit si nous gardons la dimension chargée.
Dans le “registerDimension” il vous suffit de mettre l’ID. %(#ff3333)[NOTE : comme toujours je vous recommande de mettre des ID dans des int par rapport à une variable déclarée, pour que vous puissiez les mettre dans des fichiers de configuration.Le ChunkProvider :
Je vais tenter de le faire varier du premier. Le chunk provider, la classe qui va nous permettre de créer notre skyland. Comme dans tous vos ChunkProviders, ajoutez l’interface IChunkProvider. Ajoutez tous ces fields :
private Random rand; private NoiseGeneratorOctaves noiseGen1; private NoiseGeneratorOctaves noiseGen2; private NoiseGeneratorOctaves noiseGen3; private NoiseGeneratorOctaves noiseGen4; public NoiseGeneratorOctaves noiseGen5; public NoiseGeneratorOctaves noiseGen6; private NoiseGeneratorOctaves noiseGen7; public NoiseGeneratorOctaves mobSpawnerNoise; private World worldObj; private double[] noiseArray; private double[] bNoise1; private double[] bNoise2; private double[] bNoise3; private BiomeGenBase[] biomesForGeneration; double[] noise1; double[] noise2; double[] noise3; double[] noise4; double[] noise5; int[][] field_914_i = new int[32][32]; private double[] generatedTemperatures; public Block topBlock; public Block fillerBlock;Certaines choses doivent vous sauter aux yeux, en effet, nous avons trois noises pour les biomes et non une. Ensuite nous avons sept noises pour la génération. Je pense que je n’ai pas besoin de vous le dire, mais vous pouvez ajouter vos propres structures (si vous le faites regardez bien le tuto plus haut, mais nous aborderons une autre méthode que je ne vous ai pas montré). Le code sera décrit par le biais des commentaires. Ajoutez le constructeur, comme cela :
public SkyChunkProvider(World world, long seed) { //nous initialisons des fields this.bNoise1 = new double[256]; this.bNoise2 = new double[256]; this.bNoise3 = new double[256]; this.worldObj = world; this.rand = new Random(seed); this.noiseGen1 = new NoiseGeneratorOctaves(this.rand, 16); this.noiseGen2 = new NoiseGeneratorOctaves(this.rand, 16); this.noiseGen3 = new NoiseGeneratorOctaves(this.rand, 32); this.noiseGen4 = new NoiseGeneratorOctaves(this.rand, 64); this.noiseGen5 = new NoiseGeneratorOctaves(this.rand, 4); this.noiseGen6 = new NoiseGeneratorOctaves(this.rand, 10); this.noiseGen7 = new NoiseGeneratorOctaves(this.rand, 16); this.mobSpawnerNoise = new NoiseGeneratorOctaves(this.rand, 8); }Après cela nous allons ajouter une fonction importante, qui nous permet d’avoir un bon skyland.
public void generateTerrain(int i, int j, Block[] block, BiomeGenBase[] abiomes) { byte byte0 = 2; int k = byte0 + 1; byte byte1 = 33; int l = byte0 + 1; this.noiseArray = initializeNoiseField(this.noiseArray, i * byte0, 0, j * byte0, k, byte1, l); for(int i1 = 0; i1 < byte0; i1++) { for(int j1 = 0; j1 < byte0; j1++) { for(int k1 = 0; k1 < 32; k1++) { double d = 0.25D; double d1 = this.noiseArray[(((i1 + 0) * l + j1 + 0) * byte1 + k1 + 0)]; double d2 = this.noiseArray[(((i1 + 0) * l + j1 + 1) * byte1 + k1 + 0)]; double d3 = this.noiseArray[(((i1 + 1) * l + j1 + 0) * byte1 + k1 + 0)]; double d4 = this.noiseArray[(((i1 + 1) * l + j1 + 1) * byte1 + k1 + 0)]; double d5 = (this.noiseArray[(((i1 + 0) * l + j1 + 0) * byte1 + k1 + 1)] - d1) * d; double d6 = (this.noiseArray[(((i1 + 0) * l + j1 + 1) * byte1 + k1 + 1)] - d2) * d; double d7 = (this.noiseArray[(((i1 + 1) * l + j1 + 0) * byte1 + k1 + 1)] - d3) * d; double d8 = (this.noiseArray[(((i1 + 1) * l + j1 + 1) * byte1 + k1 + 1)] - d4) * d; for(int l1 = 0; l1 < 4; l1++) { double d9 = 0.125D; double d10 = d1; double d11 = d2; double d12 = (d3 - d1) * d9; double d13 = (d4 - d2) * d9; for(int i2 = 0; i2 < 8; i2++) { int j2 = i2 + i1 * 8 << 11 | 0 + j1 * 8 << 7 | k1 * 4 + l1; char c = ''; double d14 = 0.125D; double d15 = d10; double d16 = (d11 - d10) * d14; for(int k2 = 0; k2 < 8; k2++) { Block l2 = Blocks.air; if(d15 > 0.0D) { l2 = Blocks.stone; } block[j2] = l2; j2 += c; d15 += d16; } d10 += d12; d11 += d13; } d1 += d5; d2 += d6; d3 += d7; d4 += d8; } } } } }Je ne peux pas vraiment vous expliquer car il est a vous de comprendre tous les calculs… Ce n’est pas vraiment explicable ligne par ligne, la fonction permet de générer des blocs. Vous devez avoir une erreur au début de la fonction, car nous avons pas encore créer notre fonction, ce que nous allons faire de suite.
private double[] initializeNoiseField(double[] ad, int i, int j, int k, int l, int i1, int j1) { if(ad == null) { ad = new double[l * i1 * j1]; } double d = 684.41200000000003D; double d1 = 684.41200000000003D; this.noise4 = this.noiseGen6.generateNoiseOctaves(this.noise4, i, k, l, j1, 1.121D, 1.121D, 0.5D); this.noise5 = this.noiseGen7.generateNoiseOctaves(this.noise5, i, k, l, j1, 200.0D, 200.0D, 0.5D); d *= 2.0D; this.noise3 = this.noiseGen3.generateNoiseOctaves(this.noise3, i, j, k, l, i1, j1, d / 80.0D, d1 / 160.0D, d / 80.0D); this.noise1 = this.noiseGen1.generateNoiseOctaves(this.noise1, i, j, k, l, i1, j1, d, d1, d); this.noise2 = this.noiseGen2.generateNoiseOctaves(this.noise2, i, j, k, l, i1, j1, d, d1, d); int k1 = 0; int l1 = 0; for(int j2 = 0; j2 < l; j2++) { for(int l2 = 0; l2 < j1; l2++) { double d4 = 1.0D; d4 *= d4; d4 *= d4; d4 = 1.0D - d4; double d5 = (this.noise4[l1] + 256.0D) / 512.0D; d5 *= d4; if(d5 > 1.0D) { d5 = 1.0D; } double d6 = this.noise5[l1] / 8000.0D; if(d6 < 0.0D) { d6 = -d6 * 0.3D; } d6 = d6 * 3.0D - 2.0D; if(d6 > 1.0D) { d6 = 1.0D; } d6 /= 8.0D; d6 = 0.0D; if(d5 < 0.0D) { d5 = 0.0D; } d5 += 0.5D; d6 = d6 * i1 / 16.0D; l1++; double d7 = i1 / 2.0D; for(int j3 = 0; j3 < i1; j3++) { double d8 = 0.0D; double d9 = (j3 - d7) * 8.0D / d5; if(d9 < 0.0D) { d9 *= -1.0D; } double d10 = this.noise1[k1] / 512.0D; double d11 = this.noise2[k1] / 512.0D; double d12 = (this.noise3[k1] / 10.0D + 1.0D) / 2.0D; if(d12 < 0.0D) { d8 = d10; } else if(d12 > 1.0D) { d8 = d11; } else { d8 = d10 + (d11 - d10) * d12; } d8 -= 8.0D; int k3 = 32; if(j3 > i1 - k3) { double d13 = (j3 - (i1 - k3)) / (k3 - 1.0F); d8 = d8 * (1.0D - d13) + -30.0D * d13; } k3 = 8; if(j3 < k3) { double d14 = (k3 - j3) / (k3 - 1.0F); d8 = d8 * (1.0D - d14) + -30.0D * d14; } ad[k1] = d8; k1++; } } } return ad; }Voilà, elle vient compléter l’autre fonction dans la génération, mais nous devons aussi ajouter :
public void replaceBlocksForBiome(int i, int j, Block[] block, BiomeGenBase[] abiome) { double d = 0.03125D; this.bNoise1 = this.noiseGen4.generateNoiseOctaves(this.bNoise1, i * 16, j * 16, 0, 16, 16, 1, d, d, 1.0D); this.bNoise2 = this.noiseGen4.generateNoiseOctaves(this.bNoise2, i * 16, 109, j * 16, 16, 1, 16, d, 1.0D, d); this.bNoise3 = this.noiseGen5.generateNoiseOctaves(this.bNoise3, i * 16, j * 16, 0, 16, 16, 1, d * 2.0D, d * 2.0D, d * 2.0D); for(int k = 0; k < 16; k++) { for(int l = 0; l < 16; l++) { int i1 = (int)(this.bNoise3[(k + l * 16)] / 3.0D + 3.0D + this.rand.nextDouble() * 0.25D); int j1 = -1; this.topBlock = Blocks.grass; this.fillerBlock = Blocks.dirt; Block block1 = this.topBlock; Block block2 = this.fillerBlock; Block stone = Blocks.stone; if(block1 == Blocks.air) { block1 = Blocks.grass; } if(block2 == Blocks.air) { block2 = Blocks.dirt; } if(stone == Blocks.air) { stone = Blocks.stone; } for(int k1 = 127; k1 >= 0; k1–) { int l1 = (l * 16 + k) * 128 + k1; Block block3 = block[l1]; if(block3 == Blocks.air) { j1 = -1; } else if(block3 == stone) { if(j1 == -1) { if(i1 <= 0) { block1 = Blocks.air; block2 = stone; } j1 = i1; if(k1 >= 0) { block[l1] = block1; } else { block[l1] = block2; } } else if(j1 > 0) { j1–; block[l1] = block2; } } } } } }Comme vous le remarquez nous mettons trois noises.
Ajoutez cette fonction : public Chunk provideChunk(int par1, int par2) { this.rand.setSeed(par1 * 391279128714L + par2 * 132894987741L); Block[] ablock = new Block[32768]; this.biomesForGeneration = this.worldObj.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, par1 * 16, par2 * 16, 16, 16); generateTerrain(par1, par2, ablock, this.biomesForGeneration); replaceBlocksForBiome(par1, par2, ablock, this.biomesForGeneration); Chunk chunk = new Chunk(this.worldObj, ablock, par1, par2); byte[] abyte = chunk.getBiomeArray(); for(int k = 0; k < abyte.length; k++) { abyte[k] = ((byte)this.biomesForGeneration[k].biomeID); } chunk.generateSkylightMap(); return chunk; }Vous remarquez que nous appelons les autres fonctions.
Ajoutez cette fonction qui permet d’avoir la décoration, ou de générer des choses.public void populate(IChunkProvider ichunkprovider, int i, int j) { BlockSand.fallInstantly = true; int var4 = i * 16; int var5 = j * 16; BiomeGenBase var6 = this.worldObj.getWorldChunkManager().getBiomeGenAt(var4 + 16, var5 + 16); this.rand.setSeed(this.worldObj.getSeed()); if(this.rand.nextInt(4) == 0) { int var13 = var4 + this.rand.nextInt(16) + 8; int var14 = this.rand.nextInt(256); int var15 = var5 + this.rand.nextInt(16) + 8; new WorldGenLakes(Blocks.water).generate(this.worldObj, this.rand, var13, var14, var15); } Random rand = new Random(); int randomNum = rand.nextInt(6) + 1; if(randomNum == 2) { WorldGenTrees var17 = new WorldGenTrees(true); for(int var18 = 0; var18 < 5; var18++) { int var19 = var4 + this.rand.nextInt(16); int var20 = var5 + this.rand.nextInt(16); int var21 = this.worldObj.getHeightValue(var19, var20); var17.generate(this.worldObj, this.rand, var19, var21, var20); } SpawnerAnimals.performWorldGenSpawning(this.worldObj, var6, var4 + 8, var5 + 8, 16, 16, this.rand); for(int var21 = var4 + 8; var21 < var4 + 8 + 16; var21++) { for(int var20 = var5 + 8; var20 < var5 + 8 + 16; var20++) { int var10000 = var21 - (var4 + 8); var10000 = var20 - (var5 + 8); } } } else if(randomNum == 3) { WorldGenTrees var17 = new WorldGenTrees(false); for(int var18 = 0; var18 < 5; var18++) { int var19 = var4 + this.rand.nextInt(16); int var20 = var5 + this.rand.nextInt(16); int var21 = this.worldObj.getHeightValue(var19, var20); var17.generate(this.worldObj, this.rand, var19, var21, var20); } SpawnerAnimals.performWorldGenSpawning(this.worldObj, var6, var4 + 8, var5 + 8, 16, 16, this.rand); for(int var21 = var4 + 8; var21 < var4 + 8 + 16; var21++) { for(int var20 = var5 + 8; var20 < var5 + 8 + 16; var20++) { int var10000 = var21 - (var4 + 8); var10000 = var20 - (var5 + 8); } } } else if(randomNum == 4) { WorldGenBigTree var17 = new WorldGenBigTree(true); for(int var18 = 0; var18 < 5; var18++) { int var19 = var4 + this.rand.nextInt(16); int var20 = var5 + this.rand.nextInt(16); int var21 = this.worldObj.getHeightValue(var19, var20); var17.generate(this.worldObj, this.rand, var19, var21, var20); } SpawnerAnimals.performWorldGenSpawning(this.worldObj, var6, var4 + 8, var5 + 8, 16, 16, this.rand); for(int var21 = var4 + 8; var21 < var4 + 8 + 16; var21++) { for(int var20 = var5 + 8; var20 < var5 + 8 + 16; var20++) { int var10000 = var21 - (var4 + 8); var10000 = var20 - (var5 + 8); } } } BlockSand.fallInstantly = false; }Vous voyez nous générons des lacs, des arbres, tout l’environnement.
Je vais vous donner tout le reste des fonctions (elles sont expliquées plus haut). public List getPossibleCreatures(EnumCreatureType enumcreaturetype, int i, int j, int k) { BiomeGenBase var5 = this.worldObj.getBiomeGenForCoords(i, k); return var5 == null ? null : var5.getSpawnableList(enumcreaturetype); } public boolean saveChunks(boolean flag, IProgressUpdate iprogressupdate) { return true; } public boolean unloadQueuedChunks() { return false; } public boolean canSave() { return true; } public String makeString() { return "RandomLevelSource"; } public ChunkPosition func_147416_a(World world, String s, int i, int j, int k) { return null; } public int getLoadedChunkCount() { return 0; } public boolean chunkExists(int i, int j) { return true; } public Chunk loadChunk(int i, int j) { return provideChunk(i, j); } public void recreateStructures(int i, int j) {} public void saveExtraData() {}Le WorldProvider :
Vous souvenez vous cette classe qui permet d’ajouter quelques propriétés, je vous donne ici celles que j’ai mises pour un skyland.
public String getDimensionName() { return "The Sky"; } public IChunkProvider createChunkGenerator() { return new SkyChunkProvider(this.worldObj, this.worldObj.getSeed()); } public float getCloudHeight() { return 128.0F; } public boolean canRespawnHere() { return false; } public float calculateCelestialAngle(long var1, float var3) { return 0.0F; } public String getSaveFolder() { return "sky"; } public boolean isSurfaceWorld() { return false; }Ensuite, ajoutez :
public void registerWorldChunkManager() { // un autre chunk manager car nous en avons pas besoin. ensuite vous devez mettre le biome qui se génère. this.worldChunkMgr = new WorldChunkManagerHell(TutoDimension.tutoGaieBiome, 1.0F); //l'ID de la dimension. this.dimensionId = TutoDimension.tutoDimIslandID; }Le Biome :
Vous devez mettre ces deux fonctions dans la classe de votre biome principal :
public void func_150573_a(World world, Random rand, Block[] block, byte[] abyte, int x, int z, double par7) { this.topBlock = Blocks.grass; this.field_150604_aj = 0; this.fillerBlock = Blocks.dirt; this.generateBiomeTerrain(world, rand, block, abyte, x, z, par7); } public final void generateBiomeTerrain(World world, Random rand, Block[] ablock, byte[] abyte, int x, int z, double par7) { boolean flag = true; Block block = this.topBlock; byte b0 = (byte)(this.field_150604_aj & 255); Block block1 = this.fillerBlock; int k = -1; int l = (int)(par7 / 3.0D + 3.0D + rand.nextDouble() * 0.25D); int i1 = x & 0xF; int j1 = z & 0xF; int k1 = ablock.length / 256; for (int l1 = 255; l1 >= 0; l1–) { int i2 = (j1 * 16 + i1) * k1 + l1; if (l1 <= 94) { ablock[i2] = Blocks.air; } else { Block block2 = ablock[i2]; if ((block2 != null) && (block2.getMaterial() != Material.air)) { if (block2 == Blocks.stone) { if (k == -1) { if (l <= 0) { block = null; b0 = 0; block1 = Blocks.stone; } else if ((l1 >= 59) && (l1 <= 64)) { block = this.topBlock; b0 = (byte)(this.field_150604_aj & 0xFF); block1 = this.fillerBlock; } if ((l1 < 63) && ((block == null) || (block.getMaterial() == Material.air))) { if (getFloatTemperature(x, l1, z) < 0.15F) { block = Blocks.ice; b0 = 0; } else { block = Blocks.water; b0 = 0; } } k = l; if (l1 >= 62) { ablock[i2] = block; abyte[i2] = b0; } else if (l1 < 56 - l) { block = null; block1 = Blocks.stone; ablock[i2] = Blocks.gravel; } else { ablock[i2] = block1; } } else if (k > 0) { k–; ablock[i2] = block1; if ((k == 0) && (block1 == Blocks.sand)) { k = rand.nextInt(4) + Math.max(0, l1 - 63); block1 = Blocks.air; } } } } else { k = -1; } } } }Je vous conseille également de ne pas mettre une hauteur trop basse.
La classe de Génération :
Donc si vous voulez générer, comme moi, les minerais de base, ajoutez dans la fonction generate de votre classe de génération :
if(world.provider.dimensionId == TutoDimension.tutoDimIslandID) { this.generateSky(world, chunkX * 16, chunkZ * 16, random); }N’oubliez pas la fonction :
public void generateSky(World world, int x, int z, Random rand) { }Personnaliser le portail :
Le Bloc :
Donc nous allons un peu changer notre bloc, nous allons faire :
- Apparaître des particules (comme le portail du nether)
- Animer la texture du bloc
- Lui faire jouer un son
- Changer la forme (hit box) du bloc
Si vous voulez faire apparaître votre propre particule, il faudra ajouter la fonction suivante.
@Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int coordX, int coordY, int coordZ, Random rand) { for(int l = 0; l < 4; l++) { double x = coordX + rand.nextFloat(); double y = coordY + rand.nextFloat(); double z = coordZ + rand.nextFloat(); double mX = 0.0D; double mY = 0.0D; double mZ = 0.0D; int i1 = rand.nextInt(2) * 2 - 1; mX = (rand.nextFloat() - 0.5D) * 0.5D; mY = (rand.nextFloat() - 0.5D) * 0.5D; mZ = (rand.nextFloat() - 0.5D) * 0.5D; if((world.getBlock(coordX - 1, coordY, coordZ) != this) && (world.getBlock(coordX + 1, coordY, coordZ) != this)) { x = coordX + 0.5D + 0.25D * i1; mX = rand.nextFloat() * 2.0F * i1; } else { z = coordZ + 0.5D + 0.25D * i1; mZ = rand.nextFloat() * 2.0F * i1; } TutoDimension.proxy.spawnParticle(world, "portal", x, y, z, mX, mY, mZ); } }Si au contraire vous désirez utiliser une particule de base, il vous faut ajouter à la place de la dernière ligne :
world.spawnParticle("portal", x, y, z, mX, mY, mZ);Bien entendu, vous pouvez changer le “portal” par autre chose, pour avoir une autre particule.
Voici la liste des particules (à mettre à la place de “portal”) :- bubble
- suspended
- depthsuspend
- townaura
- crit
- magicCrit
- smoke
- mobSpell
- mobSpellAmbient
- spell
- instantSpell
- witchMagic
- note
- portal
- enchantmenttable
- explode
- flame
- lava
- footstep
- splash
- wake
- largesmoke
- cloud
- reddust
- snowballpoof
- dripWater
- dripLava
- snowshovel
- slime
- heart
- angryVillager
- happyVillager
Animer votre texture :
Donc pour animer votre bloc il vous faut créer une texture de taille (zone de dessin) 16 x 512 (note : si vous utilisez une texture 32 x 32 alors il faut doubler les valeurs. Vous aurez donc : 32 x 1024, et pour 64 : 64 x 2048 ). Ensuite, votre texture doit être mise par la taille choisie par celle-ci. En image :

Donc, chaque couleur représente un carré de la taille de mon format (16x16 ou 32x32 par exemple). Donc vous avez juste a faire la même chose, en modifiant les carrés pour que ce soit animé. Si jamais vous avez des problèmes, allez voir la texture du portail de base : minecraft/textures/blocks/portal.
Une fois que votre fichier est créé aller dans le dossier de la texture et créer un fichier qui porte le nom de la texture .png plus ajouter .mcmeta (nom_block.png.mcmeta). Ouvrez votre nouveau fichier avec un éditeur de texte (notepad est bien) et ajoutez ceci :{ "animation": { "frames": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 ] } }Ceci permet de dire au jeu d’animer le bloc. Si vous le faites pas (ou mal) il y aura une texture manquante. C’est simple il vous suffit de mettre le numéro de chaque image de votre .png, 1 correspond au premier carré de l’image au-dessus, 2 à la seconde, etc….
Faire jouer un son :
Pour faire jouer un son au bloc, allez dans la fonction “randomDisplayTick” et ajoutez :
if(rand.nextInt(25) == 0) { world.playSound(coordX + 0.5D, coordY + 0.5D, coordZ + 0.5D, "portal.portal", 0.5F, rand.nextFloat() * 0.4F + 0.8F, false); }Ce qui fera jouer un son de portail, il existe plein d’autre son, dont les vôtres.
Changer la forme :
Pour ce faire nous allons changer les fonctions : “setBlockBoundsBasedOnState” et “setBlockBoundsForItemRender”. Dans notre cas, je vais faire en sorte que le bloc soit comme un tapis, mais qui vole.
Donc une petite explication du : setBlockBounds. Cela permet de mettre la hit box et donc de changer la forme. Ces float représentent les points, les trois premiers représentent les x, y et z minimums et les trois autres les x, y et z maximums. En claire “0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F” fait un bloc normal et “0.0F, 0.0F, 0.0F, 0.5F, 0.5F, 0.5F” fait une dalle. Nous allons faire ce qu’il faut pour que notre bloc soit comme nous le souhaitons. Ajoutez ceci dans vos deux fonctions :
float f = 1F; this.setBlockBounds(0.0F, 0.950F, 0.0F, 1.0F, f, 1.0F);La structure :
Dans cette petite partie nous changerons la structure de notre portail en :
- Modifiant la forme pour que le joueur doive tomber dans le portail
- Faisant apparaître notre joueur sur une plateforme fixe sans portail
Donc nous allons changer la forme de notre petit portail pour qu’il soit comme cela :

Vous allez retrouver la ligne de code dans la fonction de création du portail dans le teleporter :
this.worldServerInstance.setBlock(l3, i4, j4, (flag ? Blocks.stone : TutoDimension.tutoPortail), 0, 2);Remplacez la par :
this.worldServerInstance.setBlock(k3 + 1, j3 + 1, i4, Blocks.stone, 0, 2); this.worldServerInstance.setBlock(k3 + 1, j3, i4 + 1, Blocks.stone, 0, 2); this.worldServerInstance.setBlock(k3 + 0, j3 + 1, i4 + 1, Blocks.stone, 0, 2); this.worldServerInstance.setBlock(k3 + 1, j3 + 1, i4 + 1, TutoDimension.tutoPortail, 0, 2); this.worldServerInstance.setBlock(k3 + 2, j3 + 1, i4 + 1, Blocks.stone, 0, 2); this.worldServerInstance.setBlock(k3 + 1, j3 + 1, i4 + 2, Blocks.stone, 0, 2);Dans la classe de votre activateur changez le contenu de la fonction “onItemUse”, vous allez supprimer le contenu et ajoutez à la place :
if(world.getBlock(x, y, z).equals(Blocks.stone)) { if(world.getBlock(x + 2, y, z).equals(Blocks.stone)) { if(world.getBlock(x + 1, y, z + 1).equals(Blocks.stone)) { if(world.getBlock(x + 1, y, z - 1).equals(Blocks.stone)) { world.setBlock(x + 1, y, z, TutoDimension.tutoPortail); } } } else if(world.getBlock(x -2 , y, z).equals(Blocks.stone)) { if(world.getBlock(x - 1, y, z + 1).equals(Blocks.stone)) { if(world.getBlock(x - 1, y, z - 1).equals(Blocks.stone)) { world.setBlock(x - 1, y, z, TutoDimension.tutoPortail); } } } else if(world.getBlock(x, y, z + 2).equals(Blocks.stone)) { if(world.getBlock(x + 1, y, z + 1).equals(Blocks.stone)) { if(world.getBlock(x - 1, y, z + 1).equals(Blocks.stone)) { world.setBlock(x, y, z + 1, TutoDimension.tutoPortail); } } } else if(world.getBlock(x, y, z - 2).equals(Blocks.stone)) { if(world.getBlock(x + 1, y, z - 1).equals(Blocks.stone)) { if(world.getBlock(x - 1, y, z - 1).equals(Blocks.stone)) { world.setBlock(x, y, z - 1, TutoDimension.tutoPortail); } } } } return false;Et voilà, en lançant votre jeu votre portail est modifié comme vous le vouliez. Si vous voulez faire apparaître votre portail dans une structure, vous devrez ajouter le code pour générer votre structure (oublier pas de générer la bonne forme du portail dans votre structure sinon cela risque de perdre du sens), en plus de celui du portail.
Si vous avez envie de faire spawn le joueur sur une plateforme fixe, cela revient au même, mais en suppriment la génération du portail et en ajoutant “-1” après le j3.
Si vous voulez que le joueur spawn dans votre portail sans même être à la surface (par rapport au coordonné relative en y depuis la dimension de base) il vous faut changer :- k3 ==> x
- j3 ==> y
- i4 ==> z
Donc voilà le tour est joué.
Résultat



Crédits
Rédaction :
Correction :

Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International -
Bonjour, jai un crash
[16:24:52] [main/INFO] [GradleStart]: Extra: [] [16:24:52] [main/INFO] [GradleStart]: Running with arguments: [–userProperties, {}, --assetsDir, C:/Users/timour/.gradle/caches/minecraft/assets, --assetIndex, 1.7.10, --accessToken, {REDACTED}, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker] [16:24:53] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker [16:24:53] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker [16:24:53] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker [16:24:53] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker [16:24:53] [main/INFO] [FML]: Forge Mod Loader version 7.10.85.1291 for Minecraft 1.7.10 loading [16:24:53] [main/INFO] [FML]: Java is Java HotSpot(TM) Client VM, version 1.8.0_05, running on Windows 7:x86:6.1, installed at C:\Program Files\Java\jdk1.8.0_05\jre [16:24:53] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation [16:24:53] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker [16:24:53] [main/INFO] [GradleStart]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin [16:24:53] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin [16:24:53] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [16:24:53] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker [16:24:53] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker [16:24:53] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [16:24:53] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [16:24:53] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper [16:24:54] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work! [16:25:02] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing [16:25:02] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper [16:25:02] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker [16:25:03] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker [16:25:03] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker [16:25:03] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker [16:25:03] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main} [16:25:07] [main/INFO]: Setting user: Player683 [16:25:11] [Client thread/INFO]: LWJGL Version: 2.9.1 [16:25:13] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization [16:25:13] [Client thread/INFO] [FML]: MinecraftForge v10.13.2.1291 Initialized [16:25:13] [Client thread/INFO] [FML]: Replaced 183 ore recipies [16:25:13] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization [16:25:14] [Client thread/INFO] [FML]: Searching C:\Users\timour\Documents\Battlefield Heroes\Timour\forge-1.7.10-10.13.2.1291-src\eclipse\mods for mods [16:25:19] [Client thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load [16:25:20] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, flightnight] at CLIENT [16:25:20] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, flightnight] at SERVER [16:25:21] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:FlightNight [16:25:21] [Client thread/INFO] [FML]: Processing ObjectHolder annotations [16:25:21] [Client thread/INFO] [FML]: Found 341 ObjectHolder annotations [16:25:21] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0 [16:25:22] [Client thread/INFO] [FML]: Applying holder lookups [16:25:22] [Client thread/INFO] [FML]: Holder lookups applied [16:25:22] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [16:25:22] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem… [16:25:22] [Thread-6/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL [16:25:22] [Thread-6/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org) [16:25:23] [Thread-6/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized. [16:25:23] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [16:25:23] [Sound Library Loader/INFO]: Sound engine started [16:25:38] [Client thread/ERROR]: Using missing texture, unable to load flightnight:textures/blocks/portail.png java.io.FileNotFoundException: flightnight:textures/blocks/portail.png at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65) ~[FallbackResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67) ~[SimpleReloadableResourceManager.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:126) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:91) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:71) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTextureMap(TextureManager.java:58) [TextureManager.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:582) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:931) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] [16:25:38] [Client thread/ERROR]: Using missing texture, unable to load flightnight:textures/blocks/Tardis.png java.io.FileNotFoundException: flightnight:textures/blocks/Tardis.png at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65) ~[FallbackResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67) ~[SimpleReloadableResourceManager.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:126) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:91) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:71) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTextureMap(TextureManager.java:58) [TextureManager.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:582) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:931) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] [16:25:38] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas [16:25:38] [Client thread/ERROR]: Using missing texture, unable to load flightnight:textures/items/activateur.png java.io.FileNotFoundException: flightnight:textures/items/activateur.png at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65) ~[FallbackResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67) ~[SimpleReloadableResourceManager.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:126) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:91) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:71) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTextureMap(TextureManager.java:58) [TextureManager.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:583) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:931) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] [16:25:39] [Client thread/INFO]: Created: 512x256 textures/items-atlas [16:25:39] [Client thread/INFO] [FML]: Forge Mod Loader has successfully loaded 4 mods [16:25:39] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:FlightNight [16:25:39] [Client thread/ERROR]: Using missing texture, unable to load flightnight:textures/blocks/portail.png java.io.FileNotFoundException: flightnight:textures/blocks/portail.png at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65) ~[FallbackResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67) ~[SimpleReloadableResourceManager.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:126) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:91) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.onResourceManagerReload(TextureManager.java:170) [TextureManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.notifyReloadListeners(SimpleReloadableResourceManager.java:134) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.reloadResources(SimpleReloadableResourceManager.java:118) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.refreshResources(Minecraft.java:643) [Minecraft.class:?] at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:303) [FMLClientHandler.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:586) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:931) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] [16:25:40] [Client thread/ERROR]: Using missing texture, unable to load flightnight:textures/blocks/Tardis.png java.io.FileNotFoundException: flightnight:textures/blocks/Tardis.png at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65) ~[FallbackResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67) ~[SimpleReloadableResourceManager.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:126) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:91) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.onResourceManagerReload(TextureManager.java:170) [TextureManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.notifyReloadListeners(SimpleReloadableResourceManager.java:134) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.reloadResources(SimpleReloadableResourceManager.java:118) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.refreshResources(Minecraft.java:643) [Minecraft.class:?] at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:303) [FMLClientHandler.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:586) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:931) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] [16:25:40] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas [16:25:40] [Client thread/ERROR]: Using missing texture, unable to load flightnight:textures/items/activateur.png java.io.FileNotFoundException: flightnight:textures/items/activateur.png at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65) ~[FallbackResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67) ~[SimpleReloadableResourceManager.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:126) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:91) [TextureMap.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.onResourceManagerReload(TextureManager.java:170) [TextureManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.notifyReloadListeners(SimpleReloadableResourceManager.java:134) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.reloadResources(SimpleReloadableResourceManager.java:118) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.refreshResources(Minecraft.java:643) [Minecraft.class:?] at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:303) [FMLClientHandler.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:586) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:931) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_05] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_05] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] [16:25:40] [Client thread/INFO]: Created: 512x256 textures/items-atlas [16:25:40] [Client thread/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [16:25:40] [Client thread/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: SoundSystem shutting down… [16:25:40] [Client thread/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:importantMessage:90]: Author: Paul Lamb, www.paulscode.com [16:25:40] [Client thread/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [16:25:40] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [16:25:40] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem… [16:25:40] [Thread-8/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL [16:25:40] [Thread-8/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org) [16:25:41] [Thread-8/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized. [16:25:41] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [16:25:41] [Sound Library Loader/INFO]: Sound engine started [16:25:57] [Server thread/INFO]: Starting integrated minecraft server version 1.7.10 [16:25:57] [Server thread/INFO]: Generating keypair [16:25:58] [Server thread/INFO] [FML]: Injecting existing block and item data into this server instance [16:25:58] [Server thread/INFO] [FML]: Found a missing id from the world flightnight:Dimension [16:25:58] [Server thread/INFO] [FML]: Found a missing id from the world flightnight:Dimension [16:25:58] [Server thread/ERROR] [FML]: There are unidentified mappings in this world - we are going to attempt to process anyway [16:25:58] [Server thread/ERROR] [FML]: Unidentified block: flightnight:Dimension, id 169 [16:25:58] [Server thread/ERROR] [FML]: Unidentified item: flightnight:Dimension, id 169 [16:26:05] [Server thread/INFO] [FML]: World backup created at C:\Users\timour\Documents\Battlefield Heroes\Timour\forge-1.7.10-10.13.2.1291-src\eclipse\saves\New World-20150531-162602.zip. [16:26:05] [Server thread/ERROR] [FML]: This world contains block and item mappings that may cause world breakage [16:26:05] [Server thread/INFO] [FML]: Injecting new block and item data into this server instance. [16:26:05] [Server thread/INFO] [FML]: Injected new block/item flightnight:portail: 165 (init) -> 176 (map). [16:26:05] [Server thread/INFO] [FML]: Injected new block/item flightnight:activateur: 4096 (init) -> 4098 (map). [16:26:05] [Server thread/INFO] [FML]: Injected new block/item flightnight:portail: 165 (init) -> 176 (map). [16:26:05] [Server thread/INFO] [FML]: Applying holder lookups [16:26:05] [Server thread/INFO] [FML]: Holder lookups applied [16:26:06] [Server thread/INFO] [FML]: Loading dimension 0 (New World) (net.minecraft.server.integrated.IntegratedServer@267d64) [16:26:09] [Server thread/INFO] [FML]: Loading dimension 20 (New World) (net.minecraft.server.integrated.IntegratedServer@267d64) [16:26:10] [Server thread/INFO] [FML]: Applying holder lookups [16:26:10] [Server thread/INFO] [FML]: Holder lookups applied [16:26:10] [Server thread/INFO] [FML]: The state engine was in incorrect state SERVER_STARTING and forced into state SERVER_STOPPED. Errors may have been discarded. [16:26:17] [Server thread/INFO]: Starting integrated minecraft server version 1.7.10 [16:26:17] [Server thread/INFO]: Generating keypair [16:26:18] [Server thread/INFO]: Converting map! [16:26:18] [Server thread/INFO]: Scanning folders… [16:26:18] [Server thread/INFO]: Total conversion count is 0 [16:26:18] [Server thread/INFO] [FML]: Injecting existing block and item data into this server instance [16:26:18] [Server thread/INFO] [FML]: Applying holder lookups [16:26:18] [Server thread/INFO] [FML]: Holder lookups applied [16:26:21] [Server thread/INFO] [FML]: Loading dimension 0 (New World) (net.minecraft.server.integrated.IntegratedServer@25910f) [16:26:21] [Server thread/INFO] [FML]: Loading dimension 20 (New World) (net.minecraft.server.integrated.IntegratedServer@25910f) [16:26:21] [Server thread/INFO] [FML]: Loading dimension 1 (New World) (net.minecraft.server.integrated.IntegratedServer@25910f) [16:26:21] [Server thread/INFO] [FML]: Loading dimension -1 (New World) (net.minecraft.server.integrated.IntegratedServer@25910f) [16:26:21] [Server thread/INFO]: Preparing start region for level 0 [16:26:22] [Server thread/INFO]: Preparing spawn area: 91% [16:26:23] [Server thread/INFO]: Changing view distance to 8, from 10 [16:26:24] [Netty Client IO #1/INFO] [FML]: Server protocol version 1 [16:26:24] [Netty IO #3/INFO] [FML]: Client protocol version 1 [16:26:24] [Netty IO #3/INFO] [FML]: Client attempting to join with 4 mods : FML@7.10.85.1291,flightnight@1.0.0,Forge@10.13.2.1291,mcp@9.05 [16:26:24] [Netty IO #3/INFO] [FML]: Attempting connection with missing mods [] at CLIENT [16:26:24] [Netty Client IO #1/INFO] [FML]: Attempting connection with missing mods [] at SERVER [16:26:24] [Client thread/INFO] [FML]: [Client thread] Client side modded connection established [16:26:24] [Server thread/INFO] [FML]: [Server thread] Server side modded connection established [16:26:24] [Server thread/INFO]: Player683[local:E:b07da388] logged in with entity id 0 at (-1013.5, 4.0, 42.5) [16:26:24] [Server thread/INFO]: Player683 joined the game [16:26:47] [Server thread/INFO]: Player683 has just earned the achievement [Taking Inventory] [16:26:47] [Client thread/INFO]: [CHAT] Player683 has just earned the achievement [Taking Inventory] [16:27:16] [Server thread/ERROR]: Encountered an unexpected exception net.minecraft.util.ReportedException: Exception generating new chunk at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:198) ~[NetworkSystem.class:?] at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) ~[MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?] at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[IntegratedServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?] Caused by: java.lang.ClassCastException: net.minecraft.world.biome.BiomeGenDesert cannot be cast to net.minecraft.world.biome.BiomeGenPlains at com.XDoctorX.main.world.ChunkProviderTardis.replaceBlocksForBiome(ChunkProviderTardis.java:202) ~[ChunkProviderTardis.class:?] at com.XDoctorX.main.world.ChunkProviderTardis.provideChunk(ChunkProviderTardis.java:218) ~[ChunkProviderTardis.class:?] at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:190) ~[ChunkProviderServer.class:?] at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149) ~[ChunkProviderServer.class:?] at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119) ~[ChunkProviderServer.class:?] at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221) ~[ChunkProviderServer.class:?] at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482) ~[World.class:?] at net.minecraft.world.World.getBlock(World.java:387) ~[World.class:?] at com.XDoctorX.main.dimension.TeleporterTardis.placeInExistingPortal(TeleporterTardis.java:110) ~[TeleporterTardis.class:?] at com.XDoctorX.main.dimension.TeleporterTardis.placeInPortal(TeleporterTardis.java:37) ~[TeleporterTardis.class:?] at net.minecraft.server.management.ServerConfigurationManager.transferEntityToWorld(ServerConfigurationManager.java:625) ~[ServerConfigurationManager.class:?] at net.minecraft.server.management.ServerConfigurationManager.transferPlayerToDimension(ServerConfigurationManager.java:529) ~[ServerConfigurationManager.class:?] at com.XDoctorX.main.Block.Portail.onEntityCollidedWithBlock(Portail.java:148) ~[Portail.class:?] at net.minecraft.entity.Entity.func_145775_I(Entity.java:962) ~[Entity.class:?] at net.minecraft.entity.Entity.moveEntity(Entity.java:895) ~[Entity.class:?] at net.minecraft.entity.EntityLivingBase.moveEntityWithHeading(EntityLivingBase.java:1680) ~[EntityLivingBase.class:?] at net.minecraft.entity.player.EntityPlayer.moveEntityWithHeading(EntityPlayer.java:1862) ~[EntityPlayer.class:?] at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2023) ~[EntityLivingBase.class:?] at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:612) ~[EntityPlayer.class:?] at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:1816) ~[EntityLivingBase.class:?] at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:327) ~[EntityPlayer.class:?] at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:330) ~[EntityPlayerMP.class:?] at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329) ~[NetHandlerPlayServer.class:?] at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37) ~[C03PacketPlayer.class:?] at net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition.processPacket(C03PacketPlayer.java:163) ~[C03PacketPlayer$C04PacketPlayerPosition.class:?] at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) ~[NetworkManager.class:?] at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?] … 5 more [16:27:16] [Server thread/ERROR]: This crash report has been saved to: C:\Users\timour\Documents\Battlefield Heroes\Timour\forge-1.7.10-10.13.2.1291-src\eclipse\.\crash-reports\crash-2015-05-31_16.27.16-server.txt [16:27:16] [Server thread/INFO]: Stopping server [16:27:16] [Server thread/INFO]: Saving players [16:27:16] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: –-- Minecraft Crash Report ---- // Hey, that tickles! Hehehe! Time: 31/05/15 16:27 Description: Exception generating new chunk java.lang.ClassCastException: net.minecraft.world.biome.BiomeGenDesert cannot be cast to net.minecraft.world.biome.BiomeGenPlains at com.XDoctorX.main.world.ChunkProviderTardis.replaceBlocksForBiome(ChunkProviderTardis.java:202) at com.XDoctorX.main.world.ChunkProviderTardis.provideChunk(ChunkProviderTardis.java:218) at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:190) at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149) at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119) at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221) at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482) at net.minecraft.world.World.getBlock(World.java:387) at com.XDoctorX.main.dimension.TeleporterTardis.placeInExistingPortal(TeleporterTardis.java:110) at com.XDoctorX.main.dimension.TeleporterTardis.placeInPortal(TeleporterTardis.java:37) at net.minecraft.server.management.ServerConfigurationManager.transferEntityToWorld(ServerConfigurationManager.java:625) at net.minecraft.server.management.ServerConfigurationManager.transferPlayerToDimension(ServerConfigurationManager.java:529) at com.XDoctorX.main.Block.Portail.onEntityCollidedWithBlock(Portail.java:148) at net.minecraft.entity.Entity.func_145775_I(Entity.java:962) at net.minecraft.entity.Entity.moveEntity(Entity.java:895) at net.minecraft.entity.EntityLivingBase.moveEntityWithHeading(EntityLivingBase.java:1680) at net.minecraft.entity.player.EntityPlayer.moveEntityWithHeading(EntityPlayer.java:1862) at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2023) at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:612) at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:1816) at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:327) at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:330) at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329) at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37) at net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition.processPacket(C03PacketPlayer.java:163) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at com.XDoctorX.main.world.ChunkProviderTardis.replaceBlocksForBiome(ChunkProviderTardis.java:202) at com.XDoctorX.main.world.ChunkProviderTardis.provideChunk(ChunkProviderTardis.java:218) -- Chunk to be generated -- Details: Location: -15,-8 Position hash: -30064771087 Generator: RandomLevelSource Stacktrace: at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:190) at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:149) at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:119) at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:221) at net.minecraft.world.World.getChunkFromChunkCoords(World.java:482) -- Requested block coordinates -- Details: Found chunk: true Location: World: (-229,255,-124), Chunk: (at 11,15,4 in -15,-8; contains blocks -240,0,-128 to -225,255,-113), Region: (-1,-1; contains chunks -32,-32 to -1,-1, blocks -512,0,-512 to -1,255,-1) Stacktrace: at net.minecraft.world.World.getBlock(World.java:387) at com.XDoctorX.main.dimension.TeleporterTardis.placeInExistingPortal(TeleporterTardis.java:110) at com.XDoctorX.main.dimension.TeleporterTardis.placeInPortal(TeleporterTardis.java:37) at net.minecraft.server.management.ServerConfigurationManager.transferEntityToWorld(ServerConfigurationManager.java:625) at net.minecraft.server.management.ServerConfigurationManager.transferPlayerToDimension(ServerConfigurationManager.java:529) at com.XDoctorX.main.Block.Portail.onEntityCollidedWithBlock(Portail.java:148) -- Block being collided with -- Details: Block type: ID #165 (tile.portail // com.XDoctorX.main.Block.Portail) Block data value: 0 / 0x0 / 0b0000 Block location: World: (-1014,4,44), Chunk: (at 10,0,12 in -64,2; contains blocks -1024,0,32 to -1009,255,47), Region: (-2,0; contains chunks -64,0 to -33,31, blocks -1024,0,0 to -513,255,511) Stacktrace: at net.minecraft.entity.Entity.func_145775_I(Entity.java:962) -- Entity being checked for collision -- Details: Entity Type: null (net.minecraft.entity.player.EntityPlayerMP) Entity ID: 0 Entity Name: Player683 Entity's Exact location: -101,00, 4,92, 4,00 Entity's Block location: World: (-101,4,4), Chunk: (at 11,0,4 in -7,0; contains blocks -112,0,0 to -97,255,15), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Entity's Momentum: 0,00, -0,08, 0,00 Stacktrace: at net.minecraft.entity.Entity.moveEntity(Entity.java:895) at net.minecraft.entity.EntityLivingBase.moveEntityWithHeading(EntityLivingBase.java:1680) at net.minecraft.entity.player.EntityPlayer.moveEntityWithHeading(EntityPlayer.java:1862) at net.minecraft.entity.EntityLivingBase.onLivingUpdate(EntityLivingBase.java:2023) at net.minecraft.entity.player.EntityPlayer.onLivingUpdate(EntityPlayer.java:612) at net.minecraft.entity.EntityLivingBase.onUpdate(EntityLivingBase.java:1816) at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:327) -- Player being ticked -- Details: Entity Type: null (net.minecraft.entity.player.EntityPlayerMP) Entity ID: 0 Entity Name: Player683 Entity's Exact location: -101,00, 4,92, 4,00 Entity's Block location: World: (-101,4,4), Chunk: (at 11,0,4 in -7,0; contains blocks -112,0,0 to -97,255,15), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Entity's Momentum: 0,00, -0,08, 0,00 Stacktrace: at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:330) at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329) at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37) at net.minecraft.network.play.client.C03PacketPlayer$C04PacketPlayerPosition.processPacket(C03PacketPlayer.java:163) at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) -- Ticking connection -- Details: Connection: net.minecraft.network.NetworkManager@205046 Stacktrace: at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) -- System Details -- Details: Minecraft Version: 1.7.10 Operating System: Windows 7 (x86) version 6.1 Java Version: 1.8.0_05, Oracle Corporation Java VM Version: Java HotSpot(TM) Client VM (mixed mode), Oracle Corporation Memory: 968343496 bytes (923 MB) / 1060372480 bytes (1011 MB) up to 1060372480 bytes (1011 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 0, tcache: 0, allocated: 1, tallocated: 14 FML: MCP v9.05 FML v7.10.85.1291 Minecraft Forge 10.13.2.1291 4 mods loaded, 4 mods active mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available FML{7.10.85.1291} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available Forge{10.13.2.1291} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1291.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available flightnight{1.0.0} [FlightNight] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available Profiler Position: N/A (disabled) Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used Player Count: 1 / 8; [EntityPlayerMP['Player683'/0, l='New World', x=-101,00, y=4,92, z=4,00]] Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'fml,forge' [16:27:16] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:393]: #@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2015-05-31_16.27.16-server.txt [16:27:16] [Client thread/INFO] [FML]: Waiting for the server to terminate/save. [16:27:16] [Server thread/INFO]: Saving worlds [16:27:16] [Server thread/INFO]: Saving chunks for level 'New World'/Overworld [16:27:16] [Server thread/INFO]: Saving chunks for level 'New World'/Nether [16:27:17] [Server thread/INFO]: Saving chunks for level 'New World'/The End [16:27:17] [Server thread/INFO]: Saving chunks for level 'New World'/Tardis [16:27:20] [Server thread/INFO] [FML]: Unloading dimension 0 [16:27:20] [Server thread/INFO] [FML]: Unloading dimension -1 [16:27:20] [Server thread/INFO] [FML]: Unloading dimension 1 [16:27:20] [Server thread/INFO] [FML]: Unloading dimension 20 [16:27:20] [Server thread/INFO] [FML]: Applying holder lookups [16:27:20] [Server thread/INFO] [FML]: Holder lookups applied [16:27:20] [Server thread/INFO] [FML]: The state engine was in incorrect state SERVER_STOPPING and forced into state SERVER_STOPPED. Errors may have been discarded. [16:27:20] [Client thread/INFO] [FML]: Server terminated. AL lib: (EE) alc_cleanup: 1 device not closed Java HotSpot(TM) Client VM warning: Using incremental CMS is deprecated and will likely be removed in a future release -
On peut pas deviner les classes de ton mod… Je ne possède pas encore ce pouvoir.
“Bonjour, jai un crash” ça donne envie d’aider…
-
Ce message a été supprimé ! -
BiomeGenPlains /*TODO ce biome est a remplacer par le votre*/ biomegenbase = (BiomeGenPlains /*TODO ce biome est a remplacer par le votre*/)biomeList[l + k * 16];java.lang.ClassCastException: net.minecraft.world.biome.BiomeGenDesert cannot be cast to net.minecraft.world.biome.BiomeGenPlainsVu l’erreur il faudrait plutôt mettre BiomeGenDesert à la place de BiomeGenPlains, voir mettre BiomeGenBase.
-
Ce message a été supprimé ! -
public void func_150573_a(World world, Random rand, Block[] block, byte[] abyte, int x, int z, double par7) { this.field_150604_aj = 0; }Je suppose.
-
Ce message a été supprimé ! -
@‘XDoctorX’:
le mettre ou ?
à l’endroit où il y a une fonction du même nom, dans la classe biome.
PS : essaie de comprendre le code avant de l’utiliser
-
@‘SCAREX’:
PS : essaie de comprendre le code avant de l’utiliser
Je dit la même chose, avant d’utiliser le code assure toi d’avoir compris en grosse partie. En plus met toi dans ta tête pour se genre de chose simple "comment faire (pour générer un monde vide) ? ", et sit tu trouve pas tu peux demander ^^.
-
Ce message a été supprimé ! -
Ce message a été supprimé ! -
Ce message a été supprimé ! -
c’est dans la classes téléporte, à la place de get l’entity pos tu get la pos du world. Pour la structure dans le chunk Provider il faut générer un structure selon les coordonnées fix.
-
Jcomprend toujours pas un truc , jdois être débile tu dis ```java
this.dimensionId = TutoDimension.TutodimID;Mais dans ton post ou est la classe TutoDimension ? Désolé je suis le tuto a la lettre je loupe peut - être mais ca me cause plein d'erreur Oo -
TutoDimension est la classe principale du mod.
-
Ok merci j’ai un crash lié a l’ID de la dimension mais je comprend pas pourquoi je l’ai en fait
DimensionRegister
package mod.common.world.structure; import cpw.mods.fml.common.registry.GameRegistry; import mod.common.world.type.AncientWorldProvider; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.item.Item; import net.minecraftforge.common.DimensionManager; public class DimensionRegister { public static Block AncientPortail; public static Item AncientActivateur; public static int tutoDimAncient4; public static void register() { AncientPortail = new AncientPortail(Material.portal).setBlockName("portail"); AncientActivateur = new AncientActivateur().setUnlocalizedName("activateur"); GameRegistry.registerBlock(AncientPortail, "tuto_portail"); GameRegistry.registerItem(AncientActivateur, "tuto_activateur"); DimensionManager.registerProviderType(DimensionRegister.tutoDimAncient4, AncientWorldProvider.class, false); DimensionManager.registerDimension(DimensionRegister.tutoDimAncient4, DimensionRegister.tutoDimAncient4); } }le crash en entier
[00:45:46] [main/INFO] [GradleStart]: Extra: [] [00:45:46] [main/INFO] [GradleStart]: Running with arguments: [–userProperties, {}, --accessToken, {REDACTED}, --assetIndex, 1.7.10, --assetsDir, C:/Users/Legrandfifou/.gradle/caches/minecraft/assets, --version, 1.7.10, --tweakClass, cpw.mods.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker] [00:45:46] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker [00:45:46] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker [00:45:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker [00:45:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker [00:45:46] [main/INFO] [FML]: Forge Mod Loader version 7.99.16.1448 for Minecraft 1.7.10 loading [00:45:46] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_75, running on Windows 8.1:amd64:6.3, installed at C:\Program Files\Java\jre7 [00:45:46] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation [00:45:46] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker [00:45:46] [main/INFO] [GradleStart]: Injecting location in coremod cpw.mods.fml.relauncher.FMLCorePlugin [00:45:46] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin [00:45:46] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [00:45:46] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker [00:45:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker [00:45:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [00:45:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker [00:45:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper [00:45:46] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work! [00:45:47] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing [00:45:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager$FMLPluginWrapper [00:45:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker [00:45:48] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker [00:45:48] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.TerminalTweaker [00:45:48] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.TerminalTweaker [00:45:48] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main} [00:45:49] [main/INFO]: Setting user: Player140 [00:45:50] [Client thread/INFO]: LWJGL Version: 2.9.1 [00:45:50] [Client thread/INFO] [STDOUT]: [cpw.mods.fml.client.SplashProgress:start:188]: –-- Minecraft Crash Report ---- // Everything's going to plan. No, really, that was supposed to happen. Time: 11/07/15 0:45 Description: Loading screen debug info This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details: Minecraft Version: 1.7.10 Operating System: Windows 8.1 (amd64) version 6.3 Java Version: 1.7.0_75, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 817696760 bytes (779 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0 FML: GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.5.0 NVIDIA 350.12' Renderer: 'GeForce GTX 770/PCIe/SSE2' [00:45:50] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization [00:45:50] [Client thread/INFO] [FML]: MinecraftForge v10.13.4.1448 Initialized [00:45:50] [Client thread/INFO] [FML]: Replaced 183 ore recipies [00:45:50] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization [00:45:51] [Client thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer [00:45:51] [Client thread/INFO] [FML]: Searching C:\Users\Legrandfifou\Pictures\forge\eclipse\mods for mods [00:45:52] [Client thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load [00:45:53] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, modminecraft] at CLIENT [00:45:53] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, modminecraft] at SERVER [00:45:53] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:Mod Minecraft [00:45:53] [Client thread/INFO] [FML]: Processing ObjectHolder annotations [00:45:53] [Client thread/INFO] [FML]: Found 341 ObjectHolder annotations [00:45:53] [Client thread/INFO] [FML]: Identifying ItemStackHolder annotations [00:45:53] [Client thread/INFO] [FML]: Found 0 ItemStackHolder annotations [00:45:53] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0 [00:45:53] [Client thread/INFO] [FML]: Applying holder lookups [00:45:53] [Client thread/INFO] [FML]: Holder lookups applied [00:45:53] [Client thread/INFO] [FML]: Injecting itemstacks [00:45:53] [Client thread/INFO] [FML]: Itemstack injection complete [00:45:53] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [00:45:53] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Starting up SoundSystem… [00:45:53] [Thread-8/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: Initializing LWJGL OpenAL [00:45:53] [Thread-8/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org) [00:45:53] [Thread-8/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: OpenAL initialized. [00:45:54] [Sound Library Loader/INFO] [STDOUT]: [paulscode.sound.SoundSystemLogger:message:69]: [00:45:54] [Sound Library Loader/INFO]: Sound engine started [00:45:54] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas [00:45:54] [Client thread/INFO]: Created: 256x256 textures/items-atlas [00:45:54] [Client thread/INFO] [STDOUT]: [mod.client.ClientProxy:registerRender:36]: render [00:45:55] [Client thread/INFO] [FML]: Injecting itemstacks [00:45:55] [Client thread/INFO] [FML]: Itemstack injection complete [00:45:55] [Client thread/ERROR] [FML]: Fatal errors were detected during the transition from POSTINITIALIZATION to AVAILABLE. Loading cannot continue [00:45:55] [Client thread/ERROR] [FML]: States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored UCHIJ mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) UCHIJ FML{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar) UCHIJ Forge{10.13.4.1448} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar) UCHIE modminecraft{1.0} [Mod Minecraft] (bin) [00:45:55] [Client thread/ERROR] [FML]: The following problems were captured during this phase [00:45:55] [Client thread/ERROR] [FML]: Caught exception from modminecraft java.lang.IllegalArgumentException: Failed to register dimension for id 0, One is already registered at net.minecraftforge.common.DimensionManager.registerDimension(DimensionManager.java:118) ~[forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar:?] at mod.common.world.structure.DimensionRegister.register(DimensionRegister.java:26) ~[bin/:?] at mod.ModMinecraft.postInit(ModMinecraft.java:64) ~[bin/:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_75] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_75] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_75] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_75] at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532) ~[forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_75] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_75] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_75] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_75] at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?] at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?] at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212) ~[forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar:?] at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190) ~[forgeSrc-1.7.10-10.13.4.1448-1.7.10.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_75] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_75] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_75] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_75] at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) ~[guava-17.0.jar:?] at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) ~[guava-17.0.jar:?] at com.google.common.eventbus.EventBus.post(EventBus.java:275) ~[guava-17.0.jar:?] at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) [LoadController.class:?] at cpw.mods.fml.common.Loader.initializeMods(Loader.java:742) [Loader.class:?] at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:311) [FMLClientHandler.class:?] at net.minecraft.client.Minecraft.startGame(Minecraft.java:597) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:942) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_75] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_75] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_75] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_75] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?] at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source) [start/:?] at GradleStart.main(Unknown Source) [start/:?] [00:45:55] [Client thread/INFO] [STDOUT]: [net.minecraft.client.Minecraft:displayCrashReport:388]: –-- Minecraft Crash Report ---- // On the bright side, I bought you a teddy bear! Time: 11/07/15 0:45 Description: Initializing game java.lang.IllegalArgumentException: Failed to register dimension for id 0, One is already registered at net.minecraftforge.common.DimensionManager.registerDimension(DimensionManager.java:118) at mod.common.world.structure.DimensionRegister.register(DimensionRegister.java:26) at mod.ModMinecraft.postInit(ModMinecraft.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) -
Parce que tu ne set jamais l’ID, donc l’ID est toujours à 0, il faut choisir un ID, sachant que -1,0 et 1 sont déjà pris, pour les autres faut faire en fonction des mods, le maximum est 100 je crois.
-
Désolé mais pour set l’ID je dois faire quoi ? Je suppose un int quelquechose mais je sais pas

-
Il sert à quoi lui à ton avis : public static int tutoDimAncient4; ?
public static int tutoDimAncient4 = tonID;
