mffs/src/main/java/mffs/Settings.java

189 lines
8.6 KiB
Java

package mffs;
import java.io.File;
import cpw.mods.fml.common.Loader;
import mffs.api.Blacklist;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
public class Settings {
public static final Configuration CONFIGURATION;
public static final int BLOCK_ID_PREFIX = 1680;
public static final int ITEM_ID_PREFIX = 11130;
private static int NEXT_BLOCK_ID;
private static int NEXT_ITEM_ID;
public static int MAX_FORCE_FIELDS_PER_TICK;
public static int MAX_FORCE_FIELD_SCALE;
public static boolean INTERACT_CREATIVE;
public static boolean LOAD_CHUNKS;
public static boolean OP_OVERRIDE;
public static boolean USE_CACHE;
public static boolean ENABLE_ELECTRICITY;
public static boolean CONSERVE_PACKETS;
public static boolean HIGH_GRAPHICS;
public static int INTERDICTION_MURDER_ENERGY;
public static final int MAX_FREQUENCY_DIGITS = 6;
public static boolean ENABLE_MANIPULATOR;
public static int getNextBlockID() {
return ++Settings.NEXT_BLOCK_ID;
}
public static int getNextItemID() {
return ++Settings.NEXT_ITEM_ID;
}
public static void load() {
Settings.CONFIGURATION.load();
Settings.ENABLE_MANIPULATOR
= Settings.CONFIGURATION
.get("general", "Enable Force Manipulator", Settings.ENABLE_MANIPULATOR)
.getBoolean(Settings.ENABLE_MANIPULATOR);
final Property propFieldScale = Settings.CONFIGURATION.get(
"general", "Max Force Field Scale", Settings.MAX_FORCE_FIELD_SCALE
);
Settings.MAX_FORCE_FIELD_SCALE
= propFieldScale.getInt(Settings.MAX_FORCE_FIELD_SCALE);
final Property propInterdiction = Settings.CONFIGURATION.get(
"general",
"Interdiction Murder Fortron Consumption",
Settings.INTERDICTION_MURDER_ENERGY
);
Settings.INTERDICTION_MURDER_ENERGY
= propInterdiction.getInt(Settings.INTERDICTION_MURDER_ENERGY);
final Property propCreative = Settings.CONFIGURATION.get(
"general", "Effect Creative Players", Settings.INTERACT_CREATIVE
);
propCreative.comment
= "Should the interdiction matrix interact with creative players?.";
Settings.INTERACT_CREATIVE = propCreative.getBoolean(Settings.INTERACT_CREATIVE);
final Property propChunkLoading
= Settings.CONFIGURATION.get("general", "Load Chunks", Settings.LOAD_CHUNKS);
propChunkLoading.comment
= "Set this to false to turn off the MFFS Chunkloading capabilities.";
Settings.LOAD_CHUNKS = propChunkLoading.getBoolean(Settings.LOAD_CHUNKS);
final Property propOpOverride
= Settings.CONFIGURATION.get("general", "Op Override", Settings.OP_OVERRIDE);
propOpOverride.comment
= "Allow the operator(s) to override security measures created by MFFS?";
Settings.OP_OVERRIDE = propOpOverride.getBoolean(Settings.OP_OVERRIDE);
final Property propUseCache
= Settings.CONFIGURATION.get("general", "Use Cache", Settings.USE_CACHE);
propUseCache.comment
= "Cache allows temporary data saving to decrease calculations required.";
Settings.USE_CACHE = propUseCache.getBoolean(Settings.USE_CACHE);
final Property maxFFGenPerTick = Settings.CONFIGURATION.get(
"general", "Field Calculation Per Tick", Settings.MAX_FORCE_FIELDS_PER_TICK
);
maxFFGenPerTick.comment
= "How many force field blocks can be generated per tick? Less reduces lag.";
Settings.MAX_FORCE_FIELDS_PER_TICK
= maxFFGenPerTick.getInt(Settings.MAX_FORCE_FIELDS_PER_TICK);
final Property useElectricity = Settings.CONFIGURATION.get(
"general", "Require Electricity?", Settings.ENABLE_ELECTRICITY
);
useElectricity.comment
= "Turning this to false will make MFFS run without electricity or energy systems required. Great for vanilla!";
Settings.ENABLE_ELECTRICITY
= useElectricity.getBoolean(Settings.ENABLE_ELECTRICITY);
final Property conservePackets = Settings.CONFIGURATION.get(
"general", "Conserve Packets?", Settings.CONSERVE_PACKETS
);
conservePackets.comment
= "Turning this to false will enable better client side packet and updates but in the cost of more packets sent.";
Settings.CONSERVE_PACKETS = conservePackets.getBoolean(Settings.CONSERVE_PACKETS);
final Property highGraphics = Settings.CONFIGURATION.get(
"general", "High Graphics", Settings.HIGH_GRAPHICS
);
highGraphics.comment
= "Turning this to false will reduce rendering and client side packet graphical packets.";
Settings.CONSERVE_PACKETS = highGraphics.getBoolean(Settings.HIGH_GRAPHICS);
final Property forceManipulatorBlacklist
= Settings.CONFIGURATION.get("general", "Force Manipulator Blacklist", "");
highGraphics.comment
= "Put a list of block IDs to be not-moved by the force manipulator. Separate by commas, no space.";
final String blackListString = forceManipulatorBlacklist.getString();
if (blackListString != null) {
for (final String blockIDString : blackListString.split(",")) {
Block b = Block.getBlockFromName(blockIDString);
if (b == null) {
ModularForceFieldSystem.LOGGER.severe(
"Invalid block blacklist ID \'" + blockIDString + "\'!"
);
continue;
}
Blacklist.forceManipulationBlacklist.add(b);
}
}
final Property blacklist1
= Settings.CONFIGURATION.get("general", "Stabilization Blacklist", "");
final String blackListString2 = blacklist1.getString();
if (blackListString2 != null) {
for (final String blockIDString2 : blackListString2.split(",")) {
Block b = Block.getBlockFromName(blockIDString2);
if (b == null) {
ModularForceFieldSystem.LOGGER.severe(
"Invalid block blacklist ID \'" + blockIDString2 + "\'!"
);
continue;
}
Blacklist.stabilizationBlacklist.add(b);
}
}
final Property blacklist2
= Settings.CONFIGURATION.get("general", "Disintegration Blacklist", "");
final String blackListString3 = blacklist2.getString();
if (blackListString3 != null) {
for (final String blockIDString3 : blackListString3.split(",")) {
if (blockIDString3 != null && !blockIDString3.isEmpty()) {
Block b = Block.getBlockFromName(blockIDString3);
if (b == null) {
ModularForceFieldSystem.LOGGER.severe(
"Invalid block blacklist ID \'" + blockIDString3 + "\'!"
);
continue;
}
Blacklist.disintegrationBlacklist.add(b);
}
}
}
Blacklist.stabilizationBlacklist.add(Blocks.water);
Blacklist.stabilizationBlacklist.add(Blocks.flowing_water);
Blacklist.stabilizationBlacklist.add(Blocks.lava);
Blacklist.stabilizationBlacklist.add(Blocks.flowing_lava);
Blacklist.disintegrationBlacklist.add(Blocks.water);
Blacklist.disintegrationBlacklist.add(Blocks.flowing_water);
Blacklist.disintegrationBlacklist.add(Blocks.lava);
Blacklist.stabilizationBlacklist.add(Blocks.flowing_lava);
Blacklist.forceManipulationBlacklist.add(Blocks.bedrock);
Blacklist.forceManipulationBlacklist.add(ModularForceFieldSystem.blockForceField);
Settings.CONFIGURATION.save();
}
static {
CONFIGURATION = new Configuration(
new File(Loader.instance().getConfigDir(), "Modular Force Field System.cfg")
);
Settings.NEXT_BLOCK_ID = 1680;
Settings.NEXT_ITEM_ID = 11130;
Settings.MAX_FORCE_FIELDS_PER_TICK = 1000;
Settings.MAX_FORCE_FIELD_SCALE = 200;
Settings.INTERACT_CREATIVE = true;
Settings.LOAD_CHUNKS = true;
Settings.OP_OVERRIDE = true;
Settings.USE_CACHE = true;
Settings.ENABLE_ELECTRICITY = true;
Settings.CONSERVE_PACKETS = true;
Settings.HIGH_GRAPHICS = true;
Settings.INTERDICTION_MURDER_ENERGY = 0;
Settings.ENABLE_MANIPULATOR = true;
}
}