当前位置: 首页 > 知识库问答 >
问题:

从Minecraft Mod中的外部文件读取

慕容超
2023-03-14

我想用mod在屏幕上显示一些东西,为此我想在测试中写下“helloworld”。txt(稍后将是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生成的代码)

请帮助任何人我完全被这个绊倒了

共有1个答案

公西培
2023-03-14

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

Forge中的大多数配置文件都使用YAML,因此值得理解。

W3Schools有一个很好的关于通用文件IO的教程,如果不是您想要的配置,那么值得一读。

 类似资料:
  • 我正在尝试运行应用程序jar并将应用程序配置(application.yml)外部化。有几个文件是从application.yml.引用的 应用程序运行命令: 目录结构: 以Kafka图书馆试图访问文件为例。 我尝试通过以下方式配置路径 application.yml 当库试图访问这些文件时,我得到以下错误。 原因:java.io.FileNotFoundException:类路径资源[keyst

  • 我试图从外部文本文件中读取dataframe模式,并使用它创建一个dataframe。然而,我无法理解如何将string转换为StructType。 我正在使用Spark 2.1和Java。这是代码片段。 如何将上述代码中的struct2转换为StructType? 结构文件包含这个

  • 问题内容: 我有一个要求,要将所有logback配置都放在war文件之外。目前,我已将配置文件(logback.xml)放在类路径上。我正在使用JBOSS EAP Web应用程序服务器,请提出如何实现相同的建议。 问题答案: 进入jboss启动/运行脚本并添加以下选项: 的java -Dlogback.configurationFile = /路径/到/ config.xml中 chapters.

  • 问题内容: 我们为我们的一个应用程序提供了一个连接池组件(JAR文件)。截至目前,应用程序连接详细信息捆绑在JAR文件中(在文件中)。 我们可以使其更通用吗?我们可以让客户端告诉属性文件详细信息(路径和文件名),然后使用JAR来获得连接吗? 客户端代码中包含以下内容是否有意义: 与此同时,客户端将指定(以某种方式???)属性文件详细信息,其中包含要连接的URL,超时等。 问题答案: http://

  • 你好,我最近把我的JavaFX8项目改为Maven,除了加载JAR旁边的文件外,一切都很好。这在以前起作用,但现在不起作用了。 文件夹结构: 要加载的图标位于/target/Icons中,JAR文件位于/target中 我读取文件的代码如下所示: 它进入循环并查找文件,但当新图像(file.getAbsoltePath())被调用时,它会崩溃。 我尝试了toExternalForm()等的各种方法

  • 每个人都知道如果我们想要读取属性文件,我们可以这样做: 但是,现在我有了一个类似于SpringBoot的框架。它可以将Spring与Mybatis集成在一起。 问题是前面的代码只能读取我的项目类路径文件,但我需要使用我的框架读取project属性文件。我是怎么做的?