Привет!
Ребят, пол дня страдал пока не наткнулся на форум
Я хочу чтобы блок (он же посев) спустя время удалился а на замену ему появился другой блок.
Когда я делал мод только на клиент, то фишка работала и использовал я этот код:
Тут рванул заливать на сервер и разумеется краш...
Тот код выше я поменял на это:
И мод встал как на клиент, так и на сервер, но беда в том, что ни клиент в одиночке не сервер это событие не производит....
И к тому же, сервер никаких ошибок не выдает и не крашится.
Прошу помочь пожалуйста...
Ниже код класса, спасибо!
Ребят, пол дня страдал пока не наткнулся на форум
Я хочу чтобы блок (он же посев) спустя время удалился а на замену ему появился другой блок.
Когда я делал мод только на клиент, то фишка работала и использовал я этот код:
public void onBlockAdded(World world, int i, int j, int k) {
EntityPlayer entity = Minecraft.getMinecraft().thePlayer;
if (entity != null && world != null) {
int le = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
world.setBlockMetadataWithNotify(i, j, k, le, 2);
}
world.scheduleBlockUpdate(i, j, k, this, this.tickRate(world));
}
EntityPlayer entity = Minecraft.getMinecraft().thePlayer;
if (entity != null && world != null) {
int le = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
world.setBlockMetadataWithNotify(i, j, k, le, 2);
}
world.scheduleBlockUpdate(i, j, k, this, this.tickRate(world));
}
Тут рванул заливать на сервер и разумеется краш...
Тот код выше я поменял на это:
public void onBlockPlacedBy(World world, int i, int j, int k, EntityLivingBase entity, ItemStack stack) {
if (entity != null && world != null) {
int le = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
world.setBlockMetadataWithNotify(i, j, k, le, 2);
}
world.scheduleBlockUpdate(i, j, k, this, this.tickRate(world));
}
if (entity != null && world != null) {
int le = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
world.setBlockMetadataWithNotify(i, j, k, le, 2);
}
world.scheduleBlockUpdate(i, j, k, this, this.tickRate(world));
}
И мод встал как на клиент, так и на сервер, но беда в том, что ни клиент в одиночке не сервер это событие не производит....
И к тому же, сервер никаких ошибок не выдает и не крашится.
Прошу помочь пожалуйста...
Ниже код класса, спасибо!
BlockStage:
package mod.mab;
import net.minecraft.world.World;
import net.minecraft.world.IBlockAccess;
import net.minecraft.util.MathHelper;
import net.minecraft.util.IIcon;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.client.Minecraft;
import net.minecraft.block.material.Material;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase;
import java.util.Random;
import cpw.mods.fml.relauncher.SideOnly;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
public class mab_blocktomatestage1 {
public mab_blocktomatestage1() {
}
public static BlockBlocktomatestage1 block;
public static Object instance;
public int addFuel(ItemStack fuel) {
return 0;
}
public void serverLoad(FMLServerStartingEvent event) {
}
public void preInit(FMLPreInitializationEvent event) {
GameRegistry.registerBlock(block, "Blocktomatestage1");
}
public void registerRenderers() {
}
public void load() {
}
static {
block = (BlockBlocktomatestage1) (new BlockBlocktomatestage1().setHardness(0.2F).setResistance(10.0F).setLightLevel(0.0F)
.setBlockName("Blocktomatestage1").setBlockTextureName("blocktomatestage1").setLightOpacity(0).setStepSound(Block.soundTypeGrass)
.setCreativeTab(mab_stages.tab));
block.setBlockBounds(0.30000000000000004F, 0.0F, 0.30000000000000004F, 0.7000000000000001F, 0.7000000000000001F, 0.7000000000000001F);
Block.blockRegistry.addObject(192, "Blocktomatestage1", block);
block.setHarvestLevel("shovel", 0);
}
public void generateSurface(World world, Random random, int chunkX, int chunkZ) {
}
public void generateNether(World world, Random random, int chunkX, int chunkZ) {
}
static class BlockBlocktomatestage1 extends Block {
int a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0;
Random field_149942_b = new Random();
IIcon gor = null, dol = null, st1 = null, st2 = null, st3 = null, st4 = null;
boolean red = false;
protected BlockBlocktomatestage1() {
super(Material.grass);
}
public void onBlockPlacedBy(World world, int i, int j, int k, EntityLivingBase entity, ItemStack stack) {
if (entity != null && world != null) {
int le = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
world.setBlockMetadataWithNotify(i, j, k, le, 2);
}
world.scheduleBlockUpdate(i, j, k, this, this.tickRate(world));
}
public int isProvidingStrongPower(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) {
return red ? 1 : 0;
}
public void updateTick(World world, int i, int j, int k, Random random) {
EntityPlayer entity = Minecraft.getMinecraft().thePlayer;
if (true) {
if (true) {
world.setBlockToAir(i, j, k);
}
if (true) {
world.setBlock(i, j, k, mab_blocktomatestage2.block, 0, 2);
}
}
world.scheduleBlockUpdate(i, j, k, this, this.tickRate(world));
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(int i, int par2) {
if (i == 0)
return gor;
else if (i == 1)
return dol;
else if (i == 2)
return st1;
else if (i == 3)
return st2;
else if (i == 4)
return st4;
else if (i == 5)
return st3;
else
return gor;
}
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister reg) {
this.gor = reg.registerIcon("blocktomatestage1");
this.dol = reg.registerIcon("blocktomatestage1");
this.st1 = reg.registerIcon("blocktomatestage1");
this.st2 = reg.registerIcon("blocktomatestage1");
this.st3 = reg.registerIcon("blocktomatestage1");
this.st4 = reg.registerIcon("blocktomatestage1");
}
public boolean isOpaqueCube() {
return false;
}
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int i, int j, int k) {
return null;
}
public boolean renderAsNormalBlock() {
return false;
}
public int getRenderType() {
return 1;
}
@Override
public int tickRate(World world) {
return 2571;
}
public int quantityDropped(Random par1Random) {
return 1;
}
public Item getItemDropped(int par1, Random par2Random, int par3) {
return mab_tomatoseeds.block;
}
}
}
Последнее редактирование: