Minecraft Mods erstellen [ModLoader]

05/16/2012 15:32 JONMI2000#301
Hi Leute!
Ich habe es hinbekommen, dass mein eigener Dungeon generiert wird(aus Holz).
Meine Frage wie ändere ich das normale Holz zu Dschugelholz?


Brauche schnelle Antwort!
Danke
05/16/2012 20:26 MysticAngelz#302
Wie wäre es mit dem Code den du benutzt hast :P Wie sollen wir dir helfen wenn wir nicht wissen wie du es gelöst hast :D
05/16/2012 20:50 JONMI2000#303
package net.minecraft.src;

import java.io.PrintStream;
import java.util.Random;

public class WorldGenRegenwaldhole extends WorldGenerator
{
public WorldGenRegenwaldhole()
{
}

public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5)
{
byte byte0 = 3;
int i = par2Random.nextInt(2) + 2;
int j = par2Random.nextInt(2) + 2;
int k = 0;

for (int l = par3 - i - 1; l <= par3 + i + 1; l++)
{
for (int k1 = par4 - 1; k1 <= par4 + byte0 + 1; k1++)
{
for (int j2 = par5 - j - 1; j2 <= par5 + j + 1; j2++)
{
Material material = par1World.getBlockMaterial(l, k1, j2);

if (k1 == par4 - 1 && !material.isSolid())
{
return false;
}

if (k1 == par4 + byte0 + 1 && !material.isSolid())
{
return false;
}

if ((l == par3 - i - 1 || l == par3 + i + 1 || j2 == par5 - j - 1 || j2 == par5 + j + 1) && k1 == par4 && par1World.isAirBlock(l, k1, j2) && par1World.isAirBlock(l, k1 + 1, j2))
{
k++;
}
}
}
}

if (k < 1 || k > 5)
{
return false;
}

for (int i1 = par3 - i - 1; i1 <= par3 + i + 1; i1++)
{
for (int l1 = par4 + byte0; l1 >= par4 - 1; l1--)
{
for (int k2 = par5 - j - 1; k2 <= par5 + j + 1; k2++)
{
if (i1 == par3 - i - 1 || l1 == par4 - 1 || k2 == par5 - j - 1 || i1 == par3 + i + 1 || l1 == par4 + byte0 + 1 || k2 == par5 + j + 1)
{
if (l1 >= 0 && !par1World.getBlockMaterial(i1, l1 - 1, k2).isSolid())
{
par1World.setBlockWithNotify(i1, l1, k2, 0);
continue;
}

if (!par1World.getBlockMaterial(i1, l1, k2).isSolid())
{
continue;
}

if (l1 == par4 - 1 && par2Random.nextInt(4) != 0)
{
par1World.setBlockWithNotify(i1, l1, k2, Block.leaves.blockID);
}
else
{
par1World.setBlockWithNotify(i1, l1, k2, Block.blocksList[17].blockID);
}
}
else
{
par1World.setBlockWithNotify(i1, l1, k2, 0);
}
}
}
}

for (int j1 = 0; j1 < 2; j1++)
{
label0:

for (int i2 = 0; i2 < 3; i2++)
{
int l2 = (par3 + par2Random.nextInt(i * 2 + 1)) - i;
int i3 = par4;
int j3 = (par5 + par2Random.nextInt(j * 2 + 1)) - j;

if (!par1World.isAirBlock(l2, i3, j3))
{
continue;
}

int k3 = 0;

if (par1World.getBlockMaterial(l2 - 1, i3, j3).isSolid())
{
k3++;
}

if (par1World.getBlockMaterial(l2 + 1, i3, j3).isSolid())
{
k3++;
}

if (par1World.getBlockMaterial(l2, i3, j3 - 1).isSolid())
{
k3++;
}

if (par1World.getBlockMaterial(l2, i3, j3 + 1).isSolid())
{
k3++;
}

if (k3 != 1)
{
continue;
}

par1World.setBlockWithNotify(l2, i3, j3, Block.chest.blockID);
TileEntityChest tileentitychest = (TileEntityChest)par1World.getBlockTileEntity(l2, i3, j3);

if (tileentitychest == null)
{
break;
}

int l3 = 0;

do
{
if (l3 >= 8)
{
break label0;
}

ItemStack itemstack = pickCheckLootItem(par2Random);

if (itemstack != null)
{
tileentitychest.setInventorySlotContents(par2Rando m.nextInt(tileentitychest.getSizeInventory()), itemstack);
}

l3++;
}
while (true);
}
}

par1World.setBlockWithNotify(par3, par4, par5, Block.mobSpawner.blockID);
TileEntityMobSpawner tileentitymobspawner = (TileEntityMobSpawner)par1World.getBlockTileEntity (par3, par4, par5);

if (tileentitymobspawner != null)
{
tileentitymobspawner.setMobID(pickMobSpawner(par2R andom));
}
else
{
System.err.println((new StringBuilder()).append("Failed to fetch mob spawner entity at (").append(par3).append(", ").append(par4).append(", ").append(par5).append(")").toString());
}

return true;
}

/**
* Picks potentially a random item to add to a dungeon chest.
*/
private ItemStack pickCheckLootItem(Random par1Random)
{
int i = par1Random.nextInt(11);

if (i == 0)
{
return new ItemStack(Item.axeDiamond);
}

if (i == 1)
{
return new ItemStack(Item.hoeDiamond, par1Random.nextInt(4) + 1);
}

if (i == 2)
{
return new ItemStack(Item.pickaxeDiamond);
}

if (i == 3)
{
return new ItemStack(Item.swordDiamond, par1Random.nextInt(4) + 1);
}

if (i == 4)
{
return new ItemStack(Item.shovelDiamond, par1Random.nextInt(4) + 1);
}

if (i == 5)
{
return new ItemStack(Item.diamond, par1Random.nextInt(4) + 1);
}

if (i == 6)
{
return new ItemStack(Item.glassBottle);
}

if (i == 7 && par1Random.nextInt(100) == 0)
{
return new ItemStack(Item.appleGold);
}

if (i == 8 && par1Random.nextInt(2) == 0)
{
return new ItemStack(Item.redstone, par1Random.nextInt(4) + 1);
}

if (i == 9 && par1Random.nextInt(10) == 0)
{
return new ItemStack(Item.itemsList[Item.goldNugget.shiftedIndex + par1Random.nextInt(2)]);
}

if (i == 10)
{
return new ItemStack(Block.bedrock, 1, 3);
}
else
{
return null;
}
}

/**
* Randomly decides which spawner to use in a dungeon
*/
private String pickMobSpawner(Random par1Random)
{
int i = par1Random.nextInt(2);

if (i == 0)
{
return "Giftspinne";
}

if (i == 1)
{
return "Meerschweinchen";
}

else
{
return "Villager";
}
}
}
05/16/2012 21:46 MysticAngelz#304
Nen Mod würde jetzt sagen mach es bitte noch in einen Spoiler aber bin ja nicht so :P Zu deinem Source Code hab ihn mir mal angeguckt (bin nicht der beste Java coder) und hab nix gefunden wo man das änderen könnte vllt weiß jmd anderes was :P aber da vorhin nach dem ModMaker gefragt wurde hab ich nen ganz simpelen (also simplerer gehts fast nicht) in 10 min geschrieben (VB) er kann in der Alpha 0.0.1 nur nen Block ohne Textur erstellen aber Arbeite weiter dran :D

Mitt Button 1 erstellt man die Mod hab vergessen den Namen zu ändern

Alpha 0.0.1 : [Only registered and activated users can see links. Click Here To Register...]
VT :[Only registered and activated users can see links. Click Here To Register...]
05/17/2012 21:19 the_cake#305
Hab extra für den modmaker vb gelernt er ist zu 20% fertig er bittet bisher erst das interface.
05/17/2012 21:50 False#306
Quote:
Originally Posted by the_cake View Post
Hab extra für den modmaker vb gelernt er ist zu 20% fertig er bittet bisher erst das interface.
Wenn du Probleme hast meld dich bei mir ;)
05/18/2012 21:52 Trollzor74#307
Habe Probleme mit dem Mob erstellen. Ich weiß nicht was ich mit der Java datei anstellen soll wenn ich sie fertig habe.
05/18/2012 23:43 the_cake#308
Ich erklär das kurz

1. Schließe alle Offenen Java Funktionen (Minecraft, etc ...)
2. Führe ihn deinem Mod Ordner die Datei recompile aus.
3. Nach einem Erfolgreichen Recompilen führe bitte reobfuscate aus.
4. Nachdem reobfuscate fertig ist geh ihn den Ordner reobf der sich ihn deinem Mod Ordner befindet.
5. Jetzt solltest du noch alle Bilder/Texturen hinzufügen die dein Mod braucht. Achtung wenn du z.B testblock.blockIndexInTexture = ModLoader.addOverride("/terrain.png","/block/testblock.png"); hast Dan musst du ihm reobf Ordner einen neuen Ordner erstellen bei mir müsste ich ihn jetzt block heißen und er müsste eine Datei mit dem namen testblock enthalten.
6. Du markierst den gesamten Inhalt des reobf Ordner Dan drückst du die rechte Maustaste Dan senden an ZIP-komprimierter Ordner.
7. Du fügst deinen Zip Ordner unter %appdata%/.minecraft/mods ein Oder direkt ihn Die Minecraft.jar

Info.: es muss der ModLoader Installiert sein.
05/20/2012 14:00 idattnertv#309
Habe ein Problem... -.-
Ich arbeite gerade an neuen Pflanzen! Allerdings braucht man pro Pflanze 9 Texturen! Das sind viel, da in der /terrain.png nicht mehr viel Platz ist. Jetzt passen meine Texturen dort nichtmehr rein und es kommt immer diese Fehlermeldung:
Code:
java.lang.Exception: No more empty terrain sprite indices left!
...
Ja, ganzschön doof, wie behebe ich das Problem? Kann ich sowas wie eine Terrain2.png machen?
05/20/2012 18:51 the_cake#310
Nutz doch ganz einfach den Modloader so kannst du für jede Pflanze eine eigene Datei anlegen.
05/20/2012 21:24 idattnertv#311
Ich benutze doch den ModLoader!! Ich habe für jede Pflanze eine eigene mod_***.java!
Aber es sind eben pro Pflanze 9 Texturen und ich muss ja trotzdem immer ModLoader.addOverride machen! Und die greifen ja ALLE auf die /terrain.png zu! Also werden 3x 9 Texturen (wegen 3 Pflanzen) in die Terrain importiert! Da ist leider nicht mehr soviel platz..
05/20/2012 22:31 the_cake#312
Ich möchte euch meinen nicht ferigen Minecraft Mod Maker mal zeigen

[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Er beihnhaltet bisher nur den Updater und die Gui sry ich bin nicht gerade der schnellste ;-)
05/24/2012 20:47 JONMI2000#313
Hallo!
Hab mal wieder.. ja richtig ne Frage!
Und diesmal: Wie bekomme ich es hin, dass man ein Spawn Egg craften kann?


Brauche schnelle AW!
mfg
JONMI2000
05/25/2012 10:48 Gleydar#314
Das geht wie mit dem Normalen Crafting-Code. Du musst dir nur extra die Damage des Eis besorgen (die Zahl hinter dem Doppelpunkt)
z.B. so:

Code:
ModLoader.addRecipe(new ItemStack(SpawnEgg, 4,1), new Object[]
05/25/2012 14:51 JONMI2000#315
Das geht bei mir nicht ich meine ein Spawn egg was es schon gibt (z.B. Tintenfisch).
Trotzdem Danke