mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 03:47:27 +00:00
277 lines
11 KiB
Java
277 lines
11 KiB
Java
package noppes.npcs.config;
|
|
|
|
import cpw.mods.fml.common.FMLLog;
|
|
import net.minecraftforge.common.config.Configuration;
|
|
import net.minecraftforge.common.config.Property;
|
|
import noppes.npcs.CustomNpcs;
|
|
import noppes.npcs.config.legacy.LegacyConfig;
|
|
import org.apache.logging.log4j.Level;
|
|
|
|
import java.io.File;
|
|
|
|
public class ConfigMain
|
|
{
|
|
public static Configuration config;
|
|
|
|
public final static String GENERAL = "General";
|
|
public final static String NPC = "NPC";
|
|
public final static String UPDATE = "Update";
|
|
|
|
/**
|
|
* General Main Properties
|
|
**/
|
|
|
|
public static Property EnableUpdateCheckerProperty;
|
|
public static boolean EnableUpdateChecker = true;
|
|
|
|
public static Property DisableExtraBlockProperty;
|
|
public static boolean DisableExtraBlock = false;
|
|
|
|
public static Property DisableExtraItemsProperty;
|
|
public static boolean DisableExtraItems = false;
|
|
|
|
public static Property DisableEnchantsProperty;
|
|
public static boolean DisableEnchants = false;
|
|
|
|
public static Property GunsEnabledProperty;
|
|
public static boolean GunsEnabled = true;
|
|
|
|
public static Property EnchantStartIdProperty;
|
|
public static int EnchantStartId = 100;
|
|
|
|
public static Property LeavesDecayEnabledProperty;
|
|
public static boolean LeavesDecayEnabled = true;
|
|
|
|
public static Property VineGrowthEnabledProperty;
|
|
public static boolean VineGrowthEnabled = true;
|
|
|
|
public static Property IceMeltsEnabledProperty;
|
|
public static boolean IceMeltsEnabled = true;
|
|
|
|
public static Property SoulStoneAnimalsProperty;
|
|
public static boolean SoulStoneAnimals = true;
|
|
|
|
public static Property SoulStoneVillagersProperty;
|
|
public static boolean SoulStoneVillagers = false;
|
|
|
|
public static Property SoulStoneNPCsProperty;
|
|
public static boolean SoulStoneNPCs = false;
|
|
|
|
public static Property SoulStoneFriendlyNPCsProperty;
|
|
public static boolean SoulStoneFriendlyNPCs = false;
|
|
|
|
public static Property DatFormatProperty;
|
|
public static boolean DatFormat = false;
|
|
|
|
/**
|
|
* General NPC Properties
|
|
**/
|
|
|
|
public static Property OpsOnlyProperty;
|
|
public static boolean OpsOnly = false;
|
|
|
|
public static Property NpcNavRangeProperty;
|
|
public static int NpcNavRange = 32;
|
|
|
|
public static Property NpcSizeLimitProperty;
|
|
public static int NpcSizeLimit = 100;
|
|
|
|
public static Property DefaultInteractLineProperty;
|
|
public static String DefaultInteractLine = "Hello @p";
|
|
|
|
public static Property ChunkLoadersProperty;
|
|
public static int ChunkLoaders = 20;
|
|
|
|
public static Property DialogImageLimitProperty;
|
|
public static int DialogImageLimit = 10;
|
|
|
|
public static Property SkinOverlayLimitProperty;
|
|
public static int SkinOverlayLimit = 10;
|
|
|
|
public static Property NpcUseOpCommandsProperty;
|
|
public static boolean NpcUseOpCommands = false;
|
|
|
|
/**
|
|
* Update Properties
|
|
**/
|
|
|
|
public static Property TrackedQuestUpdateFrequencyProperty;
|
|
public static int TrackedQuestUpdateFrequency = 5;
|
|
|
|
public static void init(File configFile)
|
|
{
|
|
config = new Configuration(configFile);
|
|
|
|
try
|
|
{
|
|
config.load();
|
|
|
|
// General
|
|
EnableUpdateCheckerProperty = config.get(GENERAL, "Enables Update Checker", true);
|
|
EnableUpdateChecker = EnableUpdateCheckerProperty.getBoolean(true);
|
|
|
|
DisableExtraBlockProperty = config.get(GENERAL, "Disable Extra Blocks", false);
|
|
DisableExtraBlock = DisableExtraBlockProperty.getBoolean(false);
|
|
|
|
DisableExtraItemsProperty = config.get(GENERAL, "Disable Extra Items", false);
|
|
DisableExtraItems = DisableExtraItemsProperty.getBoolean(false);
|
|
|
|
GunsEnabledProperty = config.get(GENERAL, "Guns Enabled", true, "Set to false if you want to disable guns");
|
|
GunsEnabled = GunsEnabledProperty.getBoolean(true);
|
|
|
|
DisableEnchantsProperty = config.get(GENERAL, "Disable Enchants", false);
|
|
DisableEnchants = DisableEnchantsProperty.getBoolean(false);
|
|
|
|
EnchantStartIdProperty = config.get(GENERAL, "Enchant Start ID", 100, "Start ID for enchants. IDs can only range from 0-256");
|
|
EnchantStartId = EnchantStartIdProperty.getInt(100);
|
|
|
|
LeavesDecayEnabledProperty = config.get(GENERAL, "Leaves Decay Enabled", true);
|
|
LeavesDecayEnabled = LeavesDecayEnabledProperty.getBoolean(true);
|
|
|
|
VineGrowthEnabledProperty = config.get(GENERAL, "Vine Growth Enabled", true);
|
|
VineGrowthEnabled = VineGrowthEnabledProperty.getBoolean(true);
|
|
|
|
IceMeltsEnabledProperty = config.get(GENERAL, "Ice Melt Enabled", true);
|
|
IceMeltsEnabled = IceMeltsEnabledProperty.getBoolean(true);
|
|
|
|
SoulStoneAnimalsProperty = config.get(GENERAL, "Normal playes can use soulstone on Animals", true);
|
|
SoulStoneAnimals = SoulStoneAnimalsProperty.getBoolean(true);
|
|
|
|
SoulStoneVillagersProperty = config.get(GENERAL, "Normal playes can use soulstone on Villagers", true);
|
|
SoulStoneVillagers = SoulStoneVillagersProperty.getBoolean(true);
|
|
|
|
SoulStoneNPCsProperty = config.get(GENERAL, "Normal playes can use soulstone on NPCs", false);
|
|
SoulStoneNPCs = SoulStoneNPCsProperty.getBoolean(false);
|
|
|
|
SoulStoneFriendlyNPCsProperty = config.get(GENERAL, "Normal playes can use soulstone on Friendly NPCs", false);
|
|
SoulStoneFriendlyNPCs = SoulStoneFriendlyNPCsProperty.getBoolean(false);
|
|
|
|
DatFormatProperty = config.get(GENERAL, "Dat Format for PlayerData", false, "This will convert all existing JSON PlayerData files to (.dat). Huge Performance Boost.");
|
|
DatFormat = DatFormatProperty.getBoolean(false);
|
|
|
|
// NPC
|
|
NpcNavRangeProperty = config.get(NPC, "NPC Navigation Range", 32, "Navigation search range for NPCs. Not recommended to increase if you have a slow pc or on a server. Minimum of 16, maximum of 96.");
|
|
NpcNavRange = NpcNavRangeProperty.getInt(32);
|
|
|
|
OpsOnlyProperty = config.get(NPC, "Only Ops Edit NPCs", false, "Only ops can create and edit npcs");
|
|
OpsOnly = OpsOnlyProperty.getBoolean(false);
|
|
|
|
NpcUseOpCommandsProperty = config.get(NPC, "NPC Use Op Commands", false, "Set to true if you want the dialog command option to be able to use op commands like tp etc");
|
|
NpcUseOpCommands = NpcUseOpCommandsProperty.getBoolean(false);
|
|
|
|
DefaultInteractLineProperty = config.get(NPC, "Default Interaction Line", "Hello @p", "Default interact line. Leave empty to not have one");
|
|
DefaultInteractLine = DefaultInteractLineProperty.getString();
|
|
|
|
ChunkLoadersProperty = config.get(NPC, "Chunk Loader Limit", 20, "Number of chunk loading npcs that can be active at the same time");
|
|
ChunkLoaders = ChunkLoadersProperty.getInt(20);
|
|
|
|
DialogImageLimitProperty = config.get(NPC, "Dialog Image Limit", 10, "The maximum number of images any dialog can hold.");
|
|
DialogImageLimit = DialogImageLimitProperty.getInt(10);
|
|
|
|
NpcSizeLimitProperty = config.get(NPC, "NPC Size Limit", 100, "Size limit for NPCs. Default 100, larger sizes may cause lag on clients and servers that can't take it!");
|
|
NpcSizeLimit = NpcSizeLimitProperty.getInt(100);
|
|
|
|
SkinOverlayLimitProperty = config.get(NPC, "Skin Overlay Limit", 10, "The maximum number of overlays any npc/player can hold.");
|
|
SkinOverlayLimit = SkinOverlayLimitProperty.getInt(10);
|
|
|
|
// Update
|
|
TrackedQuestUpdateFrequencyProperty = config.get(UPDATE, "Tracked Quest Update Frequency", 5, "How often in seconds to update a players tracked quest. [Only applies to Item Quest currently]");
|
|
TrackedQuestUpdateFrequency = TrackedQuestUpdateFrequencyProperty.getInt(5);
|
|
|
|
// Convert to Legacy
|
|
if(CustomNpcs.legacyExist){
|
|
EnableUpdateChecker = LegacyConfig.EnableUpdateChecker;
|
|
EnableUpdateCheckerProperty.set(EnableUpdateChecker);
|
|
|
|
DisableExtraBlock = LegacyConfig.DisableExtraBlock;
|
|
DisableExtraBlockProperty.set(DisableExtraBlock);
|
|
|
|
DisableExtraItems = LegacyConfig.DisableExtraItems;
|
|
DisableExtraItemsProperty.set(DisableExtraItems);
|
|
|
|
DisableEnchants = LegacyConfig.DisableEnchants;
|
|
DisableEnchantsProperty.set(DisableEnchants);
|
|
|
|
GunsEnabled = LegacyConfig.GunsEnabled;
|
|
GunsEnabledProperty.set(GunsEnabled);
|
|
|
|
EnchantStartId = LegacyConfig.EnchantStartId;
|
|
EnchantStartIdProperty.set(EnchantStartId);
|
|
|
|
LeavesDecayEnabled = LegacyConfig.LeavesDecayEnabled;
|
|
LeavesDecayEnabledProperty.set(LeavesDecayEnabled);
|
|
|
|
VineGrowthEnabled = LegacyConfig.VineGrowthEnabled;
|
|
VineGrowthEnabledProperty.set(VineGrowthEnabled);
|
|
|
|
IceMeltsEnabled = LegacyConfig.IceMeltsEnabled;
|
|
IceMeltsEnabledProperty.set(IceMeltsEnabled);
|
|
|
|
SoulStoneAnimals = LegacyConfig.SoulStoneAnimals;
|
|
SoulStoneAnimalsProperty.set(SoulStoneAnimals);
|
|
|
|
SoulStoneVillagers = LegacyConfig.SoulStoneVillagers;
|
|
SoulStoneVillagersProperty.set(SoulStoneVillagers);
|
|
|
|
SoulStoneNPCs = LegacyConfig.SoulStoneNPCs;
|
|
SoulStoneNPCsProperty.set(SoulStoneNPCs);
|
|
|
|
SoulStoneFriendlyNPCs = LegacyConfig.SoulStoneFriendlyNPCs;
|
|
SoulStoneFriendlyNPCsProperty.set(SoulStoneFriendlyNPCs);
|
|
|
|
OpsOnly = LegacyConfig.OpsOnly;
|
|
OpsOnlyProperty.set(OpsOnly);
|
|
|
|
NpcNavRange = LegacyConfig.NpcNavRange;
|
|
NpcNavRangeProperty.set(NpcNavRange);
|
|
|
|
NpcSizeLimit = LegacyConfig.NpcSizeLimit;
|
|
NpcSizeLimitProperty.set(NpcSizeLimit);
|
|
|
|
DefaultInteractLine = LegacyConfig.DefaultInteractLine;
|
|
DefaultInteractLineProperty.set(DefaultInteractLine);
|
|
|
|
ChunkLoaders = LegacyConfig.ChunkLoaders;
|
|
ChunkLoadersProperty.set(ChunkLoaders);
|
|
|
|
DialogImageLimit = LegacyConfig.DialogImageLimit;
|
|
DialogImageLimitProperty.set(DialogImageLimit);
|
|
|
|
SkinOverlayLimit = LegacyConfig.SkinOverlayLimit;
|
|
SkinOverlayLimitProperty.set(SkinOverlayLimit);
|
|
|
|
NpcUseOpCommands = LegacyConfig.NpcUseOpCommands;
|
|
NpcUseOpCommandsProperty.set(NpcUseOpCommands);
|
|
}
|
|
|
|
if (NpcNavRange < 16) {
|
|
NpcNavRange = 16;
|
|
}
|
|
if (NpcNavRange > 96) {
|
|
NpcNavRange = 96;
|
|
}
|
|
|
|
if(NpcSizeLimit < 1){
|
|
NpcSizeLimit = 1;
|
|
}
|
|
|
|
if (DialogImageLimit < 0) {
|
|
DialogImageLimit = 0;
|
|
}
|
|
|
|
if (SkinOverlayLimit < 0) {
|
|
SkinOverlayLimit = 0;
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
FMLLog.log(Level.ERROR, e, "CNPC+ has had a problem loading its main configuration");
|
|
}
|
|
finally
|
|
{
|
|
if (config.hasChanged()) {
|
|
config.save();
|
|
}
|
|
}
|
|
}
|
|
} |