本篇教程参考为的NeoForge1.20.4Mod开发的视频,这篇教程是我边学边总结的,与其说是教程更像我的学习笔记,如有不清楚的地方,大家可以在评论区提问。在我力所能及的范围内,我都会解答的。
创建ModPaintings类
public class ModPaintings {
public static final DeferredRegister<PaintingVariant> PAINTING_VARIANT = //注册器
DeferredRegister.create(Registries.PAINTING_VARIANT, ExampleMod.MODID);
public static final ResourceKey<PaintingVariant> P1_KEY = ResourceKey.create(Registries.PAINTING_VARIANT, new ResourceLocation(ExampleMod.MODID, "p1"));//下面这三条是给数据生成准备的
public static final ResourceKey<PaintingVariant> P2_KEY = ResourceKey.create(Registries.PAINTING_VARIANT, new ResourceLocation(ExampleMod.MODID, "p2"));
public static final ResourceKey<PaintingVariant> P3_KEY = ResourceKey.create(Registries.PAINTING_VARIANT, new ResourceLocation(ExampleMod.MODID, "p3"));//手写数据文件不需要写这三行
public static final Supplier<PaintingVariant> P1 = PAINTING_VARIANT.register("p1", () -> new PaintingVariant(16, 16));//括号里的数字是你图片的像素大小,前面是宽后面是高,必须是16的倍数
public static final Supplier<PaintingVariant> P2 = PAINTING_VARIANT.register("p2", () -> new PaintingVariant(16, 32));
public static final Supplier<PaintingVariant> P3 = PAINTING_VARIANT.register("p3", () -> new PaintingVariant(288, 160));
public static void register(IEventBus eventbus) {
PAINTING_VARIANT.register(eventbus);
}
}
画的png图片需要放在textures下的painting里
标签文件放在原版路径的tags下的painting_variant里
//placeable.json
{
"values": [
"examplemod:p1",
"examplemod:p2",
"examplemod:p3"
]
}
数据生成
创建ModPaintingTagsProvider类
public class ModPaintingTagsProvider extends PaintingVariantTagsProvider {
public ModPaintingTagsProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> provider, String modId, @Nullable ExistingFileHelper existingFileHelper) {
super(output, provider, modId, existingFileHelper);
}
@Override
protected void addTags(HolderLookup.Provider provider) {
this.tag(PaintingVariantTags.PLACEABLE).add(
ModPaintings.P1_KEY,
ModPaintings.P2_KEY,
ModPaintings.P3_KEY
);
}
}
添加到ModDataGeneratorHandler
event.getGenerator().addProvider(
event.includeServer(),
(DataProvider.Factory<ModPaintingTagsProvider>) pOutput -> new ModPaintingTagsProvider(pOutput, lp, ExampleMod.MODID, efh)
);
效果展示

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







暂无评论内容