Jump to content

Brbcode

Members
  • Posts

    37
  • Joined

  • Last visited

Posts posted by Brbcode

  1. I have a cube similar a log where the side of cube have a texture while top and down has another diferent texture. 

    When I put the block axis change depending on where the player looks rotating the block.

    Blocksate:

    {
        "variants": {
            "axis=y":  { "model": "modid:block/blockid" },
            "axis=z":   { "model": "modid:block/blockid", "x": 90 },
            "axis=x":   { "model": "modid:block/blockid", "x": 90, "y": 90 }
        }
    }

    Is possible archive the "rotation" of block without change texture direction? (See images attached)

    My first idea was:

    Three diferent blocks

    One blockstate:

    {
        "variants": {
            "axis=y":  { "model": "modid:block/blockid" },
            "axis=z":   { "model": "modid:block/blockid_z", "x": 90 },
            "axis=x":   { "model": "modid:block/blockid_x", "x": 90, "y": 90 }
        }
    }

    And three diferents model.block.<modid>.json where I select the textures.

    Exist any better way to archive this?

     

    default .png

    goal.png

  2. I have spent some time immersed in the minecraft code and I have managed to learn slightly how the redstone system works.

    PART ONE

    The fisrt part is to add and manage properties of your custom block.

    To add a property we have to declarate de property itself, initialize and overload fillStateContainer.

    //Step 1: declaration
    public static final IntegerProperty POWER = BlockStateProperties.POWER_0_15;
    //,
    public static final IntegerProperty POWERED = BlockStateProperties.POWERED;
    //...
      
    //In your Custom Block Class Constructor (Initialize)
    this.setDefaultState(this.getDefaultState().with(POWER, 0).with(POWERED, true));//How many properties as you want
    
    //Last Step
    @Override
    public void fillStateContainer(StateContainer.Builder<Block,BlockState> builder) {
      super.fillStateContainer(builder);
      builder.add(POWERED,POWER);//How many properties as you want
    }

    We can change the property value overloading event method like "OnBlockAdded", "OnRemplaced", "neighborChanged"

    To change the value of a property we need the World, BlockState and BlockPos

     state = state.with(POWER, Integer.valueOf(15)) //State:BlockState
    
     world.setBlockState(pos, state, 2);//world:World && pos:BlockPos

    PART TWO

    The second part allow other blocks to recognize that has power or if it is a power source.

    To archive this we have to overload two or three methods of "net.minecraft.block.Block

    @Override
    public boolean canProvidePower(BlockState state) ...
    
    @Override
    public int getStrongPower(BlockState blockState, IBlockReader blockAccess, BlockPos pos, Direction side) ...
    
    @Override
    public int getWeakPower(BlockState blockState, IBlockReader blockAccess, BlockPos pos, Direction side) ...
    

    Example

    Visit: https://github.com/Brbcode/BrbMod

     

  3. I want do a crafting recipe for my custom block, so I create a json file in package assets.<modid>.recipes

    But when I start the game I can't craft it so the question is: what am I doing wrong?

    {
        "type": "minecraft:crafting_shaped",
        "pattern":
        [
            "BMR"
        ],
        "key":
        {
            "B": { "item": "minecraft:oak_log" },
            "M": { "item": "minecraft:iron_ingot" },
            "R": { "item": "minecraft:redstone" }
        },
        "result": { "item": "mymodid:myblock" }
    }

     

  4. I want get the value of two BlockPos, the first one would correspond to the positive value of the axis while the second would correspond to the negative value of the axis.

    Is any short way to archive this?

    ________ -> axis -> _____________ 

    | second_block -> pos -> first_block |

    -------------------------------------------------

    I have the following vars:

    Wold world;

    BlockPos pos; //Position of block that i want apply the offset.

    Direction.Axis axis; //The axis that specifies the orientation of block.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.