11package  net .swedz .extended_industrialization .machines .blockentity ;
22
33import  aztech .modern_industrialization .MICapabilities ;
4+ import  aztech .modern_industrialization .api .energy .CableTier ;
5+ import  aztech .modern_industrialization .api .energy .CableTierHolder ;
46import  aztech .modern_industrialization .api .energy .EnergyApi ;
57import  aztech .modern_industrialization .inventory .MIInventory ;
68import  aztech .modern_industrialization .machines .BEP ;
79import  aztech .modern_industrialization .machines .MachineBlockEntity ;
10+ import  aztech .modern_industrialization .machines .components .CasingComponent ;
811import  aztech .modern_industrialization .machines .components .OrientationComponent ;
912import  aztech .modern_industrialization .machines .components .RedstoneControlComponent ;
1013import  aztech .modern_industrialization .machines .gui .MachineGuiParameters ;
1114import  aztech .modern_industrialization .machines .guicomponents .AutoExtract ;
1215import  aztech .modern_industrialization .machines .guicomponents .SlotPanel ;
1316import  aztech .modern_industrialization .machines .models .MachineModelClientData ;
1417import  aztech .modern_industrialization .util .Tickable ;
18+ import  net .minecraft .core .Direction ;
19+ import  net .minecraft .world .InteractionHand ;
20+ import  net .minecraft .world .ItemInteractionResult ;
21+ import  net .minecraft .world .entity .player .Player ;
1522import  net .minecraft .world .level .Level ;
1623import  net .minecraft .world .level .block .entity .BlockEntityType ;
1724import  net .neoforged .neoforge .capabilities .Capabilities ;
2734import  static  net .swedz .tesseract .neoforge .compat .mi .guicomponent .modularmultiblock .ModularMultiblockGuiLine .*;
2835import  static  net .swedz .tesseract .neoforge .tooltip .Parser .*;
2936
30- public  final  class  MachineChainerMachineBlockEntity  extends  MachineBlockEntity  implements  Tickable 
37+ public  final  class  MachineChainerMachineBlockEntity  extends  MachineBlockEntity  implements  Tickable ,  CableTierHolder 
3138{
3239	private  final  RedstoneControlComponent  redstoneControl ;
40+ 	private  final  CasingComponent           casing ;
3341
3442	private  final  ChainerComponent  chainer ;
3543
@@ -59,12 +67,15 @@ public MachineChainerMachineBlockEntity(BEP bep)
5967				() -> redstoneControl .doAllowNormalOperation (this )
6068		);
6169
70+ 		casing  = new  CasingComponent ((from , to ) -> chainer .invalidate ());
71+ 		
6272		transferItem  = new  ItemTransferCache (chainer ::itemHandler );
6373		transferFluid  = new  FluidTransferCache (chainer ::fluidHandler );
6474		transferEnergy  = new  MIEnergyTransferCache (chainer ::extractableEnergyHandler );
6575
6676		this .registerGuiComponent (new  SlotPanel .Server (this )
67- 				.withRedstoneControl (redstoneControl ));
77+ 				.withRedstoneControl (redstoneControl )
78+ 				.withCasing (casing ));
6879
6980		this .registerGuiComponent (new  AutoExtract .Server (orientation ));
7081
@@ -82,7 +93,7 @@ public MachineChainerMachineBlockEntity(BEP bep)
8293			}
8394		}));
8495
85- 		this .registerComponents (chainer , redstoneControl );
96+ 		this .registerComponents (chainer , redstoneControl ,  casing );
8697	}
8798
8899	public  ChainerComponent  getChainerComponent ()
@@ -120,6 +131,12 @@ public void buildLinks()
120131		lastRebuildTick  = tick ;
121132	}
122133
134+ 	@ Override 
135+ 	public  CableTier  getCableTier ()
136+ 	{
137+ 		return  casing .getCableTier ();
138+ 	}
139+ 	
123140	@ Override 
124141	public  MIInventory  getInventory ()
125142	{
@@ -129,7 +146,7 @@ public MIInventory getInventory()
129146	@ Override 
130147	protected  MachineModelClientData  getMachineModelData ()
131148	{
132- 		MachineModelClientData  data  = new  MachineModelClientData ();
149+ 		MachineModelClientData  data  = new  MachineModelClientData (casing . getCasing () );
133150		orientation .writeModelData (data );
134151		return  data ;
135152	}
@@ -185,7 +202,7 @@ public void tick()
185202			{
186203				transferFluid .autoExtract (level , worldPosition , orientation .outputDirection );
187204			}
188- 			if (transferEnergy .autoExtract (level , worldPosition , orientation .outputDirection ))
205+ 			if (transferEnergy .autoExtract (level , worldPosition , orientation .outputDirection ,  this . getCableTier () ))
189206			{
190207				this .setChanged ();
191208			}
@@ -198,6 +215,21 @@ public void tick()
198215		rebuildsThisTick  = 0 ;
199216	}
200217
218+ 	@ Override 
219+ 	protected  ItemInteractionResult  useItemOn (Player  player , InteractionHand  hand , Direction  face )
220+ 	{
221+ 		ItemInteractionResult  result  = super .useItemOn (player , hand , face );
222+ 		if (!result .consumesAction ())
223+ 		{
224+ 			result  = redstoneControl .onUse (this , player , hand );
225+ 		}
226+ 		if (!result .consumesAction ())
227+ 		{
228+ 			result  = casing .onUse (this , player , hand );
229+ 		}
230+ 		return  result ;
231+ 	}
232+ 	
201233	public  static  void  registerCapabilities (BlockEntityType <?> bet )
202234	{
203235		MICapabilities .onEvent ((event ) ->
0 commit comments