Вверх ↑
Ответов: 4557
#1: 2015-01-09 21:14:34 ЛС | профиль | цитата
Как известно,
при необходимых условиях превращается в камень.

  Игрокам, интересующимся разработкой интересно узнать как сделать замену блоков.
Сама замена происходит на определенный тик. Пример разберем на самом же уране, но замена блока будет намного быстрее (подобно
).

Создаем класс BlockNuclearOre:
package net.minecraft.src;

import java.util.Random;

public class BlockNuclearOre extends Block
{

protected BlockNuclearOre(int par1)
{
super(par1, Material.rock);
this.setTickRandomly(true);
this.setCreativeTab(CreativeTabs.tabBlock);
}

public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random)
{
if (!par1World.isRemote)
{
if (par1World.getBlockLightValue(par2, par3 + 1, par4) ‹ 4 && Block.lightOpacity[par1World.getBlockId(par2, par3 + 1, par4)] › 2)
{
par1World.setBlock(par2, par3, par4, Block.nuclearOre.blockID);
}
else if (par1World.getBlockLightValue(par2, par3 + 1, par4) ›= 9)
{
for (int var6 = 0; var6 ‹ 4; ++var6)
{
int var7 = par2 + par5Random.nextInt(3) - 1;
int var8 = par3 + par5Random.nextInt(5) - 3;
int var9 = par4 + par5Random.nextInt(3) - 1;
int var10 = par1World.getBlockId(var7, var8 + 1, var9);

if (par1World.getBlockId(var7, var8, var9) == Block.nuclearOre.blockID && par1World.getBlockLightValue(var7, var8 + 1, var9) ›= 4 && Block.lightOpacity[var10] ‹= 2)
{
par1World.setBlock(var7, var8, var9, Block.stone.blockID);
}
}
}
}
}

}


Именно public void updateTick() отвечает за смену блока. на определенный тик уран меняется на камень.
И теперь Block.java:
public static final BlockNuclearOre nuclear = (BlockNuclearOre)(new BlockNuclearOre(132)).setHardness(0.6F).setStepSound(soundGrassFootstep).setUnlocalizedName("тuclearOre");

Теперь, установив уран, он через некоторое время превратится в камень.

Где не прав - поправьте
карма: 6
6
Голосовали:OTBETCTBEHHblN, NIKIT00S, Qubique, legionnaire, 7200OneLove, Hinata_Hyuga