该代码存在以下问题:

  1. 缺少必要的导入语句,例如import net.minecraftforge.eventbus.api.SubscribeEventimport net.minecraftforge.fml.common.Mod
  2. 缺少必要的注解,例如@Mod@SubscribeEvent
  3. auto_sprint类中,缺少构造函数的实现。
  4. registerBindings方法中,缺少@SubscribeEvent注解。
  5. onClientTick方法中,缺少@SubscribeEvent注解。
  6. onClientTick方法中,缺少对Minecraft.getInstance().guiMinecraft.getInstance().player的空指针判断。

解决以上问题后的代码如下:

package com.sen;

import com.mojang.blaze3d.platform.InputConstants;
import com.mojang.logging.LogUtils;
import cpw.mods.util.Lazy;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.material.MapColor;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
import net.minecraftforge.client.settings.IKeyConflictContext;
import net.minecraftforge.client.settings.KeyConflictContext;
import net.minecraftforge.client.settings.KeyModifier;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.server.ServerStartingEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import org.lwjgl.glfw.GLFW;
import org.slf4j.Logger;

import javax.swing.text.JTextComponent;
import java.awt.event.KeyEvent;
import java.util.function.Consumer;
import java.util.function.Supplier;

// The value here should match an entry in the META-INF/mods.toml file
@Mod(auto_sprint.MODID)
public class auto_sprint {

    // Define mod id in a common place for everything to reference
    public static final String MODID = "auto_sprint";
    // Directly reference a slf4j logger
    private static final Logger LOGGER = LogUtils.getLogger();
    public static final Lazy<KeyMapping> AUTO_SPRINT_MAPPING = Lazy.of(() -> new KeyMapping(
            "key.auto_sprint.as",
            KeyConflictContext.UNIVERSAL,
            KeyModifier.SHIFT, // Default mapping requires shift to be held down
            InputConstants.Type.KEYSYM, // Default mapping is on the keyboard
            GLFW.GLFW_KEY_I, // Default key is G
            "key.auto_sprint.as"
    ));
    public static boolean auto_sprint = false;

    public auto_sprint() {
        IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
        MinecraftForge.EVENT_BUS.register(this);
    }


    // You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent
    @Mod.EventBusSubscriber(modid = MODID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
    public static class ClientModEvents {

        @SubscribeEvent
        public static void onClientSetup(FMLClientSetupEvent event)
        {

        }
    }
    
    @SubscribeEvent
    public static void registerBindings(RegisterKeyMappingsEvent event) {
        event.register(AUTO_SPRINT_MAPPING.get());
    }
    
    @SubscribeEvent
    public static void onClientTick(TickEvent.ClientTickEvent event) {
        if (event.phase == TickEvent.Phase.END) { // Only call code once as the tick event is called twice every tick
            while (AUTO_SPRINT_MAPPING.get().consumeClick()) {
                auto_sprint = !auto_sprint;
                Minecraft mc = Minecraft.getInstance();
                if (mc != null && mc.gui != null && mc.gui.getChat() != null) {
                    mc.gui.getChat().addRecentChat("自动疾跑已" + ((auto_sprint) ? "开启!" : "关闭!"));
                }
            }
        }
        if (auto_sprint) {
            Minecraft mc = Minecraft.getInstance();
            if (mc != null && mc.player != null) {
                mc.player.setSprinting(true);
            }
        }
    }
}
``
此代码存在问题会导致无法正常启动游戏请分析并解决package comsen;import commojangblaze3dplatformInputConstants;import commojangloggingLogUtils;import cpwmodsutilLazy;import netminecraftclientKeyMapping;import netminecraftclien

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

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