Added integration for Forge energy

This commit is contained in:
Raoul Van den Berge
2016-09-16 21:07:36 +02:00
parent c90450ebde
commit afd1b8819a
6 changed files with 111 additions and 10 deletions

View File

@@ -2,8 +2,10 @@
### 1.0.3 ### 1.0.3
- Fixed item loading issue (raoulvdberge) - Fixed item loading issue (raoulvdberge)
- Added integration for Forge energy (raoulvdberge)
- Solderer now accepts items from any side, allowing easier automation (raoulvdberge) - Solderer now accepts items from any side, allowing easier automation (raoulvdberge)
- Solderer is now intelligent about items in slots, and will only accept an item if it is part of a recipe (raoulvdberge) - Solderer is now intelligent about items in slots, and will only accept an item if it is part of a recipe (raoulvdberge)
- Updated to Forge 2088 (raoulvdberge)
### 1.0.2 ### 1.0.2
- Fixed processing patterns not handling item insertion sometimes (raoulvdberge) - Fixed processing patterns not handling item insertion sometimes (raoulvdberge)

View File

@@ -0,0 +1,42 @@
package refinedstorage.integration.forgeenergy;
import net.minecraftforge.energy.IEnergyStorage;
import refinedstorage.tile.TileController;
public class ControllerEnergyForge implements IEnergyStorage {
private TileController controller;
public ControllerEnergyForge(TileController controller) {
this.controller = controller;
}
@Override
public int receiveEnergy(int maxReceive, boolean simulate) {
return controller.getEnergy().receiveEnergy(maxReceive, simulate);
}
@Override
public int extractEnergy(int maxExtract, boolean simulate) {
return controller.getEnergy().extractEnergy(maxExtract, simulate);
}
@Override
public int getEnergyStored() {
return controller.getEnergy().getEnergyStored();
}
@Override
public int getMaxEnergyStored() {
return controller.getEnergy().getMaxEnergyStored();
}
@Override
public boolean canExtract() {
return false;
}
@Override
public boolean canReceive() {
return true;
}
}

View File

@@ -0,0 +1,43 @@
package refinedstorage.integration.forgeenergy;
import net.minecraft.item.ItemStack;
import net.minecraftforge.energy.IEnergyStorage;
import refinedstorage.RefinedStorageItems;
public class WirelessGridEnergyForge implements IEnergyStorage {
private ItemStack stack;
public WirelessGridEnergyForge(ItemStack stack) {
this.stack = stack;
}
@Override
public int receiveEnergy(int maxReceive, boolean simulate) {
return RefinedStorageItems.WIRELESS_GRID.receiveEnergy(stack, maxReceive, simulate);
}
@Override
public int extractEnergy(int maxExtract, boolean simulate) {
return RefinedStorageItems.WIRELESS_GRID.extractEnergy(stack, maxExtract, simulate);
}
@Override
public int getEnergyStored() {
return RefinedStorageItems.WIRELESS_GRID.getEnergyStored(stack);
}
@Override
public int getMaxEnergyStored() {
return RefinedStorageItems.WIRELESS_GRID.getMaxEnergyStored(stack);
}
@Override
public boolean canExtract() {
return true;
}
@Override
public boolean canReceive() {
return true;
}
}

View File

@@ -3,29 +3,27 @@ package refinedstorage.integration.tesla;
import net.darkhax.tesla.api.ITeslaConsumer; import net.darkhax.tesla.api.ITeslaConsumer;
import net.darkhax.tesla.api.ITeslaHolder; import net.darkhax.tesla.api.ITeslaHolder;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import refinedstorage.item.ItemWirelessGrid; import refinedstorage.RefinedStorageItems;
public class WirelessGridEnergyTesla implements ITeslaHolder, ITeslaConsumer { public class WirelessGridEnergyTesla implements ITeslaHolder, ITeslaConsumer {
private ItemWirelessGrid wirelessGrid;
private ItemStack stack; private ItemStack stack;
public WirelessGridEnergyTesla(ItemWirelessGrid wirelessGrid, ItemStack stack) { public WirelessGridEnergyTesla(ItemStack stack) {
this.wirelessGrid = wirelessGrid;
this.stack = stack; this.stack = stack;
} }
@Override @Override
public long getStoredPower() { public long getStoredPower() {
return wirelessGrid.getEnergyStored(stack); return RefinedStorageItems.WIRELESS_GRID.getEnergyStored(stack);
} }
@Override @Override
public long getCapacity() { public long getCapacity() {
return wirelessGrid.getMaxEnergyStored(stack); return RefinedStorageItems.WIRELESS_GRID.getMaxEnergyStored(stack);
} }
@Override @Override
public long givePower(long power, boolean simulated) { public long givePower(long power, boolean simulated) {
return wirelessGrid.receiveEnergy(stack, (int) power, simulated); return RefinedStorageItems.WIRELESS_GRID.receiveEnergy(stack, (int) power, simulated);
} }
} }

View File

@@ -20,9 +20,11 @@ import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.capabilities.ICapabilityProvider;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.fml.common.Optional; import net.minecraftforge.fml.common.Optional;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks; import refinedstorage.RefinedStorageBlocks;
import refinedstorage.integration.forgeenergy.WirelessGridEnergyForge;
import refinedstorage.integration.ic2.IntegrationIC2; import refinedstorage.integration.ic2.IntegrationIC2;
import refinedstorage.integration.tesla.IntegrationTesla; import refinedstorage.integration.tesla.IntegrationTesla;
import refinedstorage.integration.tesla.WirelessGridEnergyTesla; import refinedstorage.integration.tesla.WirelessGridEnergyTesla;
@@ -293,13 +295,18 @@ public class ItemWirelessGrid extends ItemEnergyContainer implements ISpecialEle
@Override @Override
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) { public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
return IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER); return capability == CapabilityEnergy.ENERGY ||
(IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER));
} }
@Override @Override
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) { public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) {
if (capability == CapabilityEnergy.ENERGY) {
return (T) new WirelessGridEnergyForge(stack);
}
if (IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) { if (IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) {
return (T) new WirelessGridEnergyTesla(ItemWirelessGrid.this, stack); return (T) new WirelessGridEnergyTesla(stack);
} }
return null; return null;

View File

@@ -16,6 +16,7 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.Constants;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorage;
@@ -47,6 +48,7 @@ import refinedstorage.block.BlockController;
import refinedstorage.block.EnumControllerType; import refinedstorage.block.EnumControllerType;
import refinedstorage.block.EnumGridType; import refinedstorage.block.EnumGridType;
import refinedstorage.container.ContainerGrid; import refinedstorage.container.ContainerGrid;
import refinedstorage.integration.forgeenergy.ControllerEnergyForge;
import refinedstorage.integration.ic2.ControllerEnergyIC2; import refinedstorage.integration.ic2.ControllerEnergyIC2;
import refinedstorage.integration.ic2.ControllerEnergyIC2None; import refinedstorage.integration.ic2.ControllerEnergyIC2None;
import refinedstorage.integration.ic2.IControllerEnergyIC2; import refinedstorage.integration.ic2.IControllerEnergyIC2;
@@ -184,6 +186,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
private List<NBTTagCompound> craftingTasksToRead = new ArrayList<>(); private List<NBTTagCompound> craftingTasksToRead = new ArrayList<>();
private EnergyStorage energy = new EnergyStorage(RefinedStorage.INSTANCE.controllerCapacity); private EnergyStorage energy = new EnergyStorage(RefinedStorage.INSTANCE.controllerCapacity);
private ControllerEnergyForge energyForge = new ControllerEnergyForge(this);
private IControllerEnergyIC2 energyEU; private IControllerEnergyIC2 energyEU;
private ControllerEnergyTesla energyTesla; private ControllerEnergyTesla energyTesla;
@@ -827,6 +830,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) { public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == CapabilityEnergy.ENERGY) {
return (T) energyForge;
}
if (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) { if (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) {
return (T) energyTesla; return (T) energyTesla;
} }
@@ -836,6 +843,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) { public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
return (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) || super.hasCapability(capability, facing); return capability == CapabilityEnergy.ENERGY
|| (energyTesla != null && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER))
|| super.hasCapability(capability, facing);
} }
} }