Jump to content

PermskyKit

Members
  • Posts

    12
  • Joined

  • Last visited

Posts posted by PermskyKit

  1. 21 hours ago, diesieben07 said:

    Basic Java is a necessary prerequisite for modding.

    Ahem, I'm sorry, I did a bit reworking of the mod structure, here's how the block is registered:

    package com.PermskyKit.TrueRopesMod.block;
    
    import com.PermskyKit.TrueRopesMod.TrueRopesMod;
    import com.PermskyKit.TrueRopesMod.item.ModItemGroup;
    import com.PermskyKit.TrueRopesMod.item.ModItems;
    import com.google.common.base.Supplier;
    import net.minecraft.block.AbstractBlock;
    import net.minecraft.block.Block;
    import net.minecraft.block.material.Material;
    import net.minecraft.item.BlockItem;
    import net.minecraft.item.Item;
    import net.minecraftforge.common.ToolType;
    import net.minecraftforge.eventbus.api.IEventBus;
    import net.minecraftforge.fml.RegistryObject;
    import net.minecraftforge.registries.DeferredRegister;
    import net.minecraftforge.registries.ForgeRegistries;
    
    public class ModBlocks {
    	
        public static final DeferredRegister<Block> BLOCKS
        = DeferredRegister.create(ForgeRegistries.BLOCKS, TrueRopesMod.MOD_ID);
        
        
        
        public static final RegistryObject<Block> ROPE_BLOCK = registerBlock("rope_block",
                () -> new Block(AbstractBlock.Properties.of(Material.GRASS).harvestLevel(2).harvestTool(ToolType.PICKAXE)));
        
        
        
        private static <T extends Block>RegistryObject<T> registerBlock(String name, Supplier<T> block) {
            RegistryObject<T> toReturn = BLOCKS.register(name, block);
            registerBlockItem(name, toReturn);
            return toReturn;
        }
        
        private static <T extends Block> void registerBlockItem(String name, RegistryObject<T> block) {
            ModItems.ITEMS.register(name, () -> new BlockItem(block.get(),
                    new Item.Properties().tab(ModItemGroup.TRUEROPESMOD)));
        }
    
    	public static void register(IEventBus eventBus) {
            BLOCKS.register(eventBus);
        }
    
    }

     

  2. 10 hours ago, diesieben07 said:

    Show where you register your block.

    I'm sorry, for some reason I overlooked this question..

    Class path:

    TrueRopesMod/src/main/java/core.init/BlockInit

    Code:

    package core.init;
    
    import com.PermskyKit.TrueRopesMod.TrueRopesMod;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.SoundType;
    import net.minecraft.block.material.Material;
    import net.minecraft.block.material.MaterialColor;
    import net.minecraft.block.AbstractBlock;
    import net.minecraftforge.fml.RegistryObject;
    import net.minecraftforge.registries.DeferredRegister;
    import net.minecraftforge.registries.ForgeRegistries;
    
    public class BlockInit {
    	public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS,
    			TrueRopesMod.MOD_ID);
    
    	public static final RegistryObject<Block> ROPE_BLOCK = BLOCKS.register("rope_block",
    			() -> new Block(AbstractBlock.Properties.of(Material.GRASS, MaterialColor.TERRACOTTA_BROWN)
    					.strength((float) 0.4)
    					.sound(SoundType.CROP)));
    }
  3. 3 minutes ago, Logix said:

    All you need to do is to move the 

    VoxelShape shape = Block.box(6, 0, 6, 10, 16, 10);

    declaration out of the function, into the class, and preferably mark it as static. That should fix your issue.

    Yes, I did it and was able to change the code, now it looks like this:

    package com.PermskyKit.TrueRopesMod.blocks;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockState;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.util.math.shapes.ISelectionContext;
    import net.minecraft.util.math.shapes.VoxelShape;
    import net.minecraft.world.IBlockReader;
    
    public class RopeBlock extends Block{
    
    	  public RopeBlock(Properties properties) {
    		super(properties);
    	}
    	  private static final VoxelShape PART_1  = Block.box(6.0, 0.0, 6.0, 10.0, 16.0, 10.0);
    
    	  @Override
    	  public VoxelShape getShape(BlockState state, IBlockReader block, BlockPos pos, ISelectionContext context)
    	  {
    	      return PART_1;
    	  }
    }

    But alas, the usual full block hitbox remains in the game...

  4. 10 hours ago, Logix said:

     

    private static final VoxelShape PART_1  = Block.box(0.0, 0.0, 0.0, 16.0, 16.0, 16.0); // 16.0 is the full size of one block (in pixels)
    
    @Override
    public VoxelShape getShape(BlockState state, BlockGetter block, BlockPos pos, CollisionContext context)
    {
        return PART_1;
    }
    
    // If you want multiple hitboxes, combine them like:
    private static final VoxelShape AABB = Shapes.or(PART_1, PART_2); // You can add more parts here if necessary
    // Then simply return this from getShape() instead of the individual part.

    BlockGetter and CollisionContext do not work in version 1.16.5. Do you know how they were designated in this version?

  5. 52 minutes ago, Luis_ST said:

    in your IDE, in Eclipse you can search for the class when using CTRL + SHIFT + H,
    im not familiar with the Intellij Shortcuts

    Thanks a lot, I was not aware of this Eclipse feature. But even this method did not help, I am tormented by the question, maybe there should be some additional files besides "BlockInit", or the path to this "RopeBlock" file should be different.

    I've already tried many variations of the code and .. Maybe I just don't know something else about Eclipse or the file structure.

  6. package com.PermskyKit.TrueRopesMod.block;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockState;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.util.math.shapes.ISelectionContext;
    import net.minecraft.util.math.shapes.VoxelShape;
    import net.minecraft.world.IBlockReader;
    
    public class RopeBlock extends Block{
    	  public RopeBlock(Properties p_i48440_1_) {
    		super(p_i48440_1_);
    	}
    	@Override
    	public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
    		    VoxelShape shape = Block.box(6, 0, 6, 10, 16, 10);
    			return shape;
    	 }
    }
    1 hour ago, Draco18s said:

    Unfortunately it didn't help. Now my code looks like this, but the problem persists.

  7. Hi. I have a big question. I created a small block in the game, but I can't adjust the size of its hitbox in any way, and no errors are generated. I am attaching a screenshot and block code, I really hope for help.

    package com.PermskyKit.TrueRopesMod.block;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockState;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.util.math.shapes.ISelectionContext;
    import net.minecraft.util.math.shapes.VoxelShape;
    import net.minecraft.world.IBlockReader;
    
    public class RopeBlock extends Block{
    
    	  public RopeBlock(Properties p_i48440_1_) {
    		super(p_i48440_1_);
    	}
    
    
        public VoxelShape func_220053_a(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
    		    VoxelShape shape = Block.box(6, 0, 6, 10, 16, 10);
    			return shape;
    	 }
    }

    Screenshot

×
×
  • Create New...

Important Information

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