forked from desht/ModularRouters
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEnergyDistributorModule.java
64 lines (52 loc) · 1.88 KB
/
EnergyDistributorModule.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package me.desht.modularrouters.item.module;
import com.google.common.collect.ImmutableList;
import me.desht.modularrouters.client.render.area.IPositionProvider;
import me.desht.modularrouters.client.util.TintColor;
import me.desht.modularrouters.config.ConfigHolder;
import me.desht.modularrouters.core.ModItems;
import me.desht.modularrouters.logic.ModuleTarget;
import me.desht.modularrouters.logic.compiled.CompiledEnergyDistributorModule;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.UseOnContext;
import net.neoforged.neoforge.capabilities.Capabilities;
import javax.annotation.Nonnull;
import java.util.List;
public class EnergyDistributorModule extends ModuleItem implements IRangedModule, IPositionProvider, ITargetedModule {
private static final TintColor TINT_COLOR = new TintColor(79, 9, 90);
public EnergyDistributorModule() {
super(ModItems.moduleProps(),
CompiledEnergyDistributorModule::new);
}
@Override
public TintColor getItemTint() {
return TINT_COLOR;
}
@Override
public int getEnergyCost(ItemStack stack) {
return ConfigHolder.common.energyCosts.energydistributorModuleEnergyCost.get();
}
@Override
public int getBaseRange() {
return 8;
}
@Override
public int getHardMaxRange() {
return 48;
}
@Override
public List<ModuleTarget> getStoredPositions(@Nonnull ItemStack stack) {
return ImmutableList.copyOf(ITargetedModule.getTargets(stack, false));
}
@Override
public boolean isValidTarget(UseOnContext ctx) {
return ctx.getLevel().getCapability(Capabilities.EnergyStorage.BLOCK, ctx.getClickedPos(), ctx.getClickedFace()) != null;
}
@Override
public int getMaxTargets() {
return 8;
}
@Override
public int getRenderColor(int index) {
return 0x80E08080;
}
}