Files
Chisel/src/main/java/com/cricketcraft/chisel/config/Configurations.java
T

130 lines
6.4 KiB
Java

package com.cricketcraft.chisel.config;
import java.util.Locale;
import net.minecraftforge.common.config.Configuration;
import org.apache.commons.lang3.StringUtils;
import com.cricketcraft.chisel.Features;
public class Configurations {
public static Configuration config;
public static boolean configExists;
public static double concreteVelocity;
public static boolean ghostCloud;
public static int factoryBlockAmount;
public static boolean allowMossy;
public static boolean allowSmoothStone;
public static boolean chiselRecipe;
public static boolean enableFMP;
public static boolean chiselStoneToCobbleBricks;
public static int marbleAmount;
public static int limestoneAmount;
public static int graniteAmount;
public static int dioriteAmount;
public static int andesiteAmount;
public static int particlesTickrate;
public static boolean oldPillars;
public static boolean disableCTM;
public static boolean fancy;
public static boolean blockDescriptions;
public static boolean allowChiselDamage;
public static int ironChiselMaxDamage;
public static int diamondChiselMaxDamage;
public static boolean ironChiselCanLeftClick;
public static boolean ironChiselHasModes;
public static int ironChiselAttackDamage;
public static int diamondChiselAttackDamage;
public static boolean useRoadLineTool;
public static String getRoadLineTool;
public static int roadLineToolLevel;
public static boolean refreshConfig() {
String category;
/* general */
category = "general";
concreteVelocity = config.get(category, "concreteVelocity", 0.45,
"Traversing concrete roads, players will acceleration to this velocity. For reference, normal running speed is about 0.28. Set to 0 to disable acceleration.").getDouble(0.45);
ghostCloud = config.get(category, "doesCloudRenderLikeGhost", true).getBoolean(true);
factoryBlockAmount = config.get(category, "amountYouGetFromFactoryBlockCrafting", 32).getInt(32);
allowMossy = config.get(category, "allowCobbleToMossyInChisel", true).getBoolean(true);
allowSmoothStone = config.get(category, "allowSmoothStoneToStoneBricksAndBack", true).getBoolean(true);
chiselRecipe = config.get(category, "chiselAlternateRecipe", false, "Use alternative crafting recipe for the chisel").getBoolean(false);
enableFMP = config.get(category, "enableFMP", true, "Do you want to enable FMP").getBoolean(true);
chiselStoneToCobbleBricks = config.get(category, "chiselStoneToCobbleBricks", true, "Chisel stone to cobblestone and bricks by left clicking.").getBoolean(false);
/* worldgen */
category = "worldgen";
marbleAmount = config.get(category, "marbleAmount", 7, "Amount of marble to generate in the world; use 0 for none").getInt(7);
limestoneAmount = config.get(category, "limestoneAmount", 8, "Amount of limestone to generate in the world; use 0 for none").getInt(8);
graniteAmount = config.get(category, "graniteAmount", 8, "Amount of granite to generate in the world; use 0 for none.").getInt(8);
dioriteAmount = config.get(category, "dioriteAmount", 8, "Amount of diorite to generate in the world; use 0 for none.").getInt(8);
andesiteAmount = config.get(category, "andesiteAmount", 8, "Amount of andesite to generate in the world; use 0 for none.").getInt(8);
/* client */
category = "client";
particlesTickrate = config.get(category, "particleTickrate", 1, "Particle tick rate. Greater value = less particles.").getInt(1);
oldPillars = config.get(category, "pillarOldGraphics", false, "Use old pillar textures").getBoolean(false);
disableCTM = !config.get(category, "connectedTextures", true, "Enable connected textures").getBoolean(true);
fancy = config.get(category, "fancyLeaves", true, "Enable fancy textures").getBoolean(true);
blockDescriptions = config.get(category, "tooltipsUseBlockDescriptions", true, "Make variations of blocks have the same name, and use the description in tooltip to distinguish them.")
.getBoolean(true);
/* chisel */
category = "chisel";
allowChiselDamage = config.get(category, "allowChiselDamage", true, "Should the chisel be damageable and take damage when it chisels something.").getBoolean();
ironChiselMaxDamage = config.get(category, "ironChiselMaxDamage", 500, "The max damage of the standard iron chisel. Default: 500.").getInt();
diamondChiselMaxDamage = config.get(category, "diamondChiselMaxDamage", 5000, "The max damage of the diamond chisel. Default: 5000").getInt();
ironChiselCanLeftClick = config.get(category, "ironChiselCanLeftClick", true, "If this is true, the iron chisel can left click chisel blocks. If false, it cannot.").getBoolean();
ironChiselHasModes = config.get(category, "ironChiselHasModes", false, "If this is true, the iron chisel can change its chisel mode just as the diamond chisel can.").getBoolean();
ironChiselAttackDamage = config.get(category, "ironChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the iron chisel inflicts when it is used to attack an entity.").getInt();
diamondChiselAttackDamage = config.get(category, "diamondChiselAttackDamage", 2, "The extra attack damage points (in half hearts) that the diamond chisel inflicts when it is used to attack an entity.").getInt();
/* block */
category = "block";
useRoadLineTool = config.get(category, "useRoadLineTool", false, "Should the road line require a tool to break (If false, road lines can be broken in Adventure)").getBoolean();
getRoadLineTool = config.get(category, "getRoadLineTool", "pickaxe", "The tool that is able to break roadLines (requires useRoadLineTool to be true to take effect)").getString();
roadLineToolLevel = config.get(category, "roadLineToolLevel", 0,
"The lowest harvest level of the tool able to break the road lines (requires useRoadLineTool to be true to take effect) (0 = Wood/Gold, 1 = Stone, 2 = Iron, 3 = Diamond) Default: 0")
.getInt();
if (config.hasChanged()) {
config.save();
}
return true;
}
public static boolean featureEnabled(Features feature) {
return config.get("features", featureName(feature), true).getBoolean(true) && refreshConfig();
}
/** Makes the old camelCase names from the new CONSTANT_CASE names */
public static String featureName(Features feature) {
String[] words = feature.name().toLowerCase(Locale.ENGLISH).split("_");
if (words.length == 1) {
return words[0];
}
String ret = words[0];
for (int i = 1; i < words.length; i++) {
ret += StringUtils.capitalize(words[i]);
}
return ret;
}
@Deprecated
public static boolean featureEnabled(String feature) {
return false;
}
}