Work on making wireless grid an RF item

This commit is contained in:
Raoul Van den Berge
2016-04-01 13:40:14 +02:00
parent 6f914698c0
commit eafcce4b6a
3 changed files with 63 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
package refinedstorage.item;
import cofh.api.energy.ItemEnergyContainer;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -13,13 +14,14 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.translation.I18n;
import net.minecraft.world.World;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.tile.TileController;
import refinedstorage.tile.grid.TileGrid;
import java.util.List;
public class ItemWirelessGrid extends ItemBase {
public class ItemWirelessGrid extends ItemEnergyContainer {
public static final String NBT_CONTROLLER_X = "ControllerX";
public static final String NBT_CONTROLLER_Y = "ControllerY";
public static final String NBT_CONTROLLER_Z = "ControllerZ";
@@ -28,9 +30,36 @@ public class ItemWirelessGrid extends ItemBase {
public static final String NBT_SEARCH_BOX_MODE = "SearchBoxMode";
public ItemWirelessGrid() {
super("wireless_grid");
super(3200);
setMaxStackSize(1);
setMaxDamage(3200);
setHasSubtypes(false);
setCreativeTab(RefinedStorage.TAB);
}
@Override
public boolean isDamageable() {
return true;
}
@Override
public boolean isRepairable() {
return false;
}
@Override
public double getDurabilityForDisplay(ItemStack stack) {
return 1 - (getEnergyStored(stack) / getMaxEnergyStored(stack));
}
@Override
public boolean isDamaged(ItemStack stack) {
return true;
}
@Override
public void setDamage(ItemStack stack, int damage) {
// NO OP
}
@Override
@@ -120,4 +149,14 @@ public class ItemWirelessGrid extends ItemBase {
public static boolean isValid(ItemStack stack) {
return stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_CONTROLLER_X) && stack.getTagCompound().hasKey(NBT_CONTROLLER_Y) && stack.getTagCompound().hasKey(NBT_CONTROLLER_Z);
}
@Override
public String getUnlocalizedName() {
return "item." + RefinedStorage.ID + ":wireless_grid";
}
@Override
public String getUnlocalizedName(ItemStack stack) {
return getUnlocalizedName();
}
}

View File

@@ -100,6 +100,8 @@ public class MessageStoragePull extends MessageHandlerPlayerToServer<MessageStor
player.inventory.setItemStack(took);
player.updateHeldItem();
}
controller.drainEnergyFromWirelessGrid(player, 300);
}
}
}

View File

@@ -13,8 +13,10 @@ import net.minecraft.util.math.BlockPos;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageBlocks;
import refinedstorage.RefinedStorageGui;
import refinedstorage.RefinedStorageItems;
import refinedstorage.block.BlockController;
import refinedstorage.block.EnumControllerType;
import refinedstorage.item.ItemWirelessGrid;
import refinedstorage.storage.IStorage;
import refinedstorage.storage.IStorageProvider;
import refinedstorage.storage.StorageItem;
@@ -271,8 +273,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
public void onOpenWirelessGrid(EntityPlayer player, EnumHand hand) {
wirelessGridConsumers.add(new WirelessGridConsumer(player, hand, player.getHeldItem(hand)));
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, worldObj, HandUtils.getIdFromHand(hand), 0, 0);
drainEnergyFromWirelessGrid(player, 100);
}
public void onCloseWirelessGrid(EntityPlayer player) {
@@ -283,6 +285,22 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor
}
}
public void drainEnergyFromWirelessGrid(EntityPlayer player, int energy) {
WirelessGridConsumer consumer = getWirelessGridConsumer(player);
if (consumer != null) {
ItemWirelessGrid item = RefinedStorageItems.WIRELESS_GRID;
ItemStack held = consumer.getPlayer().getHeldItem(consumer.getHand());
item.extractEnergy(held, energy, false);
if (item.getEnergyStored(held) <= 0) {
onCloseWirelessGrid(player);
consumer.getPlayer().closeScreen();
}
}
}
public WirelessGridConsumer getWirelessGridConsumer(EntityPlayer player) {
Iterator<WirelessGridConsumer> it = wirelessGridConsumers.iterator();