从 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,如果它不是您想要的配置,值得一读。
我想用 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,如果它不是您想要的配置,值得一读。