[1.6.* ]Forge Tutorials - Basic Block

Stato
Discussione chiusa ad ulteriori risposte.

AquilaReale

Utente Emerald
18 Settembre 2010
1,255
99
183
570
Benvenuti al terzo tutorial riguardo come creare una mod per la 1.6.2 e 1.6.4!

Sono a conoscenza dei tutorial di Flood2d ma li ritengo antiquati dato che non aggiorna più nulla, quindi ora che mi dedico alle mods, vorrei farvi capire anche a voi come farle.

Tutorial anteriore:
http://www.inforge.net/community/mi...-6-4-forge-tutorials-main-file-struttura.html

In questo tutorial vi spiegherò come creare un blocco basico.

Procediamo:

-Dopo aver creato il MainFile, facciamo click destro su AquilaReale.Tutorial.common e selezioniamo New -> Package. Si aprirà la nuova finestra e scriveremo il nome del nuovo package, in questo caso: AquilaReale.Tutorial.blocks

-Ora rechiamoci nel MainFile, in questo caso chiamato Tutorial.
Sotto:
PHP:
public class WorldOfDarkness {
Scriveremo:
PHP:
public class WorldOfDarkness {

public static final String modid = "aquilareale_tutorial";

/** Blocks **/
public static Block TutorialBlock = new TutorialBlock(200, Material.ground).setUnlocalizedName("tutorialBlock");

Ora abbiamo degli errori, quindi posizioniamo il mouse sopra gli errori e selezioniamo Import net.minecraft.block
Cosa abbiamo fatto? Beh, abbiamo dichiarato il modid per localizzare le texture, inoltre il pezzo /** Blocks **/ serve per orientarci e tenere il file ordinato.
Con public static Block abbiamo dichiarato il nuovo blocco, con il nome del file .class che stiamo per creare a continuazione. Dopo, nel parentesi, il 200 sta per l'ID del blocco, e Material per materiale. Poi con unlocalizedName abbiamo settato il nome con il quale la mod richiamerà le texture ed altre cose.

-A continuazione, premiamo Enter un paio di volte, e scriviamo: public Tutorial() {
Sotto questa stringa andremo a fare le dichiarazioni di Forge. Quindi scriveremo:
PHP:
/**Register Blocks **/
GameRegistry.registerBlock(TutorialBlock, "TutorialBlock");
LanguageRegistry.addName(TutorialBlock, "Tutorial Block");
Continuiamo con gli errori, e come sempre selezioniamo Import LanguageRegistry e GameRegistry.


-Ora il nostro file dovrebbe avere quest'aspetto:
PHP:
package AquilaReale.Tutorial.common;

import net.minecraft.block.Block;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

@Mod(modid = "Tutorial", name = "Tutorial", version = "0.1 Alpha")

public class Tutorial {   

public static final String modid = "aquilareale_tutorial";

/** Blocks **/    
public static Block TutorialBlock = new TutorialBlock(200, Material.ground).setUnlocalizedName("tutorialBlock");
 
public Tutorial() {

/**Register Blocks **/
GameRegistry.registerBlock(TutorialBlock, "TutorialBlock");
LanguageRegistry.addName(TutorialBlock, "Tutorial Block");
}
}

-Ora ci rimane soltanto l'errore del TutorialBlock(200, Material.ground)
Posizioniamo il mouse sopra l'errore, e selezioniamo: "create class TutorialBlock".
Ci apparirà di nuovo la finestrina, e selezioniamo il package dove sarà creato il class, in questo caso: AquilaReale.Tutorial.blocks

-Ora nel nuovo class ci ritroveremo con queste stringhe:
PHP:
package AquilaReale.WorldOfDarkness.common;

public class TutorialBlock {}

-Dopo TutorialBlock scriveremo extends Block, ci darà un errore, importiamo net.minecraft.block e poi selezioniamo add constructor. Il file ora dovrebbe avere quest'aspetto:
PHP:
package AquilaReale.Tutorial.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;

public class TutorialBlock extends Block{
    public TutorialBlock(int par1, Material par2Material) {
        super(par1, par2Material);    
}
}

-Ora cambieremo la scritta super(par1, par2Material); con super(par1, Material.ground);
Sotto queste stringhe aggiungeremo le caratteristiche del blocco: (Ce ne sono tantissime, ma qui vi elenco le più importanti.)
this.setCreativeTab(CreativeTabs.tabBlock); Setta la creativetab nella quale troveremo il blocco.
this.setHardness(5.0f); Setta i colpi richiesti per essere distrutto.
this.setResistance(10.0f); Setta la resistenza alle esplosioni.
this.setStepSound(soundStoneFootstep); Setta il suono del blocco.
this.setLightValue(5.0f); Setta la luce con la quale il blocco illumina.


-Ora procederemo ad aggiungere le texture del blocco:
Sotto queste stringhe, dopo il } scriveremo:
PHP:
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {       
     this.blockIcon = par1IconRegister.registerIcon(Tutorial.modid + ":" + (this.getUnlocalizedName().substring(5)));    
   }

-Quindi il file avrebbe ora quest'aspetto:
PHP:
package AquilaReale.Tutorial.blocks;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import AquilaReale.Tutorial.common.Tutorial;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;

public class TutorialBlock extends Block{

    public TutorialBlock(int par1, Material par2Material) { 
       super(par1, Material.ground);
       this.setCreativeTab(creativeTab.tabBlocks);
      this.setHardness(5.0f);
      this.setResistance(10.0f);
      this.setStepSound(soundStoneFootstep);
    }

    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {
        this.blockIcon = par1IconRegister.registerIcon(Tutorial.modid + ":" + (this.getUnlocalizedName().substring(5)));
    }
}

Ed ecco fatto, il nostro blocco è pronto! :)
Ricordate che gli errori che vi escono, potete soluzionarli importando i files!
ATTENZIONE: Importate solo i files di net.minecraft oppure cpw. Niente di java!

Molto presto posterò gli altri tutorials! Spero che vi sia stato d'aiuto! Per qualsiasi dubbio non esitate a commentare!
 
Stato
Discussione chiusa ad ulteriori risposte.