Cable ( Redstone/TripWire ) explosif



  • 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



  • Où est le problème ?


  • Administrateurs

    if(isBurning(worldIn, pos)); {
    worldIn.createExplosion(entity, 0.5D, 0.5D, 0.5D, 0.5F, true);
    }
    

    Tu as un ; en trop. Et isBurning(worldIn, pos) sera toujours faut, vu que tu as mit :

    @Override
    public boolean isBurning(IBlockAccess world, BlockPos pos) {
    return false;
    }
    

    J'utiliserai plutôt la version onNeighborBlockChange pour vérifier qu'il y a du feu autour et si oui lancer l'explosion.



  • Je pense que j'ai fais dou caca

    ​public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand, Entity entity) {
    if(*onNeighborBlockChange(worldIn, pos, state, Blocks.fire*)) {
    worldIn.createExplosion(entity, 0.5D, 0.5D, 0.5D, 0.5F, true);
    }
    }
    

    Type mismatch: cannot convert from void to boolean



  • onNeighborBlockChange est une méthode du block appelée lorsqu'un block voisin est mis à jour.



  • Cela me donne le même résultat. Je ne pense pas qu'il faut utilier de conditions mais bon, je sais ps faire autrement

    ​public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock, Entity entity) {
    if(onNeighborBlockChange(worldIn, pos, state, Blocks.fire)) {
    worldIn.createExplosion(entity, 0.5D, 0.5D, 0.5D, 0.5F, true);
    }
    
    }
    

    Et je pense que la condition est le seul moyen de faire ce que je veut faire ( Je ne veut pas que çela explose d'un coup, dès que l'on pose du feu, mais 3-4 sec après )


  • Administrateurs

    Je disais d'utiliser onNeighborBlockChange au lieu d'utiliser updateTick …

    Mon dieu mais sérieusement u_U
    Un peu de logique :

    ​
    public void onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock, Entity entity) {
    if(world.getBlockState(pos.east()).getBlock() == Blocks.fire || world.getBlockState(pos.weast()).getBlock() == Blocks.fire ||world.getBlockState(pos.north()).getBlock() == Blocks.fire ||world.getBlockState(pos.south()).getBlock() == Blocks.fire) {
    worldIn.createExplosion(entity, 0.5D, 0.5D, 0.5D, 0.5F, true);
    }
    
    }
    


  • @'Eryah':

    Cela me donne le même résultat. Je ne pense pas qu'il faut utilier de conditions mais bon, je sais ps faire autrement

    ​public void **onNeighborBlockChange**(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock, Entity entity) {
    if(onNeighborBlockChange(worldIn, pos, state, Blocks.fire)) {
    worldIn.createExplosion(entity, 0.5D, 0.5D, 0.5D, 0.5F, true);
    }
    
    }
    

    Et je pense que la condition est le seul moyen de faire ce que je veut faire ( Je ne veut pas que çela explose d'un coup, dès que l'on pose du feu, mais 3-4 sec après )



  • Y'avait un bug sur mon bloc, je l'ai orrigé, et maintenant, je crash quand je lance mon jeu

    –-- Minecraft Crash Report ----
    // You're mean.
    
    Time: 08/07/15 19:17
    Description: There was a severe problem during mod loading that has caused the game to fail
    
    net.minecraftforge.fml.common.LoaderException: java.lang.IllegalArgumentException: Don't know how to convert ut:rafined_gunpowder_wire[east=true,north=true,south=true,west=true] back into data…
    at net.minecraftforge.fml.common.registry.GameRegistry.registerBlock(GameRegistry.java:225)
    at net.minecraftforge.fml.common.registry.GameRegistry.registerBlock(GameRegistry.java:182)
    at net.minecraftforge.fml.common.registry.GameRegistry.registerBlock(GameRegistry.java:171)
    at eryah.usefulthings.blocks.BRefinedGunpowder.register(BRefinedGunpowder.java:70)
    at eryah.usefulthings.UsefulthingsMod.preInit(UsefulthingsMod.java:263)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraftforge.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:537)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at net.minecraftforge.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
    at net.minecraftforge.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
    at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
    at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
    at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
    at com.google.common.eventbus.EventBus.post(EventBus.java:275)
    at net.minecraftforge.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
    at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:527)
    at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:246)
    at net.minecraft.client.Minecraft.startGame(Minecraft.java:446)
    at net.minecraft.client.Minecraft.run(Minecraft.java:356)
    at net.minecraft.client.main.Main.main(Main.java:117)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
    at GradleStart.main(Unknown Source)
    Caused by: java.lang.IllegalArgumentException: Don't know how to convert ut:rafined_gunpowder_wire[east=true,north=true,south=true,west=true] back into data…
    at net.minecraft.block.Block.getMetaFromState(Block.java:272)
    at net.minecraftforge.fml.common.registry.GameData.registerBlock(GameData.java:839)
    at net.minecraftforge.fml.common.registry.GameData.registerBlock(GameData.java:801)
    at net.minecraftforge.fml.common.registry.GameRegistry.registerBlock(GameRegistry.java:214)
    ... 43 more
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- System Details --
    Details:
    Minecraft Version: 1.8
    Operating System: Windows 8.1 (amd64) version 6.3
    Java Version: 1.8.0_45, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 965743192 bytes (921 MB) / 1056309248 bytes (1007 MB) up to 1056309248 bytes (1007 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP v9.10 FML v8.99.8.1412 Minecraft Forge 11.14.1.1412 4 mods loaded, 4 mods active
    mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized
    FML{8.99.8.1412} [Forge Mod Loader] (forgeSrc-1.8-11.14.1.1412.jar) Unloaded->Constructed->Pre-initialized
    Forge{11.14.1.1412} [Minecraft Forge] (forgeSrc-1.8-11.14.1.1412.jar) Unloaded->Constructed->Pre-initialized
    ut{Beta 1.0} [Useful Things] (bin) Unloaded->Constructed->Errored
    Loaded coremods (and transformers):
    GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.2.12420 Compatibility Profile Context 13.151.0.0' Renderer: 'AMD Radeon HD 8240'
    


  • Tu as un problème avec les BlockStates, qu'as-tu modifié ?



  • non, Je ne souhaitait pas révéler le problème, car sinon on m'aurait crié dessus, et j'aurais perdu encore 2 points de réputation 😢 Mais bon, enfaite, mon 'Bloc' était le même item que l'item qui est censé posé le bloc.
    En gros, l'Item1 est censé posé le Bloc1, mais le Bloc1 n'existait pas, et était enfaite l'Item1
    Regarde le code de la poudre et tu comrpendra



  • Effectivement, tu places le block de minecraft :

    else if (Blocks.redstone_wire.canPlaceBlockAt(worldIn, blockpos1))
    {
    –stack.stackSize;
    worldIn.setBlockState(blockpos1, Blocks.redstone_wire.getDefaultState());
    return true;
    }
    


  • Non, sa c'est l'item.
    Regarde le block.
    public static Item rafined_gunpowder_wire;



  • Et donc les nouvelles classes sont ?



  • Seul le bloc a changé, je changerai l'item plus tard

    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 Block rafined_gunpowder_wire;   
    
        public BRefinedGunpowder(Material material)
        {
            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 BRefinedGunpowder(Material.circuits).setUnlocalizedName("rafined_gunpowder_wire").setCreativeTab(UsefulthingsMod.UTTab);
    }
    
    public static void register()
    {
    GameRegistry.registerBlock(rafined_gunpowder_wire, rafined_gunpowder_wire.getUnlocalizedName().substring(5));
    }
    
    public static void registerRenders()
    {
    registerRender(rafined_gunpowder_wire);
    }
    
    public static void registerRender(Block block)
    {
    Item item = Item.getItemFromBlock(block);
    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 onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block neighborBlock, Entity entity) {
    if(world.getBlockState(pos.east()).getBlock() == Blocks.fire || world.getBlockState(pos.west()).getBlock() == Blocks.fire ||world.getBlockState(pos.north()).getBlock() == Blocks.fire ||world.getBlockState(pos.south()).getBlock() == Blocks.fire) {
    world.createExplosion(entity, 0.5D, 0.5D, 0.5D, 0.5F, true);
    }
    
    }
    
    }
    
    


  • La méthode est appelée ?



  • Euuh quelle méthode ?$
    Je te rapelle que je crash avant d'avoir le menu, je crash prendent le chargement


  • Administrateurs

    Il te manque la fonction public int getMetaFromState(IBlockState state)



  • J'ai du raté, car la le bloc ne 'affiche pas, mais je crahs plus, déja, c'est bien 🙂
    Pour la méthode en plus, j'ai pris celle du tripwire, et je l'ai modifié

    ​ 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 Block rafined_gunpowder_wire;   
    
        public BRefinedGunpowder(Material material)
        {
            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 BRefinedGunpowder(Material.circuits).setUnlocalizedName("rafined_gunpowder_wire").setCreativeTab(UsefulthingsMod.UTTab);
    }
    
    public static void register()
    {
    GameRegistry.registerBlock(rafined_gunpowder_wire, rafined_gunpowder_wire.getUnlocalizedName().substring(5));
    }
    
    public static void registerRenders()
    {
    registerRender(rafined_gunpowder_wire);
    }
    
    public static void registerRender(Block block)
    {
    Item item = Item.getItemFromBlock(block);
    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 onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block neighborBlock, Entity entity) {
    if(world.getBlockState(pos.east()).getBlock() == Blocks.fire || world.getBlockState(pos.west()).getBlock() == Blocks.fire ||world.getBlockState(pos.north()).getBlock() == Blocks.fire ||world.getBlockState(pos.south()).getBlock() == Blocks.fire) {
    world.createExplosion(entity, 0.5D, 0.5D, 0.5D, 0.5F, true);
    }
    
    }
    
    public int getMetaFromState(IBlockState state)
       {
    int i = 0;
    
           if (((Boolean)state.getValue(EAST)).booleanValue())
           {
               i |= 1;
           }
    
           if (((Boolean)state.getValue(NORTH)).booleanValue())
           {
               i |= 2;
           }
    
           if (((Boolean)state.getValue(SOUTH)).booleanValue())
           {
               i |= 4;
           }
    
           if (((Boolean)state.getValue(WEST)).booleanValue())
           {
               i |= 8;
           }
    
           return i;
       }
    
    }
    
    

  • Administrateurs

    Il te manque surement les .json


Log in to reply