Added initial TechReborn compatibility to the EnergyAcceptor.

This commit is contained in:
Sebastian Hartte
2020-08-16 18:14:57 +02:00
parent ab6f46077b
commit cf656e1540
26 changed files with 113 additions and 84 deletions
@@ -18,31 +18,29 @@
package appeng.tile.powersink;
import java.util.EnumSet;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.World;
import alexiil.mc.lib.attributes.AttributeList;
import alexiil.mc.lib.attributes.AttributeProvider;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.config.PowerMultiplier;
import appeng.api.config.PowerUnits;
import appeng.api.networking.energy.IAEPowerStorage;
import appeng.api.networking.events.MENetworkPowerStorage.PowerEventType;
import appeng.core.AEConfig;
import appeng.tile.AEBaseInvBlockEntity;
import com.google.common.collect.ImmutableSet;
import net.minecraft.block.BlockState;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.MathHelper;
import team.reborn.energy.EnergySide;
import team.reborn.energy.EnergyStorage;
import team.reborn.energy.EnergyTier;
import java.util.EnumSet;
import java.util.Set;
public abstract class AEBasePoweredBlockEntity extends AEBaseInvBlockEntity
implements IAEPowerStorage, IExternalPowerSink, AttributeProvider {
implements IAEPowerStorage, IExternalPowerSink, EnergyStorage {
// values that determine general function, are set by inheriting classes if
// needed. These should generally remain static.
@@ -230,10 +228,37 @@ public abstract class AEBasePoweredBlockEntity extends AEBaseInvBlockEntity
}
@Override
public void addAllAttributes(World world, BlockPos pos, BlockState state, AttributeList<?> to) {
super.addAllAttributes(world, pos, state, to);
public double getMaxInput(EnergySide side) {
double attemptedInsert = AEConfig.instance().getPowerTransactionLimitTechReborn();
double overflow = this.injectExternalPower(PowerUnits.TR, attemptedInsert, Actionable.SIMULATE);
double couldInsert = attemptedInsert - overflow;
if (couldInsert < 0.001) {
return 0;
}
// FIXME FABRIC: Offer energy attributes
return PowerUnits.AE.convertTo(PowerUnits.TR, couldInsert);
}
@Override
public double getStored(EnergySide energySide) {
// This block acts as if it cannot actually store any energy
return 0.0;
}
@Override
public void setStored(double v) {
v = MathHelper.clamp(v, 0.001, getMaxStoredPower());
this.injectExternalPower(PowerUnits.TR, v, Actionable.MODULATE);
}
@Override
public double getMaxStoredPower() {
return AEConfig.instance().getPowerTransactionLimitTechReborn();
}
@Override
public EnergyTier getTier() {
return EnergyTier.INFINITE;
}
}