diff --git a/src/main/java/mod/chiselsandbits/api/IChiselAndBitsAPI.java b/src/main/java/mod/chiselsandbits/api/IChiselAndBitsAPI.java index 6ec30659..c195fdb9 100644 --- a/src/main/java/mod/chiselsandbits/api/IChiselAndBitsAPI.java +++ b/src/main/java/mod/chiselsandbits/api/IChiselAndBitsAPI.java @@ -164,8 +164,24 @@ IBitBag getBitbag( ItemStack itemstack ); /** - * Begins an undo operation, starting two operations without ending the - * previous operation will throw a runtime exception. + * Example: int stackSize = + * api.getParameter(IntegerParam.BIT_BAG_MAX_STACK_SIZE ); + * + * @param which + * - refer to ParameterType for list of possible values. + * @return value of specified parameter. + */ + public T getParameter( + ParameterType which ); + + /** + * Begins an undo group, starting two operations without ending the previous + * operation will throw a runtime exception. + * + * This is used to merge multiple blocks into a single operation, undo steps + * will be recorded regardless of usage of this method, however its + * suggested to use groups in any case where a change well affect more then + * one block. * * @formatter:off * diff --git a/src/main/java/mod/chiselsandbits/api/ParameterType.java b/src/main/java/mod/chiselsandbits/api/ParameterType.java new file mode 100644 index 00000000..92c1232a --- /dev/null +++ b/src/main/java/mod/chiselsandbits/api/ParameterType.java @@ -0,0 +1,66 @@ +package mod.chiselsandbits.api; + +/** + * use these Enums to retrieve various settings or runtime values via + * {@link IChiselAndBitsAPI}.getParameter + */ +public interface ParameterType +{ + + public ParamTypes getType(); + + public static enum ParamTypes + { + BOOLEAN, + FLOAT, + DOUBLE, + INTEGER + }; + + public static enum BooleanParam implements ParameterType + { + ENABLE_MCMP(/* enableMCMultipart */), + ENABLE_DAMAGE_TOOLS(/* damageTools */), + ENABLE_BIT_LIGHT_SOURCE(/* enableBitLightSource */); + + @Override + public mod.chiselsandbits.api.ParameterType.ParamTypes getType() + { + return ParamTypes.BOOLEAN; + } + }; + + public static enum FloatParam implements ParameterType + { + BLOCK_FULL_LIGHT_PERCENTAGE(/* bitLightPercentage */); + + @Override + public mod.chiselsandbits.api.ParameterType.ParamTypes getType() + { + return ParamTypes.FLOAT; + } + } + + public static enum DoubleParam implements ParameterType + { + BIT_MAX_DRAWN_REGION_SIZE(/* maxDrawnRegionSize */); + + @Override + public mod.chiselsandbits.api.ParameterType.ParamTypes getType() + { + return ParamTypes.DOUBLE; + } + } + + public static enum IntegerParam implements ParameterType + { + BIT_BAG_MAX_STACK_SIZE(/* bagStackSize */); + + @Override + public mod.chiselsandbits.api.ParameterType.ParamTypes getType() + { + return ParamTypes.INTEGER; + } + } + +} diff --git a/src/main/java/mod/chiselsandbits/core/api/ChiselAndBitsAPI.java b/src/main/java/mod/chiselsandbits/core/api/ChiselAndBitsAPI.java index 5c7631a6..2d4932f1 100644 --- a/src/main/java/mod/chiselsandbits/core/api/ChiselAndBitsAPI.java +++ b/src/main/java/mod/chiselsandbits/core/api/ChiselAndBitsAPI.java @@ -9,12 +9,17 @@ import mod.chiselsandbits.api.IChiselAndBitsAPI; import mod.chiselsandbits.api.ItemType; import mod.chiselsandbits.api.ModKeyBinding; +import mod.chiselsandbits.api.ParameterType; +import mod.chiselsandbits.api.ParameterType.DoubleParam; +import mod.chiselsandbits.api.ParameterType.FloatParam; +import mod.chiselsandbits.api.ParameterType.IntegerParam; import mod.chiselsandbits.chiseledblock.BlockBitInfo; import mod.chiselsandbits.chiseledblock.ItemBlockChiseled; import mod.chiselsandbits.chiseledblock.TileEntityBlockChiseled; import mod.chiselsandbits.chiseledblock.data.BitLocation; import mod.chiselsandbits.chiseledblock.data.VoxelBlob; import mod.chiselsandbits.client.UndoTracker; +import mod.chiselsandbits.config.ModConfig; import mod.chiselsandbits.core.ChiselsAndBits; import mod.chiselsandbits.core.ClientSide; import mod.chiselsandbits.helpers.BitOperation; @@ -385,4 +390,54 @@ public KeyBinding getKeyBinding( } } + @SuppressWarnings( { "rawtypes", "unchecked" } ) + @Override + public Object getParameter( + ParameterType which ) + { + ModConfig config = ChiselsAndBits.getConfig(); + + switch ( (ParameterType.ParamTypes) which.getType() ) + { + case BOOLEAN: + switch ( (ParameterType.BooleanParam) which ) + { + case ENABLE_MCMP: + return true; + case ENABLE_DAMAGE_TOOLS: + return config.damageTools; + case ENABLE_BIT_LIGHT_SOURCE: + return config.enableBitLightSource; + } + break; + + case DOUBLE: + switch ( (DoubleParam) which ) + { + case BIT_MAX_DRAWN_REGION_SIZE: + return config.maxDrawnRegionSize; + } + break; + + case FLOAT: + switch ( (FloatParam) which ) + { + case BLOCK_FULL_LIGHT_PERCENTAGE: + return config.bitLightPercentage; + } + break; + + case INTEGER: + switch ( (IntegerParam) which ) + { + case BIT_BAG_MAX_STACK_SIZE: + return config.bagStackSize; + } + break; + + } + + return null; + } + }