Résolu Mob Spawner
-
Bonjour/Bonsoir. J’ai créé une structure où un mob spawner doit apparaître mais, alors que j’ai modifié ses “données”, il reste à l’entité du cochon.
WorldGenDungeonRoomSmall.java (partie du mob spawner)
world.setBlock(x + 4, y + 1, z + 4, Block.getBlockById(52)); Entity entity; switch(rand.nextInt(7)) { case 1: entity = new EntityZombie(world); break; case 2: entity = new EntitySkeleton(world); break; case 3: entity = new EntityWitch(world); break; case 4: entity = new EntitySpider(world); break; case 5: entity = new EntityCreeper(world); break; case 6: entity = new EntityEnderman(world); break; case 7: entity = new EntityCaveSpider(world); break; default: entity = new EntityZombie(world); break; // Nécessaire ? } TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getTileEntity(x + 4, y + 1, z + 4); tileentitymobspawner.func_145881_a().func_98265_a(entity); NBTTagCompound nbt = new NBTTagCompound(); tileentitymobspawner.writeToNBT(nbt); nbt.setShort("minSpawnDelay",(short)50); nbt.setShort("maxSpawnDelay",(short)200); tileentitymobspawner.readFromNBT(nbt);
Pouvez-vous m’aider ?
-
world.setBlock(x + 4, y + 1, z + 4, Block.getBlockById(52)); Entity entity; entity = new TonEntity(world); TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getTileEntity(x + 4, y + 1, z + 4); tileentitymobspawner.func_145881_a().func_98265_a(entity); NBTTagCompound nbt = new NBTTagCompound(); tileentitymobspawner.writeToNBT(nbt); nbt.setShort("minSpawnDelay",(short)50); nbt.setShort("maxSpawnDelay",(short)200); tileentitymobspawner.readFromNBT(nbt);
je pense qu’il te faut mettre ca dans ton bloc spawner mais je ne suis sur de rien
-
Si c’est retirer le switch, je ne vois pas ce que ça changerai, et après test, rien à changé.
-
bha la je sais pas je pensais que juste le retirer ca marcherai…
-
Logiquement comme le switch assigne une valeur à entity différente de EntityPig, ça ne pose pas de problème.
-
world.markBlockForUpdate(x + 4, y + 1, z + 4) pour signaler que le bloc a été changé à la fin non ?
Et à ta place je ferai le tileentitymobspawner.func_145881_a().func_98265_a(entity); après les autres fonctions nbt. -
world.setBlock(x + 4, y + 1, z + 4, Block.getBlockById(52)); Entity entity; switch(rand.nextInt(7)) { case 1: entity = new EntityZombie(world); break; case 2: entity = new EntitySkeleton(world); break; case 3: entity = new EntityWitch(world); break; case 4: entity = new EntitySpider(world); break; case 5: entity = new EntityCreeper(world); break; case 6: entity = new EntityEnderman(world); break; case 7: entity = new EntityCaveSpider(world); break; default: entity = new EntityZombie(world); break; } TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getTileEntity(x + 4, y + 1, z + 4); NBTTagCompound nbt = new NBTTagCompound(); tileentitymobspawner.writeToNBT(nbt); nbt.setShort("minSpawnDelay",(short)50); nbt.setShort("maxSpawnDelay",(short)200); tileentitymobspawner.readFromNBT(nbt); tileentitymobspawner.func_145881_a().func_98265_a(entity); world.markBlockForUpdate(x + 4, y + 1, x + 4);
ça ne marche pas
-
essaie de trouver des mod qui rajoute des mobSpawner, ou sinon le mod avec les souls shard
-
D’après ton code tu écrit des nbt avant de les paramétrés. Je n’y connais rien en nbt :p. Mais d’un point de vue logique, il faudrait lire, puis paramétrer, et enfin écrire.
-
@gagoi
J’avais remarqué mais comme je suivais un tuto, je me suis dit que c’était peut-être normal (mais ça ne change rien après test).@isador34
Je cherche.EDIT : J’ai beau chercher, les fonctions que je trouve dans les autres mods sont bizarres/différentes des miennes. Par exemple une fonction prend un String en argument à la place d’une entité (fonction de je ne trouve pas dans forge). Malgré avoir testé à peu près chacune d’entre-elles, je ne trouve pas. Pouvez-vous m’aider ?
-
UP, help !
-
Up, une idée ?
-
Utilise les codes des mobs spawner des donjons vanilla il doivent avoir la solution
Si le problème est résolu change la balise -
Après une trèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèès longue pause, j’ai finalement trouvé la solution :
world.setBlock(x + 4, y + 1, z + 4, Blocks.mob_spawner, 0, 2); TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)world.getTileEntity(x + 4, y + 1, z + 4); if (tileentitymobspawner != null) { tileentitymobspawner.func_145881_a().setEntityName(this.pickMobSpawner(rand)); } else { System.err.println("Failed to fetch mob spawner entity at (" + (x + 4) + ", " + (y + 1) + ", " + (z + 4) + ")"); }
Sujet résolu.