From 97c06db6efcf520cf65740b28e85ba2f417550e7 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Sun, 6 Apr 2014 01:51:44 -0500 Subject: [PATCH] Use ordinal of parts/items as the default meta, allows for holes in the setup but lets default configs be consistent regardless of other mods. --- core/AEConfig.java | 38 +++++++++++++++++++++++-------- items/materials/ItemMaterial.java | 2 +- items/parts/ItemPart.java | 2 +- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/core/AEConfig.java b/core/AEConfig.java index 3e48dd90f..901850ea7 100644 --- a/core/AEConfig.java +++ b/core/AEConfig.java @@ -236,20 +236,40 @@ public class AEConfig extends Configuration implements IConfigureableObject, ICo super.save(); } - public int getFreeMaterial() + public int getFreeIDSLot(int varID, String Category) { + boolean alreadyUsed = false; int min = 0; - for (Property p : getCategory( "materials" ).getValues().values()) - min = Math.max( min, p.getInt() + 1 ); - return min; + + for (Property p : getCategory( Category ).getValues().values()) + { + int thisInt = p.getInt(); + + if ( varID == thisInt ) + alreadyUsed = true; + + min = Math.max( min, thisInt + 1 ); + } + + if ( alreadyUsed ) + { + if ( min < 1000 ) + min = 1000; + + return min; + } + + return varID; } - public int getFreePart() + public int getFreeMaterial(int varID) { - int min = 0; - for (Property p : getCategory( "parts" ).getValues().values()) - min = Math.max( min, p.getInt() + 1 ); - return min; + return getFreeIDSLot( varID, "materials" ); + } + + public int getFreePart(int varID) + { + return getFreeIDSLot( varID, "parts" ); } @Override diff --git a/items/materials/ItemMaterial.java b/items/materials/ItemMaterial.java index ef495e579..f669bab3e 100644 --- a/items/materials/ItemMaterial.java +++ b/items/materials/ItemMaterial.java @@ -136,7 +136,7 @@ public class ItemMaterial extends AEBaseItem implements IStorageComponent, IUpgr if ( enabled ) { - int newMaterialNum = AEConfig.instance.get( "materials", name, AEConfig.instance.getFreeMaterial() ).getInt(); + int newMaterialNum = AEConfig.instance.get( "materials", name, AEConfig.instance.getFreeMaterial( mat.ordinal() ) ).getInt(); mat.damageValue = newMaterialNum; ItemStackSrc output = new ItemStackSrc( this, newMaterialNum ); diff --git a/items/parts/ItemPart.java b/items/parts/ItemPart.java index d12027dd9..85e261694 100644 --- a/items/parts/ItemPart.java +++ b/items/parts/ItemPart.java @@ -80,7 +80,7 @@ public class ItemPart extends AEBaseItem implements IPartItem, IItemGroup if ( enabled ) { - int newPartNum = AEConfig.instance.get( "parts", name, AEConfig.instance.getFreePart() ).getInt(); + int newPartNum = AEConfig.instance.get( "parts", name, AEConfig.instance.getFreePart( varID ) ).getInt(); ItemStackSrc output = new ItemStackSrc( this, newPartNum ); PartTypeIst pti = new PartTypeIst();