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