- 5,149
- 49
- 899
Короче говоря, сел разбиратся с датагенами, туда сюда, бабку за репку, дедку за кепку, более-менее заработало. Генерируются предметы, рецепты, блоки, стейты. Казалось бы все в порядке, но тут обнаружилось, что обычные методы вроде simpleBlock не умеют создавать папки и фигарят прямо в корень. Я люблю порядок и поэтому люблю рассортировывать все по папочкам. Поэтому в данном случае для concrete_orange у меня имя concrete/concrete_orange, чтобы файл блокстейта лежал в папке. Конкретно блокстейты генератор кладет правильно. А вот модели блока, он кладет просто в корень с одной единственной папкой. Как это исправить, я не нашел. Думалось, что нужно какой то свой getVariantBuilder конструировать, но я не знаю, в какую сторону там как работает, по итогу сделал что то такое и оно не работает - вылезает ошибка что по этому адресу нет никакой текстуры

Если юзать просто simpleBlock(то что сейчас закомменчено), то модели он мне кладет напрямую в папку models/concrete/concrete_orange. А мне надо чтобы клал в models/block/concrete/concrete_orange. Как это чинить?
BlockStateProvider:
package ru.tesmio.data.providers;
import net.minecraft.data.DataGenerator;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.generators.BlockModelBuilder;
import net.minecraftforge.client.model.generators.BlockStateProvider;
import net.minecraftforge.client.model.generators.ConfiguredModel;
import net.minecraftforge.client.model.generators.ModelBuilder;
import net.minecraftforge.common.data.ExistingFileHelper;
import ru.tesmio.Core;
import ru.tesmio.reg.RegBlocks;
public class SovietBlockStateProvider extends BlockStateProvider {
public SovietBlockStateProvider(DataGenerator gen, ExistingFileHelper exFileHelper) {
super(gen, Core.MODID, exFileHelper);
}
@Override
protected void registerStatesAndModels() {
// getVariantBuilder(RegBlocks.CONCRETE_ORANGE.get()).forAllStates(state -> ConfiguredModel.builder().modelFile(singleTex("concrete_orange", modLoc("textures/block/concrete/concrete_orange"))).build());
getVariantBuilder(RegBlocks.CONCRETE_ORANGE.get()).partialState().setModels(ConfiguredModel.builder().modelFile(builder("concrete_orange", modLoc("textures/block/concrete/concrete_orange.png"))).build());
// simpleBlock(RegBlocks.CONCRETE_ORANGE.get());
// simpleBlock(RegBlocks.CONCRETE_ORANGE_BR.get());
}
public ModelBuilder<BlockModelBuilder> builder(String name, ResourceLocation rs) {
return models().cubeAll(name, rs);
}
}

Если юзать просто simpleBlock(то что сейчас закомменчено), то модели он мне кладет напрямую в папку models/concrete/concrete_orange. А мне надо чтобы клал в models/block/concrete/concrete_orange. Как это чинить?