Hallo zusammen,
ich habe begonnen mich mit der Programmierung von Minecraft Mods via JAVA und Eclipse zu beschäftigen und hänge derzeit an einen kleinen Problem (ich weis dies ist kein Minecraft Forum jedoch handelt es sich hierbei ja um JAVA und vllt. könnt ihr mir diesbezüglich ja auch helfen
)
Was derzeit vorhanden ist.
Mod.class
OreBlockCrystals.class
In der Mod.class habe ich ein neuen Block definiert der so hier aussieht.
Bei OreBlockCrystals übergebe ich eine Zahl(int) was die ID des jeweiligen Blocks darstellen soll damit ich in der nächsten Class Datei diese dann identifizieren kann.
Durch den oben genannten Befehl wird jetzt die OreBlockCrystals.class ausgeführt die folgender Maßen aussieht.
Hier lese ich die ID in public OreBlockCrystals aus nachdem ich sie vorher als public int deklariert habe. Nun möchte ich (da ich ja verschiedene Erze erstellt habe) das jedes Erz sein ganz individuelles Item droppt, und da dachte ich mir das löse ich eben via ID des Items und eines Case-Switches.
Soweit so gut jedoch wird mein Case-Switch in public Item getItemDropped völlig ignoriert und ich bekomme auf der Zeile
die Fehlermeldung: This method must return a result of type Item
Ist ein Case-Switch in dieser Methode denn nicht möglich oder warum meckert Java da rum ? (Wenn ich ein return = null unter den Case schreibe ist die Fehlermeldung natürlich weg, jedoch wird dann kein Item gedroppt.
Ich hoffe ihr könnt mir da ein klein wenig auf die Sprünge helfen.
Falls dieser Beitrag hier rein garnichts zutun hat da er sich ja mit Minecraft beschäftigt dann bitte ich um sofortige Löschung.
Viele Grüße:
Max Neumann
ich habe begonnen mich mit der Programmierung von Minecraft Mods via JAVA und Eclipse zu beschäftigen und hänge derzeit an einen kleinen Problem (ich weis dies ist kein Minecraft Forum jedoch handelt es sich hierbei ja um JAVA und vllt. könnt ihr mir diesbezüglich ja auch helfen
Was derzeit vorhanden ist.
Mod.class
OreBlockCrystals.class
In der Mod.class habe ich ein neuen Block definiert der so hier aussieht.
Java:
oreOpalOre = new OreBlockCrystals(Material.rock, 1).setBlockName("OpalOre");
GameRegistry.registerBlock(oreOpalOre, "OpalOre");
Durch den oben genannten Befehl wird jetzt die OreBlockCrystals.class ausgeführt die folgender Maßen aussieht.
Java:
package net.kreater.mod.blocks;
import java.util.Random;
import net.kreater.mod.Kreater;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.Item;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class OreBlockCrystals extends Block{
public static int ActualBlock;
public OreBlockCrystals(Material material, int ActualBlock) {
super(material);
this.setHardness(18.0F);
this.setResistance(3.0F);
this.setStepSound(soundTypeMetal);
this.setCreativeTab(Kreater.kreaterTab);
}
public Item getItemDropped(int i, Random random, int j){
int a = ActualBlock;
switch(a){
case 1:
return this == Kreater.oreAmberOre ? Kreater.itemAmberCrystal : Item.getItemFromBlock(this);
case 2:
return this == Kreater.oreOpalOre ? Kreater.itemOpalCrystal : Item.getItemFromBlock(this);
case 3:
return this == Kreater.orePeridotOre ? Kreater.itemPeridotCrystal : Item.getItemFromBlock(this);
case 4:
return this == Kreater.oreAmethystOre ? Kreater.itemAmethystCrystal : Item.getItemFromBlock(this);
case 5:
return this == Kreater.oreRubyOre ? Kreater.itemRubyCrystal : Item.getItemFromBlock(this);
case 6:
return this == Kreater.oreAquamarineOre ? Kreater.itemAquamarineCrystal : Item.getItemFromBlock(this);
case 7:
return this == Kreater.oreSapphireOre ? Kreater.itemSapphireCrystal : Item.getItemFromBlock(this);
case 8:
return this == Kreater.oreCitrineOre ? Kreater.itemCitrineCrystal : Item.getItemFromBlock(this);
case 9:
return this == Kreater.oreSpinelOre ? Kreater.itemSpinelCrystal : Item.getItemFromBlock(this);
case 10:
return this == Kreater.oreTanzaniteOre ? Kreater.itemTanzaniteCrystal : Item.getItemFromBlock(this);
case 11:
return this == Kreater.oreTopazOre ? Kreater.itemTopazCrystal : Item.getItemFromBlock(this);
case 12:
return this == Kreater.oreTourmalineOre ? Kreater.itemTourmalineCrystal : Item.getItemFromBlock(this);
case 13:
return this == Kreater.oreTurquoisOre ? Kreater.itemTurquoisCrystal : Item.getItemFromBlock(this);
case 14:
return this == Kreater.oreZirconOre ? Kreater.itemZirconCrystal : Item.getItemFromBlock(this);
case 15:
return this == Kreater.oreCrystalQuartzOre ? Kreater.itemCrystalQuartzCrystal : Item.getItemFromBlock(this);
}
}
Hier lese ich die ID in public OreBlockCrystals aus nachdem ich sie vorher als public int deklariert habe. Nun möchte ich (da ich ja verschiedene Erze erstellt habe) das jedes Erz sein ganz individuelles Item droppt, und da dachte ich mir das löse ich eben via ID des Items und eines Case-Switches.
Soweit so gut jedoch wird mein Case-Switch in public Item getItemDropped völlig ignoriert und ich bekomme auf der Zeile
Java:
public Item getItemDropped(int i, Random random, int j)
Ist ein Case-Switch in dieser Methode denn nicht möglich oder warum meckert Java da rum ? (Wenn ich ein return = null unter den Case schreibe ist die Fehlermeldung natürlich weg, jedoch wird dann kein Item gedroppt.
Ich hoffe ihr könnt mir da ein klein wenig auf die Sprünge helfen.
Falls dieser Beitrag hier rein garnichts zutun hat da er sich ja mit Minecraft beschäftigt dann bitte ich um sofortige Löschung.
Viele Grüße:
Max Neumann