- 62
- 0
Проблема, скорее всего, простая, но у меня не получается решить её. В общем... Я создал кастомное растение. Класс его блока, вроде, работает отлично. Но! Работает только с одним объектом. Когда я пытаюсь создать несколько экземпляров этого класса, у всех, кроме первого, не работают текстуры. Вот код:
Также есть проблема с семенами. Там не работают названия. Ошибка, наверно, глупая, но с созданием каждого следующего объекта все предыдущие переименовываются под его имя. Код дальше.
Java:
package com.RainbowCraft;
import java.util.ArrayList;
import java.util.Random;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.BlockCrops;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderPlayerEvent;
public class DarkRainbowPlants extends BlockCrops{
/**
* Level of this plant
*/
int level;
/**
* Seeds of this plant
*/
Item seeds;
public DarkRainbowPlants(int level, String name){
this.level = level;
this.setBlockTextureName("DarkRainbowPlant");
this.setBlockName("DarkRainbowPlant_lvl_" + level);
this.setLightLevel((float) level);
GameRegistry.registerBlock(this, name);
LanguageRegistry.addName(this, "Dark Rainbow Plant lvl " + level);
}
public void func_149853_b(World world, Random rand, int int1, int int2, int int3){
}
public void Seeds(Item seeds, Block plant){
this.seeds = seeds;
}
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune){
ArrayList<ItemStack> res = new ArrayList<ItemStack>();
res.add(new ItemStack(seeds, 1));
if (metadata == 7){
res.add(new ItemStack(RainbowCraftMain.DarkRainbowIngot, level));
}
return res;
}
protected boolean canPlaceBlockOn(Block block)
{
return block == RainbowCraftMain.ImprovedFlowerPot;
}
}
Также есть проблема с семенами. Там не работают названия. Ошибка, наверно, глупая, но с созданием каждого следующего объекта все предыдущие переименовываются под его имя. Код дальше.
Java:
package com.RainbowCraft;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemSeeds;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class DarkRainbowSeeds extends ItemSeeds {
private Block plant;
/** BlockID of the block the seeds can be planted on. */
private Block soilBlockID;
public DarkRainbowSeeds(Block plant, String name, int level) {
super(plant, RainbowCraftMain.ImprovedFlowerPot);
this.plant = plant;
this.soilBlockID = RainbowCraftMain.ImprovedFlowerPot;
this.setTextureName("DarkRainbowSeed");
this.setUnlocalizedName("DarkRainbowSeed");
GameRegistry.registerItem(this, name);
LanguageRegistry.addName(this, "Dark Rainbow Seed lvl " + level);
this.setCreativeTab(RainbowCraftMain.RainbowCraftTab);
((DarkRainbowPlants) plant).Seeds(this, plant);
}
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i4, float f1, float f2, float f3)
{
if (i4 != 1)
{
return false;
}
else if (player.canPlayerEdit(x, y, z, i4, stack) && player.canPlayerEdit(x, y + 1, z, i4, stack))
{
if (world.getBlock(x, y, z) == this.soilBlockID && world.isAirBlock(x, y + 1, z))
{
world.setBlock(x, y + 1, z, this.plant);
--stack.stackSize;
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}