+ Antworten
Seite 1 von 136 1 2 3 11 51 101 ... LetzteLetzte
Ergebnis 1 bis 10 von 1356
  1. #1
    ♫ ٩(͡๏̯͡๏)۶ ♪ Avatar von pitman-87
    Registriert seit
    10.01.2011
    Beiträge
    1.595

    [Sammelthread] Nützliches Wissen für Modder

    Dieser Thread ist zu verstehen als kleine Wissensdatenbank, um euer Verständnis über minecraft modden zu erweitern und häufig gestellte Fragen zu beantworten. Wird ständig erweitert.

    Das ist kein Tutorial und sollte nur von Leuten verwendet werden, die schon etwas vom modden verstehen.

    Blöcke:
    Items/Tools/Rezepte:
    Verschiedenes:Ich fang dann mal an:

    Rendertypen von Blöcken ändern:

    Um einen Block wie eine Pflanze oder anderem aussehen zu lassen müsst ihr folgendes in euren Block nach bedarf hinzufügen:

    Sobald euer Block von einem soliden und viereckigen Block abweicht muss das unbedingt mit drin stehen:

    Code:
    public boolean renderAsNormalBlock()
             {
                 return false;
             }
    Hier gebt ihr an wie euer Block gerendert werden soll:

    Code:
     public int getRenderType()
             {
                 return 1;
             }
    • 0 Falltür
    • 1 Pflanze (über kreuz, kann zB für runde Blöcke verwendet werden)
    • 2 Fackeln
    • 3 Feuer
    • 4 Flüssigkeiten (Wasser/Lava)
    • 5 Redstone
    • 6 Samen/Getreide
    • 7 Tür
    • 8 Leiter
    • 9 Schienen
    • 10 Treppen
    • 11 Zaun
    • 12 Schalter
    • 13 Kaktus
    • 14 Bett
    • 15 Redstone Repeater
    • 16 Piston-Körper
    • 17 Piston-Kopf
    • -1 keine Textur/ zB Schild hat eigenes Model
    Hier wird festgelegt ob man Hinter dem Block die Texturen Rendern sollte, sonst kann man durch die Map schauen !

    Code:
    public boolean isOpaqueCube()
             {
                 return false;
             }

    Für alle Nicht-Soliden Blöcke gebraucht, der Spieler kann durch die Blöcke durchgehen (wie Blumen) und bleibt nicht dran hängen.

    Code:
    public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k)
             {
                 return null;
             }
    Geändert von pitman-87 (11.05.2013 um 21:28 Uhr)

  2. #2
    Architekt
    Registriert seit
    22.04.2011
    Beiträge
    1.258
    Minecraft
    Kuschel_Muschel
    Cool, leider kann ich noch nicht Coden, aber ich werde es mal versuchen (nächstes Jahr xD)

  3. #3
    Architekt Avatar von gerbon
    Registriert seit
    17.11.2010
    Beiträge
    1.837
    Minecraft
    gerbon
    Rüstungsteile gewisse Funktionen geben



    Tolle Block Funktionen








    Geändert von gerbon (11.05.2012 um 20:23 Uhr)
    Do the complete list

  4. #4

    Bild

    Hey,
    Hab mal eine Frage.
    Wenn man den Block schon fertig gecodet hätte, wo Muss ich dann das Bild davon abspeichern?

  5. #5
    Architekt Avatar von gerbon
    Registriert seit
    17.11.2010
    Beiträge
    1.837
    Minecraft
    gerbon
    wird in den Tuts erklärt
    Do the complete list

  6. #6
    ♫ ٩(͡๏̯͡๏)۶ ♪ Avatar von pitman-87
    Registriert seit
    10.01.2011
    Beiträge
    1.595
    etwas über den Chat ausgeben lassen

    wenn ihr wollt dass der Spieler irgendetwas erfahren soll (Warnhinweise etc) könnt ihr das mit folgender Zeile machen:
    Code:
    entityplayer.addChatMessage("hello world");
    Wichtig dabei ist, dass ihr Zugriff auf den entityplayer habt, falls nicht gibt es noch eine andere Möglichkeit über den Modloader:

    Code:
    ModLoader.getMinecraftInstance().thePlayer.addChatMessage("hello world");

    Oder falls ihr ohne Modloader arbeitet, braucht ihr allerdings Zugriff auf world um euch eine Liste mit allen geladenen Playern zu holen (was im SSP natürlich nur einer ist).

    Code:
    Iterator<EntityPlayer> playerList= world.playerEntities.iterator();
    while(playerList.hasNext()){
         playerList.next().addChatMessage("Hello World!");     
    }
    aber import java.util.Iterator; nicht vergessen!

    Oder ihr holt euch mit der Methode den Player direkt und speichert den zwischen, was allerdings Fehleranfälliger sein kann.

    Code:
    EntityPlayer player = (EntityPlayer) world.playerEntities.iterator().next();
            player.addChatMessage("hello");
    Geändert von pitman-87 (22.12.2011 um 23:52 Uhr)

  7. Mag ich TheMrMilchmann, Stuuupiiid mag diesen Beitrag
  8. #7
    Bergarbeiter
    Registriert seit
    07.07.2011
    Beiträge
    183
    Minecraft
    kampfjack
    cool danke schön
    werde ich füher oder später mal anwenden


  9. #8
    ♫ ٩(͡๏̯͡๏)۶ ♪ Avatar von pitman-87
    Registriert seit
    10.01.2011
    Beiträge
    1.595
    sinnvolles nutzen der Update-Funktion

    Notch hat Items und Blöcken eine nützliche Funktion in Items und Blöcken eingebaut, welche mehrmals pro Sekunde aufgerufen wird.

    Dies kann man geschickt nutzen, um bestimmte Abläufe zu kontrollieren oder etwas wiederholt darzustellen.
    Zum besseren Verständnis gebe ich euch zwei Beispiele

    Items:

    public void onUpdate(ItemStack itemstack, World world, Entity entity, int i, boolean flag)

    Diese Methode wird mehrmals die Sekunde aufgerufen, zB kann man damit erreichen, dass Mobs sekündlichen Schaden bekommen als seien diese Vergiftet.

    Code:
    import java.util.ArrayList; 
    
    public static ArrayList<EntityLiving> entities = new ArrayList();
    public static int counter = 0;
    
    public boolean hitEntity(ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1)
        {
            super.hitEntity(itemstack, entityliving, entityliving1);
    
            entities.add(entityliving);
            return true;
        }
    
        public void onUpdate(ItemStack itemstack, World world, Entity entity, int i, boolean flag)
        {
            super.onUpdate(itemstack, world, entity, i, flag);
            if (entities != null && counter > 10)
            {
                for (int j = 0; j < entities.size(); j++)
                {
                    EntityLiving entity1 = entities.get(j);
                    entity1.attackEntityFrom(entity, 1);
                }
                counter = 0;
                return;
            }
            ++counter;
        }
    sobald ein Mob (Entity) geschlagen wird (hitEntity), wird er in der ArrayList aufgenommen. ArrayList ist einfach nur eine Speicherungsart wie Arrays oder Hashmaps, mit denen man gut arbeiten kann.

    In der onUpdatefunktion wird nun gecheckt ob die Mobliste nicht leer ist und ob der Zähler (counter) über 10 ist.
    Falls die Bedingung erfüllt ist, geht man in eine Schleife und die holt sich jeden Mob einzeln und fügt ihm ein halbes Herz schaden zu (attackEntityFrom), danach wird der Zähler wieder auf 0 zurückgesetzt. Falls die Bedingung nicht stimmt und der Zähler unter 10 ist wird dieser einfach eins hochgesetzt.
    Der Zähler ist dafür da, dass der Mob nicht zu oft Schaden pro Sekunde bekommt, also eine Art Bremse.


    Blöcke:

    public void randomDisplayTick(World world, int i, int j, int k, Random random)

    funktioniert genau wie onUpdate beim Item.

    zB könnt ihr damit bei einem Block Rauch spawnen lassen, wie bei einem Ofen oder so.

    Code:
    public void randomDisplayTick(World world, int i, int j, int k, Random random)
        {
            
           
                double d = (float)i + random.nextFloat();
                double d1 = (float)j + random.nextFloat();
                double d2 = (float)k + random.nextFloat();
                
                world.spawnParticle("largesmoke", d, d1, d2, 0,0,0);
           
        }

    mit world.spawnParticle werden schwarze Rauchpartikel über dem Block angezeigt. Normalerweise passiert das nur einmal (zB bei einer Explosion, an mehreren Stellen) aber dank der nette Funktion kommt es mehrmals in der Sekunde vor und erscheint so dauerhaft.

    Es gibt auch noch andere Partikel:

    "smoke", "lava", "portal", "explode", "note", "reddust", "bubble", "splash", "heart"

    achtet darauf, dass die richtig geschrieben wurden, sonst schmiert minecraft ab
    Geändert von pitman-87 (22.07.2011 um 23:33 Uhr)

  10. Mag ich Minecrafty, MeisterSkywalker mag diesen Beitrag
  11. #9
    Super Architekt Avatar von Stuuupiiid
    Registriert seit
    22.04.2011
    Beiträge
    1.074
    Minecraft
    Stuuupiiid
    Weis Jemand von euch, wie man Blöcke unter der Erde spawnen lässt? Also wie z.B. GoldOre, man findet es fasst immer in einer Mehrzahl, also z.B. 4Stück auf einmal; würde mich sehr interessieren

    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>>>


  12. #10
    Holzfäller
    Registriert seit
    24.06.2011
    Beiträge
    7

    Neue Blöcke in World Generator einbinden

    wenn ihr neue Blöcke in den wordl genreator ein bauen wollt
    müsste ihr in eure mod_deinmod.java diesen code ein fügen:

    Code:
    public void GenerateSurface(World world, Random rand, int chunkX, int chunkZ)
        {
            for(int i = 0; i <= Rate; i++)
            {
                int randPosX = chunkX + rand.nextInt(16);
                int randPosY = rand.nextInt(Höhe);
                int randPosZ = chunkZ + rand.nextInt(16);
                (new WorldGenMinable(mod_deinmod.blcokname.blockID, 5)).generate(world, rand, randPosX, randPosY, randPosZ);
            }
        }
    Wie viele blöcke in der nähe spawnen sollen
    Die Chanche wie oft der block vor kommen soll
    Die Höhe ist selbst erklärend zwischen 1 bis 120
    Übertreibt es nicht mit den zahlen bei der Rate würde ich nicht höher als 500 gehen und bei den blöcken nicht mehr als 50 (absturtzt gefahr von Minecraft und Bluescreen gefahr )

    Gruß
    Dangroove
    Geändert von Dangroove (23.07.2011 um 09:50 Uhr)

+ Antworten