Bonjour à tous.
Je me suis mis en tête de rajouter une fonctionalité a la gun powder.
J’ai donc rajouté un item, Gunpowder Raffiné. Comme effet, lorsqu’on right click dessus sur le sol, il y a une redstone, qui a pour effetd 'exploser au contact du feu
Item
package eryah.usefulthings.init;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import eryah.usefulthings.Reference;
import eryah.usefulthings.UsefulthingsMod;
public class RafinedGunpowder extends Item {
public static Item rafined_gunpowder;
public static void init(){
rafined_gunpowder = new RafinedGunpowder().setUnlocalizedName("rafined_gunpowder").setCreativeTab(UsefulthingsMod.UTTab);
}
public static void register()
{
GameRegistry.registerItem(rafined_gunpowder, rafined_gunpowder.getUnlocalizedName().substring(5));
}
public static void registerRenders()
{
registerRender(rafined_gunpowder);
}
public static void registerRender(Item item)
{
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
}
public boolean onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ)
{
boolean flag = worldIn.getBlockState(pos).getBlock().isReplaceable(worldIn, pos);
BlockPos blockpos1 = flag ? pos : pos.offset(side);
if (!playerIn.canPlayerEdit(blockpos1, side, stack))
{
return false;
}
else
{
Block block = worldIn.getBlockState(blockpos1).getBlock();
if (!worldIn.canBlockBePlaced(block, blockpos1, false, side, (Entity)null, stack))
{
return false;
}
else if (Blocks.redstone_wire.canPlaceBlockAt(worldIn, blockpos1))
{
–stack.stackSize;
worldIn.setBlockState(blockpos1, Blocks.redstone_wire.getDefaultState());
return true;
}
else
{
return false;
}
}
}
}
Poudre
package eryah.usefulthings.blocks;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import net.minecraft.block.Block;
import net.minecraft.block.BlockRedstoneDiode;
import net.minecraft.block.BlockRedstoneRepeater;
import net.minecraft.block.BlockRedstoneWire;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.util.EnumWorldBlockLayer;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import eryah.usefulthings.Reference;
import eryah.usefulthings.UsefulthingsMod;
import eryah.usefulthings.init.RafinedGunpowder;
public class BRefinedGunpowder extends Block {
public static final PropertyBool NORTH = PropertyBool.create("north");
public static final PropertyBool EAST = PropertyBool.create("east");
public static final PropertyBool SOUTH = PropertyBool.create("south");
public static final PropertyBool WEST = PropertyBool.create("west");
public static Item rafined_gunpowder_wire;
public BRefinedGunpowder()
{
super(Material.circuits);
this.setDefaultState(this.blockState.getBaseState().withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false)));
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.15625F, 1.0F);
this.setTickRandomly(true);
}
public static void init(){
rafined_gunpowder_wire = new RafinedGunpowder().setUnlocalizedName("rafined_gunpowder_wire").setCreativeTab(UsefulthingsMod.UTTab);
}
public static void register()
{
GameRegistry.registerItem(rafined_gunpowder_wire, rafined_gunpowder_wire.getUnlocalizedName().substring(5));
}
public static void registerRenders()
{
registerRender(rafined_gunpowder_wire);
}
public static void registerRender(Item item)
{
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
}
public AxisAlignedBB getCollisionBoundingBox(World worldIn, BlockPos pos, IBlockState state)
{
return null;
}
public boolean isOpaqueCube()
{
return false;
}
public boolean isFullCube()
{
return false;
}
@SideOnly(Side.CLIENT)
public EnumWorldBlockLayer getBlockLayer()
{
return EnumWorldBlockLayer.TRANSLUCENT;
}
public Item getItemDropped(IBlockState state, Random rand, int fortune)
{
return Items.string;
}
@SideOnly(Side.CLIENT)
public Item getItem(World worldIn, BlockPos pos)
{
return Items.string;
}
protected BlockState createBlockState()
{
return new BlockState(this, new IProperty[] {NORTH, EAST, WEST, SOUTH});
}
@Override
public int getFlammability(IBlockAccess world, BlockPos pos, EnumFacing face) {
return 200;
}
@Override
public boolean isBurning(IBlockAccess world, BlockPos pos) {
return false;
}
public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand, Entity entity) {
if(isBurning(worldIn, pos)); {
worldIn.createExplosion(entity, 0.5D, 0.5D, 0.5D, 0.5F, true);
}
}
}
Déso, bug d’édition
Donc, le problème, bah sa n’explose pas, et surtout, sa a l’apparence de la redstone, sauf que je voudrait pas que ce soit de la redstone
PS : Je n’ai pas utilisé l’item pour placer le block