Jump to content

[Solved] Config Files [1.8.9]


Kihron

Recommended Posts

Hello again,

 

I have been searching and attempting multiple methods on creating configuration files but I have not succeeded at all. My mod has a version checker and I would like to add a config option to disable it.

 

Does anyone know how to create one?

Edited by Kihron
Link to comment
Share on other sites

Try around with this.
 

Quote

      This will create a Configfile if needed (must be in the PreInit of the loading Section.)

Quote


        File configFile = new File(Loader.instance().getConfigDir(), "yourConfig.cfg");
        config = new Configuration(configFile);
        config.load();
        Property yourtempvalue = config.get("test", "test value", 100);
        yourValue = yourtempvalue.getInt();
        if(config.hasChanged()){
            config.save();
        }

 

This will load your Value you want. Play around to get Strings and booleans

 

 

I tested it and the File looks like this 

Quote

 

# Configuration file

test {
    I:"test value"=100
}

 


 

Edited by NextInima
Link to comment
Share on other sites

Thank you for the reply, I have some questions.

 

    @EventHandler
    public static void preInit(FMLPreInitializationEvent event)
    {
        File configFile = new File(Loader.instance().getConfigDir(), "keymod.cfg");
        Configuration config = new Configuration(configFile);

        config.load();
        Property update = config.get("Update Checker", "Whether or not the Update Checker runs.", 50);
        if(config.hasChanged())
            config.save();

        proxy.registerKeyBindings();
    }

 

First, does everything go under preInit?

Second, the variables config and update had some errors so I guessed the class for them, are they supposed to be something else?

When I ran the game, under mod options, the config didn't load so I don't know if I did this wrong or not. 

Link to comment
Share on other sites

Hey, I truly am thankful for your help, but sadly it isn't working for me, just a reminder, I'm running 1.8.9 so I don't know if things are different or if you are also testing in that version.

This is what I have now,

 

    @EventHandler
    public static void preInit(FMLPreInitializationEvent event) {
        File configFile = new File(Loader.instance().getConfigDir(), "keymod.cfg");
        Configuration config = new Configuration(configFile);
        config.load();
        Property isOn = config.get("test", "test value", 100);
        int update = isOn.getInt();
        if (config.hasChanged()) {
            config.save();

            proxy.registerKeyBindings();
        }
    }

 

I had to make an assumption that the update variable was an int. 
Sadly, once again when loading the game, under mod options, the config button is grayed out.

Link to comment
Share on other sites

  • 3 years later...
On 5/3/2018 at 2:20 AM, Kihron said:

Thank you for the reply, I have some questions.

 


    @EventHandler
    public static void preInit(FMLPreInitializationEvent event)
    {
        File configFile = new File(Loader.instance().getConfigDir(), "keymod.cfg");
        Configuration config = new Configuration(configFile);

        config.load();
        Property update = config.get("Update Checker", "Whether or not the Update Checker runs.", 50);
        if(config.hasChanged())
            config.save();

        proxy.registerKeyBindings();
    }

 

First, does everything go under preInit?

Second, the variables config and update had some errors so I guessed the class for them, are they supposed to be something else?

When I ran the game, under mod options, the config didn't load so I don't know if I did this wrong or not. 

How can i write or read hte config file on any class ?

Link to comment
Share on other sites

  • Guest locked this topic
Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

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