Jump to content

Recommended Posts

Posted (edited)

 

Hi,

 

I configured a value to be false in my config, but when I load a world, it changes to true, and the config file does not change. I confirmed it while debugging.

I'm using it as a loot table condition. It's raw_squid - so squids should drop meat when killed.

 

Config class:

package com.sokas.Mokas.config;

import java.io.File;

import com.electronwill.nightconfig.core.file.CommentedFileConfig;
import com.electronwill.nightconfig.core.io.WritingMode;

import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.common.ForgeConfigSpec.BooleanValue;
import net.minecraftforge.common.ForgeConfigSpec.Builder;
import net.minecraftforge.common.ForgeConfigSpec.IntValue;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;

@EventBusSubscriber
public class Config {
	private static final Builder builder = new Builder();

	public static final ForgeConfigSpec config;

	public static IntValue EGG_FOOD_POINT;
	public static IntValue RAW_SQUID_FOOD_POINT;
	public static IntValue COOKED_SQUID_FOOD_POINT;
	public static IntValue RAW_APPLE_PIE_FOOD_POINT;
	public static IntValue APPLE_PIE_FOOD_POINT;

	public static IntValue EGG_SATURATION;
	public static IntValue RAW_SQUID_SATURATION;
	public static IntValue COOKED_SQUID_SATURATION;
	public static IntValue RAW_APPLE_PIE_SATURATION;
	public static IntValue APPLE_PIE_SATURATION;

	public static BooleanValue ENDER_PEARL_RECIPE;
	public static BooleanValue GLOWSTONE_DUST_RECIPE;
	public static BooleanValue COOKED_EGG;
	public static BooleanValue RAW_SQUID;
	public static BooleanValue COOKED_SQUID;
	public static BooleanValue RAW_APPLE_PIE;
	public static BooleanValue APPLE_PIE;
	public static BooleanValue CARDBOARD;
	public static BooleanValue BOOK;
	public static BooleanValue FEATHER_WOOL;

	static {
		String start = "enable_disable.";
		ENDER_PEARL_RECIPE = builder.comment(""/*"If this mod's ender pearl recipe should be enabled or not."*/)
				.define(start + "ender_pearl", true);
		GLOWSTONE_DUST_RECIPE = builder.comment(""/*"If this mod's glowstone dust recipe should be enabled or not."*/)
				.define(start + "glowstone_dust", true);
		COOKED_EGG = builder.comment(""/* If this mod's cooked egg recipe should be enabled or not." */)
				.define(start + "cooked_egg", true);
		RAW_SQUID = builder.comment(""/* "If squids drop raw squid or not." */).define(start + "raw_squid", true);
		COOKED_SQUID = builder.comment(""/* "If raw squid should be cookable or not." */).define(start + "cooked_squid",
				true);
		RAW_APPLE_PIE = builder.comment(""/* "If this mod's apple pie recipe should be enabled or not." */)
				.define(start + "raw_apple_pie", true);
		APPLE_PIE = builder.comment(""/* "If raw apple pies should be cookable or not." */).define(start + "apple_pie",
				true);
		FEATHER_WOOL = builder.comment("").define(start + "feather_wool", true);
		CARDBOARD = builder.comment("").define(start + "cardboard", true);
		BOOK = builder.comment("").define(start + "book", true);

		EGG_FOOD_POINT = builder.comment("How many drumsticks are given by eating a cooked egg.")
				.defineInRange("cooked_egg.food_point", 3, 2, 4);
		EGG_SATURATION = builder.comment("How much saturation is given by eating a cooked egg.")
				.defineInRange("cooked_egg.saturation", 2, 1, 3);
		RAW_SQUID_FOOD_POINT = builder.comment("How many drumsticks are given by eating a raw squid.")
				.defineInRange("raw_squid.food_point", 2, 1, 3);
		RAW_SQUID_SATURATION = builder.comment("How much saturation is given by eating a raw squid.")
				.defineInRange("raw_squid.saturation", 2, 1, 3);
		COOKED_SQUID_FOOD_POINT = builder.comment("How many drumsticks are given by eating a cooked squid.")
				.defineInRange("cooked_squid.food_point", 4, 3, 5);
		COOKED_SQUID_SATURATION = builder.comment("How much saturation is given by eating a cooked squid.")
				.defineInRange("cooked_squid.saturation", 4, 3, 5);

		RAW_APPLE_PIE_FOOD_POINT = builder.comment("How many drumsticks are given by eating a raw apple pie.")
				.defineInRange("raw_apple_pie.food_point", 3, 1, 10);
		RAW_APPLE_PIE_SATURATION = builder.comment("How much saturation is given by eating a raw apple pie.")
				.defineInRange("raw_apple_pie.saturation", 4, 1, 8);

		APPLE_PIE_FOOD_POINT = builder.comment("How many drumsticks are given by eating an apple pie.")
				.defineInRange("apple_pie.food_point", 5, 5, 20);
		APPLE_PIE_SATURATION = builder.comment("How much saturation is given by eating an apple pie.")
				.defineInRange("apple_pie.saturation", 6, 3, 12);

		config = builder.build();
	}

	public static void loadConfig(ForgeConfigSpec config, String path) {
		final CommentedFileConfig file = CommentedFileConfig.builder(new File(path)).sync().autosave()
				.preserveInsertionOrder().writingMode(WritingMode.REPLACE).build();
		file.load();
		config.setConfig(file);
	}
}

Config:


[cooked_egg]
	#How much saturation is given by eating a cooked egg.
	#Range: 1 ~ 3
	saturation = 2
	#How many drumsticks are given by eating a cooked egg.
	#Range: 2 ~ 4
	food_point = 3

[raw_squid]
	#How much saturation is given by eating a raw squid.
	#Range: 1 ~ 3
	saturation = 2
	#How many drumsticks are given by eating a raw squid.
	#Range: 1 ~ 3
	food_point = 2

[cooked_squid]
	#How much saturation is given by eating a cooked squid.
	#Range: 3 ~ 5
	saturation = 4
	#How many drumsticks are given by eating a cooked squid.
	#Range: 3 ~ 5
	food_point = 4

[raw_apple_pie]
	#How much saturation is given by eating a raw apple pie.
	#Range: 1 ~ 8
	saturation = 4
	#How many drumsticks are given by eating a raw apple pie.
	#Range: 1 ~ 10
	food_point = 3

[apple_pie]
	#How much saturation is given by eating an apple pie.
	#Range: 3 ~ 12
	saturation = 6
	#How many drumsticks are given by eating an apple pie.
	#Range: 5 ~ 20
	food_point = 5

[enable_disable]
	cooked_squid = true
	feather_wool = true
	apple_pie = true
	glowstone_dust = true
	book = true
	ender_pearl = true
	cooked_egg = true
	cardboard = true
	raw_apple_pie = true
	raw_squid = false

 

Main class:

package com.sokas.Mokas;

import static net.minecraftforge.common.crafting.CraftingHelper.register;

import java.io.File;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.sokas.Mokas.config.Config;
import com.sokas.Mokas.recipes.ApplePieCondition;
import com.sokas.Mokas.recipes.BookCondition;
import com.sokas.Mokas.recipes.CardboardCondition;
import com.sokas.Mokas.recipes.CookedEggCondition;
import com.sokas.Mokas.recipes.CookedSquidCondition;
import com.sokas.Mokas.recipes.EnderPearlCondition;
import com.sokas.Mokas.recipes.FeatherWoolCondition;
import com.sokas.Mokas.recipes.GlowstoneDustCondition;
import com.sokas.Mokas.recipes.RawApplePieCondition;
import com.sokas.Mokas.recipes.RawSquidLootCondition;
import com.sokas.Mokas.setup.Registration;

import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.loading.FMLPaths;

@Mod(Main.MOD_ID)
public class Main {

	public static final String MOD_ID = "mokas";

	public static File config;

	public static Logger logger = LogManager.getLogger(MOD_ID);

	public Main() {
		Registration.register();

		ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Config.config);
		Config.loadConfig(Config.config, FMLPaths.CONFIGDIR.get().resolve(MOD_ID + ".toml").toString());

		register(new EnderPearlCondition.Serializer());
		register(new GlowstoneDustCondition.Serializer());
		register(new ApplePieCondition.Serializer());
		register(new BookCondition.Serializer());
		register(new CardboardCondition.Serializer());
		register(new CookedEggCondition.Serializer());
		register(new CookedSquidCondition.Serializer());
		register(new FeatherWoolCondition.Serializer());
		register(new RawApplePieCondition.Serializer());
		
		RawSquidLootCondition.load();


		MinecraftForge.EVENT_BUS.register(this);
	}
}

Condition class:

package com.sokas.Mokas.recipes;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.sokas.Mokas.Main;
import com.sokas.Mokas.config.Config;
import com.sokas.Mokas.setup.LootHelpers;

import net.minecraft.loot.ILootSerializer;
import net.minecraft.loot.LootConditionType;
import net.minecraft.loot.LootContext;
import net.minecraft.loot.conditions.ILootCondition;
import net.minecraft.util.ResourceLocation;

public class RawSquidLootCondition implements ILootCondition {

	private static final LootConditionType TYPE = LootHelpers.registerCondition(
			new ResourceLocation(Main.MOD_ID, "raw_squid_condition"), new RawSquidLootCondition.Serializer());

	@Override
	public boolean test(LootContext t) {
		return Config.RAW_SQUID.get();
	}

	@Override
	public LootConditionType func_230419_b_() {
		return TYPE;
	}

	public static void load() {
		// Dummy call, to enforce class loading
	}

	public static class Serializer implements ILootSerializer<RawSquidLootCondition> {

		public static final Serializer INSTANCE = new Serializer();

		@Override
		public void serialize(JsonObject p_230424_1_, RawSquidLootCondition p_230424_2_,
				JsonSerializationContext p_230424_3_) {
		}

		@Override
		public RawSquidLootCondition deserialize(JsonObject p_230423_1_, JsonDeserializationContext p_230423_2_) {
			return new RawSquidLootCondition();
		}

	}
}

json:

{
  "type": "minecraft:entity",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "mokas:raw_squid",
          "functions": [
            {
              "function": "minecraft:set_count",
              "count": 1
            }
          ]
        }
      ],
      "conditions": [
        {
          "condition": "mokas:raw_squid_condition"
        }
      ]
    },
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:ink_sac",
          "functions": [
            {
              "function": "minecraft:set_count",
              "count": {
                "min": 1,
                "max": 3
              }
            },
            {
              "function": "minecraft:looting_enchant",
              "count": {
                "min": 0,
                "max": 1
              }
            }
          ]
        }
      ]
    }
  ]
}

 

Thanks in advance!

Edited by Sokas

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



×
×
  • Create New...

Important Information

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