diff --git a/fabric-qi-mod/.gitattributes b/.gitattributes similarity index 100% rename from fabric-qi-mod/.gitattributes rename to .gitattributes diff --git a/fabric-qi-mod/.github/workflows/build.yml b/.github/workflows/build.yml similarity index 100% rename from fabric-qi-mod/.github/workflows/build.yml rename to .github/workflows/build.yml diff --git a/fabric-qi-mod/.gitignore b/.gitignore similarity index 100% rename from fabric-qi-mod/.gitignore rename to .gitignore diff --git a/.idea/mcMod.iml b/.idea/mcMod.iml deleted file mode 100644 index d6ebd48..0000000 --- a/.idea/mcMod.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 639900d..a185e37 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,7 @@ - + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index b04507b..8bcda79 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,9 @@ - + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 6aa0017..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/fabric-qi-mod/LICENSE b/LICENSE similarity index 100% rename from fabric-qi-mod/LICENSE rename to LICENSE diff --git a/fabric-qi-mod/README.md b/README.md similarity index 100% rename from fabric-qi-mod/README.md rename to README.md diff --git a/fabric-qi-mod/build.gradle b/build.gradle similarity index 100% rename from fabric-qi-mod/build.gradle rename to build.gradle diff --git a/fabric-qi-mod/src/main/java/com/example/ExampleMod.java b/fabric-qi-mod/src/main/java/com/example/ExampleMod.java deleted file mode 100644 index 215cfbb..0000000 --- a/fabric-qi-mod/src/main/java/com/example/ExampleMod.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.example; - -import net.fabricmc.api.ModInitializer; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ExampleMod implements ModInitializer { - public static final String MOD_ID = "modid"; - - // This logger is used to write text to the console and the log file. - // It is considered best practice to use your mod id as the logger's name. - // That way, it's clear which mod wrote info, warnings, and errors. - public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); - - @Override - public void onInitialize() { - // This code runs as soon as Minecraft is in a mod-load-ready state. - // However, some things (like resources) may still be uninitialized. - // Proceed with mild caution. - - LOGGER.info("Hello Fabric world!"); - } -} \ No newline at end of file diff --git a/fabric-qi-mod/src/main/java/com/example/mixin/ExampleMixin.java b/fabric-qi-mod/src/main/java/com/example/mixin/ExampleMixin.java deleted file mode 100644 index 3c4212c..0000000 --- a/fabric-qi-mod/src/main/java/com/example/mixin/ExampleMixin.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.mixin; - -import net.minecraft.server.MinecraftServer; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(MinecraftServer.class) -public class ExampleMixin { - @Inject(at = @At("HEAD"), method = "loadWorld") - private void init(CallbackInfo info) { - // This code is injected into the start of MinecraftServer.loadWorld()V - } -} \ No newline at end of file diff --git a/fabric-qi-mod/gradle.properties b/gradle.properties similarity index 100% rename from fabric-qi-mod/gradle.properties rename to gradle.properties diff --git a/fabric-qi-mod/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from fabric-qi-mod/gradle/wrapper/gradle-wrapper.jar rename to gradle/wrapper/gradle-wrapper.jar diff --git a/fabric-qi-mod/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from fabric-qi-mod/gradle/wrapper/gradle-wrapper.properties rename to gradle/wrapper/gradle-wrapper.properties diff --git a/fabric-qi-mod/gradlew b/gradlew similarity index 100% rename from fabric-qi-mod/gradlew rename to gradlew diff --git a/fabric-qi-mod/gradlew.bat b/gradlew.bat similarity index 100% rename from fabric-qi-mod/gradlew.bat rename to gradlew.bat diff --git a/fabric-qi-mod/settings.gradle b/settings.gradle similarity index 100% rename from fabric-qi-mod/settings.gradle rename to settings.gradle diff --git a/fabric-qi-mod/src/client/java/com/example/ExampleModClient.java b/src/client/java/com/example/ExampleModClient.java similarity index 100% rename from fabric-qi-mod/src/client/java/com/example/ExampleModClient.java rename to src/client/java/com/example/ExampleModClient.java diff --git a/fabric-qi-mod/src/client/java/com/example/mixin/client/ExampleClientMixin.java b/src/client/java/com/example/mixin/client/ExampleClientMixin.java similarity index 100% rename from fabric-qi-mod/src/client/java/com/example/mixin/client/ExampleClientMixin.java rename to src/client/java/com/example/mixin/client/ExampleClientMixin.java diff --git a/fabric-qi-mod/src/client/resources/modid.client.mixins.json b/src/client/resources/modid.client.mixins.json similarity index 100% rename from fabric-qi-mod/src/client/resources/modid.client.mixins.json rename to src/client/resources/modid.client.mixins.json diff --git a/src/main/java/Init/InitModMain.java b/src/main/java/Init/InitModMain.java new file mode 100644 index 0000000..2cd0f66 --- /dev/null +++ b/src/main/java/Init/InitModMain.java @@ -0,0 +1,15 @@ +package Init; + +import net.fabricmc.api.ModInitializer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class InitModMain implements ModInitializer { + public static final String MOD_ID = "zzdxxz_qi"; + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + @Override + public void onInitialize() { + LOGGER.info("Hello Fabric world!"); + Item.LoadItems.initialize(); + } +} diff --git a/src/main/java/Item/BigApple.java b/src/main/java/Item/BigApple.java new file mode 100644 index 0000000..78f7599 --- /dev/null +++ b/src/main/java/Item/BigApple.java @@ -0,0 +1,9 @@ +package Item; + +import net.minecraft.item.Item; + +public class BigApple extends Item { + public BigApple(Settings settings) { + super(settings); + } +} diff --git a/src/main/java/Item/LoadItems.java b/src/main/java/Item/LoadItems.java new file mode 100644 index 0000000..ddc8c4c --- /dev/null +++ b/src/main/java/Item/LoadItems.java @@ -0,0 +1,36 @@ +package Item; + + +import Init.InitModMain; +import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents; +import net.minecraft.item.Item; +import net.minecraft.item.ItemGroups; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; + +import java.util.function.Function; + +public class LoadItems { + public static final Item QI = register("qi", Item::new, new Item.Settings()); + public static void initialize() { + ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS) + .register((itemGroup) -> itemGroup.add(LoadItems.QI)); + + } + public static Item register(String name, Function itemFactory, Item.Settings settings) { + // Create the item key. + RegistryKey itemKey = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(InitModMain.MOD_ID, name)); + + // Create the item instance. + Item item = itemFactory.apply(settings.registryKey(itemKey)); + + // Register the item. + Registry.register(Registries.ITEM, itemKey, item); + + return item; + } + +} diff --git a/src/main/java/com/example/ExampleMod.java b/src/main/java/com/example/ExampleMod.java new file mode 100644 index 0000000..db87ab1 --- /dev/null +++ b/src/main/java/com/example/ExampleMod.java @@ -0,0 +1,44 @@ +package com.example; // 定义包名,通常遵循反域名命名规范,例如 com.yourcompany.yourmod。 + +import net.fabricmc.api.ModInitializer; // 导入 Fabric Mod 初始化接口,所有 Fabric 主 Mod 类都必须实现它。 + +import net.minecraft.server.MinecraftServer; +import org.slf4j.Logger; // 导入 SLF4J (Simple Logging Facade for Java) 的 Logger 接口,用于日志输出。 +import org.slf4j.LoggerFactory; // 导入 SLF4J 的 LoggerFactory 类,用于获取 Logger 实例。 + +public class ExampleMod implements ModInitializer { + // 定义主 Mod 类 ExampleMod,并实现 ModInitializer 接口。 + // 这意味着这个类必须实现 onInitialize() 方法。 + + public static final String MOD_ID = "modid"; + // 定义一个公共静态最终字符串常量 MOD_ID。 + // 这是一个 Mod 的唯一标识符,通常与 fabric.mod.json 中的 "id" 字段对应。 + // 最佳实践是将其定义为常量,方便在代码中引用。 + // 这里使用了 "modid",实际项目中应替换为你的 Mod 的真实 ID,例如 "mymod"。 + + // This logger is used to write text to the console and the log file. + // 这个记录器(logger)用于将文本写入控制台和日志文件。 + // It is considered best practice to use your mod id as the logger's name. + // 最佳实践是使用你的 Mod ID 作为记录器的名称。 + // That way, it's clear which mod wrote info, warnings, and errors. + // 这样,就能清楚地知道是哪个 Mod 记录了信息、警告和错误。 + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + // 创建一个公共静态最终的 Logger 实例。 + // LoggerFactory.getLogger(MOD_ID) 会创建一个以你的 Mod ID 命名的日志记录器。 + // 这有助于在日志文件中区分来自不同 Mod 的消息。 + + @Override // 这是一个注解,表示 onInitialize 方法是重写了 ModInitializer 接口中的方法。 + public void onInitialize() { + // This code runs as soon as Minecraft is in a mod-load-ready state. + // 这段代码在 Minecraft 处于Mod加载就绪状态时立即运行。 + // However, some things (like resources) may still be uninitialized. + // 然而,有些东西(例如资源)可能尚未完全初始化。 + // Proceed with mild caution. + // 请谨慎处理。 + + LOGGER.info("Hello Fabric world!"); + // 使用 LOGGER 实例输出一条信息级别(INFO)的日志消息。 + // 这条消息会在控制台和 Minecraft 的日志文件中显示,表明你的 Mod 已经成功加载并执行了初始化代码。 + + } +} diff --git a/src/main/java/com/example/mixin/ExampleMixin.java b/src/main/java/com/example/mixin/ExampleMixin.java new file mode 100644 index 0000000..2ec61e2 --- /dev/null +++ b/src/main/java/com/example/mixin/ExampleMixin.java @@ -0,0 +1,54 @@ +package com.example.mixin; // 定义包名。通常 Mixin 文件会被放置在一个单独的 'mixin' 子包中, +// 例如 'com.example.mymod.mixin',以便清晰地组织代码。 + +import net.minecraft.server.MinecraftServer; +// 导入 Minecraft 服务器主类。这是我们希望修改的目标类。 + +import org.spongepowered.asm.mixin.Mixin; +// 导入 SpongePowered Mixin 库的 Mixin 注解。 +// 这个注解用来标记一个类是一个 Mixin 类,它将针对某个目标类进行修改。 + +import org.spongepowered.asm.mixin.injection.At; +// 导入 Mixin 的 At 注解。 +// 这个注解用于精确地指定代码注入的位置(例如,方法的开始、结束、特定的指令之前或之后)。 + +import org.spongepowered.asm.mixin.injection.Inject; +// 导入 Mixin 的 Inject 注解。 +// 这个注解用于标记一个方法为注入方法,它会将你的代码注入到目标方法中。 + +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +// 导入 Mixin 的 CallbackInfo 类。 +// 当你使用 @Inject 注解时,如果需要获取原方法的参数、返回值(或设置返回值)、或者控制原方法的执行流, +// 就需要使用 CallbackInfo 对象。它提供了与原方法交互的机制。 + +@Mixin(MinecraftServer.class) +// @Mixin 注解声明这个 ExampleMixin 类将对 MinecraftServer.class 这个类进行修改(混入)。 +// 也就是说,ExampleMixin 中的代码会影响 MinecraftServer 类。 +public class ExampleMixin { + // 这是一个 Mixin 类。它本身不会被直接实例化运行,而是通过 Mixin 框架在运行时“混合”到目标类中。 + + @Inject(at = @At("HEAD"), method = "loadWorld") + // @Inject 注解用来定义一个注入点。 + // - at = @At("HEAD"):指定注入位置。 + // "HEAD" 表示我们想把这段代码注入到目标方法的最开始。 + // Mixins 提供了多种注入点类型,例如 "TAIL" (方法结束前)、"RETURN" (所有 return 语句前)、 + // 或者更复杂的 ASM 指令匹配。 + // - method = "loadWorld":指定目标方法。 + // 这里是指 MinecraftServer 类中的 `loadWorld` 方法。 + // 注意,这里的方法名是原始的 Java 方法名,而不是 Mixin 本身的方法名。 + // 如果目标方法有重载,你可能需要提供完整的参数签名(例如 "loadWorld(Ljava/lang/String;J)V")。 + private void init(CallbackInfo info) { + // 这是一个注入方法。它的名称可以随意定义,但参数必须符合 Mixin 的规范。 + // 对于 @Inject(at = @At("HEAD")) 的情况, + // 如果原方法没有参数,CallbackInfo info 是可选的,但通常建议加上。 + // 如果原方法有参数,这些参数需要按顺序放在 CallbackInfo info 之前。 + // 例如,如果 loadWorld(String levelName, long seed) 的话,这里可能是 init(String levelName, long seed, CallbackInfo info)。 + + // This code is injected into the start of MinecraftServer.loadWorld()V + // 这段代码将被注入到 MinecraftServer.loadWorld() 方法的开头。 + // 在这里,你可以执行任何你希望在 MinecraftServer 加载世界时立即执行的代码, + // 例如打印调试信息、修改一些服务器状态等。 + System.out.println("MinecraftServer.loadWorld() is being called!"); + // 举例:在这里打印一条消息,确认注入成功。 + } +} diff --git a/fabric-qi-mod/src/main/resources/assets/modid/icon.png b/src/main/resources/assets/modid/icon.png similarity index 100% rename from fabric-qi-mod/src/main/resources/assets/modid/icon.png rename to src/main/resources/assets/modid/icon.png diff --git a/src/main/resources/assets/zzdxxz_qi/items/qi.json b/src/main/resources/assets/zzdxxz_qi/items/qi.json new file mode 100644 index 0000000..7dec313 --- /dev/null +++ b/src/main/resources/assets/zzdxxz_qi/items/qi.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "zzdxxz_qi:item/qi" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/zzdxxz_qi/lang/en_us.json b/src/main/resources/assets/zzdxxz_qi/lang/en_us.json new file mode 100644 index 0000000..862bfc6 --- /dev/null +++ b/src/main/resources/assets/zzdxxz_qi/lang/en_us.json @@ -0,0 +1,3 @@ +{ + "item.zzdxxz_qi.qi": "Qi" +} \ No newline at end of file diff --git a/src/main/resources/assets/zzdxxz_qi/lang/zh_cn.json b/src/main/resources/assets/zzdxxz_qi/lang/zh_cn.json new file mode 100644 index 0000000..a8c1c1e --- /dev/null +++ b/src/main/resources/assets/zzdxxz_qi/lang/zh_cn.json @@ -0,0 +1,3 @@ +{ + "item.zzdxxz_qi.qi": "气" +} \ No newline at end of file diff --git a/src/main/resources/assets/zzdxxz_qi/models/item/qi.json b/src/main/resources/assets/zzdxxz_qi/models/item/qi.json new file mode 100644 index 0000000..62f5613 --- /dev/null +++ b/src/main/resources/assets/zzdxxz_qi/models/item/qi.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "zzdxxz_qi:item/qi" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/zzdxxz_qi/textures/item/qi.png b/src/main/resources/assets/zzdxxz_qi/textures/item/qi.png new file mode 100644 index 0000000..9575ebb Binary files /dev/null and b/src/main/resources/assets/zzdxxz_qi/textures/item/qi.png differ diff --git a/fabric-qi-mod/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json similarity index 87% rename from fabric-qi-mod/src/main/resources/fabric.mod.json rename to src/main/resources/fabric.mod.json index 7e2bb41..d8d33c3 100644 --- a/fabric-qi-mod/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -9,18 +9,18 @@ ], "contact": { "homepage": "https://fabricmc.net/", - "sources": "https://github.com/FabricMC/fabric-example-mod" + "sources": "http://111.228.9.32:3000/zzdxxz/mcMod" }, "license": "CC0-1.0", "icon": "assets/modid/icon.png", "environment": "*", "entrypoints": { "main": [ - "com.example.ExampleMod" + "Init.InitModMain" ], "client": [ "com.example.ExampleModClient" - ] + ] }, "mixins": [ "modid.mixins.json", diff --git a/fabric-qi-mod/src/main/resources/modid.mixins.json b/src/main/resources/modid.mixins.json similarity index 100% rename from fabric-qi-mod/src/main/resources/modid.mixins.json rename to src/main/resources/modid.mixins.json