Jump to content

[1.10.2] [SOLVED] Again problems... JSON and block collision


Recommended Posts

Posted

Hi...

 

Problems:

  • can't move into or through the block
  • no texture in inventory

 

Code:

 

public class BlockStructure extends BlockBase {

public BlockStructure() {
	super(Material.BARRIER);

	this.setBlockUnbreakable();
	this.setResistance(5000000.f);
	this.setSoundType(SoundType.STONE);
}

    @Override
    public boolean isPassable(IBlockAccess worldIn, BlockPos pos) {
        return true;
    }

@Override
public BlockRenderLayer getBlockLayer() {
	return BlockRenderLayer.CUTOUT_MIPPED;
}

@Override
public boolean isFullBlock(IBlockState state) {
	return false;
}

    @Override
    public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos) {
        // return null, we don't want a collision detection for our leaves
        return NULL_AABB;
    }

@Override
public boolean isReplaceable(IBlockAccess worldIn, BlockPos pos) {
	return false;
}

@Override
public boolean canSpawnInBlock() {
	return false;
}

@Override
public boolean requiresUpdates() {
	return false;
}

@Override
public boolean canDropFromExplosion(Explosion explosionIn) {
	return false;
}

@Override
public boolean canCreatureSpawn(IBlockState state, IBlockAccess world, BlockPos pos, SpawnPlacementType type) {
	return false;
}

@Override
public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) {
	worldIn.setBlockState(pos, this.getDefaultState());
}

@Override
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
	return null;
}

@Override
public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) {
	return null;
}
}

 

 

the blockstate.json

 

{
"forge_marker": 1,
"defaults": {
	"model": "cube_all",
	"textures": {"all": "primevalforest:blocks/structure_block"}
},
"variants": {
        "normal": {
		"textures": { "all": "primevalforest:blocks/structure_block" }
        },
        "inventory": [{"transform": "forge:default-block"}]
    }
}

 

 

the part of the log related to the block (just gone through the log with the search function of notepad++):

 

 

Item json isn't found for 'primevalforest:structure_block#inventory', trying to load the variant from the blockstate json
Item json isn't found for 'primevalforest:structure_block#inventory', trying to load the variant from the blockstate json
Fixed minecraft:items id mismatch primevalforest:structure_block: 4107 (init) -> 4109 (map).

 

 

Other problems:

 

I hope someone knows how to fix all of that stuff.... I'm not going to write today here anymore, cause I'm currently not in a good mood, caused by that in the past days I just ran into problem after problem and even now there are open ones (as the links above show). It just get's annoying when you have to find every two blocks errors and all of that stuff just because again some json's seem not to work or something else.... well... most times these JSON's (whoever had the idea it would be good to implement them, not that I'm totally against them, from the point of performance they seem to be nice, but from the point of developing something with it it's just annoying and time consuming... time which could be spend on other stuff) are causing problems....

 

Thx in advance.

Bektor

Developer of Primeval Forest.

Posted

Ok, I think I've found the problem with the missing textures...

 

    public static <T extends IType> Block register(Block block, String name, @Nullable Function<Block, ItemBlock> itemFactory, @Nullable T[] variants) {
        block.setUnlocalizedName(Constants.MOD_ID.toLowerCase() + "." + name);
        block.setRegistryName(name);
        GameRegistry.register(block);
        
        if(ModConfig.debugMode)
            PrimevalForest.getLogger().debug("Registering block " + block.getRegistryName());
        
        if(itemFactory != null) {
            final ItemBlock itemBlock = itemFactory.apply(block);
            
            GameRegistry.register(itemBlock.setRegistryName(block.getRegistryName()));
            
            /** Register block and item block rendering */
            if(FMLCommonHandler.instance().getEffectiveSide().isClient()) {
                Iterator<IBlockState> it = block.getBlockState().getValidStates().iterator();
                while(it.hasNext()) {
                    IBlockState state = it.next();
                    if(state == null || state.getPropertyNames().isEmpty()) {
                        if(ModConfig.debugMode) PrimevalForest.getLogger().debug("Skipping block rendering registration for " + state);
                        break;
                    }
                    
                    int meta = block.getMetaFromState(state);
                    
                    if(variants == null) {
                    	RenderUtil.renderBlock(block, meta);
                    	RenderUtil.renderItemBlock(itemBlock, meta);
                    }
                }
                
                /** Register block rendering for 'custom' PropertyEnum's */
                if(variants != null) {
        			for(T variant : variants) {
                		RenderUtil.renderBlock(ModBlocks.getPath(name), block, name, variant.getID());
        				RenderUtil.renderItemBlock(ModBlocks.getPath(name), itemBlock, variant.getID(), variant.getName());
        			}
                }
            }
        }
        
        return block;
    }

 

It is somewhere in this code... I just don't know where. I just found out, when I get it to work for one block it doesn't mean it's fixed for the second block (and I didn't even started to test the blocks with metadata, just tested structure block and torch)

Developer of Primeval Forest.

Posted
Item json isn't found for '...#inventory', trying to load the variant from the blockstate json

 

You can do this by design, so it's a info message, not necessarily an error. Just make sure that you either provide an item model json or an inventory variant in your blockstates json.

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Posted

Item json isn't found for '...#inventory', trying to load the variant from the blockstate json

 

You can do this by design, so it's a info message, not necessarily an error. Just make sure that you either provide an item model json or an inventory variant in your blockstates json.

Ah, ok. Then I would consider that as fixed cause I always provide one of them (mostly blockstates).

Just wondering why some textures are not loading. When doing it manually it works, but when letting my method do the heavy lifting of it, it stops working.

 

EDIT: For anyone interested in the fix who has the same problems: easiest fix is to split the methods up, so that every special case got it's own method.

Developer of Primeval Forest.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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