11package micdoodle8 .mods .galacticraft .core .energy .item ;
22
3+ import ic2 .api .item .IElectricItem ;
34import ic2 .api .item .IElectricItemManager ;
5+ import ic2 .api .item .ISpecialElectricItem ;
46import java .util .List ;
57import javax .annotation .Nullable ;
8+ import mekanism .api .energy .IEnergizedItem ;
69import micdoodle8 .mods .galacticraft .api .item .ElectricItemHelper ;
710import micdoodle8 .mods .galacticraft .api .item .IItemElectricBase ;
811import micdoodle8 .mods .galacticraft .core .GalacticraftCore ;
912import micdoodle8 .mods .galacticraft .core .energy .EnergyConfigHandler ;
1013import micdoodle8 .mods .galacticraft .core .energy .EnergyDisplayHelper ;
1114import micdoodle8 .mods .galacticraft .core .items .ItemBatteryInfinite ;
15+ import micdoodle8 .mods .galacticraft .core .util .CompatibilityManager ;
1216import net .minecraft .client .util .ITooltipFlag ;
1317import net .minecraft .creativetab .CreativeTabs ;
1418import net .minecraft .entity .player .EntityPlayer ;
2024import net .minecraft .nbt .NBTTagFloat ;
2125import net .minecraft .util .NonNullList ;
2226import net .minecraft .world .World ;
23- import net .minecraftforge .fml .common .Optional ;
27+ import net .minecraftforge .fml .common .Optional .Interface ;
28+ import net .minecraftforge .fml .common .Optional .InterfaceList ;
29+ import net .minecraftforge .fml .common .Optional .Method ;
2430import net .minecraftforge .fml .common .versioning .DefaultArtifactVersion ;
2531import net .minecraftforge .fml .relauncher .FMLInjectionData ;
2632
27- public abstract class ItemElectricBase extends Item implements IItemElectricBase
33+ //@noformat
34+ @ InterfaceList (value = {
35+ @ Interface (iface = "ic2.api.item.ISpecialElectricItem" , modid = CompatibilityManager .modidIC2 ),
36+ @ Interface (iface = "ic2.api.item.IElectricItem" , modid = CompatibilityManager .modidIC2 ),
37+ @ Interface (iface = "mekanism.api.energy.IEnergizedItem" , modid = CompatibilityManager .modidMekanism )
38+ })
39+ public abstract class ItemElectricBase extends Item implements IItemElectricBase , ISpecialElectricItem , IElectricItem , IEnergizedItem
2840{
2941
3042 private static Object itemManagerIC2 ;
@@ -271,57 +283,53 @@ public static boolean isElectricItemCharged(ItemStack itemstack)
271283
272284 // For RF compatibility
273285
274- @ Optional .Method (modid = "redstoneflux" )
275286 public int receiveEnergy (ItemStack container , int maxReceive , boolean simulate )
276287 {
277288 return (int ) (this .recharge (container , maxReceive * EnergyConfigHandler .RF_RATIO , !simulate ) / EnergyConfigHandler .RF_RATIO );
278289 }
279290
280- @ Optional .Method (modid = "redstoneflux" )
281291 public int extractEnergy (ItemStack container , int maxExtract , boolean simulate )
282292 {
283293 return (int ) (this .discharge (container , maxExtract / EnergyConfigHandler .TO_RF_RATIO , !simulate ) * EnergyConfigHandler .TO_RF_RATIO );
284294 }
285295
286- @ Optional .Method (modid = "redstoneflux" )
287296 public int getEnergyStored (ItemStack container )
288297 {
289298 return (int ) (this .getElectricityStored (container ) * EnergyConfigHandler .TO_RF_RATIO );
290299 }
291300
292- @ Optional .Method (modid = "redstoneflux" )
293301 public int getMaxEnergyStored (ItemStack container )
294302 {
295303 return (int ) (this .getMaxElectricityStored (container ) * EnergyConfigHandler .TO_RF_RATIO );
296304 }
297305
298306 // The following seven methods are for Mekanism compatibility
299307
300- @ Optional . Method (modid = "mekanism" )
308+ @ Method (modid = CompatibilityManager . modidMekanism )
301309 public double getEnergy (ItemStack itemStack )
302310 {
303311 return this .getElectricityStored (itemStack ) * EnergyConfigHandler .TO_MEKANISM_RATIO ;
304312 }
305313
306- @ Optional . Method (modid = "mekanism" )
314+ @ Method (modid = CompatibilityManager . modidMekanism )
307315 public void setEnergy (ItemStack itemStack , double amount )
308316 {
309317 this .setElectricity (itemStack , (float ) amount * EnergyConfigHandler .MEKANISM_RATIO );
310318 }
311319
312- @ Optional . Method (modid = "mekanism" )
320+ @ Method (modid = CompatibilityManager . modidMekanism )
313321 public double getMaxEnergy (ItemStack itemStack )
314322 {
315323 return this .getMaxElectricityStored (itemStack ) * EnergyConfigHandler .TO_MEKANISM_RATIO ;
316324 }
317325
318- @ Optional . Method (modid = "mekanism" )
326+ @ Method (modid = CompatibilityManager . modidMekanism )
319327 public double getMaxTransfer (ItemStack itemStack )
320328 {
321329 return this .transferMax * EnergyConfigHandler .TO_MEKANISM_RATIO ;
322330 }
323331
324- @ Optional . Method (modid = "mekanism" )
332+ @ Method (modid = CompatibilityManager . modidMekanism )
325333 public boolean canReceive (ItemStack itemStack )
326334 {
327335 return (itemStack != null && !(itemStack .getItem () instanceof ItemBatteryInfinite ));
@@ -334,31 +342,31 @@ public boolean canSend(ItemStack itemStack)
334342
335343 // All the following methods are for IC2 compatibility
336344
337- @ Optional . Method (modid = "ic2" )
345+ @ Method (modid = CompatibilityManager . modidIC2 )
338346 public IElectricItemManager getManager (ItemStack itemstack )
339347 {
340348 return (IElectricItemManager ) ItemElectricBase .itemManagerIC2 ;
341349 }
342350
343- @ Optional . Method (modid = "ic2" )
351+ @ Method (modid = CompatibilityManager . modidIC2 )
344352 public boolean canProvideEnergy (ItemStack itemStack )
345353 {
346354 return true ;
347355 }
348356
349- @ Optional . Method (modid = "ic2" )
357+ @ Method (modid = CompatibilityManager . modidIC2 )
350358 public int getTier (ItemStack itemStack )
351359 {
352360 return 1 ;
353361 }
354362
355- @ Optional . Method (modid = "ic2" )
363+ @ Method (modid = CompatibilityManager . modidIC2 )
356364 public double getMaxCharge (ItemStack itemStack )
357365 {
358366 return this .getMaxElectricityStored (itemStack ) / EnergyConfigHandler .IC2_RATIO ;
359367 }
360368
361- @ Optional . Method (modid = "ic2" )
369+ @ Method (modid = CompatibilityManager . modidIC2 )
362370 public double getTransferLimit (ItemStack itemStack )
363371 {
364372 return this .transferMax * EnergyConfigHandler .TO_IC2_RATIO ;
0 commit comments