Skip to content

Commit

Permalink
Miscellaneous cleanup of energy wrappers. Also fix BuildCraft's modid
Browse files Browse the repository at this point in the history
  • Loading branch information
pupnewfster committed Jul 16, 2019
1 parent 710e7ce commit e335220
Show file tree
Hide file tree
Showing 20 changed files with 162 additions and 211 deletions.
3 changes: 1 addition & 2 deletions etc/core/mcmod.info
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@
"redstoneflux",
"mcmultipart",
"jei",
"buildcraft",
"buildcraftapi",
"buildcraftcore",
"ic2",
"computercraft",
"galaticraft api",
Expand Down
31 changes: 8 additions & 23 deletions src/main/java/mekanism/common/base/EnergyAcceptorWrapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import mekanism.api.energy.IStrictEnergyAcceptor;
import mekanism.common.capabilities.Capabilities;
import mekanism.common.config.MekanismConfig;
import mekanism.common.integration.forgeenergy.ForgeEnergyIntegration;
import mekanism.common.integration.tesla.TeslaIntegration;
import mekanism.common.util.CapabilityUtils;
import mekanism.common.util.MekanismUtils;
import net.darkhax.tesla.api.ITeslaConsumer;
Expand All @@ -32,12 +34,12 @@ public static EnergyAcceptorWrapper get(TileEntity tileEntity, EnumFacing side)
EnergyAcceptorWrapper wrapper = null;
if (CapabilityUtils.hasCapability(tileEntity, Capabilities.ENERGY_ACCEPTOR_CAPABILITY, side)) {
wrapper = fromCapability(tileEntity, Capabilities.ENERGY_ACCEPTOR_CAPABILITY, side, MekanismAcceptor::new);
} else if (MekanismUtils.useTesla() && CapabilityUtils.hasCapability(tileEntity, Capabilities.TESLA_CONSUMER_CAPABILITY, side)) {
wrapper = fromCapability(tileEntity, Capabilities.TESLA_CONSUMER_CAPABILITY, side, TeslaAcceptor::new);
} else if (MekanismUtils.useForge() && CapabilityUtils.hasCapability(tileEntity, CapabilityEnergy.ENERGY, side)) {
wrapper = fromCapability(tileEntity, CapabilityEnergy.ENERGY, side, ForgeAcceptor::new);
} else if (MekanismUtils.useRF() && tileEntity instanceof IEnergyReceiver) {
wrapper = new RFAcceptor((IEnergyReceiver) tileEntity);
} else if (MekanismUtils.useTesla() && CapabilityUtils.hasCapability(tileEntity, Capabilities.TESLA_CONSUMER_CAPABILITY, side)) {
wrapper = fromCapability(tileEntity, Capabilities.TESLA_CONSUMER_CAPABILITY, side, TeslaAcceptor::new);
} else if (MekanismUtils.useIC2()) {
IEnergyTile tile = EnergyNet.instance.getSubTile(tileEntity.getWorld(), tileEntity.getPos());
if (tile instanceof IEnergySink) {
Expand All @@ -53,8 +55,7 @@ public static EnergyAcceptorWrapper get(TileEntity tileEntity, EnumFacing side)
/**
* Note: It is assumed that a check for hasCapability was already ran.
*/
private static <T> EnergyAcceptorWrapper fromCapability(TileEntity tileEntity, Capability<T> capability,
EnumFacing side, Function<T, EnergyAcceptorWrapper> makeAcceptor) {
private static <T> EnergyAcceptorWrapper fromCapability(TileEntity tileEntity, Capability<T> capability, EnumFacing side, Function<T, EnergyAcceptorWrapper> makeAcceptor) {
T acceptor = CapabilityUtils.getCapability(tileEntity, capability, side);
if (acceptor != null) {
return makeAcceptor.apply(acceptor);
Expand Down Expand Up @@ -170,7 +171,7 @@ public TeslaAcceptor(ITeslaConsumer teslaConsumer) {

@Override
public double acceptEnergy(EnumFacing side, double amount, boolean simulate) {
return fromTesla(acceptor.givePower(toTesla(amount), simulate));
return TeslaIntegration.fromTesla(acceptor.givePower(TeslaIntegration.toTesla(amount), simulate));
}

@Override
Expand All @@ -182,14 +183,6 @@ public boolean canReceiveEnergy(EnumFacing side) {
public boolean needsEnergy(EnumFacing side) {
return canReceiveEnergy(side);
}

public long toTesla(double joules) {
return Math.round(joules * MekanismConfig.current().general.TO_TESLA.val());
}

public double fromTesla(double tesla) {
return tesla * MekanismConfig.current().general.FROM_TESLA.val();
}
}

public static class ForgeAcceptor extends EnergyAcceptorWrapper {
Expand All @@ -202,7 +195,7 @@ public ForgeAcceptor(IEnergyStorage forgeConsumer) {

@Override
public double acceptEnergy(EnumFacing side, double amount, boolean simulate) {
return fromForge(acceptor.receiveEnergy(toForge(amount), simulate));
return ForgeEnergyIntegration.fromForge(acceptor.receiveEnergy(ForgeEnergyIntegration.toForge(amount), simulate));
}

@Override
Expand All @@ -212,15 +205,7 @@ public boolean canReceiveEnergy(EnumFacing side) {

@Override
public boolean needsEnergy(EnumFacing side) {
return acceptor.canReceive();
}

public int toForge(double joules) {
return MekanismUtils.clampToInt(joules * MekanismConfig.current().general.TO_FORGE.val());
}

public double fromForge(double forge) {
return forge * MekanismConfig.current().general.FROM_FORGE.val();
return acceptor.receiveEnergy(1, true) > 0;
}
}
}
10 changes: 6 additions & 4 deletions src/main/java/mekanism/common/entity/EntityRobit.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import mekanism.common.entity.ai.RobitAIFollow;
import mekanism.common.entity.ai.RobitAIPickup;
import mekanism.common.integration.MekanismHooks;
import mekanism.common.integration.forgeenergy.ForgeEnergyIntegration;
import mekanism.common.integration.tesla.TeslaIntegration;
import mekanism.common.item.ItemConfigurator;
import mekanism.common.item.ItemRobit;
import mekanism.common.tile.TileEntityChargepad;
Expand Down Expand Up @@ -168,13 +170,13 @@ public void onEntityUpdate() {
setEnergy(getEnergy() + EnergizedItemManager.discharge(stack, MAX_ELECTRICITY - getEnergy()));
} else if (MekanismUtils.useTesla() && stack.hasCapability(Capabilities.TESLA_PRODUCER_CAPABILITY, null)) {
ITeslaProducer producer = stack.getCapability(Capabilities.TESLA_PRODUCER_CAPABILITY, null);
long needed = Math.round((MAX_ELECTRICITY - getEnergy()) * MekanismConfig.current().general.TO_TESLA.val());
setEnergy(getEnergy() + producer.takePower(needed, false) * MekanismConfig.current().general.FROM_TESLA.val());
long needed = TeslaIntegration.toTesla(MAX_ELECTRICITY - getEnergy());
setEnergy(getEnergy() + TeslaIntegration.fromTesla(producer.takePower(needed, false)));
} else if (MekanismUtils.useForge() && stack.hasCapability(CapabilityEnergy.ENERGY, null)) {
IEnergyStorage storage = stack.getCapability(CapabilityEnergy.ENERGY, null);
if (storage.canExtract()) {
int needed = MekanismUtils.clampToInt((MAX_ELECTRICITY - getEnergy()) * MekanismConfig.current().general.TO_FORGE.val());
setEnergy(getEnergy() + storage.extractEnergy(needed, false) * MekanismConfig.current().general.FROM_FORGE.val());
int needed = ForgeEnergyIntegration.toForge(MAX_ELECTRICITY - getEnergy());
setEnergy(getEnergy() + ForgeEnergyIntegration.fromForge(storage.extractEnergy(needed, false)));
}
} else if (MekanismUtils.useRF() && stack.getItem() instanceof IEnergyContainerItem) {
IEnergyContainerItem item = (IEnergyContainerItem) stack.getItem();
Expand Down
62 changes: 21 additions & 41 deletions src/main/java/mekanism/common/integration/MekanismHooks.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,57 +60,37 @@ public final class MekanismHooks {
public static final String GALACTICRAFT_MOD_ID = "Galacticraft API";
public static final String WAILA_MOD_ID = "Waila";
public static final String TOP_MOD_ID = "theoneprobe";
public static final String BUILDCRAFT_MOD_ID = "BuildCraft";
public static final String BUILDCRAFT_MOD_ID = "buildcraftcore";
public static final String CYCLIC_MOD_ID = "cyclicmagic";
public static final String MYSTICALAGRICULTURE_MOD_ID = "mysticalagriculture";
public static final String CRAFTTWEAKER_MOD_ID = "crafttweaker";

public boolean IC2Loaded = false;
public boolean CCLoaded = false;
public boolean AE2Loaded = false;
public boolean TeslaLoaded = false;
public boolean BuildCraftLoaded = false;
public boolean CCLoaded = false;
public boolean CraftTweakerLoaded = false;
public boolean CyclicLoaded = false;
public boolean IC2Loaded = false;
public boolean MALoaded = false;
public boolean MCMPLoaded = false;
public boolean RFLoaded = false;
public boolean MetallurgyLoaded = false;
public boolean CyclicLoaded = false;
public boolean OCLoaded = false;
public boolean MALoaded = false;
public boolean CraftTweakerLoaded = false;
public boolean RFLoaded = false;
public boolean TeslaLoaded = false;

public void hookPreInit() {
if (Loader.isModLoaded(IC2_MOD_ID)) {
IC2Loaded = true;
}
if (Loader.isModLoaded(COMPUTERCRAFT_MOD_ID)) {
CCLoaded = true;
}
if (Loader.isModLoaded(APPLIED_ENERGISTICS_2_MOD_ID)) {
AE2Loaded = true;
}
if (Loader.isModLoaded(OPENCOMPUTERS_MOD_ID)) {
OCLoaded = true;
}
if (Loader.isModLoaded(TESLA_MOD_ID)) {
TeslaLoaded = true;
}
if (Loader.isModLoaded(MCMULTIPART_MOD_ID)) {
MCMPLoaded = true;
}
if (Loader.isModLoaded(REDSTONEFLUX_MOD_ID)) {
RFLoaded = true;
}
if (Loader.isModLoaded(CYCLIC_MOD_ID)) {
CyclicLoaded = true;
}
if (Loader.isModLoaded(METALLURGY_MOD_ID)) {
MetallurgyLoaded = true;
}
if (Loader.isModLoaded(MYSTICALAGRICULTURE_MOD_ID)) {
MALoaded = true;
}
if (Loader.isModLoaded(CRAFTTWEAKER_MOD_ID)) {
CraftTweakerLoaded = true;
}
AE2Loaded = Loader.isModLoaded(APPLIED_ENERGISTICS_2_MOD_ID);
BuildCraftLoaded = Loader.isModLoaded(BUILDCRAFT_MOD_ID);
CCLoaded = Loader.isModLoaded(COMPUTERCRAFT_MOD_ID);
CraftTweakerLoaded = Loader.isModLoaded(CRAFTTWEAKER_MOD_ID);
CyclicLoaded = Loader.isModLoaded(CYCLIC_MOD_ID);
IC2Loaded = Loader.isModLoaded(IC2_MOD_ID);
MCMPLoaded = Loader.isModLoaded(MCMULTIPART_MOD_ID);
MetallurgyLoaded = Loader.isModLoaded(METALLURGY_MOD_ID);
MALoaded = Loader.isModLoaded(MYSTICALAGRICULTURE_MOD_ID);
OCLoaded = Loader.isModLoaded(OPENCOMPUTERS_MOD_ID);
RFLoaded = Loader.isModLoaded(REDSTONEFLUX_MOD_ID);
TeslaLoaded = Loader.isModLoaded(TESLA_MOD_ID);
}

public void hookInit() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ public ForgeEnergyCableIntegration(TileEntityUniversalCable tile, EnumFacing fac

@Override
public int receiveEnergy(int maxReceive, boolean simulate) {
return MekanismUtils.clampToInt(tileEntity.acceptEnergy(side, maxReceive * MekanismConfig.current().general.FROM_FORGE.val(), simulate)
* MekanismConfig.current().general.TO_FORGE.val());
return ForgeEnergyIntegration.toForge(tileEntity.acceptEnergy(side, ForgeEnergyIntegration.fromForge(maxReceive), simulate));
}

@Override
Expand All @@ -30,12 +29,12 @@ public int extractEnergy(int maxExtract, boolean simulate) {

@Override
public int getEnergyStored() {
return MekanismUtils.clampToInt(tileEntity.getEnergy() * MekanismConfig.current().general.TO_FORGE.val());
return ForgeEnergyIntegration.toForge(tileEntity.getEnergy());
}

@Override
public int getMaxEnergyStored() {
return MekanismUtils.clampToInt(tileEntity.getMaxEnergy() * MekanismConfig.current().general.TO_FORGE.val());
return ForgeEnergyIntegration.toForge(tileEntity.getMaxEnergy());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,32 +17,32 @@ public ForgeEnergyIntegration(IEnergyWrapper tile, EnumFacing facing) {
side = facing;
}

public static double forgeToMek(int forge) {
public static double fromForge(int forge) {
return forge * MekanismConfig.current().general.FROM_FORGE.val();
}

public static int mekToForge(double mek) {
return MekanismUtils.clampToInt(mek * MekanismConfig.current().general.TO_FORGE.val());
public static int toForge(double joules) {
return MekanismUtils.clampToInt(joules * MekanismConfig.current().general.TO_FORGE.val());
}

@Override
public int receiveEnergy(int maxReceive, boolean simulate) {
return mekToForge(tileEntity.acceptEnergy(side, forgeToMek(maxReceive), simulate));
return toForge(tileEntity.acceptEnergy(side, fromForge(maxReceive), simulate));
}

@Override
public int extractEnergy(int maxExtract, boolean simulate) {
return mekToForge(tileEntity.pullEnergy(side, forgeToMek(maxExtract), simulate));
return toForge(tileEntity.pullEnergy(side, fromForge(maxExtract), simulate));
}

@Override
public int getEnergyStored() {
return Math.min(Integer.MAX_VALUE, mekToForge(tileEntity.getEnergy()));
return toForge(tileEntity.getEnergy());
}

@Override
public int getMaxEnergyStored() {
return Math.min(Integer.MAX_VALUE, mekToForge(tileEntity.getMaxEnergy()));
return toForge(tileEntity.getMaxEnergy());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import mekanism.api.energy.IEnergizedItem;
import mekanism.common.capabilities.ItemCapabilityWrapper.ItemCapability;
import mekanism.common.config.MekanismConfig;
import mekanism.common.util.MekanismUtils;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
Expand All @@ -25,7 +23,7 @@ public int receiveEnergy(int maxReceive, boolean simulate) {
int energyNeeded = getMaxEnergyStored() - getEnergyStored();
int toReceive = Math.min(maxReceive, energyNeeded);
if (!simulate) {
getItem().setEnergy(getStack(), getItem().getEnergy(getStack()) + toReceive * MekanismConfig.current().general.FROM_TESLA.val());
getItem().setEnergy(getStack(), getItem().getEnergy(getStack()) + ForgeEnergyIntegration.fromForge(toReceive));
}
return toReceive;
}
Expand All @@ -38,7 +36,7 @@ public int extractEnergy(int maxExtract, boolean simulate) {
int energyRemaining = getEnergyStored();
int toSend = Math.min(maxExtract, energyRemaining);
if (!simulate) {
getItem().setEnergy(getStack(), getItem().getEnergy(getStack()) - toSend * MekanismConfig.current().general.FROM_TESLA.val());
getItem().setEnergy(getStack(), getItem().getEnergy(getStack()) - ForgeEnergyIntegration.fromForge(toSend));
}
return toSend;
}
Expand All @@ -47,12 +45,12 @@ public int extractEnergy(int maxExtract, boolean simulate) {

@Override
public int getEnergyStored() {
return MekanismUtils.clampToInt(Math.round(getItem().getEnergy(getStack()) * MekanismConfig.current().general.TO_FORGE.val()));
return ForgeEnergyIntegration.toForge(getItem().getEnergy(getStack()));
}

@Override
public int getMaxEnergyStored() {
return MekanismUtils.clampToInt(Math.round(getItem().getMaxEnergy(getStack()) * MekanismConfig.current().general.TO_FORGE.val()));
return ForgeEnergyIntegration.toForge(getItem().getMaxEnergy(getStack()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import ic2.api.energy.tile.IEnergySink;
import ic2.api.energy.tile.IEnergySource;
import ic2.api.energy.tile.IEnergyTile;
import mekanism.common.base.IEnergyWrapper;
import mekanism.common.config.MekanismConfig;
import mekanism.common.integration.MekanismHooks;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
Expand All @@ -21,23 +19,11 @@ public static boolean isOutputter(TileEntity tileEntity, EnumFacing side) {
}

@Method(modid = MekanismHooks.IC2_MOD_ID)
public static boolean isAcceptor(TileEntity orig, TileEntity tileEntity, EnumFacing side) {
public static boolean isAcceptor(TileEntity tileEntity, EnumFacing side) {
IEnergyTile tile = EnergyNet.instance.getSubTile(tileEntity.getWorld(), tileEntity.getPos());
if (tile instanceof IEnergySink) {
return ((IEnergySink) tile).acceptsEnergyFrom(null, side.getOpposite());
}
return false;
}

@Method(modid = MekanismHooks.IC2_MOD_ID)
public static double emitEnergy(IEnergyWrapper from, TileEntity tileEntity, EnumFacing side, double currentSending) {
IEnergyTile tile = EnergyNet.instance.getSubTile(tileEntity.getWorld(), tileEntity.getPos());
if (tile instanceof IEnergySink && ((IEnergySink) tile).acceptsEnergyFrom(from, side.getOpposite())) {
double toSend = Math.min(currentSending * MekanismConfig.current().general.TO_IC2.val(),
EnergyNet.instance.getPowerFromTier(((IEnergySink) tile).getSinkTier()));
toSend = Math.min(toSend, ((IEnergySink) tile).getDemandedEnergy());
return (toSend - ((IEnergySink) tile).injectEnergy(side.getOpposite(), toSend, 0)) * MekanismConfig.current().general.FROM_IC2.val();
}
return 0;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public TeslaCableIntegration(TileEntityUniversalCable tile, EnumFacing facing) {

@Override
@Method(modid = MekanismHooks.TESLA_MOD_ID)
public long givePower(long power, boolean simulated) {
return Math.round(tileEntity.acceptEnergy(side, power * MekanismConfig.current().general.FROM_TESLA.val(), simulated) * MekanismConfig.current().general.TO_TESLA.val());
public long givePower(long power, boolean simulate) {
return TeslaIntegration.toTesla(tileEntity.acceptEnergy(side, TeslaIntegration.fromTesla(power), simulate));
}
}
Loading

0 comments on commit e335220

Please sign in to comment.