Minecraft modden mit MCP(Minecraft Coder Pack )

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Minecraft modden mit MCP(Minecraft Coder Pack )

    Anzeige
    Wenns falscher bereich ist : Verschieben pls.

    Hey Leute ich werde euch heute mal zeigen wie ihr selbst modden in minecraft könnt.
    INDEX:
    1.Voraussetzungen
    2.Compilen
    3.Obfuscaten
    4.Item erstellen Beta 1.2_02
    5.Crafting Rezept Beta 1.2_02
    6.Block erstellen Beta 1.2_02
    7.Waffen erstellen Beta 1.2_02
    8.Essen erstellen Beta 1.2_02


    1.Voraussetzungen:

    Ihr braucht:
    Minecraft Coder Pack (MCP) , zum downloaden mcp.ocean-labs.de/index.php/MCP_Releases
    Vllt Java Kentnisse
    1Gb Ram
    Zeit zum lernen
    ALPHA 1.2.6 oder BETA ! BEIDES MÖGLICH

    2. Compilen
    Wenn ihr alles gedownloadet habt. Dann entpackt es in C:/MCP(z.b.)
    Dannach kopiert ihr euren MC bin und resources ordner in C:/MCP/jars
    Dann klickt ihr auf decompilen .
    Schaut dananch in sources/net/minecraft/net/src.
    Wenn ihr all die java datein sieht , habt ihr es richtig gemacht.
    Wenn ihr fertig gemoddet habt macht ihr das:
    recompilen
    in logs nach minecraft-compile schauen und öffnen.
    Nach ^ suchen , wenn ihr eins findet habt ihr falsch gemoddet.
    Dann startet ihr test_game.bat und spielt euren Mod ^^.

    3. Obfuscaten
    So hab nun auch zeit , das Obfuscaten zu erklären.
    1. Warum brauch ich das?
    A: Da du damit die class datein erstellst (unter final_out)
    2. Wie mach ich das ?
    A: Ganz leicht:
    Ihr geht unter C:/MCP oder da wo es ist
    Dann unter Tools
    wählt nun obfuscathonCharmer aus.
    Dann seht ihr rechts ein paar namen stehen . Ändert diese , in die , der java datein wo ihr was geändert habt um . (Bei uns also so:

    Quellcode

    1. Item
    2. ItemBeispiel
    3. CraftingManager
    )
    Wenn es klappt habt ihr die class datein und addet sie nun in eure jar. // Genaueres kommt noch


    4. Item erstellen
    So nun zeige ich euch wie ihr ein neues Item erstellt.
    Ihr geht unter : sources/net/minecraft/net/src
    Und macht eine neue Java Datei Namens : ItemBeispiel
    So sieht der Grund Code aus :

    Quellcode

    1. package net.minecraft.src;
    2. public class ItemBeispiel extends Item
    3. {
    4. public ItemBeispiel(int i)
    5. {
    6. super(i);
    7. maxStackSize = 64;
    8. }
    9. public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
    10. {
    11. }
    12. }
    Alles anzeigen

    Wenn es zu dem Code fragen gibt , fragt ruhig ^^.

    Dannach geht ihr unter Item.java
    Und added unten , unter den anderen befehlen die gleich anfangen:

    Quellcode

    1. public static Item beispiel = (new ItemExample(95)).func_20010_a(7, 6).func_20011_a("Beispiel1");


    .func_20010_a(7, 6)
    Ist : 7 = Waagrechte Position ; 6 = senkrechte Position
    FÄNGT BEI 0 AN!

    Video:
    Beispiel Machete:
    [video]http://www.youtube.com/watch?v=eC5ctFrQuTw[/video]
    Mehr Folgen
    5. Crafting Rezepte
    Ihr geht nun unter CraftingManager.java und addet nun dort , wo wieder viele befehle gleich Anfangen:

    Quellcode

    1. addRecipe(new ItemStack(Item.beispiel, "anzahl") new Object[] {
    2. "obernes 3 Felder crafting z.b. # ", "mittleres 3 Felder Crafting", "unteres 3 Felder Crafting", Character.valueOf('#'), Item.stick
    3. });

    Ein Bsp:

    Quellcode

    1. addRecipe(new ItemStack(Item.beispiel, 2) new Object[] {
    2. " # ", " # ", " # ", Character.valueOf('#'), Item.stick
    3. });


    In die " " kommt immer ein Symbol hinein (Max. 3)
    In Character.valueOf(' ') //welches symbol , was sein soll
    , Item.stick //das Item was das Symbol davor ist.


    6. Block erstellen
    Also als erstes eine Datei erstellen Namens: Block.Beispiel
    Das Block defeniert nun das es sich um ein Block handelt.
    Der Normale Code:

    Java-Quellcode

    1. package net.minecraft.src;
    2. import java.util.Random;
    3. public class BlockBeispiel extends Block
    4. {
    5. public BlockBeispiel(int i, int j)
    6. {
    7. super(i, j, Material.rock);
    8. }
    9. public int idDropped(int i, Random random)
    10. {
    11. return 0;
    12. }
    13. }
    Alles anzeigen


    So nun muss der Block in Block.java definiert werden.
    Bei mir ist ab Zeile 516 der erste "fast" gleich auszusehende source code.
    Ihr addet nun bei der List ganz unten :

    Quellcode

    1. public static final Block Beispiel


    Das war aber noch nicht alles in Block.java

    Geht weiter runter ( bei mir 635)
    und addet ganz unten an der Liste :

    Quellcode

    1. beispiel =(new BlockBeispiel(92, 1)).setHardness(1.5F).setResistance(10F).setStepSound(soundStoneFootstep);


    Das erste setzt wieder die Id und dann des Texturenbild fest.
    .setHardness(1.5F) ist wie hart der Block ist ( 10F ist ungefähr obsidian stärke)
    .setResistance(10F) wie stark gegen Explosionen (10 F ist SEHR SEHR SCHWACH)
    Das letzte kann glaub ich jeder selbst erschliesen ^^.

    Extras:
    .setLightValue(1.0F) Wie stark der gegenstand leuchtet. (1F ist wie der Kürbis)

    Das war nun für den Block das Grundprinzip-
    Anfragen sind gerne Erwünscht^^

    7.Waffen erstellen
    Da ich ma Zeit hab , mach ich das auch ma:
    So der Grundcode(bei mir) sieht so aus:

    Quellcode

    1. package net.minecraft.src;
    2. // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
    3. // Jad home page: http://www.kpdus.com/jad.html
    4. // Decompiler options: packimports(3) braces deadcode
    5. public class ItemKlinge extends Item
    6. {
    7. public ItemKlinge(int i, EnumToolMaterial enumtoolmaterial)
    8. {
    9. super(i);
    10. maxStackSize = 1;
    11. maxDamage = enumtoolmaterial.func_21207_a();
    12. weaponDamage = 4 + enumtoolmaterial.func_21205_c() * 2;
    13. }
    14. public float getStrVsBlock(ItemStack itemstack, Block block)
    15. {
    16. return 1.5F;
    17. }
    18. public void hitEntity(ItemStack itemstack, EntityLiving entityliving)
    19. {
    20. itemstack.damageItem(1);
    21. }
    22. public void hitBlock(ItemStack itemstack, int i, int j, int k, int l)
    23. {
    24. itemstack.damageItem(2);
    25. }
    26. public int getDamageVsEntity(Entity entity)
    27. {
    28. return weaponDamage;
    29. }
    30. public boolean isFull3D()
    31. {
    32. return true;
    33. }
    34. private int weaponDamage;
    35. }
    Alles anzeigen


    So Nun geht unter RecipesWeapons: Bei mir ab Zeile 35.
    Und addet:

    Quellcode

    1. craftingmanager.addRecipe(new ItemStack(Item.klinge, 1), new Object[] {
    2. "X", " X", "X", Character.valueOf('X'), Item.stick
    3. });

    Ändern ^^, sonst ist der Spielspaß weg.

    Als letztes geht ihr unter:
    Item.java und addet bei static

    Quellcode

    1. swordKlinge = (new ItemKlinge(99, EnumToolMaterial.WOOD)).func_20010_a(1, 5).func_20011_a("swordKlinge");

    Und dann bei mir zeile 276 :

    Quellcode

    1. public static Item klinge;

    X, X= waagrechte , senkrechte Position
    Wenn ihr eigene Icons wollt , macht eins auf einen leeren Feld (in Items , bei Items und Terrain bei Blocks)
    Und nimmt dann diese Stelle (wo das Icon ist) und setzt sie da ein.
    Die Icons beginnen bei 0,1,2,3...

    8.Essen erstellen
    Wie versprochen kommt es nun^^
    Also als erstes erstellt ihr eine neue Datei :
    ItemSuppe , die sieht so aus :

    Quellcode

    1. package net.minecraft.src;
    2. // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
    3. // Jad home page: http://www.kpdus.com/jad.html
    4. // Decompiler options: packimports(3) braces deadcode
    5. public class ItemSuppe extends ItemFood
    6. {
    7. public ItemSuppe(int i, int j)
    8. {
    9. super(i, j);
    10. }
    11. public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
    12. {
    13. itemstack.stackSize--;
    14. entityplayer.heal(healAmount);
    15. return itemstack;
    16. }
    17. private int healAmount;
    18. }
    Alles anzeigen

    Definitionen:
    int j ist bei item.java wie viel es heilen soll
    public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
    {
    itemstack.stackSize--;
    entityplayer.heal(healAmount);
    return itemstack;
    } Das es bei rechtsklick heilt

    Dannach macht ihr in CraftingManager ein Rezept ! (Das poste ich nun nicht mehr)
    Als letztes geht ihr unter Item.java
    Und addet unten:

    Quellcode

    1. public static Item suppe = (new ItemFood(26, 6)).func_20010_a(X, X).func_20011_a("Suppe");
    Das bedeuted das Item suppe dir 3 Leben heilt (wegen der 6/ 1= 0,5Leben ig) . Und das es aussieht wie die Suppe.
    Warum ItemFood? Da es sonst nicht heilt.


    Und es kommen auch nóch mehr Tutorials .

    HINWEIS: Das MCP ist nicht von mir.Sondern von minecraftforum.net/memberlist.php?mode=viewprofile&u=121755
    Es werden also die Grundlegenden Tutorials übernommen sein.
    Offiziell Tut: aus minecraft.de von mir


    Video Tutorials:
    youtube.com/user/xXKerig#grid/user/399D04C50F9C0D0D

    Feedback erwünscht.