Jump to content

Recommended Posts

Posted

Hello Guys! It's Romejanic here! And I want to give you a little tutorial! If you have seen my recent mods, you would know that my config files all go to the folder /romejanic in the Minecraft folder and server folder. So in this simple tutorial, I will show you how to not only get you config files in a custom directory, but to also make it work universally!

 

Ok. So first, I would recommend making a new class. Usually I call it 'ConfigLoader.java'. You can call it anything you want though! So first in the new class, type make a new void method like this;

 

public static void load(){

 

}

 

Inside that method, you are going to type this code:

 

File location = null;

 

After that, you also need to import java.io.File. Now, the reason you have typed null at the end is because if it was not an assignment, you would not be able to use it in other declarations. Anyway, we will move on. Next, you need to type this code;

 

Side s = FMLCommonHandler.instance().getEffectiveSide();

 

After that, you need to make two if statements. One for the client declarations and one for the server declarations. You will type the statements like this;

 

if(s == s.CLIENT){

 

}

if(s == s.SERVER){

 

}

 

After you type that in, you need to import cpw.mods.fml.common.FMLCommonHandler and cpw.mods.fml.relauncher.Side. Now inside the first if statement (The client statement) you will type the following;

 

location = new File(Minecraft.getMinecraftDir().toString()+"/<foldername>/<file-name>");

 

Ok. This is where the file's null assignment is replaced. But before we go on, you need to import net.minecraft.client.Minecraft. Except you must replace <foldername> for the name of your custom folder and <file-name> for you file's name. But for the file name, it must be followed by an extension. I would suggest making the extension .txt for easy access but it is really up to you. So, if I wanted my file to go to /romejanic/Ghost.txt, I would type;

 

location = new File(Minecraft.getMinecraftDir().toString()+"/romejanic/Ghost.txt");

 

Next let's go onto the server! You will probably just copy most of the code except since the Minecaft class doesn't exist in the server, you must change the directory. Instead, you must change it to this;

 

location = new File("./<foldername>/<file-name>");

 

Once that is complete, you need to create a new void method. It should look like this;

 

private static void config(File location){

 

}

 

Now, underneath the last if statement in the first void method (the server declaration) you need to type

 

config(location);

 

Next, in the second method, you need to type the following;

 

Configuration config = new Configuration(location);

 

config.load();

 

config.save();

 

Ok, you need to import net.minecraftforge.common.Configuration and you are done with the ConfigLoader class! Next, you need to move over to your main mod class. In the pre-init method, you need to add this bit of code;

 

ConfigLoader.load();

 

If the config file is not in the same package as the main mod class, make sure to import it.

 

So that should be it! After this, just follow the tutorials on how to make config files, unless you know how to make them, but skip the step for the config variable. And when you start the game, you will have your own custom config file directory!

 

BTW The final class should look like this;

 

import java.io.File;

 

import cpw.mods.fml.common.FMLCommonHandler;

import cpw.mods.fml.relauncher.Side;

 

import net.minecraft.client.Minecraft;

import net.minecraftforge.common.Configuration;

 

public class ConfigLoader {

 

public static void load(){

 

File location = null;

Side s = FMLCommonHandler.instance().getEffectiveSide();

if(s == s.CLIENT){

 

location = new File(Minecraft.getMinecraftDir().toString()+"/romejanic/Ghost.txt");

 

}

if(s == s.SERVER){

 

location = new File("./romejanic/Ghost.txt");

 

}

config(location);

 

}

 

private static void config(File location){

 

Configuration config = new Configuration(location);

 

config.load();

 

config.save();

 

}

 

}

 

Thanks!

Romejanic

Romejanic

 

Creator of Witch Hats, Explosive Chickens and Battlefield!

Posted

Protip: DO NOT PUT YOUR CONFIGS OUTSIDE THE CONFIG FOLDER.

That's a really really stupid thing to do.

Breaking standards just because you feel like it is bad.

You can make subfolders in the config folder, but making them in the root of the MC folder just causes issues.

 

Proper way to do it is to listen for the PreInit event, and grab the config folder from that:

event.getModConfigurationDirectory();

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

@LexManos Really? That's strange, because I've never had any problems doing this.

 

Thanks anyway!

 

Romejanic

Romejanic

 

Creator of Witch Hats, Explosive Chickens and Battlefield!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • log: https://mclo.gs/QJg3wYX as stated in the title, my game freezes upon loading into the server after i used a far-away waystone in it. The modpack i'm using is better minecraft V18. Issue only comes up in this specific server, singleplayer and other servers are A-okay. i've already experimented with removing possible culprits like modernfix and various others to no effect. i've also attempted a full reinstall of the modpack profile. Issue occurs shortly after the 'cancel' button dissapears on the 'loading world' section of the loading screen.   thanks in advance.
    • You would have better results asking a more specific question. What have you done? What exactly do you need help with? Please also read the FAQ regarding posting logs.
    • Hi, this is my second post with the same content as no one answered this and it's been a long time since I made the last post, I want to make a client-only mod, everything is ok, but when I use shaders, none of the textures rendered in RenderLevelStageEvent nor the crow entity model are rendered, I want them to be visible, because it's a horror themed mod I've already tried it with different shaders, but it didn't work with any of them and I really want to add support for shaders Here is how i render the crow model in the CrowEntityRenderer<CrowEntity>, by the time i use this method, i know is not the right method but i don't think this is the cause of the problem, the renderType i'm using is entityCutout @Override public void render(CrowEntity p_entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight) { super.render(p_entity, entityYaw, partialTick, poseStack, bufferSource, packedLight); ClientEventHandler.getClient().crow.renderToBuffer(poseStack, bufferSource.getBuffer(ClientEventHandler.getClient().crow .renderType(TEXTURE)), packedLight, OverlayTexture.NO_OVERLAY, Utils.rgb(255, 255, 255)); } Here renderLevelStage @Override public void renderWorld(RenderLevelStageEvent e) { horrorEvents.draw(e); } Here is how i render every event public void draw(RenderLevelStageEvent e) { for (HorrorEvent event : currentHorrorEvents) { event.tick(e.getPartialTick()); event.draw(e); } } Here is how i render the crow model on the event @Override public void draw(RenderLevelStageEvent e) { if(e.getStage() == RenderLevelStageEvent.Stage.AFTER_ENTITIES) { float arcProgress = getArcProgress(0.25f); int alpha = (int) Mth.lerp(arcProgress, 0, 255); int packedLight = LevelRenderer.getLightColor(Minecraft.getInstance().level, blockPos); VertexConsumer builder = ClientEventHandler.bufferSource.getBuffer(crow); Crow<CreepyBirdHorrorEvent> model = ClientEventHandler .getClient().crow; model.setupAnim(this); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, packedLight, OverlayTexture.NO_OVERLAY, alpha); builder = ClientEventHandler.bufferSource.getBuffer(eyes); RenderHelper.renderModelInWorld(model, position, offset, e.getCamera(), e.getPoseStack(), builder, 15728880, OverlayTexture.NO_OVERLAY, alpha); } } How i render the model public static void renderModelInWorld(Model model, Vector3f pos, Vector3f offset, Camera camera, PoseStack matrix, VertexConsumer builder, int light, int overlay, int alpha) { matrix.pushPose(); Vec3 cameraPos = camera.getPosition(); double finalX = pos.x - cameraPos.x + offset.x; double finalY = pos.y - cameraPos.y + offset.y; double finalZ = pos.z - cameraPos.z + offset.z; matrix.pushPose(); matrix.translate(finalX, finalY, finalZ); matrix.mulPose(Axis.XP.rotationDegrees(180f)); model.renderToBuffer(matrix, builder, light, overlay, Utils .rgba(255, 255, 255, alpha)); matrix.popPose(); matrix.popPose(); } Thanks in advance
    • I am trying to develop a modpack for me and my friends to use on our server. Does anyone know how to develop a modpack for a server or could they help take a look at my modpack to potentially help at all?
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.