Add resistance to MultiItems to prevent crashes from invalid stacks.
This commit is contained in:
@@ -208,6 +208,10 @@ public class Registration
|
|||||||
for (MaterialType mat : MaterialType.values())
|
for (MaterialType mat : MaterialType.values())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
if ( mat == MaterialType.InvalidType )
|
||||||
|
((ItemMultiMaterial) materialItem.item()).createMaterial( mat );
|
||||||
|
else
|
||||||
{
|
{
|
||||||
Field f = materialClass.getField( "material" + mat.name() );
|
Field f = materialClass.getField( "material" + mat.name() );
|
||||||
ItemStackSrc is = ((ItemMultiMaterial) materialItem.item()).createMaterial( mat );
|
ItemStackSrc is = ((ItemMultiMaterial) materialItem.item()).createMaterial( mat );
|
||||||
@@ -216,6 +220,7 @@ public class Registration
|
|||||||
else
|
else
|
||||||
f.set( materials, new NullItemDefinition() );
|
f.set( materials, new NullItemDefinition() );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Throwable err)
|
catch (Throwable err)
|
||||||
{
|
{
|
||||||
AELog.severe( "Error creating material: " + mat.name() );
|
AELog.severe( "Error creating material: " + mat.name() );
|
||||||
@@ -229,6 +234,10 @@ public class Registration
|
|||||||
for (PartType type : PartType.values())
|
for (PartType type : PartType.values())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
if ( type == PartType.InvalidType )
|
||||||
|
((ItemMultiPart) partItem.item()).createPart( type, null );
|
||||||
|
else
|
||||||
{
|
{
|
||||||
Field f = partClass.getField( "part" + type.name() );
|
Field f = partClass.getField( "part" + type.name() );
|
||||||
Enum varients[] = type.getVarients();
|
Enum varients[] = type.getVarients();
|
||||||
@@ -257,6 +266,7 @@ public class Registration
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
catch (Throwable err)
|
catch (Throwable err)
|
||||||
{
|
{
|
||||||
AELog.severe( "Error creating part: " + type.name() );
|
AELog.severe( "Error creating part: " + type.name() );
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ public class ItemMultiMaterial extends AEBaseItem implements IStorageComponent,
|
|||||||
{
|
{
|
||||||
if ( dmgToMaterial.containsKey( is.getItemDamage() ) )
|
if ( dmgToMaterial.containsKey( is.getItemDamage() ) )
|
||||||
return dmgToMaterial.get( is.getItemDamage() );
|
return dmgToMaterial.get( is.getItemDamage() );
|
||||||
return null;
|
return MaterialType.InvalidType;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||||||
|
|
||||||
public enum MaterialType
|
public enum MaterialType
|
||||||
{
|
{
|
||||||
|
InvalidType(-1, AEFeature.Core),
|
||||||
|
|
||||||
CertusQuartzCrystal(0, AEFeature.Core, "crystalCertusQuartz"), CertusQuartzCrystalCharged(1, AEFeature.Core, EntityChargedQuartz.class),
|
CertusQuartzCrystal(0, AEFeature.Core, "crystalCertusQuartz"), CertusQuartzCrystalCharged(1, AEFeature.Core, EntityChargedQuartz.class),
|
||||||
|
|
||||||
CertusQuartzDust(2, AEFeature.Core, "dustCertusQuartz"), NetherQuartzDust(3, AEFeature.Core, "dustNetherQuartz"), Flour(4, AEFeature.Flour, "dustWheat"), GoldDust(
|
CertusQuartzDust(2, AEFeature.Core, "dustCertusQuartz"), NetherQuartzDust(3, AEFeature.Core, "dustNetherQuartz"), Flour(4, AEFeature.Flour, "dustWheat"), GoldDust(
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ import appeng.parts.reporting.PartTerminal;
|
|||||||
|
|
||||||
public enum PartType
|
public enum PartType
|
||||||
{
|
{
|
||||||
|
InvalidType(-1, AEFeature.Core, null),
|
||||||
|
|
||||||
CableGlass(0, AEFeature.Core, PartCableGlass.class),
|
CableGlass(0, AEFeature.Core, PartCableGlass.class),
|
||||||
|
|
||||||
CableCovered(20, AEFeature.Core, PartCableCovered.class),
|
CableCovered(20, AEFeature.Core, PartCableCovered.class),
|
||||||
|
|||||||
Reference in New Issue
Block a user