Initial migration to V2 Energy API (#2474)

* Initial Energy API refactor

* Allow charging in energy storage BEs

* Remove maven for experimental fabric

Co-authored-by: modmuss50 <modmuss50@gmail.com>
This commit is contained in:
Technici4n 2021-09-01 22:14:15 +02:00 committed by GitHub
parent 2bc4886cc0
commit 3e2b0e11ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
75 changed files with 764 additions and 694 deletions

View file

@ -40,22 +40,22 @@ import net.minecraft.util.collection.DefaultedList;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.powerSystem.RcEnergyTier;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergyTier;
import techreborn.TechReborn;
import techreborn.utils.InitUtils;
import techreborn.utils.MessageIDs;
import java.util.List;
public class BatteryItem extends Item implements EnergyHolder, ItemDurabilityExtensions {
public class BatteryItem extends Item implements RcEnergyItem, ItemDurabilityExtensions {
private final int maxEnergy;
private final EnergyTier tier;
private final RcEnergyTier tier;
public BatteryItem(int maxEnergy, EnergyTier tier) {
public BatteryItem(int maxEnergy, RcEnergyTier tier) {
super(new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1));
this.maxEnergy = maxEnergy;
this.tier = tier;
@ -102,12 +102,12 @@ public class BatteryItem extends Item implements EnergyHolder, ItemDurabilityExt
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxEnergy;
}
@Override
public EnergyTier getTier() {
public RcEnergyTier getTier() {
return tier;
}

View file

@ -36,19 +36,19 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.collection.DefaultedList;
import net.minecraft.world.World;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.powerSystem.RcEnergyTier;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergyTier;
import techreborn.TechReborn;
import techreborn.utils.InitUtils;
public class BatpackItem extends ArmorItem implements EnergyHolder, ItemDurabilityExtensions {
public class BatpackItem extends ArmorItem implements RcEnergyItem, ItemDurabilityExtensions {
public final int maxCharge;
public final EnergyTier tier;
public final RcEnergyTier tier;
public BatpackItem(int maxCharge, ArmorMaterial material, EnergyTier tier) {
public BatpackItem(int maxCharge, ArmorMaterial material, RcEnergyTier tier) {
super(material, EquipmentSlot.CHEST, new Settings().group(TechReborn.ITEMGROUP).maxCount(1).maxDamage(-1));
this.maxCharge = maxCharge;
this.tier = tier;
@ -86,12 +86,12 @@ public class BatpackItem extends ArmorItem implements EnergyHolder, ItemDurabili
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public EnergyTier getTier() {
public RcEnergyTier getTier() {
return tier;
}

View file

@ -35,17 +35,15 @@ import net.minecraft.util.collection.DefaultedList;
import reborncore.api.items.ArmorBlockEntityTicker;
import reborncore.api.items.ArmorRemoveHandler;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergySide;
import team.reborn.energy.EnergyTier;
import reborncore.common.powerSystem.RcEnergyTier;
import techreborn.TechReborn;
import techreborn.config.TechRebornConfig;
import techreborn.init.TRArmorMaterials;
import techreborn.utils.InitUtils;
public class CloakingDeviceItem extends TRArmourItem implements EnergyHolder, ArmorBlockEntityTicker, ArmorRemoveHandler {
public class CloakingDeviceItem extends TRArmourItem implements RcEnergyItem, ArmorBlockEntityTicker, ArmorRemoveHandler {
public static int maxCharge = TechRebornConfig.cloakingDeviceCharge;
public static int cost = TechRebornConfig.cloackingDeviceCost;
@ -94,24 +92,24 @@ public class CloakingDeviceItem extends TRArmourItem implements EnergyHolder, Ar
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public EnergyTier getTier() {
return EnergyTier.INSANE;
public RcEnergyTier getTier() {
return RcEnergyTier.INSANE;
}
@Override
public double getMaxOutput(EnergySide side) {
public long getEnergyMaxOutput() {
return 0;
}
// ArmorTickable
@Override
public void tickArmor(ItemStack stack, PlayerEntity playerEntity) {
if (Energy.of(stack).use(cost)) {
if (tryUseEnergy(stack, cost)) {
playerEntity.setInvisible(true);
} else {
if (playerEntity.isInvisible()) {

View file

@ -44,21 +44,20 @@ import reborncore.api.items.ArmorBlockEntityTicker;
import reborncore.api.items.ArmorRemoveHandler;
import reborncore.api.items.ItemStackModifiers;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.powerSystem.RcEnergyTier;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergyTier;
import techreborn.TechReborn;
import techreborn.config.TechRebornConfig;
import techreborn.utils.InitUtils;
public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers, ArmorBlockEntityTicker, ArmorRemoveHandler, EnergyHolder {
public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers, ArmorBlockEntityTicker, ArmorRemoveHandler, RcEnergyItem {
public final double flyCost = TechRebornConfig.quantumSuitFlyingCost;
public final double swimCost = TechRebornConfig.quantumSuitSwimmingCost;
public final double breathingCost = TechRebornConfig.quantumSuitBreathingCost;
public final double sprintingCost = TechRebornConfig.quantumSuitSprintingCost;
public final double fireExtinguishCost = TechRebornConfig.fireExtinguishCost;
public final long flyCost = TechRebornConfig.quantumSuitFlyingCost;
public final long swimCost = TechRebornConfig.quantumSuitSwimmingCost;
public final long breathingCost = TechRebornConfig.quantumSuitBreathingCost;
public final long sprintingCost = TechRebornConfig.quantumSuitSprintingCost;
public final long fireExtinguishCost = TechRebornConfig.fireExtinguishCost;
public final boolean enableSprint = TechRebornConfig.quantumSuitEnableSprint;
public final boolean enableFlight = TechRebornConfig.quantumSuitEnableFlight;
@ -73,12 +72,12 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers,
attributes.removeAll(EntityAttributes.GENERIC_MOVEMENT_SPEED);
if (this.slot == EquipmentSlot.LEGS && equipmentSlot == EquipmentSlot.LEGS && enableSprint) {
if (Energy.of(stack).getEnergy() > sprintingCost) {
if (getStoredEnergy(stack) > sprintingCost) {
attributes.put(EntityAttributes.GENERIC_MOVEMENT_SPEED, new EntityAttributeModifier(MODIFIERS[equipmentSlot.getEntitySlotId()], "Movement Speed", 0.15, EntityAttributeModifier.Operation.ADDITION));
}
}
if (equipmentSlot == this.slot && Energy.of(stack).getEnergy() > 0) {
if (equipmentSlot == this.slot && getStoredEnergy(stack) > 0) {
attributes.put(EntityAttributes.GENERIC_ARMOR, new EntityAttributeModifier(MODIFIERS[slot.getEntitySlotId()], "Armor modifier", 20, EntityAttributeModifier.Operation.ADDITION));
attributes.put(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, new EntityAttributeModifier(MODIFIERS[slot.getEntitySlotId()], "Knockback modifier", 2, EntityAttributeModifier.Operation.ADDITION));
}
@ -89,17 +88,17 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers,
switch (this.slot) {
case HEAD:
if (playerEntity.isSubmergedInWater()) {
if (Energy.of(stack).use(breathingCost)) {
if (tryUseEnergy(stack, breathingCost)) {
playerEntity.addStatusEffect(new StatusEffectInstance(StatusEffects.WATER_BREATHING, 5, 1));
}
}
break;
case CHEST:
if (enableFlight){
if (Energy.of(stack).getEnergy() > flyCost && !TechReborn.elytraPredicate.test(playerEntity)) {
if (getStoredEnergy(stack) > flyCost && !TechReborn.elytraPredicate.test(playerEntity)) {
playerEntity.getAbilities().allowFlying = true;
if (playerEntity.getAbilities().flying) {
Energy.of(stack).use(flyCost);
tryUseEnergy(stack, flyCost);
}
playerEntity.setOnGround(true);
} else {
@ -107,18 +106,18 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers,
playerEntity.getAbilities().flying = false;
}
}
if (playerEntity.isOnFire() && Energy.of(stack).getEnergy() > fireExtinguishCost) {
if (playerEntity.isOnFire() && getStoredEnergy(stack) > fireExtinguishCost) {
playerEntity.extinguish();
}
break;
case LEGS:
if (playerEntity.isSprinting() && enableSprint) {
Energy.of(stack).use(sprintingCost);
tryUseEnergy(stack, sprintingCost);
}
break;
case FEET:
if (playerEntity.isSwimming()) {
if (Energy.of(stack).use(swimCost)) {
if (tryUseEnergy(stack, swimCost)) {
playerEntity.addStatusEffect(new StatusEffectInstance(StatusEffects.DOLPHINS_GRACE, 5, 1));
}
}
@ -169,13 +168,13 @@ public class QuantumSuitItem extends TRArmourItem implements ItemStackModifiers,
}
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return TechRebornConfig.quantumSuitCapacity;
}
@Override
public EnergyTier getTier() {
return EnergyTier.EXTREME;
public RcEnergyTier getTier() {
return RcEnergyTier.EXTREME;
}
@Environment(EnvType.CLIENT)

View file

@ -34,27 +34,25 @@ import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.powerSystem.RcEnergyTier;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergySide;
import team.reborn.energy.EnergyTier;
import techreborn.TechReborn;
import techreborn.utils.InitUtils;
import java.util.Random;
public class ChainsawItem extends AxeItem implements EnergyHolder, ItemDurabilityExtensions {
public class ChainsawItem extends AxeItem implements RcEnergyItem, ItemDurabilityExtensions {
public final int maxCharge;
public final int cost;
public final float poweredSpeed;
private final float unpoweredSpeed;
public final Item referenceTool;
public final EnergyTier tier;
public final RcEnergyTier tier;
public ChainsawItem(ToolMaterials material, int energyCapacity, EnergyTier tier, int cost, float poweredSpeed, float unpoweredSpeed, Item referenceTool) {
public ChainsawItem(ToolMaterials material, int energyCapacity, RcEnergyTier tier, int cost, float poweredSpeed, float unpoweredSpeed, Item referenceTool) {
// combat stats same as for diamond axe. Fix for #2468
super(material, 5.0F, -3.0F, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1).maxDamage(-1));
this.maxCharge = energyCapacity;
@ -68,7 +66,7 @@ public class ChainsawItem extends AxeItem implements EnergyHolder, ItemDurabilit
// AxeItem
@Override
public float getMiningSpeedMultiplier(ItemStack stack, BlockState state) {
if (Energy.of(stack).getEnergy() >= cost
if (getStoredEnergy(stack) >= cost
&& (state.getMaterial() == Material.WOOD || state.getMaterial() == Material.NETHER_WOOD)) {
return poweredSpeed;
}
@ -80,7 +78,7 @@ public class ChainsawItem extends AxeItem implements EnergyHolder, ItemDurabilit
public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) {
Random rand = new Random();
if (rand.nextInt(EnchantmentHelper.getLevel(Enchantments.UNBREAKING, stack) + 1) == 0) {
Energy.of(stack).use(cost);
tryUseEnergy(stack, cost);
}
return true;
}
@ -138,17 +136,17 @@ public class ChainsawItem extends AxeItem implements EnergyHolder, ItemDurabilit
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public EnergyTier getTier() {
public RcEnergyTier getTier() {
return tier;
}
@Override
public double getMaxOutput(EnergySide side) {
public long getEnergyMaxOutput() {
return 0;
}

View file

@ -39,7 +39,7 @@ import net.minecraft.util.Formatting;
import net.minecraft.util.Util;
import net.minecraft.util.registry.Registry;
import reborncore.common.powerSystem.PowerSystem;
import team.reborn.energy.Energy;
import team.reborn.energy.api.EnergyStorage;
import techreborn.TechReborn;
import java.util.Map.Entry;
@ -60,26 +60,30 @@ public class DebugToolItem extends Item {
if (block == null) {
return ActionResult.FAIL;
}
if (context.getWorld().isClient) {
return ActionResult.SUCCESS;
}
sendMessage(context, new LiteralText(getRegistryName(block)));
for (Entry<Property<?>, Comparable<?>> entry : blockState.getEntries().entrySet()) {
sendMessage(context, new LiteralText(getPropertyString(entry)));
}
EnergyStorage energyStorage = EnergyStorage.SIDED.find(context.getWorld(), context.getBlockPos(), context.getSide());
if (energyStorage != null) {
sendMessage(context, new LiteralText(getRCPower(energyStorage)));
}
BlockEntity blockEntity = context.getWorld().getBlockEntity(context.getBlockPos());
if (blockEntity == null) {
return ActionResult.SUCCESS;
return ActionResult.CONSUME;
}
sendMessage(context, new LiteralText(getBlockEntityType(blockEntity)));
if (Energy.valid(blockEntity)) {
sendMessage(context, new LiteralText(getRCPower(blockEntity)));
}
sendMessage(context, getBlockEntityTags(blockEntity));
return ActionResult.SUCCESS;
return ActionResult.CONSUME;
}
private void sendMessage(ItemUsageContext context, Text message) {
@ -120,13 +124,13 @@ public class DebugToolItem extends Item {
return s;
}
private String getRCPower(BlockEntity blockEntity) {
private String getRCPower(EnergyStorage energyStorage) {
String s = "" + Formatting.GREEN;
s += "Power: ";
s += Formatting.BLUE;
s += PowerSystem.getLocalizedPower(Energy.of(blockEntity).getEnergy());
s += PowerSystem.getLocalizedPower(energyStorage.getAmount());
s += "/";
s += PowerSystem.getLocalizedPower(Energy.of(blockEntity).getMaxStored());
s += PowerSystem.getLocalizedPower(energyStorage.getCapacity());
return s;
}

View file

@ -36,25 +36,23 @@ import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.powerSystem.RcEnergyTier;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergySide;
import team.reborn.energy.EnergyTier;
import techreborn.TechReborn;
import techreborn.utils.InitUtils;
public class DrillItem extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions, DynamicAttributeTool {
public class DrillItem extends PickaxeItem implements RcEnergyItem, ItemDurabilityExtensions, DynamicAttributeTool {
public final int maxCharge;
public final int cost;
public final float poweredSpeed;
public final float unpoweredSpeed;
public final int miningLevel;
public final EnergyTier tier;
public final RcEnergyTier tier;
public DrillItem(ToolMaterials material, int energyCapacity, EnergyTier tier, int cost, float poweredSpeed, float unpoweredSpeed, MiningLevel miningLevel) {
public DrillItem(ToolMaterials material, int energyCapacity, RcEnergyTier tier, int cost, float poweredSpeed, float unpoweredSpeed, MiningLevel miningLevel) {
// combat stats same as for diamond pickaxe. Fix for #2468
super(material, 1, -2.8F, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1).maxDamage(-1));
this.maxCharge = energyCapacity;
@ -69,7 +67,7 @@ public class DrillItem extends PickaxeItem implements EnergyHolder, ItemDurabili
public float getMiningSpeedMultiplier(ItemStack stack, BlockState state) {
// Going to remain to use this ol reliable function, the fabric one is funky
if (Energy.of(stack).getEnergy() >= cost) {
if (getStoredEnergy(stack) >= cost) {
if (stack.getItem().isSuitableFor(state)) {
return poweredSpeed;
} else {
@ -105,7 +103,7 @@ public class DrillItem extends PickaxeItem implements EnergyHolder, ItemDurabili
@Override
public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) {
if (worldIn.random.nextInt(EnchantmentHelper.getLevel(Enchantments.UNBREAKING, stack) + 1) == 0) {
Energy.of(stack).use(cost);
tryUseEnergy(stack, cost);
}
return true;
}
@ -153,17 +151,17 @@ public class DrillItem extends PickaxeItem implements EnergyHolder, ItemDurabili
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public EnergyTier getTier() {
public RcEnergyTier getTier() {
return tier;
}
@Override
public double getMaxOutput(EnergySide side) {
public long getEnergyMaxOutput() {
return 0;
}

View file

@ -37,26 +37,24 @@ import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.powerSystem.RcEnergyTier;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergySide;
import team.reborn.energy.EnergyTier;
import techreborn.TechReborn;
import techreborn.utils.InitUtils;
import techreborn.utils.ToolsUtil;
import java.util.Random;
public class JackhammerItem extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions, DynamicAttributeTool {
public class JackhammerItem extends PickaxeItem implements RcEnergyItem, ItemDurabilityExtensions, DynamicAttributeTool {
public final int maxCharge;
public final EnergyTier tier;
public final RcEnergyTier tier;
public final int cost;
protected final float unpoweredSpeed = 0.5F;
public JackhammerItem(int energyCapacity, EnergyTier tier, int cost) {
public JackhammerItem(int energyCapacity, RcEnergyTier tier, int cost) {
// combat stats same as for diamond pickaxe. Fix for #2468
super(ToolMaterials.DIAMOND, 1, -2.8F, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1).maxDamage(-1));
this.maxCharge = energyCapacity;
@ -67,7 +65,7 @@ public class JackhammerItem extends PickaxeItem implements EnergyHolder, ItemDur
// PickaxeItem
@Override
public float getMiningSpeedMultiplier(ItemStack stack, BlockState state) {
if (Energy.of(stack).getEnergy() < cost) return unpoweredSpeed;
if (getStoredEnergy(stack) < cost) return unpoweredSpeed;
if (ToolsUtil.JackHammerSkippedBlocks(state)) return unpoweredSpeed;
if (state.getMaterial() == Material.STONE) {
@ -95,7 +93,7 @@ public class JackhammerItem extends PickaxeItem implements EnergyHolder, ItemDur
public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) {
Random rand = new Random();
if (rand.nextInt(EnchantmentHelper.getLevel(Enchantments.UNBREAKING, stack) + 1) == 0) {
Energy.of(stack).use(cost);
tryUseEnergy(stack, cost);
}
return true;
}
@ -132,17 +130,17 @@ public class JackhammerItem extends PickaxeItem implements EnergyHolder, ItemDur
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public EnergyTier getTier() {
public RcEnergyTier getTier() {
return tier;
}
@Override
public double getMaxOutput(EnergySide side) {
public long getEnergyMaxOutput() {
return 0;
}

View file

@ -41,7 +41,7 @@ import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import reborncore.common.misc.MultiBlockBreakingTool;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.EnergyTier;
import reborncore.common.powerSystem.RcEnergyTier;
import techreborn.config.TechRebornConfig;
import techreborn.items.tool.JackhammerItem;
import techreborn.utils.MessageIDs;
@ -55,7 +55,7 @@ import java.util.stream.Collectors;
public class AdvancedJackhammerItem extends JackhammerItem implements MultiBlockBreakingTool {
public AdvancedJackhammerItem() {
super(TechRebornConfig.advancedJackhammerCharge, EnergyTier.EXTREME, TechRebornConfig.advancedJackhammerCost);
super(TechRebornConfig.advancedJackhammerCharge, RcEnergyTier.EXTREME, TechRebornConfig.advancedJackhammerCost);
}
private boolean shouldBreak(World worldIn, BlockPos originalPos, BlockPos pos, ItemStack stack) {

View file

@ -31,10 +31,10 @@ import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemStack;
import net.minecraft.util.collection.DefaultedList;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.powerSystem.RcEnergyTier;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergyTier;
import techreborn.TechReborn;
import techreborn.config.TechRebornConfig;
import techreborn.utils.InitUtils;
@ -42,11 +42,11 @@ import techreborn.utils.InitUtils;
/**
* Created by modmuss50 on 05/11/2016.
*/
public class ElectricTreetapItem extends Item implements EnergyHolder, ItemDurabilityExtensions {
public class ElectricTreetapItem extends Item implements RcEnergyItem, ItemDurabilityExtensions {
public final int maxCharge = TechRebornConfig.electricTreetapCharge;
public int cost = TechRebornConfig.electricTreetapCost;
public EnergyTier tier = EnergyTier.MEDIUM;
public RcEnergyTier tier = RcEnergyTier.MEDIUM;
public ElectricTreetapItem() {
super(new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1).maxDamage(-1));
@ -85,12 +85,12 @@ public class ElectricTreetapItem extends Item implements EnergyHolder, ItemDurab
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public EnergyTier getTier() {
public RcEnergyTier getTier() {
return tier;
}
}

View file

@ -36,19 +36,17 @@ import net.minecraft.util.collection.DefaultedList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergySide;
import team.reborn.energy.EnergyTier;
import reborncore.common.powerSystem.RcEnergyTier;
import techreborn.TechReborn;
import techreborn.config.TechRebornConfig;
import techreborn.init.TRContent;
import java.util.Random;
public class RockCutterItem extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions {
public class RockCutterItem extends PickaxeItem implements RcEnergyItem, ItemDurabilityExtensions {
public static final int maxCharge = TechRebornConfig.rockCutterCharge;
public int cost = TechRebornConfig.rockCutterCost;
@ -67,7 +65,7 @@ public class RockCutterItem extends PickaxeItem implements EnergyHolder, ItemDur
@Override
public float getMiningSpeedMultiplier(ItemStack stack, BlockState state) {
if (Energy.of(stack).getEnergy() < cost) {
if (getStoredEnergy(stack) < cost) {
return 2F;
} else {
return Items.DIAMOND_PICKAXE.getMiningSpeedMultiplier(stack, state);
@ -79,7 +77,7 @@ public class RockCutterItem extends PickaxeItem implements EnergyHolder, ItemDur
public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) {
Random rand = new Random();
if (rand.nextInt(EnchantmentHelper.getLevel(Enchantments.UNBREAKING, stack) + 1) == 0) {
Energy.of(stack).use(cost);
tryUseEnergy(stack, cost);
}
return true;
}
@ -123,7 +121,7 @@ public class RockCutterItem extends PickaxeItem implements EnergyHolder, ItemDur
uncharged.addEnchantment(Enchantments.SILK_TOUCH, 1);
ItemStack charged = new ItemStack(TRContent.ROCK_CUTTER);
charged.addEnchantment(Enchantments.SILK_TOUCH, 1);
Energy.of(charged).set(Energy.of(charged).getMaxStored());
setStoredEnergy(charged, getEnergyCapacity());
stacks.add(uncharged);
stacks.add(charged);
@ -147,17 +145,17 @@ public class RockCutterItem extends PickaxeItem implements EnergyHolder, ItemDur
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public EnergyTier getTier() {
return EnergyTier.MEDIUM;
public RcEnergyTier getTier() {
return RcEnergyTier.MEDIUM;
}
@Override
public double getMaxOutput(EnergySide side) {
public long getEnergyMaxOutput() {
return 0;
}
}

View file

@ -43,8 +43,7 @@ import net.minecraft.util.math.Direction;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyTier;
import reborncore.common.powerSystem.RcEnergyTier;
import techreborn.config.TechRebornConfig;
import techreborn.items.tool.ChainsawItem;
import techreborn.utils.MessageIDs;
@ -59,7 +58,7 @@ public class IndustrialChainsawItem extends ChainsawItem {
private static final Direction[] SEARCH_ORDER = new Direction[]{Direction.NORTH, Direction.SOUTH, Direction.EAST, Direction.WEST, Direction.UP};
public IndustrialChainsawItem() {
super(ToolMaterials.DIAMOND, TechRebornConfig.industrialChainsawCharge, EnergyTier.EXTREME, TechRebornConfig.industrialChainsawCost, 20F, 1.0F, Items.DIAMOND_AXE);
super(ToolMaterials.DIAMOND, TechRebornConfig.industrialChainsawCharge, RcEnergyTier.EXTREME, TechRebornConfig.industrialChainsawCost, 20F, 1.0F, Items.DIAMOND_AXE);
}
private void findWood(World world, BlockPos pos, List<BlockPos> wood, List<BlockPos> leaves) {
@ -95,7 +94,7 @@ public class IndustrialChainsawItem extends ChainsawItem {
findWood(worldIn, pos, wood, leaves);
wood.remove(pos);
wood.stream()
.filter(p -> Energy.of(stack).simulate().use(cost))
.filter(p -> tryUseEnergy(stack, cost))
.forEach(pos1 -> ToolsUtil.breakBlock(stack, worldIn, pos1, entityLiving, cost));
leaves.remove(pos);
leaves.forEach(pos1 -> ToolsUtil.breakBlock(stack, worldIn, pos1, entityLiving, 0));

View file

@ -43,7 +43,7 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.EnergyTier;
import reborncore.common.powerSystem.RcEnergyTier;
import techreborn.config.TechRebornConfig;
import techreborn.init.TRContent;
import techreborn.items.tool.DrillItem;
@ -57,7 +57,7 @@ import java.util.List;
public class IndustrialDrillItem extends DrillItem {
public IndustrialDrillItem() {
super(ToolMaterials.DIAMOND, TechRebornConfig.industrialDrillCharge, EnergyTier.INSANE, TechRebornConfig.industrialDrillCost, 20.0F, 1.0F, MiningLevel.DIAMOND);
super(ToolMaterials.DIAMOND, TechRebornConfig.industrialDrillCharge, RcEnergyTier.INSANE, TechRebornConfig.industrialDrillCost, 20.0F, 1.0F, MiningLevel.DIAMOND);
}
private boolean shouldBreak(PlayerEntity playerIn, World worldIn, BlockPos originalPos, BlockPos pos) {

View file

@ -45,7 +45,7 @@ import org.jetbrains.annotations.Nullable;
import reborncore.common.misc.MultiBlockBreakingTool;
import reborncore.common.util.ChatUtils;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.EnergyTier;
import reborncore.common.powerSystem.RcEnergyTier;
import techreborn.config.TechRebornConfig;
import techreborn.items.tool.JackhammerItem;
import techreborn.utils.MessageIDs;
@ -59,7 +59,7 @@ import java.util.stream.Collectors;
public class IndustrialJackhammerItem extends JackhammerItem implements MultiBlockBreakingTool {
public IndustrialJackhammerItem() {
super(TechRebornConfig.industrialJackhammerCharge, EnergyTier.INSANE, TechRebornConfig.industrialJackhammerCost);
super(TechRebornConfig.industrialJackhammerCharge, RcEnergyTier.INSANE, TechRebornConfig.industrialJackhammerCost);
}
// Cycle Inactive, Active 3*3 and Active 5*5

View file

@ -46,12 +46,10 @@ import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import reborncore.api.items.ItemStackModifiers;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergySide;
import team.reborn.energy.EnergyTier;
import reborncore.common.powerSystem.RcEnergyTier;
import techreborn.TechReborn;
import techreborn.config.TechRebornConfig;
import techreborn.init.TRContent;
@ -59,7 +57,7 @@ import techreborn.utils.MessageIDs;
import java.util.List;
public class NanosaberItem extends SwordItem implements EnergyHolder, ItemDurabilityExtensions, ItemStackModifiers {
public class NanosaberItem extends SwordItem implements RcEnergyItem, ItemDurabilityExtensions, ItemStackModifiers {
public static final int maxCharge = TechRebornConfig.nanosaberCharge;
public int cost = TechRebornConfig.nanosaberCost;
@ -71,7 +69,7 @@ public class NanosaberItem extends SwordItem implements EnergyHolder, ItemDurabi
// SwordItem
@Override
public boolean postHit(ItemStack stack, LivingEntity entityHit, LivingEntity entityHitter) {
return Energy.of(stack).use(cost);
return tryUseEnergy(stack, cost);
}
// ToolItem
@ -120,12 +118,12 @@ public class NanosaberItem extends SwordItem implements EnergyHolder, ItemDurabi
ItemStack inactiveCharged = new ItemStack(TRContent.NANOSABER);
inactiveCharged.setNbt(new NbtCompound());
inactiveCharged.getOrCreateNbt().putBoolean("isActive", false);
Energy.of(inactiveCharged).set(Energy.of(inactiveCharged).getMaxStored());
setStoredEnergy(inactiveCharged, getEnergyCapacity());
ItemStack activeCharged = new ItemStack(TRContent.NANOSABER);
activeCharged.setNbt(new NbtCompound());
activeCharged.getOrCreateNbt().putBoolean("isActive", true);
Energy.of(activeCharged).set(Energy.of(activeCharged).getMaxStored());
setStoredEnergy(activeCharged, getEnergyCapacity());
itemList.add(inactiveUncharged);
itemList.add(inactiveCharged);
@ -140,17 +138,17 @@ public class NanosaberItem extends SwordItem implements EnergyHolder, ItemDurabi
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public EnergyTier getTier() {
return EnergyTier.EXTREME;
public RcEnergyTier getTier() {
return RcEnergyTier.EXTREME;
}
@Override
public double getMaxOutput(EnergySide side) {
public long getEnergyMaxOutput() {
return 0;
}

View file

@ -45,13 +45,11 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import org.jetbrains.annotations.Nullable;
import reborncore.common.powerSystem.PowerSystem;
import reborncore.common.powerSystem.RcEnergyItem;
import reborncore.common.util.ItemDurabilityExtensions;
import reborncore.common.util.ItemUtils;
import reborncore.common.util.TorchHelper;
import team.reborn.energy.Energy;
import team.reborn.energy.EnergyHolder;
import team.reborn.energy.EnergySide;
import team.reborn.energy.EnergyTier;
import reborncore.common.powerSystem.RcEnergyTier;
import techreborn.TechReborn;
import techreborn.config.TechRebornConfig;
import techreborn.init.TRContent;
@ -60,7 +58,7 @@ import techreborn.utils.InitUtils;
import java.util.List;
public class OmniToolItem extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions, DynamicAttributeTool {
public class OmniToolItem extends PickaxeItem implements RcEnergyItem, ItemDurabilityExtensions, DynamicAttributeTool {
public final int maxCharge = TechRebornConfig.omniToolCharge;
public int cost = TechRebornConfig.omniToolCost;
@ -83,7 +81,7 @@ public class OmniToolItem extends PickaxeItem implements EnergyHolder, ItemDurab
@Override
public float getMiningSpeedMultiplier(ItemStack stack, BlockState state) {
if (Energy.of(stack).getEnergy() >= cost) {
if (getStoredEnergy(stack) >= cost) {
return ToolMaterials.DIAMOND.getMiningSpeedMultiplier();
}
return super.getMiningSpeedMultiplier(stack, state);
@ -92,13 +90,13 @@ public class OmniToolItem extends PickaxeItem implements EnergyHolder, ItemDurab
// MiningToolItem
@Override
public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) {
Energy.of(stack).use(cost);
tryUseEnergy(stack, cost);
return true;
}
@Override
public boolean postHit(ItemStack stack, LivingEntity entityliving, LivingEntity attacker) {
if (Energy.of(stack).use(hitCost)) {
if (tryUseEnergy(stack, hitCost)) {
entityliving.damage(DamageSource.player((PlayerEntity) attacker), 8F);
}
return false;
@ -159,18 +157,18 @@ public class OmniToolItem extends PickaxeItem implements EnergyHolder, ItemDurab
// EnergyHolder
@Override
public double getMaxStoredPower() {
public long getEnergyCapacity() {
return maxCharge;
}
@Override
public double getMaxOutput(EnergySide side) {
public long getEnergyMaxOutput() {
return 0;
}
@Override
public EnergyTier getTier() {
return EnergyTier.EXTREME;
public RcEnergyTier getTier() {
return RcEnergyTier.EXTREME;
}
// DynamicAttributeTool