mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-22 23:28:35 +01:00
Added Forge Units support to everything
This commit is contained in:
parent
3176bafd2b
commit
b9a84481d1
13 changed files with 176 additions and 35 deletions
|
@ -24,6 +24,7 @@ import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemArmor;
|
import net.minecraft.item.ItemArmor;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
@ -94,7 +95,7 @@ public class ContainerEnergizer extends Container{
|
||||||
//Other Slots in Inventory excluded
|
//Other Slots in Inventory excluded
|
||||||
else if(slot >= inventoryStart){
|
else if(slot >= inventoryStart){
|
||||||
//Shift from Inventory
|
//Shift from Inventory
|
||||||
if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaConsumer, null))){
|
if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaConsumer, null)) || newStack.hasCapability(CapabilityEnergy.ENERGY, null)){
|
||||||
if(!this.mergeItemStack(newStack, 0, 1, false)){
|
if(!this.mergeItemStack(newStack, 0, 1, false)){
|
||||||
return StackUtil.getNull();
|
return StackUtil.getNull();
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ import net.minecraft.inventory.EntityEquipmentSlot;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemArmor;
|
import net.minecraft.item.ItemArmor;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
@ -93,7 +94,7 @@ public class ContainerEnervator extends Container{
|
||||||
//Other Slots in Inventory excluded
|
//Other Slots in Inventory excluded
|
||||||
else if(slot >= inventoryStart){
|
else if(slot >= inventoryStart){
|
||||||
//Shift from Inventory
|
//Shift from Inventory
|
||||||
if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaProducer, null))){
|
if(newStack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && newStack.hasCapability(TeslaUtil.teslaProducer, null)) || newStack.hasCapability(CapabilityEnergy.ENERGY, null)){
|
||||||
if(!this.mergeItemStack(newStack, 0, 1, false)){
|
if(!this.mergeItemStack(newStack, 0, 1, false)){
|
||||||
return StackUtil.getNull();
|
return StackUtil.getNull();
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,8 @@ import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.EnumActionResult;
|
import net.minecraft.util.EnumActionResult;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -55,16 +57,22 @@ public class ItemBattery extends ItemEnergy{
|
||||||
for(int i = 0; i < player.inventory.getSizeInventory(); i++){
|
for(int i = 0; i < player.inventory.getSizeInventory(); i++){
|
||||||
ItemStack slot = player.inventory.getStackInSlot(i);
|
ItemStack slot = player.inventory.getStackInSlot(i);
|
||||||
if(StackUtil.isValid(slot)){
|
if(StackUtil.isValid(slot)){
|
||||||
|
int extractable = this.extractEnergy(stack, Integer.MAX_VALUE, true);
|
||||||
int received = 0;
|
int received = 0;
|
||||||
|
|
||||||
Item item = slot.getItem();
|
if(slot.getItem() instanceof IEnergyContainerItem){
|
||||||
if(item instanceof IEnergyContainerItem){
|
received = ((IEnergyContainerItem)slot.getItem()).receiveEnergy(slot, extractable, false);
|
||||||
received = ((IEnergyContainerItem)item).receiveEnergy(slot, this.extractEnergy(stack, Integer.MAX_VALUE, true), false);
|
}
|
||||||
|
else if(slot.hasCapability(CapabilityEnergy.ENERGY, null)){
|
||||||
|
IEnergyStorage cap = slot.getCapability(CapabilityEnergy.ENERGY, null);
|
||||||
|
if(cap != null){
|
||||||
|
received = cap.receiveEnergy(extractable, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded && slot.hasCapability(TeslaUtil.teslaConsumer, null)){
|
else if(ActuallyAdditions.teslaLoaded && slot.hasCapability(TeslaUtil.teslaConsumer, null)){
|
||||||
ITeslaConsumer cap = slot.getCapability(TeslaUtil.teslaConsumer, null);
|
ITeslaConsumer cap = slot.getCapability(TeslaUtil.teslaConsumer, null);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
received = (int)cap.givePower(this.extractEnergy(stack, Integer.MAX_VALUE, true), false);
|
received = (int)cap.givePower(extractable, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.items.base;
|
package de.ellpeck.actuallyadditions.mod.items.base;
|
||||||
|
|
||||||
|
import cofh.api.energy.IEnergyContainerItem;
|
||||||
|
import cofh.api.energy.IEnergyStorage;
|
||||||
import cofh.api.energy.ItemEnergyContainer;
|
import cofh.api.energy.ItemEnergyContainer;
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||||
import de.ellpeck.actuallyadditions.mod.data.PlayerData;
|
import de.ellpeck.actuallyadditions.mod.data.PlayerData;
|
||||||
|
@ -20,12 +22,17 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
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.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -119,7 +126,7 @@ public abstract class ItemEnergy extends ItemEnergyContainer{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt){
|
public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt){
|
||||||
return ActuallyAdditions.teslaLoaded ? new ItemTeslaWrapper(stack, this) : null;
|
return new EnergyCapabilityProvider(stack, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int extractEnergyInternal(ItemStack stack, int maxExtract, boolean simulate){
|
public int extractEnergyInternal(ItemStack stack, int maxExtract, boolean simulate){
|
||||||
|
@ -141,4 +148,60 @@ public abstract class ItemEnergy extends ItemEnergyContainer{
|
||||||
this.setMaxReceive(before);
|
this.setMaxReceive(before);
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class EnergyCapabilityProvider implements ICapabilityProvider{
|
||||||
|
|
||||||
|
private final Object forgeUnitsWrapper;
|
||||||
|
private Object teslaWrapper;
|
||||||
|
|
||||||
|
private final IEnergyContainerItem item;
|
||||||
|
private final ItemStack stack;
|
||||||
|
|
||||||
|
public EnergyCapabilityProvider(final ItemStack stack, final IEnergyContainerItem item){
|
||||||
|
this.stack = stack;
|
||||||
|
this.item = item;
|
||||||
|
|
||||||
|
this.forgeUnitsWrapper = new IEnergyStorage(){
|
||||||
|
@Override
|
||||||
|
public int receiveEnergy(int maxReceive, boolean simulate){
|
||||||
|
return item.receiveEnergy(stack, maxReceive, simulate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int extractEnergy(int maxExtract, boolean simulate){
|
||||||
|
return item.extractEnergy(stack, maxExtract, simulate);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnergyStored(){
|
||||||
|
return item.getEnergyStored(stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxEnergyStored(){
|
||||||
|
return item.getMaxEnergyStored(stack);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasCapability(Capability<?> capability, EnumFacing facing){
|
||||||
|
return this.getCapability(capability, facing) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public <T> T getCapability(Capability<T> capability, EnumFacing facing){
|
||||||
|
if(capability == CapabilityEnergy.ENERGY){
|
||||||
|
return (T)this.forgeUnitsWrapper;
|
||||||
|
}
|
||||||
|
else if(ActuallyAdditions.teslaLoaded){
|
||||||
|
if(this.teslaWrapper == null){
|
||||||
|
this.teslaWrapper = new ItemTeslaWrapper(this.stack, this.item);
|
||||||
|
}
|
||||||
|
return (T)this.teslaWrapper;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -353,6 +353,15 @@ public abstract class TileEntityBase extends TileEntity implements ITickable{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void invalidate(){
|
||||||
|
super.invalidate();
|
||||||
|
|
||||||
|
if(ActuallyAdditions.teslaLoaded){
|
||||||
|
TeslaUtil.removeTile(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public enum NBTType{
|
public enum NBTType{
|
||||||
SAVE_TILE,
|
SAVE_TILE,
|
||||||
SYNC,
|
SYNC,
|
||||||
|
|
|
@ -20,6 +20,7 @@ import net.darkhax.tesla.api.ITeslaHolder;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.energy.IEnergyStorage;
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
@ -59,6 +60,13 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements ICus
|
||||||
received = (item.receiveEnergy(this.slots.get(0), this.storage.getEnergyStored(), false));
|
received = (item.receiveEnergy(this.slots.get(0), this.storage.getEnergyStored(), false));
|
||||||
canTakeUp = item.getEnergyStored(this.slots.get(0)) >= item.getMaxEnergyStored(this.slots.get(0));
|
canTakeUp = item.getEnergyStored(this.slots.get(0)) >= item.getMaxEnergyStored(this.slots.get(0));
|
||||||
}
|
}
|
||||||
|
else if(this.slots.get(0).hasCapability(CapabilityEnergy.ENERGY, null)){
|
||||||
|
IEnergyStorage cap = this.slots.get(0).getCapability(CapabilityEnergy.ENERGY, null);
|
||||||
|
if(cap != null){
|
||||||
|
received = cap.receiveEnergy(this.storage.getEnergyStored(), false);
|
||||||
|
canTakeUp = cap.getEnergyStored() >= cap.getMaxEnergyStored();
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded){
|
else if(ActuallyAdditions.teslaLoaded){
|
||||||
if(this.slots.get(0).hasCapability(TeslaUtil.teslaConsumer, null)){
|
if(this.slots.get(0).hasCapability(TeslaUtil.teslaConsumer, null)){
|
||||||
ITeslaConsumer cap = this.slots.get(0).getCapability(TeslaUtil.teslaConsumer, null);
|
ITeslaConsumer cap = this.slots.get(0).getCapability(TeslaUtil.teslaConsumer, null);
|
||||||
|
@ -92,7 +100,7 @@ public class TileEntityEnergizer extends TileEntityInventoryBase implements ICus
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int i, ItemStack stack){
|
public boolean isItemValidForSlot(int i, ItemStack stack){
|
||||||
return i == 0 && (stack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && stack.hasCapability(TeslaUtil.teslaConsumer, null)));
|
return i == 0 && (stack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && stack.hasCapability(TeslaUtil.teslaConsumer, null)) || stack.hasCapability(CapabilityEnergy.ENERGY, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.tile;
|
package de.ellpeck.actuallyadditions.mod.tile;
|
||||||
|
|
||||||
import cofh.api.energy.EnergyStorage;
|
|
||||||
import cofh.api.energy.IEnergyContainerItem;
|
import cofh.api.energy.IEnergyContainerItem;
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
|
@ -20,6 +19,7 @@ import net.darkhax.tesla.api.ITeslaProducer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.energy.IEnergyStorage;
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
@ -60,6 +60,13 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
|
||||||
extracted = item.extractEnergy(this.slots.get(0), maxExtract, false);
|
extracted = item.extractEnergy(this.slots.get(0), maxExtract, false);
|
||||||
canTakeUp = item.getEnergyStored(this.slots.get(0)) <= 0;
|
canTakeUp = item.getEnergyStored(this.slots.get(0)) <= 0;
|
||||||
}
|
}
|
||||||
|
else if(this.slots.get(0).hasCapability(CapabilityEnergy.ENERGY, null)){
|
||||||
|
IEnergyStorage cap = this.slots.get(0).getCapability(CapabilityEnergy.ENERGY, null);
|
||||||
|
if(cap != null){
|
||||||
|
extracted = cap.extractEnergy(maxExtract, false);
|
||||||
|
canTakeUp = cap.getEnergyStored() <= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded){
|
else if(ActuallyAdditions.teslaLoaded){
|
||||||
if(this.slots.get(0).hasCapability(TeslaUtil.teslaProducer, null)){
|
if(this.slots.get(0).hasCapability(TeslaUtil.teslaProducer, null)){
|
||||||
ITeslaProducer cap = this.slots.get(0).getCapability(TeslaUtil.teslaProducer, null);
|
ITeslaProducer cap = this.slots.get(0).getCapability(TeslaUtil.teslaProducer, null);
|
||||||
|
@ -93,7 +100,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int i, ItemStack stack){
|
public boolean isItemValidForSlot(int i, ItemStack stack){
|
||||||
return i == 0 && (stack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && stack.hasCapability(TeslaUtil.teslaProducer, null)));
|
return i == 0 && (stack.getItem() instanceof IEnergyContainerItem || (ActuallyAdditions.teslaLoaded && stack.hasCapability(TeslaUtil.teslaProducer, null)) || stack.hasCapability(CapabilityEnergy.ENERGY, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -23,6 +23,8 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -89,7 +91,7 @@ public class TileEntityLaserRelayEnergy extends TileEntityLaserRelay implements
|
||||||
BlockPos pos = this.getPos().offset(side);
|
BlockPos pos = this.getPos().offset(side);
|
||||||
TileEntity tile = this.worldObj.getTileEntity(pos);
|
TileEntity tile = this.worldObj.getTileEntity(pos);
|
||||||
if(tile != null && !(tile instanceof TileEntityLaserRelay)){
|
if(tile != null && !(tile instanceof TileEntityLaserRelay)){
|
||||||
if(tile instanceof IEnergyReceiver || (ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaConsumer, side.getOpposite()))){
|
if(tile instanceof IEnergyReceiver || (ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaConsumer, side.getOpposite())) || tile.hasCapability(CapabilityEnergy.ENERGY, side.getOpposite())){
|
||||||
this.receiversAround.put(side, tile);
|
this.receiversAround.put(side, tile);
|
||||||
|
|
||||||
TileEntity oldTile = old.get(side);
|
TileEntity oldTile = old.get(side);
|
||||||
|
@ -165,6 +167,21 @@ public class TileEntityLaserRelayEnergy extends TileEntityLaserRelay implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(tile.hasCapability(CapabilityEnergy.ENERGY, opp)){
|
||||||
|
IEnergyStorage cap = tile.getCapability(CapabilityEnergy.ENERGY, opp);
|
||||||
|
if(cap != null){
|
||||||
|
int theoreticalReceived = cap.receiveEnergy(Math.min(amountPer, lowestCap), true);
|
||||||
|
if(theoreticalReceived > 0){
|
||||||
|
int deduct = this.calcDeduction(theoreticalReceived, highestLoss);
|
||||||
|
if(deduct >= theoreticalReceived){ //Happens with small numbers
|
||||||
|
deduct = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
transmitted += cap.receiveEnergy(theoreticalReceived-deduct, simulate);
|
||||||
|
transmitted += deduct;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaConsumer, opp)){
|
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaConsumer, opp)){
|
||||||
ITeslaConsumer cap = tile.getCapability(TeslaUtil.teslaConsumer, opp);
|
ITeslaConsumer cap = tile.getCapability(TeslaUtil.teslaConsumer, opp);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
|
|
|
@ -22,6 +22,8 @@ import net.darkhax.tesla.api.ITeslaHolder;
|
||||||
import net.darkhax.tesla.api.ITeslaProducer;
|
import net.darkhax.tesla.api.ITeslaProducer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
|
||||||
public class TileEntityPhantomEnergyface extends TileEntityPhantomface implements ICustomEnergyReceiver, ISharingEnergyProvider{
|
public class TileEntityPhantomEnergyface extends TileEntityPhantomface implements ICustomEnergyReceiver, ISharingEnergyProvider{
|
||||||
|
|
||||||
|
@ -38,6 +40,12 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
|
||||||
if(tile instanceof IEnergyReceiver){
|
if(tile instanceof IEnergyReceiver){
|
||||||
return ((IEnergyReceiver)tile).receiveEnergy(from, maxReceive, simulate);
|
return ((IEnergyReceiver)tile).receiveEnergy(from, maxReceive, simulate);
|
||||||
}
|
}
|
||||||
|
else if(tile.hasCapability(CapabilityEnergy.ENERGY, from)){
|
||||||
|
IEnergyStorage cap = tile.getCapability(CapabilityEnergy.ENERGY, from);
|
||||||
|
if(cap != null){
|
||||||
|
return cap.receiveEnergy(maxReceive, simulate);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaConsumer, from)){
|
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaConsumer, from)){
|
||||||
ITeslaConsumer cap = tile.getCapability(TeslaUtil.teslaConsumer, from);
|
ITeslaConsumer cap = tile.getCapability(TeslaUtil.teslaConsumer, from);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
|
@ -57,6 +65,12 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
|
||||||
if(tile instanceof IEnergyProvider){
|
if(tile instanceof IEnergyProvider){
|
||||||
return ((IEnergyProvider)tile).extractEnergy(from, maxExtract, simulate);
|
return ((IEnergyProvider)tile).extractEnergy(from, maxExtract, simulate);
|
||||||
}
|
}
|
||||||
|
else if(tile.hasCapability(CapabilityEnergy.ENERGY, from)){
|
||||||
|
IEnergyStorage cap = tile.getCapability(CapabilityEnergy.ENERGY, from);
|
||||||
|
if(cap != null){
|
||||||
|
return cap.extractEnergy(maxExtract, simulate);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaProducer, from)){
|
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaProducer, from)){
|
||||||
ITeslaProducer cap = tile.getCapability(TeslaUtil.teslaProducer, from);
|
ITeslaProducer cap = tile.getCapability(TeslaUtil.teslaProducer, from);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
|
@ -76,6 +90,12 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
|
||||||
if(tile instanceof IEnergyHandler){
|
if(tile instanceof IEnergyHandler){
|
||||||
return ((IEnergyHandler)tile).getEnergyStored(from);
|
return ((IEnergyHandler)tile).getEnergyStored(from);
|
||||||
}
|
}
|
||||||
|
else if(tile.hasCapability(CapabilityEnergy.ENERGY, from)){
|
||||||
|
IEnergyStorage cap = tile.getCapability(CapabilityEnergy.ENERGY, from);
|
||||||
|
if(cap != null){
|
||||||
|
return cap.getEnergyStored();
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaHolder, from)){
|
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaHolder, from)){
|
||||||
ITeslaHolder cap = tile.getCapability(TeslaUtil.teslaHolder, from);
|
ITeslaHolder cap = tile.getCapability(TeslaUtil.teslaHolder, from);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
|
@ -95,6 +115,12 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
|
||||||
if(tile instanceof IEnergyHandler){
|
if(tile instanceof IEnergyHandler){
|
||||||
return ((IEnergyHandler)tile).getMaxEnergyStored(from);
|
return ((IEnergyHandler)tile).getMaxEnergyStored(from);
|
||||||
}
|
}
|
||||||
|
else if(tile.hasCapability(CapabilityEnergy.ENERGY, from)){
|
||||||
|
IEnergyStorage cap = tile.getCapability(CapabilityEnergy.ENERGY, from);
|
||||||
|
if(cap != null){
|
||||||
|
return cap.getMaxEnergyStored();
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaHolder, from)){
|
else if(ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaHolder, from)){
|
||||||
ITeslaHolder cap = tile.getCapability(TeslaUtil.teslaHolder, from);
|
ITeslaHolder cap = tile.getCapability(TeslaUtil.teslaHolder, from);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
|
@ -114,8 +140,12 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
|
||||||
if(tile instanceof IEnergyHandler){
|
if(tile instanceof IEnergyHandler){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded){
|
else{
|
||||||
for(EnumFacing facing : EnumFacing.values()){
|
for(EnumFacing facing : EnumFacing.values()){
|
||||||
|
if(tile.hasCapability(CapabilityEnergy.ENERGY, facing)){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if(ActuallyAdditions.teslaLoaded){
|
||||||
if(tile.hasCapability(TeslaUtil.teslaHolder, facing)){
|
if(tile.hasCapability(TeslaUtil.teslaHolder, facing)){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -123,6 +153,7 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +166,7 @@ public class TileEntityPhantomEnergyface extends TileEntityPhantomface implement
|
||||||
return ((IEnergyConnection)tile).canConnectEnergy(from);
|
return ((IEnergyConnection)tile).canConnectEnergy(from);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
return ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaHolder, from);
|
return tile.hasCapability(CapabilityEnergy.ENERGY, from) || (ActuallyAdditions.teslaLoaded && tile.hasCapability(TeslaUtil.teslaHolder, from));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.energy.IEnergyStorage;
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -70,6 +71,12 @@ public class TileEntityPlayerInterface extends TileEntityInventoryBase implement
|
||||||
if(item instanceof IEnergyContainerItem){
|
if(item instanceof IEnergyContainerItem){
|
||||||
received = ((IEnergyContainerItem)item).receiveEnergy(slot, this.storage.getEnergyStored(), false);
|
received = ((IEnergyContainerItem)item).receiveEnergy(slot, this.storage.getEnergyStored(), false);
|
||||||
}
|
}
|
||||||
|
else if(slot.hasCapability(CapabilityEnergy.ENERGY, null)){
|
||||||
|
IEnergyStorage cap = slot.getCapability(CapabilityEnergy.ENERGY, null);
|
||||||
|
if(cap != null){
|
||||||
|
received = cap.receiveEnergy(this.storage.getEnergyStored(), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded && slot.hasCapability(TeslaUtil.teslaConsumer, null)){
|
else if(ActuallyAdditions.teslaLoaded && slot.hasCapability(TeslaUtil.teslaConsumer, null)){
|
||||||
ITeslaConsumer cap = slot.getCapability(TeslaUtil.teslaConsumer, null);
|
ITeslaConsumer cap = slot.getCapability(TeslaUtil.teslaConsumer, null);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
|
|
|
@ -91,12 +91,6 @@ public final class WorldUtil{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ActuallyAdditions.teslaLoaded){
|
|
||||||
if(TeslaUtil.doWrappedTeslaRFInteraction(tileFrom, tileTo, sideTo, maxTransfer)){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(tileFrom.hasCapability(CapabilityEnergy.ENERGY, sideTo) && tileTo.hasCapability(CapabilityEnergy.ENERGY, sideTo.getOpposite())){
|
if(tileFrom.hasCapability(CapabilityEnergy.ENERGY, sideTo) && tileTo.hasCapability(CapabilityEnergy.ENERGY, sideTo.getOpposite())){
|
||||||
IEnergyStorage handlerFrom = tileFrom.getCapability(CapabilityEnergy.ENERGY, sideTo);
|
IEnergyStorage handlerFrom = tileFrom.getCapability(CapabilityEnergy.ENERGY, sideTo);
|
||||||
IEnergyStorage handlerTo = tileTo.getCapability(CapabilityEnergy.ENERGY, sideTo.getOpposite());
|
IEnergyStorage handlerTo = tileTo.getCapability(CapabilityEnergy.ENERGY, sideTo.getOpposite());
|
||||||
|
@ -106,9 +100,14 @@ public final class WorldUtil{
|
||||||
if(drain > 0){
|
if(drain > 0){
|
||||||
int filled = handlerTo.receiveEnergy(drain, false);
|
int filled = handlerTo.receiveEnergy(drain, false);
|
||||||
handlerFrom.extractEnergy(filled, false);
|
handlerFrom.extractEnergy(filled, false);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(ActuallyAdditions.teslaLoaded){
|
||||||
|
TeslaUtil.doWrappedTeslaRFInteraction(tileFrom, tileTo, sideTo, maxTransfer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,11 +15,8 @@ import net.darkhax.tesla.api.ITeslaConsumer;
|
||||||
import net.darkhax.tesla.api.ITeslaHolder;
|
import net.darkhax.tesla.api.ITeslaHolder;
|
||||||
import net.darkhax.tesla.api.ITeslaProducer;
|
import net.darkhax.tesla.api.ITeslaProducer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumFacing;
|
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
|
||||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
|
||||||
|
|
||||||
public class ItemTeslaWrapper implements ITeslaProducer, ITeslaHolder, ITeslaConsumer, ICapabilityProvider{
|
public class ItemTeslaWrapper implements ITeslaProducer, ITeslaHolder, ITeslaConsumer{
|
||||||
|
|
||||||
private final ItemStack stack;
|
private final ItemStack stack;
|
||||||
private final IEnergyContainerItem item;
|
private final IEnergyContainerItem item;
|
||||||
|
@ -48,14 +45,4 @@ public class ItemTeslaWrapper implements ITeslaProducer, ITeslaHolder, ITeslaCon
|
||||||
public long takePower(long power, boolean simulated){
|
public long takePower(long power, boolean simulated){
|
||||||
return this.item.extractEnergy(this.stack, (int)power, simulated);
|
return this.item.extractEnergy(this.stack, (int)power, simulated);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCapability(Capability<?> capability, EnumFacing facing){
|
|
||||||
return capability == TeslaUtil.teslaProducer || capability == TeslaUtil.teslaHolder || capability == TeslaUtil.teslaConsumer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing){
|
|
||||||
return this.hasCapability(capability, facing) ? (T)this : null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,10 @@ public final class TeslaUtil{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void removeTile(TileEntityBase tile){
|
||||||
|
TESLA_MAP.remove(tile);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean doWrappedTeslaRFInteraction(TileEntity tileFrom, TileEntity tileTo, EnumFacing side, int maxTransfer){
|
public static boolean doWrappedTeslaRFInteraction(TileEntity tileFrom, TileEntity tileTo, EnumFacing side, int maxTransfer){
|
||||||
if(tileTo.hasCapability(teslaConsumer, side.getOpposite()) && tileFrom.hasCapability(teslaProducer, side)){
|
if(tileTo.hasCapability(teslaConsumer, side.getOpposite()) && tileFrom.hasCapability(teslaProducer, side)){
|
||||||
ITeslaConsumer handlerTo = tileTo.getCapability(teslaConsumer, side.getOpposite());
|
ITeslaConsumer handlerTo = tileTo.getCapability(teslaConsumer, side.getOpposite());
|
||||||
|
@ -77,5 +81,4 @@ public final class TeslaUtil{
|
||||||
}
|
}
|
||||||
return handlers[side];
|
return handlers[side];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue