我正在使用minecraft forge 1.12.2创建一个名为ivy块的自定义块。当我通过eclipse运行mod-in-game时,我不能右键单击该块来放置另一个与之相邻的块,而是将其替换为hold块。例如,如果我右键单击一个常春藤块,同时持有一个工艺表,常春藤块被替换为一个工艺表。如果我在按住另一个常春藤块的同时右键单击一个常春藤块,什么也不会发生(可能是因为它正在用另一个常春藤块替换常春藤块)。
唯一的习惯行为,这一块是蔓延到任何相邻的菌丝块;然而,我用注解掉的所有相关代码测试了mod,结果没有改变。它没有自定义块模型。
我已经在这个模块中添加了其他自定义块,它们都正常工作。他们都是我的朋友 BlockBase
所以我不认为这是一个问题。
我还查看了forge文档中的块交互,但它似乎没有任何与此问题相关的内容。
这里是 IvyBlock.java
:
public class IvyBlock extends BlockBase {
public IvyBlock() {
super("ivy_block", Material.SNOW);
this.setSoundType(SoundType.SLIME);
this.setHardness(0.75F);
this.setResistance(18_000_000);
this.setHarvestLevel("pickaxe", 0);
this.setLightLevel(3.5F);
this.setLightOpacity(1);
this.setTickRandomly(true);
}
@Override
public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) {
float x = pos.getX();
float y = pos.getY();
float z = pos.getZ();
checkForMycelium(worldIn, x, y - 1, z);
checkForMycelium(worldIn, x - 1, y - 1, z);
checkForMycelium(worldIn, x + 1, y - 1, z);
checkForMycelium(worldIn, x, y - 1, z - 1);
checkForMycelium(worldIn, x, y - 1, z + 1);
checkForMycelium(worldIn, x - 1, y - 1, z - 1);
checkForMycelium(worldIn, x + 1, y - 1, z - 1);
checkForMycelium(worldIn, x - 1, y - 1, z + 1);
checkForMycelium(worldIn, x + 1, y - 1, z + 1);
checkForMycelium(worldIn, x - 1, y, z);
checkForMycelium(worldIn, x + 1, y, z);
checkForMycelium(worldIn, x, y, z - 1);
checkForMycelium(worldIn, x, y, z + 1);
checkForMycelium(worldIn, x - 1, y, z - 1);
checkForMycelium(worldIn, x + 1, y, z - 1);
checkForMycelium(worldIn, x - 1, y, z + 1);
checkForMycelium(worldIn, x + 1, y, z + 1);
checkForMycelium(worldIn, x, y + 1, z);
checkForMycelium(worldIn, x - 1, y + 1, z);
checkForMycelium(worldIn, x + 1, y + 1, z);
checkForMycelium(worldIn, x, y + 1, z - 1);
checkForMycelium(worldIn, x, y + 1, z + 1);
checkForMycelium(worldIn, x - 1, y + 1, z - 1);
checkForMycelium(worldIn, x + 1, y + 1, z - 1);
checkForMycelium(worldIn, x - 1, y + 1, z + 1);
checkForMycelium(worldIn, x + 1, y + 1, z + 1);
}
private void checkForMycelium(World worldIn, float x, float y, float z) {
if (worldIn.getBlockState(new BlockPos(x, y, z)) == Blocks.MYCELIUM.getDefaultState()) {
worldIn.setBlockState(new BlockPos(x, y, z), ModBlocks.IVY_BLOCK.getDefaultState());
}
}
}
这里是 blockstates/ivy_block.json
:
{
"variants": {
"normal": {
"model": "modid:ivy_block"
}
}
}
这里是 models/block/ivy_block.json
:
{
"parent": "block/cube_all",
"textures": {
"all": "modid:blocks/ivy_block"
}
}
以及 models/item/ivy_block.json
:
{
"parent": "modid:block/ivy_block"
}
是什么导致了这个问题?
暂无答案!
目前还没有任何答案,快来回答吧!