Parts/Materials both now have better registration, and both use DamageValues.

This commit is contained in:
AlgorithmX2
2014-01-03 12:30:08 -06:00
parent 3220a2e07c
commit 35a21d472f
5 changed files with 168 additions and 41 deletions
+21 -4
View File
@@ -17,6 +17,7 @@ import appeng.api.definitions.Blocks;
import appeng.api.definitions.Items;
import appeng.api.definitions.Materials;
import appeng.api.definitions.Parts;
import appeng.api.implementations.ITileStorageMonitorable;
import appeng.api.networking.energy.IEnergyGrid;
import appeng.api.networking.pathing.IPathingGrid;
import appeng.api.networking.spatial.ISpatialCache;
@@ -159,17 +160,32 @@ public class Registration
}
}
AEItemDefinition partItem = (AEFeatureHandler) addFeature( ItemPart.class );
Class partClass = parts.getClass();
for (PartType part : PartType.values())
for (PartType type : PartType.values())
{
try
{
Field f = partClass.getField( "part" + part.name() );
f.set( parts, addFeature( ItemPart.class, part ) );
Field f = partClass.getField( "part" + type.name() );
Enum varients[] = type.getVarients();
if ( varients == null )
{
ItemStack is = ((ItemPart) partItem.item()).createPart( type, null );
f.set( parts, new DamagedItemDefinition( is ) );
}
else
{
for (Enum v : varients)
{
ItemStack is = ((ItemPart) partItem.item()).createPart( type, v );
f.set( parts, new DamagedItemDefinition( is ) );
}
}
}
catch (Throwable err)
{
AELog.severe( "Error creating part: " + part.name() );
AELog.severe( "Error creating part: " + type.name() );
throw new RuntimeException( err );
}
}
@@ -358,6 +374,7 @@ public class Registration
AEApi.instance().partHelper().registerNewLayer( "appeng.api.parts.layers.LayerIPowerEmitter", IPowerEmitter.class );
AEApi.instance().partHelper().registerNewLayer( "appeng.api.parts.layers.LayerIPowerReceptor", IPowerReceptor.class );
AEApi.instance().partHelper().registerNewLayer( "appeng.api.parts.layers.LayerIFluidHandler", IFluidHandler.class );
AEApi.instance().partHelper().registerNewLayer( "appeng.api.parts.layers.LayerITileStorageMonitorable", ITileStorageMonitorable.class );
TickRegistry.registerTickHandler( TickHandler.instance, Side.SERVER );
TickRegistry.registerTickHandler( TickHandler.instance, Side.CLIENT );