• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

CyclopsMC / IntegratedDynamics / 16552051255

27 Jul 2025 01:58PM UTC coverage: 53.206% (+8.0%) from 45.161%
16552051255

push

github

rubensworks
Resolve minor TODOs

2888 of 8740 branches covered (33.04%)

Branch coverage included in aggregate %.

17341 of 29280 relevant lines covered (59.22%)

3.08 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

25.0
/src/main/java/org/cyclops/integrateddynamics/core/item/ItemBlockEnergyContainer.java
1
package org.cyclops.integrateddynamics.core.item;
2

3
import net.minecraft.network.chat.Component;
4
import net.minecraft.util.Mth;
5
import net.minecraft.world.item.BlockItem;
6
import net.minecraft.world.item.Item;
7
import net.minecraft.world.item.ItemStack;
8
import net.minecraft.world.item.TooltipFlag;
9
import net.minecraft.world.item.component.TooltipDisplay;
10
import net.minecraft.world.level.block.Block;
11
import net.neoforged.neoforge.capabilities.Capabilities;
12
import net.neoforged.neoforge.energy.IEnergyStorage;
13
import org.cyclops.cyclopscore.helper.IModHelpers;
14
import org.cyclops.cyclopscore.item.IInformationProvider;
15
import org.cyclops.cyclopscore.item.ItemBlockNBT;
16
import org.cyclops.integrateddynamics.blockentity.BlockEntityEnergyBattery;
17
import org.cyclops.integrateddynamics.capability.energystorage.EnergyStorageItemBlockEnergyContainer;
18
import org.cyclops.integrateddynamics.core.helper.L10NValues;
19

20
import java.util.Locale;
21
import java.util.Optional;
22
import java.util.function.Consumer;
23

24
/**
25
 * {@link BlockItem} that can be used for blocks that implement the {@link IEnergyStorage} capability.
26
 * Instances of this will also keep it's energy level.
27
 * @author rubensworks
28
 *
29
 */
30
public class ItemBlockEnergyContainer extends ItemBlockNBT {
31

32
    private Block block;
33

34
    public ItemBlockEnergyContainer(Block block, Properties builder) {
35
        super(block, builder);
4✔
36
        this.block = block;
3✔
37
    }
1✔
38

39
    /**
40
     * @return The energy container.
41
     */
42
    public Block get() {
43
        return block;
3✔
44
    }
45

46
    public Optional<IEnergyStorage> getEnergyBattery(ItemStack itemStack) {
47
        return Optional.ofNullable(itemStack.getCapability(Capabilities.EnergyStorage.ITEM));
×
48
    }
49

50
    @Override
51
    public void appendHoverText(ItemStack itemStack, Item.TooltipContext context, TooltipDisplay tooltipDisplay, Consumer<Component> tooltipAdder, TooltipFlag flag) {
52
        super.appendHoverText(itemStack, context, tooltipDisplay, tooltipAdder, flag);
×
53
        getEnergyBattery(itemStack)
×
54
                .ifPresent(energyStorage -> {
×
55
                    long amount = ((EnergyStorageItemBlockEnergyContainer) energyStorage).getEnergyStoredLong();
×
56
                    long capacity = ((EnergyStorageItemBlockEnergyContainer) energyStorage).getMaxEnergyStoredLong();
×
57
                    String line = String.format(Locale.ROOT, "%,d", amount) + " / " + String.format(Locale.ROOT, "%,d", capacity) + " " + IModHelpers.get().getL10NHelpers().localize(L10NValues.GENERAL_ENERGY_UNIT);
×
58
                    tooltipAdder.accept(Component.literal(IInformationProvider.ITEM_PREFIX + line));
×
59
                });
×
60
    }
×
61

62
    @Override
63
    public boolean isBarVisible(ItemStack stack) {
64
        return true;
×
65
    }
66

67
    @Override
68
    public int getBarWidth(ItemStack itemStack) {
69
        return getEnergyBattery(itemStack)
×
70
                .map(energyStorage -> {
×
71
                    double amount = energyStorage.getEnergyStored();
×
72
                    double capacity = energyStorage.getMaxEnergyStored();
×
73
                    return (int) Math.round(amount / capacity * 13);
×
74
                })
75
                .orElse(0);
×
76
    }
77

78
    @Override
79
    public int getBarColor(ItemStack stack) {
80
        return Mth.hsvToRgb(Math.max(0.0F, ((float) getBarWidth(stack)) / 13) / 3.0F, 1.0F, 1.0F);
×
81
    }
82

83
    public EnergyStorageItemBlockEnergyContainer createCapability(ItemStack itemStack) {
84
        return new EnergyStorageItemBlockEnergyContainer(this, itemStack) {
12✔
85
            @Override
86
            public int getRate() {
87
                return BlockEntityEnergyBattery.getEnergyPerTick(getMaxEnergyStored());
4✔
88
            }
89
        };
90
    }
91

92
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc