Wende dich mal an @OpiKenopi . Der ist ein Pro auf dem Gebiet!
Hey Leute!
Ich suche einen, der ein Tutorial (am besten Video) machen kann, wo man erklärt wie man seinen eigenen Tempel (so wie Dschungeltempel / Wüstenpyramide; also Gebäude die in bestimmten Biomen "spawnen") modden kann.
Also:
z.B.
Man baut ein Haus in 2-3 Varianten und das soll in dem Biome "Extrem Hills" und "Wüste" spawnen, da drinnen sind 2 Kisten mit unterschiedlichen Items, z.B. diamanten, eisen, smaragde. Und es spawnen in dem Haus Zombies. (<- nicht dauerhaft, sondern wenn man rein geht sind da 2-3 zombies drin.)
Kann man das modden und vor allem erklären?
Freue mich um antworten.
Infos: kenne mich schon ein bisschen mit java editing aus,also man muss mir jetzt nich mcp, notepad++, eclipse oder so erklären
Danke!
Mfg Tanc~![]()
Wende dich mal an @OpiKenopi . Der ist ein Pro auf dem Gebiet!
Haha, da bin ich
Benötigt: FORGE
Also als erstes solltest du dir mal die Klasse WorldGenerator angucken, denn deine Klasse wird diese Klasse später extenden.
WorldGenerator ist abstract, ebenso auch die Methode "generate(...)", wo auch die ganzen Sachen reinkommen. Mach in deine Klasse also als erstes mal folgendes rein:
Die Variablen par1, par2, par3 sind eigentlich das selbe wie x, y, z; ich benutze nur ungern so kurze Variablennamen.Code:public boolean generate(World world, Random random, int par1, int par2, int par3
Jedenfalls haben wir in dieser Methode die "world" und die x, y, z Coordinaten, die du Später der Klasse beim spawnen zuteilst.
Den ersten Block setzen:
Erklärung:Code:world.setBlock(par1, par2, par3, 3);
par1 = x Coordinate
par2 = y Coordinate
par3 = z Coordinate
Alternativ würde auch gehen
Code:world.setBlock(par1, par2, par3, Block.dirt.blockID);
Wenn du nun also z.B. eine simple Statue coden möchtest, aus dem neuen Sandstein, dann machst du folgendes:
Was höre ich da? Du willst den "reinen" Sandstein, der auch bei den Dörfern von Wüsten verwendet wird?Code:world.setBlock(par1, par2, par3, 24); world.setBlock(par1, par2 + 1, par3, 24); world.setBlock(par1, par2 + 2, par3, 24); world.setBlock(par1, par2 + 3, par3, 24);
Dann benutze:
Code:world.setBlockAndMetadata(par1, par2, par3, 24, 3);
Die 4 Zeilen von oben, kann man auch in 2 zusammenfassen.
Was die for-Schleifen bringen ist unbedingt zu lernen!!! Das erspart Tonnen von Arbeit! http://openbook.galileocomputing.de/...033d90ed115f3bCode:for(int var1 = 0; var1 < 4; ++var1){ world.setBlockAndMetadata(par1, par2 + var1, par3, 24, 3); }
Nun haben wir also folgendes:
Ich weis nicht, wie's dir geht, aber mir fehlt da noch ein einfacher SockelCode:public boolean generate(World world, Random random, int par1, int par2, int par3) { for(int var1 = 0; var1 < 4; ++var1){ world.setBlockAndMetadata(par1, par2 + var1, par3, 24, 3); } }Einfach ein 3x3x3 Klotz unten dran.
Und nun werden for-Schleifen sehr wichtig. Denn man kann sie auch ineinander Stacken.
for(int var1 = 0; var1 < 4; ++var1){
for(int var2 = 0; var2 < 4; ++var2){
for(int var3 = 0; var3 < 4; ++var3{
world.setBlockAndMetadata(par1 + var1, par2 + var2, par3 + var3, 24, 3);
}
}
}
Da wird jetzt jedoch nicht spawnen, was ich möchte. Denn:
Die "Statue" geht von der Höhe 0-3, der Sockel aber ebenso! D.h. dass die Statue im Sockel selbst spawnt. Also einfach die Statue 3 Blöcke anheben.
Aus...
wirdCode:public boolean generate(World world, Random random, int par1, int par2, int par3) { for(int var1 = 0; var1 < 4; ++var1){ world.setBlockAndMetadata(par1, par2 + var1, par3, 24, 3); } for(int var1 = 0; var1 < 4; ++var1){ for(int var2 = 0; var2 < 4; ++var2){ for(int var3 = 0; var3 < 4; ++var3{ world.setBlockAndMetadata(par1 + var1, par2 + var2, par3 + var3, 24, 3); } } } }
Nun haben wir also die Statue. An der Spitze möchte ich jetzt aber noch einen Spawner!Code:public boolean generate(World world, Random random, int par1, int par2, int par3) { par2 += 3; for(int var1 = 0; var1 < 4; ++var1){ world.setBlockAndMetadata(par1, par2 + var1, par3, 24, 3); } par2 -= 3; for(int var1 = 0; var1 < 4; ++var1){ for(int var2 = 0; var2 < 4; ++var2){ for(int var3 = 0; var3 < 4; ++var3{ world.setBlockAndMetadata(par1 + var1, par2 + var2, par3 + var3, 24, 3); } } } }
Jetzt sollte natürlich mal was spawnenCode:world.setBlock(par1, par2 + 7, par3, 52);Also gleich mal daraus eine TileEntity machen
jetzt dem Spawner den Mob zuteilen:Code:world.setBlock(par1, par2 + 7, par3, 52); TileEntityMobSpawner spawner = (TileEntityMobSpawner)world.getBlockTileEntity(par1, par2 + 7, par3);
Das wäre hier ein Geister spawnerCode:spawner.setMobID("Ghast");
Du musst einfach den Namen des mobs reintuen, also
"Creeper" "Zombie" "Giant" "Pig" ...
Jetzt kommt der Code, wie man eine Kiste mit Items generieren lässt (heute gibts nur die Forge-Version):
Code:world.setBlock(par1, par2, par3, 54); TileEntityChest chest = (TileEntityChest)world.getBlockTileEntity(par1, par2, par3); if(chest != null) { for(int var1 = 0; var1 < DungeonHooks.getDungeonLootTries(); ++var1) { ItemStack loot = DungeonHooks.getRandomDungeonLoot(random); if(loot != null) { chest.setInventorySlotContents(random.nextInt(chest.getSizeInventory()), loot); } } }
Und, wie man Creaturen spawnen lässt:
Code:EntityIronGolem var1 = new EntityIronGolem(world); var1.setLocationAndAngles((double)par1 + 0.5D, (double)par2, (double)par3 + 0.5D, 0.0F, 0.0F); world.spawnEntityInWorld(var1);
Jetzt noch, wie man alles spawnen lässt.
Lerne erstmal die Spoiler "OreTurorial" und "TutorialWorldGenerator" auf dieser Seite
http://www.minecraftforum.net/topic/...tion-tutorial/
Das nächste kommt alles in die generateSurface Methode rein!
also... als erstes checken wir, ob wir im richtigen Biome sind:
anstatt BiomeGenPlains, geht auch jede andere Klasse, wie z.B. BiomeGenHills, BiomeGenJungle etc.Code:if(world.getWorldChunkManager().getBiomeGenAt(chunkX, chunkZ) instanceof BiomeGenPlains){ //hier dann der dungeon }
Ebenso geht natürlich auch if((blabla instanceof BiomeGenJungle) || (blabla instanceof BiomeGenDesert)) {}
Das lässt den Dungeon dann in mehreren Biomen spawnen.
WIE man den dungeon spawnt ist egentlich recht einfach:
das "getHeightValue" lässt ihn an der Oberfläche spawnen, wenn er unterirdisch sein soll, dann einfach die Höhe als Zahlt eingeben.Code:WorldGenNAME name = new WorldGenNAME(); name.generate(world, rand, chunkX, world.getHeightValue(chunkX, chunkZ), chunkZ);
Hier die komplette Methode "generateSurface"
Damit er nicht in jedem chunk spawnt muss man folgendes tun:Code:public void generateSurface(World world, Random rand, int chunkX, int chunkZ){ if(world.getWorldChunkManager().getBiomeGenAt(chunkX, chunkZ) instanceof BiomeGenPlains){ WorldGenNAME name = new WorldGenNAME(); name.generate(world, rand, chunkX, world.getHeightValue(chunkX, chunkZ), chunkZ); } }
Fertig!Code:public void generateSurface(World world, Random rand, int chunkX, int chunkZ){ if((world.getWorldChunkManager().getBiomeGenAt(chunkX, chunkZ) instanceof BiomeGenPlains) && (rand.nextInt(500) == 0){ WorldGenNAME name = new WorldGenNAME(); name.generate(world, rand, chunkX, world.getHeightValue(chunkX, chunkZ), chunkZ); } }
Bei Fragen, wende dich an mich
Solltest du gerne mal so Sachen wie Team Deathmatch, Search & Destroy oder Conquest in Minecraft spielen wollen, so nimm bitte Teil an dieser (englischen!) Umfrage
<<<CLICK>>>
Ach du kacke
erstmal sehr großen dank für deine mühen links und so..
aber ich weiß nicht ob ich das hinbekommekannst du dazu ein tutorial video machen, oder gleich mir den mod erstellen?
hätte nich gedacht, dass man da so viele sachen neu zu lernen muss >.>
trdm erstmal DANKE!
Mfg Tanc~![]()
Ist - sobald man es verstanden hat - eigentlich recht einfach![]()
Solltest du gerne mal so Sachen wie Team Deathmatch, Search & Destroy oder Conquest in Minecraft spielen wollen, so nimm bitte Teil an dieser (englischen!) Umfrage
<<<CLICK>>>