Minecraft 1.20.1 Forge Mod 制作教程:仅客户端安装

制作一个仅在客户端安装的 Forge Mod,你需要在代码中区分客户端和服务端,并在 mod 的配置文件中设置仅客户端加载。

1. 创建 Mod 项目

首先,你需要创建一个新的 mod 项目。在项目的 build.gradle 中,确保你使用的是正确的 Minecraft 版本 (1.20.1) 和 Forge 版本。以下是一个示例:

buildscript {
    repositories {
        jcenter()
        maven {
            name = "forge"
            url = "http://files.minecraftforge.net/maven"
        }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:3.+' // 更新到最新版本
    }
}

apply plugin: 'net.minecraftforge.gradle.forge'
// 如果你需要运行客户端和服务端的模块,取消下面两行的注释
// apply plugin: 'net.minecraftforge.gradle.forge.server'
// apply plugin: 'net.minecraftforge.gradle.forge.client'

version = "1.0"
group = "com.example"

minecraft {
    version = "1.20.1"
    // 如果你需要运行客户端和服务端的模块,取消下面两行的注释
    // runDir = "run"
    // mappings = "snapshot_20211230"
}

dependencies {
    // 客户端的依赖库
    // 例如,如果你想使用 GuiScreen 类,请添加以下依赖
    // compile 'net.minecraft:client:1.20.1'
    
    // 服务端的依赖库
    // 例如,如果你想使用 ServerCommandSource 类,请添加以下依赖
    // compile 'net.minecraft:server:1.20.1'
    
    // 共享的依赖库
    // 例如,如果你想使用 Item 类,请添加以下依赖
    // compile 'net.minecraft:shared:1.20.1'
}

// 客户端的模块
// 如果你需要运行客户端和服务端的模块,取消下面两行的注释
// sourceSets {
//     main {
//         if (project.plugins.hasPlugin('net.minecraftforge.gradle.forge.server')) {
//             output.dirs = [minecraft.runDir + "/mods"]
//         }
//     }
// }

// 服务端的模块
// 如果你需要运行客户端和服务端的模块,取消下面两行的注释
// sourceSets {
//     main {
//         if (project.plugins.hasPlugin('net.minecraftforge.gradle.forge.client')) {
//             output.dirs = [minecraft.runDir + "/mods"]
//         }
//     }
// }

2. 区分客户端和服务端代码

在你的 mod 主类中,你可以使用 DistExecutor 类来区分客户端和服务端的代码。以下是一个示例:

import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

@Mod("examplemod")
public class ExampleMod {
    @OnlyIn(Dist.CLIENT)
    public static void clientSetup(FMLClientSetupEvent event) {
        // 仅在客户端加载的代码
    }

    public static void commonSetup(FMLCommonSetupEvent event) {
        // 在客户端和服务端都加载的代码
    }

    // 其他 mod 事件处理方法等...

    @Mod.EventBusSubscriber(modid = "examplemod", bus = Mod.EventBusSubscriber.Bus.MOD)
    public static class ModEventSubscriber {
        @OnlyIn(Dist.CLIENT)
        @SubscribeEvent
        public static void onClientSetup(FMLClientSetupEvent event) {
            ExampleMod.clientSetup(event);
        }

        @SubscribeEvent
        public static void onCommonSetup(FMLCommonSetupEvent event) {
            ExampleMod.commonSetup(event);
        }

        // 其他 mod 事件处理方法等...
    }
}

3. 设置仅客户端加载

最后,在你的 mod 的配置文件(例如 src/main/resources/META-INF/mods.toml)中,你可以设置仅客户端加载。以下是一个示例:

[mod]
modId = "examplemod"
version = "1.0.0"
displayName = "Example Mod"
authorList = ["Your Name"]
description = "An example mod for Minecraft 1.20.1"

[[dependencies.examplemod]]
modId = "forge"
versionRange = "[37.0.0,)"
mandatory = true
side = "CLIENT"

在这个示例中,side = "CLIENT" 表示该 mod 仅在客户端加载。

4. 运行 Mod

完成这些步骤后,你可以使用 Gradle 的 runClient 任务来运行客户端,并使用 runServer 任务来运行服务端。确保你在运行客户端时正确安装了你的 mod,并在运行服务端时不安装该 mod。

希望这可以帮助你制作一个仅在客户端安装的 Forge mod!

Minecraft 1.20.1 Forge Mod 制作教程:仅客户端安装

原文地址: https://www.cveoy.top/t/topic/qznl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录