1
1
package micdoodle8 .mods .galacticraft .core .energy .item ;
2
2
3
+ import ic2 .api .item .IElectricItem ;
3
4
import ic2 .api .item .IElectricItemManager ;
5
+ import ic2 .api .item .ISpecialElectricItem ;
4
6
import java .util .List ;
5
7
import javax .annotation .Nullable ;
8
+ import mekanism .api .energy .IEnergizedItem ;
6
9
import micdoodle8 .mods .galacticraft .api .item .ElectricItemHelper ;
7
10
import micdoodle8 .mods .galacticraft .api .item .IItemElectricBase ;
8
11
import micdoodle8 .mods .galacticraft .core .GalacticraftCore ;
9
12
import micdoodle8 .mods .galacticraft .core .energy .EnergyConfigHandler ;
10
13
import micdoodle8 .mods .galacticraft .core .energy .EnergyDisplayHelper ;
11
14
import micdoodle8 .mods .galacticraft .core .items .ItemBatteryInfinite ;
15
+ import micdoodle8 .mods .galacticraft .core .util .CompatibilityManager ;
12
16
import net .minecraft .client .util .ITooltipFlag ;
13
17
import net .minecraft .creativetab .CreativeTabs ;
14
18
import net .minecraft .entity .player .EntityPlayer ;
20
24
import net .minecraft .nbt .NBTTagFloat ;
21
25
import net .minecraft .util .NonNullList ;
22
26
import 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 ;
24
30
import net .minecraftforge .fml .common .versioning .DefaultArtifactVersion ;
25
31
import net .minecraftforge .fml .relauncher .FMLInjectionData ;
26
32
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
28
40
{
29
41
30
42
private static Object itemManagerIC2 ;
@@ -271,57 +283,53 @@ public static boolean isElectricItemCharged(ItemStack itemstack)
271
283
272
284
// For RF compatibility
273
285
274
- @ Optional .Method (modid = "redstoneflux" )
275
286
public int receiveEnergy (ItemStack container , int maxReceive , boolean simulate )
276
287
{
277
288
return (int ) (this .recharge (container , maxReceive * EnergyConfigHandler .RF_RATIO , !simulate ) / EnergyConfigHandler .RF_RATIO );
278
289
}
279
290
280
- @ Optional .Method (modid = "redstoneflux" )
281
291
public int extractEnergy (ItemStack container , int maxExtract , boolean simulate )
282
292
{
283
293
return (int ) (this .discharge (container , maxExtract / EnergyConfigHandler .TO_RF_RATIO , !simulate ) * EnergyConfigHandler .TO_RF_RATIO );
284
294
}
285
295
286
- @ Optional .Method (modid = "redstoneflux" )
287
296
public int getEnergyStored (ItemStack container )
288
297
{
289
298
return (int ) (this .getElectricityStored (container ) * EnergyConfigHandler .TO_RF_RATIO );
290
299
}
291
300
292
- @ Optional .Method (modid = "redstoneflux" )
293
301
public int getMaxEnergyStored (ItemStack container )
294
302
{
295
303
return (int ) (this .getMaxElectricityStored (container ) * EnergyConfigHandler .TO_RF_RATIO );
296
304
}
297
305
298
306
// The following seven methods are for Mekanism compatibility
299
307
300
- @ Optional . Method (modid = "mekanism" )
308
+ @ Method (modid = CompatibilityManager . modidMekanism )
301
309
public double getEnergy (ItemStack itemStack )
302
310
{
303
311
return this .getElectricityStored (itemStack ) * EnergyConfigHandler .TO_MEKANISM_RATIO ;
304
312
}
305
313
306
- @ Optional . Method (modid = "mekanism" )
314
+ @ Method (modid = CompatibilityManager . modidMekanism )
307
315
public void setEnergy (ItemStack itemStack , double amount )
308
316
{
309
317
this .setElectricity (itemStack , (float ) amount * EnergyConfigHandler .MEKANISM_RATIO );
310
318
}
311
319
312
- @ Optional . Method (modid = "mekanism" )
320
+ @ Method (modid = CompatibilityManager . modidMekanism )
313
321
public double getMaxEnergy (ItemStack itemStack )
314
322
{
315
323
return this .getMaxElectricityStored (itemStack ) * EnergyConfigHandler .TO_MEKANISM_RATIO ;
316
324
}
317
325
318
- @ Optional . Method (modid = "mekanism" )
326
+ @ Method (modid = CompatibilityManager . modidMekanism )
319
327
public double getMaxTransfer (ItemStack itemStack )
320
328
{
321
329
return this .transferMax * EnergyConfigHandler .TO_MEKANISM_RATIO ;
322
330
}
323
331
324
- @ Optional . Method (modid = "mekanism" )
332
+ @ Method (modid = CompatibilityManager . modidMekanism )
325
333
public boolean canReceive (ItemStack itemStack )
326
334
{
327
335
return (itemStack != null && !(itemStack .getItem () instanceof ItemBatteryInfinite ));
@@ -334,31 +342,31 @@ public boolean canSend(ItemStack itemStack)
334
342
335
343
// All the following methods are for IC2 compatibility
336
344
337
- @ Optional . Method (modid = "ic2" )
345
+ @ Method (modid = CompatibilityManager . modidIC2 )
338
346
public IElectricItemManager getManager (ItemStack itemstack )
339
347
{
340
348
return (IElectricItemManager ) ItemElectricBase .itemManagerIC2 ;
341
349
}
342
350
343
- @ Optional . Method (modid = "ic2" )
351
+ @ Method (modid = CompatibilityManager . modidIC2 )
344
352
public boolean canProvideEnergy (ItemStack itemStack )
345
353
{
346
354
return true ;
347
355
}
348
356
349
- @ Optional . Method (modid = "ic2" )
357
+ @ Method (modid = CompatibilityManager . modidIC2 )
350
358
public int getTier (ItemStack itemStack )
351
359
{
352
360
return 1 ;
353
361
}
354
362
355
- @ Optional . Method (modid = "ic2" )
363
+ @ Method (modid = CompatibilityManager . modidIC2 )
356
364
public double getMaxCharge (ItemStack itemStack )
357
365
{
358
366
return this .getMaxElectricityStored (itemStack ) / EnergyConfigHandler .IC2_RATIO ;
359
367
}
360
368
361
- @ Optional . Method (modid = "ic2" )
369
+ @ Method (modid = CompatibilityManager . modidIC2 )
362
370
public double getTransferLimit (ItemStack itemStack )
363
371
{
364
372
return this .transferMax * EnergyConfigHandler .TO_IC2_RATIO ;
0 commit comments