TESLA support on wireless grids.

This commit is contained in:
Raoul Van den Berge
2016-07-03 20:42:28 +02:00
parent e29979b1f6
commit 126f2e8d12

View File

@@ -1,6 +1,9 @@
package refinedstorage.item;
import cofh.api.energy.ItemEnergyContainer;
import net.darkhax.tesla.api.ITeslaConsumer;
import net.darkhax.tesla.api.ITeslaHolder;
import net.darkhax.tesla.capability.TeslaCapabilities;
import net.minecraft.block.Block;
import net.minecraft.client.resources.I18n;
import net.minecraft.creativetab.CreativeTabs;
@@ -15,11 +18,14 @@ import net.minecraft.util.*;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilityProvider;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.tile.controller.TileController;
import refinedstorage.tile.grid.TileGrid;
import javax.annotation.Nullable;
import java.util.List;
public class ItemWirelessGrid extends ItemEnergyContainer {
@@ -52,6 +58,11 @@ public class ItemWirelessGrid extends ItemEnergyContainer {
setCreativeTab(RefinedStorage.INSTANCE.tab);
}
@Override
public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt) {
return new WirelessGridCapabilityProvider(stack);
}
@Override
public boolean isDamageable() {
return true;
@@ -208,4 +219,49 @@ public class ItemWirelessGrid extends ItemEnergyContainer {
public String getUnlocalizedName(ItemStack stack) {
return getUnlocalizedName() + "." + stack.getItemDamage();
}
class TeslaEnergy implements ITeslaHolder, ITeslaConsumer {
private ItemStack stack;
public TeslaEnergy(ItemStack stack) {
this.stack = stack;
}
@Override
public long getStoredPower() {
return getEnergyStored(stack);
}
@Override
public long getCapacity() {
return getMaxEnergyStored(stack);
}
@Override
public long givePower(long power, boolean simulated) {
return receiveEnergy(stack, (int) power, simulated);
}
}
class WirelessGridCapabilityProvider implements ICapabilityProvider {
private ItemStack stack;
public WirelessGridCapabilityProvider(ItemStack stack) {
this.stack = stack;
}
@Override
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
return capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER;
}
@Override
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) {
if (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER) {
return (T) new TeslaEnergy(stack);
}
return null;
}
}
}