NeoForge-1.20.4Mod开发教程之画

本篇教程参考为Flandre芙兰的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)
        );

 

效果展示

 

68b238dc3d20260212185540

 

© 版权声明
THE END
喜欢就支持一下吧
点赞2赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容