I'm working on a mod with a friend and i can not get the NameKey to work. I've even put the super armor from the example mod which i know doesn't have this issue and it came up with the same error.
01/23/2019 18:47:37 | Halfling.Serialization.DeserializeException: Deserialization from source "<C:\Program Files\Cosmoteer\Data\rules.txt>" failed. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Halfling.Serialization.DeserializeException: Deserialization from source "<C:\Program Files\Cosmoteer\Data\ships\terran\terran.txt>/Terran" failed. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Halfling.Serialization.DeserializeException: Deserialization from source "<[user's home folder]\Documents\My Games\Cosmoteer\Mods\The Death-Volt Project\tritanium_armor\tritanium_armor.txt>/Part" failed. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Halfling.Serialization.DeserializeException: Deserialization from source "<[user's home folder]\Documents\My Games\Cosmoteer\Mods\The Death-Volt Project\tritanium_armor\tritanium_armor.txt>/Part/NameKey" failed. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Collections.Generic.KeyNotFoundException: String matching key 'Parts/Tritanium' was not found.
01/23/2019 18:47:37 | at Cosmoteer.Localization.Strings.GetText(String key) in C:\Users\Walt\Documents\Code\Cosmoteer\Source\Localization\Strings.cs:line 106
01/23/2019 18:47:37 | at Cosmoteer.Localization.KeyString..ctor(String key) in C:\Users\Walt\Documents\Code\Cosmoteer\Source\Localization\KeyString.cs:line 45
01/23/2019 18:47:37 | at Cosmoteer.Localization.Strings.<>c.<KeyString>b__14_0(String s) in C:\Users\Walt\Documents\Code\Cosmoteer\Source\Localization\Strings.cs:line 92
01/23/2019 18:47:37 | at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func
2 valueFactory)
01/23/2019 18:47:37 | --- End of inner exception stack trace ---
01/23/2019 18:47:37 | at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
01/23/2019 18:47:37 | at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
01/23/2019 18:47:37 | at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.GenericConstructorDeserializationMethod.TryDeserialize(TSerializer s, TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker, Object& obj) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 2258
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 555
01/23/2019 18:47:37 | --- End of inner exception stack trace ---
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 617
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.ReflectiveRead(TSource source, Object target, DeserializationReflectionInfo dri, Boolean forceNoOption, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 732
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.ReflectiveRead(TSource source, Object target, Boolean forceNoOption, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 235
01/23/2019 18:47:37 | at Cosmoteer.Ships.Parts.PartRules..ctor(ObjectTextSerializer s, IOTNode node, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Source\Ships\Parts\PartRules.cs:line 163
01/23/2019 18:47:37 | --- End of inner exception stack trace ---
01/23/2019 18:47:37 | at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
01/23/2019 18:47:37 | at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.SpecificConstructorDeserializationMethod.TryDeserialize(TSerializer s, TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker, Object& obj) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 2179
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 555
01/23/2019 18:47:37 | --- End of inner exception stack trace ---
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 617
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 183
01/23/2019 18:47:37 | at Halfling.Serialization.DefaultSerializers.ArraySerializer.FillArrayRanks(Array a, Type elementType, ObjectTextSerializer serializer, IOTNode curNode, List
1 curIndices, Int32 numRanks, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\DefaultSerializers\ArraySerializer.cs:line 332
01/23/2019 18:47:37 | at Halfling.Serialization.DefaultSerializers.ArraySerializer.FillArrayRanks(Array a, Type elementType, ObjectTextSerializer serializer, IOTNode curNode, List1 curIndices, Int32 numRanks, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\DefaultSerializers\ArraySerializer.cs:line 352
01/23/2019 18:47:37 | at Halfling.Serialization.DefaultSerializers.ArraySerializer.Read(ObjectTextSerializer s, IOTNode node, Type type, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\DefaultSerializers\ArraySerializer.cs:line 107
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.SpecificDeserializerDeserializationMethod.TryDeserialize(TSerializer s, TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker, Object& obj) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 1986
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 555
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.ReflectiveRead(TSource source, Object target, DeserializationReflectionInfo dri, Boolean forceNoOption, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 732
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.GenericSerialReaderImpl.ReflectiveRead(Object target, Type type, Boolean forceNoOption, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 2662
01/23/2019 18:47:37 | at Halfling.Serialization.Generic.GenericSerialReader.ReflectiveRead(Object target, Boolean forceNoOption, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Generic\GenericSerialReader.cs:line 134
01/23/2019 18:47:37 | at Cosmoteer.Ships.ShipRules..ctor(GenericSerialReader reader, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Source\Ships\ShipRules.cs:line 130
01/23/2019 18:47:37 | --- End of inner exception stack trace ---
01/23/2019 18:47:37 | at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
01/23/2019 18:47:37 | at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.GenericConstructorDeserializationMethod.TryDeserialize(TSerializer s, TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker, Object& obj) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 2256
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 555
01/23/2019 18:47:37 | --- End of inner exception stack trace ---
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 617
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 183
01/23/2019 18:47:37 | at Halfling.Serialization.DefaultSerializers.ArraySerializer.FillArrayRanks(Array a, Type elementType, ObjectTextSerializer serializer, IOTNode curNode, List
1 curIndices, Int32 numRanks, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\DefaultSerializers\ArraySerializer.cs:line 332
01/23/2019 18:47:37 | at Halfling.Serialization.DefaultSerializers.ArraySerializer.FillArrayRanks(Array a, Type elementType, ObjectTextSerializer serializer, IOTNode curNode, List1 curIndices, Int32 numRanks, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\DefaultSerializers\ArraySerializer.cs:line 352
01/23/2019 18:47:37 | at Halfling.Serialization.DefaultSerializers.ArraySerializer.Read(ObjectTextSerializer s, IOTNode node, Type type, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\DefaultSerializers\ArraySerializer.cs:line 107
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.SpecificDeserializerDeserializationMethod.TryDeserialize(TSerializer s, TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker, Object& obj) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 1986
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 555
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.ReflectiveRead(TSource source, Object target, DeserializationReflectionInfo dri, Boolean forceNoOption, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 732
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.GenericSerialReaderImpl.ReflectiveRead(Object target, Type type, Boolean forceNoOption, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 2662
01/23/2019 18:47:37 | at Halfling.Serialization.Generic.GenericSerialReader.ReflectiveRead(Object target, Boolean forceNoOption, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Generic\GenericSerialReader.cs:line 134
01/23/2019 18:47:37 | at Cosmoteer.Rules..ctor(GenericSerialReader reader, ProgressTracker pt) in C:\Users\Walt\Documents\Code\Cosmoteer\Source\Rules.cs:line 113
01/23/2019 18:47:37 | --- End of inner exception stack trace ---
01/23/2019 18:47:37 | at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
01/23/2019 18:47:37 | at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.GenericConstructorDeserializationMethod.TryDeserialize(TSerializer s, TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker, Object& obj) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 2256
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 555
01/23/2019 18:47:37 | --- End of inner exception stack trace ---
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker pt, Single weight, String sliceName, TIBaseDeserializer overrideSpecificDeserializer, IGenericDeserializer overrideGenericDeserializer, TIBaseContentDeserializer overrideSpecificContentDeserializer, IGenericContentDeserializer overrideGenericContentDeserializer) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 617
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer10.Read(TSource source, Type type, ReadFlags flags, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 183
01/23/2019 18:47:37 | at Halfling.Serialization.Base.BaseSerializer
10.Read[T](TSource source, ReadFlags flags, ProgressTracker progressTracker) in C:\Users\Walt\Documents\Code\Cosmoteer\Halfling\HalflingCore\Serialization\Base\BaseSerializer.cs:line 195
01/23/2019 18:47:37 | at Cosmoteer.Assets.LoaderThread() in C:\Users\Walt\Documents\Code\Cosmoteer\Source\Assets.cs:line 297
01/23/2019 18:47:37 | at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
01/23/2019 18:47:37 | at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
01/23/2019 18:47:37 | at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
01/23/2019 18:47:37 | at System.Threading.ThreadHelper.ThreadStart()
01/23/2019 18:47:38 | Actual data hash: b396d2120d2ade4766b696b23ce7d695
01/23/2019 18:47:38 | Expected data hash: b396d2120d2ade4766b696b23ce7d695
the .txt file for tritanium armor is this
Part : /BASE_PART
{
NameKey = "Parts/Tritanium"
IconNameKey = "Parts/TritaniumIcon"
IDString = deathvolt.tritanium_armor
OtherIDs = [armor]
EditorGroup = "Defenses"
DescriptionKey = "Parts/TritaniumDesc"
Cost = 450
Size = [1, 1]
MaxHealth = 5500
AreaDamageBlockFactor = .25
TypeCategories = [armor]
Flammable = false
InitialPenetrationResistance = 4
ContinuingPenetrationResistance = &InitialPenetrationResistance
CreatePartPerTileWhenGrabbed = ""
CrewSpeedFactor = 0
Density = 1.5
IsRotateable = true
IsWalled = true
AllowedDoorLocations = []
GeneratorRequiresDoor = false
IgnoreRotationForMirroredSelection = true
EditorIcon
{
Texture
{
File = "icon.png"
SampleMode = Linear
}
Size = [32, 32]
}
Components : /0/Components
{
Graphics
{
Type = Graphics
Location = [0.5, 0.5]
Floor // This is needed so that armor shows up in ship ghosts.
{
Layer = "floors"
DamageLevels
[
{
File = "tritanium.png"
Size = [1, 1]
}
{
File = "tritanium_33.png"
Size = [1, 1]
}
{
File = "tritanium_66.png"
Size = [1, 1]
}
]
}
Walls
{
Layer = "walls"
DamageLevels
[
{
File = "tritanium.png"
Size = [1, 1]
}
{
File = "tritanium_33.png"
Size = [1, 1]
}
{
File = "tritanium_66.png"
Size = [1, 1]
}
]
}
Roof
{
Layer = "roofs"
DamageLevels
[
{
File = "tritanium.png"
Size = [1, 1]
}
{
File = "tritanium_33.png"
Size = [1, 1]
}
{
File = "tritanium_66.png"
Size = [1, 1]
}
]
}
}
DestroyedEffects
{
Type = DeathEffects
MediaEffects = &/COMMON_EFFECTS/SmallPartDestroyedDry
Location = [.5, .5]
}
Blueprints
{
Type = BlueprintSprite
File = "blueprints.png"
Size = [1, 1]
}
}
}
and this is the en.txt in strings
Parts
{
Tritanium = "Tritanium Armor"
TritaniumIcon = "Tritanium Armor"
TritaniumDesc = "armor made of Tritanium, A slightly lighter, less penetration resistant, but overall stronger variant of the standard armour."
FighterCockpit = "Fighter Cockpit"
FighterCockpitIcon = "Fighter Cockpit"
FighterCockpitDesc = "a fighter cockpit that can generate power and comes with two crew."
}
i dont know what the issue is.