+ Antworten
Ergebnis 1 bis 5 von 5
  1. #1
    Landwirt Avatar von Tancred423
    Registriert seit
    27.09.2012
    Beiträge
    54

    [Modsuche-Moderklärung] Eigenen Tempel modden

    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~
    Einfach
    ►Folge mir auf YouTube: http://www.youtube.com/user/Tancred423

  2. #2
    Diamantensucher Avatar von BrainStone
    Registriert seit
    09.02.2012
    Beiträge
    758
    Minecraft
    The_BrainStone
    Wende dich mal an @OpiKenopi . Der ist ein Pro auf dem Gebiet!

  3. #3
    Super Architekt Avatar von Stuuupiiid
    Registriert seit
    22.04.2011
    Beiträge
    1.074
    Minecraft
    Stuuupiiid
    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:

    Code:
    public boolean generate(World world, Random random, int par1, int par2, int par3
    Die Variablen par1, par2, par3 sind eigentlich das selbe wie x, y, z; ich benutze nur ungern so kurze Variablennamen.
    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:

    Code:
    world.setBlock(par1, par2, par3, 3);
    Erklärung:

    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:

    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);
    Was höre ich da? Du willst den "reinen" Sandstein, der auch bei den Dörfern von Wüsten verwendet wird?
    Dann benutze:

    Code:
    world.setBlockAndMetadata(par1, par2, par3, 24, 3);

    Die 4 Zeilen von oben, kann man auch in 2 zusammenfassen.
    Code:
    for(int var1 = 0; var1 < 4; ++var1){
    world.setBlockAndMetadata(par1, par2 + var1, par3, 24, 3);
    }
    Was die for-Schleifen bringen ist unbedingt zu lernen!!! Das erspart Tonnen von Arbeit! http://openbook.galileocomputing.de/...033d90ed115f3b


    Nun haben wir also folgendes:

    Code:
    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);
    }
    }
    Ich weis nicht, wie's dir geht, aber mir fehlt da noch ein einfacher Sockel 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...
    Code:
    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);
    }
    }
    }
    }
    wird

    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);
    }
    }
    }
    }
    Nun haben wir also die Statue. An der Spitze möchte ich jetzt aber noch einen Spawner!

    Code:
    world.setBlock(par1, par2 + 7, par3, 52);
    Jetzt sollte natürlich mal was spawnen Also gleich mal daraus eine TileEntity machen

    Code:
    world.setBlock(par1, par2 + 7, par3, 52);
    TileEntityMobSpawner spawner = (TileEntityMobSpawner)world.getBlockTileEntity(par1, par2 + 7, par3);
    jetzt dem Spawner den Mob zuteilen:

    Code:
    spawner.setMobID("Ghast");
    Das wäre hier ein Geister spawner
    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:
    Code:
    if(world.getWorldChunkManager().getBiomeGenAt(chunkX, chunkZ) instanceof BiomeGenPlains){
    //hier dann der dungeon
    }
    anstatt BiomeGenPlains, geht auch jede andere Klasse, wie z.B. BiomeGenHills, BiomeGenJungle etc.
    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:
    Code:
    WorldGenNAME name = new WorldGenNAME();
    name.generate(world, rand, chunkX, world.getHeightValue(chunkX, chunkZ), chunkZ);
    das "getHeightValue" lässt ihn an der Oberfläche spawnen, wenn er unterirdisch sein soll, dann einfach die Höhe als Zahlt eingeben.

    Hier die komplette Methode "generateSurface"
    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);
    }
    }
    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) && (rand.nextInt(500) == 0){
    WorldGenNAME name = new WorldGenNAME();
    name.generate(world, rand, chunkX, world.getHeightValue(chunkX, chunkZ), chunkZ);
    }
    }
    Fertig!
    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>>>


  4. Mag ich Marlor, Nexus, Tancred423 mag diesen Beitrag
  5. #4
    Landwirt Avatar von Tancred423
    Registriert seit
    27.09.2012
    Beiträge
    54
    Ach du kacke
    erstmal sehr großen dank für deine mühen links und so..
    aber ich weiß nicht ob ich das hinbekomme kannst 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~
    Einfach
    ►Folge mir auf YouTube: http://www.youtube.com/user/Tancred423

  6. #5
    Super Architekt Avatar von Stuuupiiid
    Registriert seit
    22.04.2011
    Beiträge
    1.074
    Minecraft
    Stuuupiiid
    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>>>


+ Antworten