从 Minecraft 中的外部文件读取 Mod

read from external file in a Minecraft Mod

我想用 mod 在我的屏幕上显示一些东西,为此我想在 test.txt 中写“Hello World”(稍后将是 json) 并将其保存在我的 minecraft 文件夹中的某处 (?),因此我不需要重新编译我的 mod 来获取此数据;

从 mod 读取此文件并将其显示在屏幕上的正确方法是什么?我正在使用 MCreator,只是慢慢地开始编写代码 “自定义元素”,你可以称我为编程新手 java

我的想法是:


package net.mcreator.sant.gui.overlay;

import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.api.distmarker.Dist;

import net.minecraft.world.World;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.client.Minecraft;

import net.mcreator.sant.SantModElements;
import net.minecraft.util.ResourceLocation;
import io.netty.util.ResourceLeak;

@SantModElements.ModElement.Tag
public class ReadfromjsonOverlay extends SantModElements.ModElement {
    public ReadfromjsonOverlay(SantModElements instance) {
        super(instance, 2);
    }

    @Override
    public void initElements() {
        MinecraftForge.EVENT_BUS.register(this);
    }

    @OnlyIn(Dist.CLIENT)
    @SubscribeEvent(priority = EventPriority.NORMAL)
    public void eventHandler(RenderGameOverlayEvent event) {
        if (!event.isCancelable() && event.getType() == RenderGameOverlayEvent.ElementType.HELMET) {
            int posX = (event.getWindow().getScaledWidth()) / 2;
            int posY = (event.getWindow().getScaledHeight()) / 2;
            PlayerEntity entity = Minecraft.getInstance().player;
            World world = entity.world;
            int x = (int) entity.getPosX();
            int y = (int) entity.getPosY();
            int z = (int) entity.getPosZ();

            //here getting text and save it to "string"

            if ((true)) {
                Minecraft.getInstance().fontRenderer.drawString( string, posX + -151, posY + -63, -1);
            }
        }
    }
}

(MCreator生成的代码)

请帮助我完全陷入困境的任何人

您可以使用 Forge 的 ForgeConfigSpec 作为配置的简单途径。有一个教程here

Forge 中的大多数配置文件使用 YAML so it's worth understanding

W3Schools 在一般文件 IO 方面有很好的 tutorial,如果它不是您想要的配置,值得一读。