ItemStack itemStack = new ItemStack(Blocks.LOG, 1, metadata);
String name = StatCollector.translateToLocal(itemStack.getUnlocalizedName());
Потому что ты вызываешь метод, который пашет без метадаты.
Нужно так:
Java:ItemStack itemStack = new ItemStack(Blocks.LOG, 1, metadata);
ItemStack itemStack = new ItemStack(Blocks.LOG, 1, 2);
ItemStack itemStack = new ItemStack(Blocks.LOG, 1, 6);
ItemStack itemStack = new ItemStack(Blocks.LOG, 1, 10);
ItemStack itemStack = new ItemStack(Blocks.LOG, 1, 14);
Block.getBlockFromItem(new ItemStack(Blocks.LOG, 1, 0).getItem())
кажется работает То есть юзай проперти, если нужно получить IBlockState для установки в мир, например. Так правильно и читабельно.Blocks.LOG.getDefaultState().withProperty(BlockLog.VARIANT, BlockLog.EnumType.BIRCH);
При генерации блока в мире нужно заменять только блоки Дуба, а другие не трогать, вот.Я тебя не понимаю. Что тебе конкретно нужно сделать?
IBlockState oak = world.getBlockState(x, y, z);
if(oak.getBlock() == Blocks.LOG && oak.getValue(BlockLog.VARIANT) == BlockLog.EnumType.BIRCH){
world.setBlockState(x, y, z, YourBlock.getDefaultState());
}
Эм я как бы про это написали пойми насколько ты опозорился.
Если тебе нужно прям конкретно мета(число) это - BlockPlanks.EnumType.BIRCH.getMetadata();
При генерации блока в мире нужно заменять только блоки Дуба, а другие не трогать, вот.
Я ж тебе так же все написал как Agravaine, именно то что тебе надо. Ты что даже не попробовал что ли?Да, это работает, но как можно это конвертировать в блок?
Если я вызываюBlock.getBlockFromItem(new ItemStack(Blocks.LOG, 1, 0).getItem())
, то при getItem() он возвращает имя tile.log
Боже, я сказал, мне надо получить БЛОК.Я ж тебе так же все написал как Agravaine, именно то что тебе надо. Ты что даже не попробовал что ли?
Тебе не нужно никакой предмет, никакая конвертация. Просто получаешь LOG и ее енумтайп - березу. Если надо конкретно мету получить березовую то в конце еще допиши getMetadata()
Почему ты не читаешь что я написал?
Blocks.LOG.getDefaultState().withProperty(BlockOldLog.VARIANT, BlockPlanks.EnumType.BIRCH).getBlock()
, то мне все также возвращается tile.log при .getUnlocalizedName()
. @Override
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator,
IChunkProvider chunkProvider) {
switch(world.provider.getDimension()) {
case 0:
TheAnts.logger.log(Level.WARN, Blocks.LOG.getDefaultState().withProperty(BlockOldLog.VARIANT, BlockPlanks.EnumType.BIRCH).getBlock().getUnlocalizedName());
runGenerator(BlockRegistry.BlockTaintedLog.getDefaultState(), 3, 9600, 50, 250, BlockMatcher.forBlock(Blocks.LOG.getDefaultState().withProperty(BlockOldLog.VARIANT, BlockPlanks.EnumType.BIRCH).getBlock()), world, random, chunkX, chunkZ);
break;
default:
break;
}
}
А иначе ты как собрался заменять блок?А если я буду каждый блок в чанке проверять на соответствие берёзе, то получится дикая нагрузка...
Predicates.equalTo(Blocks.LOG.getDefaultState().withProperty(BlockOldLog.VARIANT, BlockPlanks.EnumType.BIRCH))
, он вроде работает.Ты че тупишь. Я тебе сказал что надо получать стейт блока. Ты не зная кода споришь тут. Это ОДНО И ТОЖЕБоже, я сказал, мне надо получить БЛОК.
Его НЕ СУЩЕСТВУЕТ. Это субтайп блока LOGблок Берёзы, не Дерево, а блок Берёзы.
Ровно тоже самое что я написал тебе вчера....Так, я решил чутка погуглить про Блокстейты и Predicate и по итогу получил примерно такой вариантPredicates.equalTo(Blocks.LOG.getDefaultState().withProperty(BlockOldLog.VARIANT, BlockPlanks.EnumType.BIRCH))
, он вроде работает.
И я ее сделал. Просто потом решил сделать иначе)Ох, помню темку с генерацией своего мира в которой @DdoosS пытался тебе объяснить и даже готовый код давал, а ты все равно уперся и делал какашку