hxyzg
本帖最后由 hxyzg 于 2022-3-27 15:32 编辑

1.16.5CuriosApi如何创建饰品槽?wiki不太看的懂,究竟是如何用代码创建饰品槽的?指令必须配置文件写有东西才能用,而配置文件又在存档文件夹里。上述问题已解决,以下是解决方法:
先到build.gradle里添加一段文本,不要覆盖原来的!直接添加就行,这是添加Curios的API的操作。
  1. repositories {
  2.   maven {
  3.     url = "https://maven.theillusivec4.top/"
  4.   }
  5. }

  6. dependencies {
  7.   runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.16.5-4.0.5.0")
  8.   compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.16.5-4.0.5.0:api")
  9. }
复制代码
然后到主类开写,先把依赖搞上
所需依赖:

  1. import net.minecraftforge.fml.InterModComms;
  2. import net.minecraftforge.eventbus.api.IEventBus;
  3. import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
  4. import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
  5. import top.theillusivec4.curios.api.SlotTypePreset;
复制代码
然后按照楼下最佳答案大佬那样写


无敌三脚猫
你是说,写mod,增加饰品栏?我觉得可以抄个现成的
  1. public class 你的mod主类 {
  2.   
  3.   public 构造函数() {
  4.     IEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus();
  5.     eventBus.addListener(this::setup);
  6.     eventBus.addListener(this::enqueue);
  7.   }
  8.   
  9.   private void setup(FMLCommonSetupEvent evt) {
  10.     MinecraftForge.EVENT_BUS.register(this);
  11.   }
  12.   
  13.   private void enqueue(InterModEnqueueEvent evt) {
  14.     InterModComms.sendTo("curios", "register_type", () -> SlotTypePreset.CHARM.getMessageBuilder().build());
  15.   }
  16. }
复制代码
至于sendTo后边该怎么写,wiki上有讲https://github.com/TheIllusiveC4 ... -to-Use:-Developers
这里这个代码直接用了预制的SlotTypePreset.CHARM,不过你也可以像wiki上那样写
  1. () -> new SlotTypeMessage.Builder("charm").priority(200).icon(new ResourceLocation("curios", "item/empty_charm_slot").build()
复制代码

无敌三脚猫
啊等等,你还没有告诉我你开发的mod是基于forge还是fabric,毕竟1.16的CuriosApi又不止一个版本
还有就是,我翻你之前的帖子,发现你用的是Mcreator,你现在还在用吗?我没用过Mcreator,我也不知道Mcreator能不能制作附属mod
如果你现在打算放弃Mcreator可以从这边学起https://www.mcbbs.net/thread-54579-1-1.html

hxyzg
无敌三脚猫 发表于 2022-3-27 14:01
啊等等,你还没有告诉我你开发的mod是基于forge还是fabric,毕竟1.16的CuriosApi又不止一个版本
还有就是, ...

是还在用,mcreator也可以当编辑器用,我开发的是forge版,mcreator可以制作附属mod

无敌三脚猫
hxyzg 发表于 2022-3-27 14:04
是还在用,mcreator也可以当编辑器用,我开发的是forge版,mcreator可以制作附属mod ...

mcreator也可以直接编辑java代码对么?我看你之前的帖子里出现过
mcreator在添加了CuriosApi作为依赖之后,可以写import top.theillusivec4.curios.api.CuriosApi;吗?添加依赖之后不做任何事的话,你的mod主类长什么样子呢?把你的mod主类写成2楼的样子,这个过程有什么问题吗?

hxyzg
无敌三脚猫 发表于 2022-3-27 14:29
mcreator也可以直接编辑java代码对么?我看你之前的帖子里出现过
mcreator在添加了CuriosApi作为依赖之后 ...

没动过的主类长这样
  1. package net.mcreator.testc;

  2. import org.apache.logging.log4j.Logger;
  3. import org.apache.logging.log4j.LogManager;

  4. import net.minecraftforge.fml.network.simple.SimpleChannel;
  5. import net.minecraftforge.fml.network.NetworkRegistry;
  6. import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
  7. import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
  8. import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
  9. import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
  10. import net.minecraftforge.fml.common.Mod;
  11. import net.minecraftforge.eventbus.api.SubscribeEvent;
  12. import net.minecraftforge.event.RegistryEvent;
  13. import net.minecraftforge.common.MinecraftForge;

  14. import net.minecraft.util.ResourceLocation;
  15. import net.minecraft.item.Item;
  16. import net.minecraft.entity.EntityType;
  17. import net.minecraft.enchantment.Enchantment;
  18. import net.minecraft.block.Block;

  19. import java.util.function.Supplier;

  20. @Mod("testc")
  21. public class TestcMod {
  22.         public static final Logger LOGGER = LogManager.getLogger(TestcMod.class);
  23.         private static final String PROTOCOL_VERSION = "1";
  24.         public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation("testc", "testc"),
  25.                         () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals);
  26.         public TestcModElements elements;
  27.         public TestcMod() {
  28.                 elements = new TestcModElements();
  29.                 FMLJavaModLoadingContext.get().getModEventBus().register(this);
  30.                 FMLJavaModLoadingContext.get().getModEventBus().addListener(this::init);
  31.                 FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientLoad);
  32.                 MinecraftForge.EVENT_BUS.register(new TestcModFMLBusEvents(this));
  33.         }

  34.         private void init(FMLCommonSetupEvent event) {
  35.                 elements.getElements().forEach(element -> element.init(event));
  36.         }

  37.         public void clientLoad(FMLClientSetupEvent event) {
  38.                 elements.getElements().forEach(element -> element.clientLoad(event));
  39.         }

  40.         @SubscribeEvent
  41.         public void registerBlocks(RegistryEvent.Register<Block> event) {
  42.                 event.getRegistry().registerAll(elements.getBlocks().stream().map(Supplier::get).toArray(Block[]::new));
  43.         }

  44.         @SubscribeEvent
  45.         public void registerItems(RegistryEvent.Register<Item> event) {
  46.                 event.getRegistry().registerAll(elements.getItems().stream().map(Supplier::get).toArray(Item[]::new));
  47.         }

  48.         @SubscribeEvent
  49.         public void registerEntities(RegistryEvent.Register<EntityType<?>> event) {
  50.                 event.getRegistry().registerAll(elements.getEntities().stream().map(Supplier::get).toArray(EntityType[]::new));
  51.         }

  52.         @SubscribeEvent
  53.         public void registerEnchantments(RegistryEvent.Register<Enchantment> event) {
  54.                 event.getRegistry().registerAll(elements.getEnchantments().stream().map(Supplier::get).toArray(Enchantment[]::new));
  55.         }

  56.         @SubscribeEvent
  57.         public void registerSounds(RegistryEvent.Register<net.minecraft.util.SoundEvent> event) {
  58.                 elements.registerSounds(event);
  59.         }
  60.         private static class TestcModFMLBusEvents {
  61.                 private final TestcMod parent;
  62.                 TestcModFMLBusEvents(TestcMod parent) {
  63.                         this.parent = parent;
  64.                 }

  65.                 @SubscribeEvent
  66.                 public void serverLoad(FMLServerStartingEvent event) {
  67.                         this.parent.elements.getElements().forEach(element -> element.serverLoad(event));
  68.                 }
  69.         }
  70. }
复制代码

hxyzg
无敌三脚猫 发表于 2022-3-27 14:29
mcreator也可以直接编辑java代码对么?我看你之前的帖子里出现过
mcreator在添加了CuriosApi作为依赖之后 ...

大佬,我成功辣!!!!!!!!!!!!

无敌三脚猫
hxyzg 发表于 2022-3-27 15:09
大佬,我成功辣!!!!!!!!!!!!

我本来是想跟你讲讲在常规的开发方法中是怎么添加mod依赖的,或者我可以直接把工程文件发给你
然后我的eclipse现在还在下载curios-forge-1.16.5-4.0.8.1-api.jar
哈哈,不过成功了就好

第一页 上一页 下一页 最后一页