@Override
  public void copyFrom(ComponentMenu menu) {
    ComponentMenuRedstoneOutput menuOutput = (ComponentMenuRedstoneOutput) menu;

    textBox.setNumber(menuOutput.textBox.getNumber());
    radioButtons.setSelectedOption(menuOutput.radioButtons.getSelectedOption());
  }
 @Override
 public void readNetworkComponent(DataReader dr) {
   boolean isNumber = dr.readBoolean();
   if (isNumber) {
     textBox.setNumber(dr.readData(DataBitHelper.MENU_REDSTONE_ANALOG));
   } else {
     int type = dr.readData(DataBitHelper.MENU_REDSTONE_OUTPUT_TYPE);
     radioButtons.setSelectedOption(type);
   }
 }
  @Override
  public void refreshData(ContainerManager container, ComponentMenu newData) {
    ComponentMenuRedstoneOutput newDataOutput = (ComponentMenuRedstoneOutput) newData;

    if (textBox.getNumber() != newDataOutput.textBox.getNumber()) {
      textBox.setNumber(newDataOutput.textBox.getNumber());

      DataWriter dw = getWriterForClientComponentPacket(container);
      dw.writeBoolean(true); // header
      dw.writeData(textBox.getNumber(), DataBitHelper.MENU_REDSTONE_ANALOG);
      PacketHandler.sendDataToListeningClients(container, dw);
    }

    if (radioButtons.getSelectedOption() != newDataOutput.radioButtons.getSelectedOption()) {
      radioButtons.setSelectedOption(newDataOutput.radioButtons.getSelectedOption());

      DataWriter dw = getWriterForClientComponentPacket(container);
      dw.writeBoolean(false); // header
      dw.writeData(radioButtons.getSelectedOption(), DataBitHelper.MENU_REDSTONE_OUTPUT_TYPE);
      PacketHandler.sendDataToListeningClients(container, dw);
    }
  }
 public int getSelectedStrength() {
   return textBox.getNumber();
 }
 @Override
 public void writeToNBT(NBTTagCompound nbtTagCompound, boolean pickup) {
   nbtTagCompound.setByte(NBT_NUMBER, (byte) textBox.getNumber());
   nbtTagCompound.setByte(NBT_TYPE, (byte) radioButtons.getSelectedOption());
 }
 @Override
 public void readFromNBT(NBTTagCompound nbtTagCompound, int version, boolean pickup) {
   textBox.setNumber(nbtTagCompound.getByte(NBT_NUMBER));
   radioButtons.setSelectedOption(nbtTagCompound.getByte(NBT_TYPE));
 }
 @Override
 public void readData(DataReader dr) {
   textBox.setNumber(dr.readData(DataBitHelper.MENU_REDSTONE_ANALOG));
   radioButtons.setSelectedOption(dr.readData(DataBitHelper.MENU_REDSTONE_OUTPUT_TYPE));
 }
 @Override
 public void writeData(DataWriter dw) {
   dw.writeData(textBox.getNumber(), DataBitHelper.MENU_REDSTONE_ANALOG);
   dw.writeData(radioButtons.getSelectedOption(), DataBitHelper.MENU_REDSTONE_OUTPUT_TYPE);
 }