7 Days to Die
    Ace of Spades
    Altis Life
    American Truck Simulator
    ARK: Survival Ascended
    ARK: Survival Evolved
    ARK: Survival Evolved Official Save Game
    ARK: Survival of the Fittest
    Arma 3
    Assetto Corsa Competizione
    Astroneer
    Atlas
    Avorion
    Chivalry 2
    Chivalry: Medieval Warfare
    Citadel
    Conan Exiles
    Core Keeper
    Counter-Strike: Global Offensive
    Craftopia
    Dark and Light
    Day of Dragons
    DayZ
    Dead Matter
    Dirty Bomb
    Don't Starve Together
    Dune: Awakening
    Empyrion
    Enshrouded
    Euro Truck Simulator 2
    Factorio
    Farming Simulator 13
    Farming Simulator 15
    Farming Simulator 17
    Farming Simulator 19
    Farming Simulator 22
    Farming Simulator 25
    FiveM
    Frozen Flame
    Garry's Mod
    Half-Life 2
    Hell Let Loose
    Jedi Knight 2
    KAG
    Killing Floor 2
    Last Oasis
    Left 4 Dead 2
    Life is Feudal
    Medieval Engineers
    Minecraft
    Mordhau
    Myth of Empires
    Onset
    Outpost Zero
    Palworld
    Pantropy
    Path of Titans
    PixARK
    Project Zomboid
    Red Orchestra 2
    REND
    Rust
    Satisfactory
    SCUM
    Sky Noon
    Sons Of The Forest
    Soulmask
    Space Engineers
    Squad
    Starbound
    StarMade
    Staxel
    Terraria
    The Forest
    The Isle
    Unreal Tournament 2004
    Unturned
    V Rising
    Valheim
    Wreckfest
    Ylands
  • webinterface
    • Account
      Andere Dienstleistungen
      FTP
      Kundendienst
  • WEBINTERFACE
    1. startseite /
    2. guides /
    3. minecraft forge mod programmieren de

    Guides

    Kategorie A-Z

    Minecraft Forge Mod programmieren

    Minecraft Forge Mod programmieren

    Einstieg

    Was ihr benötigt:

     -  Java JRE  /  JDK  - In diesem Tutorial werde ich  Eclipse Neon  benutzen. - Das  Minecraft Forge MDK 1.9.4  -  Minecraft  - Java Kenntnisse

    Zuerst entpackt ihr den forge-1.9.4-12.17.0.2051-mdk.zip Ordner.

    Klickt SHIFT+Rechtsklick auf irgendeine leere Fläche im Ordner und schaut, ob ihr auch nichts ausgewählt habt und wählt in der nun erscheinenden Fläche Eingabeaufforderung hier öffnen aus.

    Ihr müsst Java und das Java Development Kit heruntergeladen haben, um den nächsten Befehl auszuführen.

    Gebt in die Konsole:

     set JAVA_HOME="Eurer Pfad zum Java Development Kit bin Ordner" set PATH="Eurer Pfad zum Java bin Ordner"

    Und drückt Enter.

    Gebt nun ein:

     gradlew setupDevWorkspace eclipse

    und führt es erneut mit Enter aus.

    Nun werden alle Forge Dateien, die ihr fürs Mod programmieren benötigt, runtergeladen.

    Wenn der Build erfolgreich ist, schließt die Eingabeaufforderung und startet Eclipse.

    Es erscheint ein Ladefenster. Kurz darauf fordert Eclipse einen Workspace an. Gebt nun den Pfad in eurem Ordner an und navigiert im Ordner in den eclipse Ordner.

    Drückt auf Ok.

    Nun startet sich Eclipse.

    Nun klickt ihr auf das MDKExample Projekt und drückt ALT+SHIFT+R. Es öffnet sich ein Fenster, in dem ihr den Namen ändern könnt. Nehmt einen beliebigen Namen, da er nicht weiter wichtig ist.

    Öffnet das Projekt nun, indem ihr auf den kleinen Pfeil drückt, der neben dem Projekt ist.

    Navigiert nun in den src/main/java Ordner. Dort müsste sich eine Datei Names ExampleMod.java befinden. Doppelklickt auf die Datei. Es öffnet sich nun ein Editor im großen Feld rechts.

    Geht nun in den Sring MODID und tragt einen beliebigen Namen ein. Er muss kleingeschrieben sein 🙂 . Er wird später noch wichtig sein.

    Erstellt nun zwei neue Methoden in der ExampleMod.java Datei

     @EventHandler public void preInit(FMLPreInitializationEvent e) { } @EventHandler public void postInit(FMLPostInitializationEvent e) { }

    Wenn dies geschehen ist, kommen wir jetzt zuerst zu den Proxy Dateien.

    Erstellt ein neues Package im src/main/java Ordner und nennt es proxy.

    Erstellt in diesem Ordner nun eine Class Namens ServerProxy und eine Class Namens ClientProxy

    Erstellt nun in der ServerProxy einen Constructor und eine neue Methode names registerClientStuff()

     package proxy; public class ServerProxy { public static void registerClientStuff() {
     } }

    Wechselt nun zur ClientProxy und lasst sie von der ServerProxy erben (extends).

    Übernehmt nun die registerClientStuff() Methode

     package proxy; public class ClientProxy extends ServerProxy{ public static void registerClientStuff(){ ServerProxy.registerClientStuff(); } }

    Nachdem dies getan ist, könnt ihr wieder in die ExampleMod.java gehen.

    Schreibt nun direkt unter den Classennamen:

     @SidedProxy(serverSide = "proxy.ServerProxy",clientSide="proxy.ClientProxy")

    Geht nun in die preInit Methode und schreibt:

     proxy.registerClientStuff();

    Die Proxys sind dafür da, dass die Mod auf dem Server und auf dem Client läuft.

    Jetzt speichern wir alles und klicken oben auf den großen grünen Pfeil Es öffnet sich nun ein Fenster. Klickt auf den kleinen Pfeil neben Java Application und wählt forge[IrgendwelcheZahlen] Client aus. Nun ändert ihr das dort angegebene Projekt zu eurem.

    Nun klickt ihr auf Run.

    Es startet sich nun Minecraft mit eurer Mod.

    Wenn dies geschehen ist, habt ihr alles richtig gemacht! Und wenn ihr nun auf Mods geht, könnt ihr dort eure MODID sehen

    17:08, 26. Sep. 2016 (CEST)

    Ein Item erstellen

    Im 2.ten Teil dieses Tutorials werde ich euch zeigen, wie ihr ein eigenes Item erstellt. Was wir benötigen: – 1 .JSON Datei – 1 Textur(.PNG)

    Wenn du dir noch keine Texture erstellt hast, kannst du einfach meine benutzen, die ich an diesen Thread anhänge 🙂

    Zuerst erstellen wir uns im src/main/java Ordner ein neues package mit dem Namen(keine Pflicht) items. In diesem package erstellen wir nun eine neue Datei mit dem Namen ItemUranium. Diese Klasse lassen wir von net.minecraft.item.Item erben. Nun erstellen wir uns einen Klassen-Konstruktor. In diesem Konstruktor stellen wir nun ein paar Eigenschaften des Items ein.

    public ItemUranium() {

    this.setUnlocalizedName(“Uranium”); this.setCreativeTab(CreativeTabs.MATERIALS); this.setMaxDamage(3);

    }

    Die Methode this#setUnlocalizedName(“Uranium”); setzt den Namen, den wir im Spiel sehen werden (item.Uranium.name). Die Methode this#setCreativeTab(CreativeTabs.MATERIALS); setzt den Tab, den wir dann im Creative-Menu haben.

    Und zu guter letzt die Methode this#setMaxDamage(3); setzt(wer hätte es gedacht =D) den Maximal Schaden.

    Nun gehen wir in den src/main/resources Ordner und erstellen ein neues package: assets.DEINEMODID.textures.items in dieses package ziehen wir nun die Item Textur (in meinem Fall uranium.png). Jetzt erstellen wir nochmal ein package im src/main/resources Ordner: assets.DEINEMODID.models.item In dieses package ziehen wir nun die angehängte ItemModelBase.JSON Datei. Danach erstellen wir nun eine .JSON Datei welche den GENAU gleich Namen wie die Textur haben muss!

     public static void registerItem(Item item,String itemName,CreativeTabs tab) { GameRegistry.registerItem(item, itemName); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(tutorial.MODID + ":" + itemName,"inventory")); item.setCreativeTab(tab); }

    Bevor wir diese Methode in der Init Methode aufrufen, müssen wir eine statische Variable erstellen:

     public static Item uranium = new ItemUranium();

    Über dem proxy.registerClientStuff(); rufen wir jetzt die registerItem() Methode auf

    registerItem(deineItemVariable,”Dein Texturen Name”,CreativeTabs.DASWASDUWILLST);

    Jetzt starten wir Minecraft, indem wir einfach auf Run klicken. Wenn Minecraft gestartet ist, erstellt ihr am besten eine neue Welt. Danach guckt ihr einfach mal im Creative Tab Materials oder /give @p modid:itemName

    Dann bekommt ihr das Item in die Hand.

    Ich hoffe bei euch hat es funktioniert!

    Hauptklasse: http://hastebin.com/qocewurone.java ItemModelBase.JSON Datei: http://hastebin.com/yusoxotale.json


    Einen Block erstellen

    Was ihr benötigt: – 3 JSON Dateien – 3 Texturen

    Zuerst erstellen wir uns in der Hauptklasse eine neue Methode zum registrieren von Blöcken:

    public static void registerBlock(Block block/*net.minecraft.block.Block*/ ,String blockName,CreativeTabs tab) {

     GameRegistry.registerBlock(block, blockName); Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(block), 0, new ModelResourceLocation(tutorial.MODID + ":" + blockName,"inventory")); block.setCreativeTab(tab); }

    Wenn ihr dies getan habt, könnt ihr die Hauptklasse auch gleich schon wieder schließen. Nun erstellen wir uns im src/main/java Ordner ein neues package, welches wir ganz simpel blocks nennen. In diesem erstellen wir uns nun eine neue Java Class namens BlockUraniumOre, die von der Class net.minecraft.block.Block erbt(extends). In dieser werden wir nun den ersten Construktor mit dem einen Material Parameter nehmen, den wir aber gleich rauslöschen. In das super() Feld schreiben wir nun: super(Material.ROCK) Dies bedeutet, dass wenn der Block abgebaut wird, der Sound von Stein/Fels abgebaut wird.

    Nun setzten wir den unlocalizedName,den HarvestLevel, und die Hardness.

    public BlockUraniumOre() { super(Material.ROCK); this.setUnlocalizedName(“UraniumOre”); this.setHardness(10); this.setHarvestLevel(“pickaxe”, 2);

    }

    HarvestLevel:

    Danach überschreiben wir noch eine Methode Namens getItemDropped()

    @Override public Item getItemDropped(IBlockState p_getItemDropped_1_, Random p_getItemDropped_2_, int p_getItemDropped_3_) {

    return tutorial.uranium; }

    Nun wird die das Uranium gedroppt. Jetzt gehen wir wieder in die Hauptklasse und registrieren den Block mit unserer Methode. Danach gehen wir in den src/main/resources Ordner und erstellen 3 packages

    assets.MODID.textures.blocks assets.MODID.models.block assets.MODID.blockstates

    In das erste package ziehen wir unsere uranium_ore.png Textur In das zweite package ziehen wir eine uranium_ore.JSON Datei mit diesem Inhalt:

    {

     "parent": "block/cube_all", "textures": { "all": "MODID:blocks/uranium_ore" }

    }

    UND die uranium_ore.png Textur.

    Und zu guter letzt ziehen wir in den blockstates Ordner eine uranium_ore.json

    {

     "variants": { "normal": { "model": "MODID:uranium_ore" } }

    }

    Zusätzlich dazu müssen wir noch die Textur in das package

    assets.MODID.textures.items

    und eine uranium_ore.JSON Datei mit diesem Inhalt:

    {

     "parent": "MODID:block/uranium_ore", "display": { "thirdperson": { "rotation": [ 10, -45, 170 ], "translation": [ 0, 1.5, -2.75 ], "scale": [ 0.375, 0.375, 0.375 ] } }

    }

    in das package

    assets.MODID.models.item

    packen.

    Wenn dies getan ist, starten wir Minecraft.

    Hauptklasse: http://hastebin.com/pazoyoyozi.java BlockUraniumOre: http://hastebin.com/uzeqemehid.scala


    Tools

    Nun wenden wir uns den Tools, wie z.B. einem Schwert; einer Axt; einer Schaufel und dem anderen Zeug zu.

    Zuallererst erstellt ihr in eurer Hauptklasse ein neues ToolMaterial:

    public static ToolMaterial uran = EnumHelper.addToolMaterial(“uranium”, 5, 500, 12, 13, 6);

    Der EnumHelper wird oft nicht angezeigt, aber er ist da. (import net.minecraftforge.common.util.EnumHelper;) Nun könnt ihr euch eure Klassen erstellen: – UraniumSword extends ItemSword – UraniumPickaxe extends ItemPickaxe – UraniumAxe extends ItemTool – UraniumShovel extends ItemSpade – UraniumHoe extends ItemHoe Wenn dies geschehen ist könnt ihr in den jeweiligen Klassen die jeweiligen Methoden anlegen

    this.setUnlocalizedName(“UraniumSword”);

    Um dies dann geordnet zu speichern, erstellen wir uns erstmal ein neues package namens Util im src/main/java Ordner. Dazu erstellen wir einfach mal eine neue Klasse namens Tabs, in die dann alle unsere Creative Tabs kommen.

    public static CreativeTabs blocks = new CreativeTabs(“blocks”) {

    @Override public Item getTabIconItem() { return Item.getItemFromBlock(tutorial.uranium_ore); } };

    public static CreativeTabs tools = new CreativeTabs(“tools”) {

    @Override public Item getTabIconItem() { return tutorial.uranium; } };

    Die ItemAxe Klasse funktioniert bei Forge gerade leider nicht, deswegen erstellen wir uns noch kurz mal in unserer UraniumAxe Klasse ein paar Sachen:

    package tools;

    import java.util.Set;

    import com.google.common.collect.Sets;

    import main.tutorial; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.ItemTool;

    public class UraniumAxe extends ItemTool {

    private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(new Block[] {Blocks.PLANKS, Blocks.BOOKSHELF, Blocks.LOG, Blocks.LOG2, Blocks.CHEST, Blocks.PUMPKIN, Blocks.LIT_PUMPKIN, Blocks.MELON_BLOCK, Blocks.LADDER, Blocks.WOODEN_BUTTON, Blocks.WOODEN_PRESSURE_PLATE});

     public UraniumAxe() {
     super(tutorial.uran, EFFECTIVE_ON);
     this.damageVsEntity = tutorial.uran.getDamageVsEntity();
     this.attackSpeed = -3.0F;
     }

    }

    Nun ziehen wir alle Texturen in unseres assets.MODID.textures.items package. Dazu erstellen wir dann im assets.MODID.models.item package die normalen ItemName.json Dateien mit dem Inhalt:

    {

     "parent":"MODID:item/ItemModelBase", "textures": { "layer0":"MODID:items/uranium_sword" }, "display": { "thirdperson": { "rotation": [ -90, 0, 0 ], "translation": [ 0, 1, -3 ], "scale": [ 0.55, 0.55, 0.55 ] }, "firstperson": { "rotation": [ 0, -135, 25 ], "translation": [ 0, 4, 2 ], "scale": [ 1.7, 1.7, 1.7 ] } }

    }

    Jetzt legen wir von jedem Tool eine statische Variable in der Hauptklasse an.

     public static Item uranium_sword = new UraniumSword(); public static Item uranium_shovel = new UraniumShovel(); public static Item uranium_hoe = new UraniumHoe(); public static Item uranium_axe = new UraniumAxe(); public static Item uranium_pickaxe = new UraniumPickaxe();

    Nun können wir die Items wie immer in der Hauptklasse mit der Methode registerItem() registrieren.

    /**Items**/

     registerItem(uranium,"uranium",CreativeTabs.MATERIALS); registerItem(uranium_sword,"uranium_sword",Tabs.tools); registerItem(uranium_pickaxe,"uranium_pickaxe",Tabs.tools); registerItem(uranium_axe,"uranium_axe",Tabs.tools); registerItem(uranium_shovel, "uranium_shovel", Tabs.tools); registerItem(uranium_hoe,"uranium_hoe", Tabs.tools); /**Blocks**/ registerBlock(uranium_ore, "uranium_ore", Tabs.blocks);

    Jetzt Game Server mieten

    Einstieg

    Ein Item erstellen

    Einen Block erstellen

    Tools

    Diesen Artikel teilen


    6/1/2022

    Hol dir jetzt deinen eigenen Gameserver.

    Gameserver bestellen
    1. startseite /
    2. guides /
    3. minecraft forge mod programmieren de
    Bezahle wie du willst
    Klarna Payment Badge
    Unsere Mitgliedschaften
    game - Verband der deutschen Games-Branche RIPE NCC - Ripe Network Coordination Centre Women in Games
    v1.30.0-168-g6f64a707 © 2025 marbis GmbH. Alle Rechte vorbehalten. Alle Preise sind Endpreise inkl. gesetzlicher Umsatzsteuer.